103 lines
3.8 KiB
C
103 lines
3.8 KiB
C
/*
|
|
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
/*
|
|
* RTCP statistics reporting.
|
|
*/
|
|
|
|
#ifndef RTCP_H
|
|
#define RTCP_H
|
|
|
|
#include "typedefs.h"
|
|
|
|
typedef struct
|
|
{
|
|
WebRtc_UWord16 cycles; /* The number of wrap-arounds for the sequence number */
|
|
WebRtc_UWord16 max_seq; /* The maximum sequence number received
|
|
(starts from 0 again after wrap around) */
|
|
WebRtc_UWord16 base_seq; /* The sequence number of the first packet that arrived */
|
|
WebRtc_UWord32 received; /* The number of packets that has been received */
|
|
WebRtc_UWord32 rec_prior; /* Number of packets received when last report was generated */
|
|
WebRtc_UWord32 exp_prior; /* Number of packets that should have been received if no
|
|
packets were lost. Stored value from last report. */
|
|
WebRtc_UWord32 jitter; /* Jitter statistics at this instance (calculated according to RFC) */
|
|
WebRtc_Word32 transit; /* Clock difference for previous packet (RTPtimestamp - LOCALtime_rec) */
|
|
} WebRtcNetEQ_RTCP_t;
|
|
|
|
/****************************************************************************
|
|
* WebRtcNetEQ_RTCPInit(...)
|
|
*
|
|
* This function calculates the parameters that are needed for the RTCP
|
|
* report.
|
|
*
|
|
* Input:
|
|
* - RTCP_inst : RTCP instance, that contains information about the
|
|
* packets that have been received etc.
|
|
* - seqNo : Packet number of the first received frame.
|
|
*
|
|
* Return value : 0 - Ok
|
|
* -1 - Error
|
|
*/
|
|
|
|
int WebRtcNetEQ_RTCPInit(WebRtcNetEQ_RTCP_t *RTCP_inst, WebRtc_UWord16 uw16_seqNo);
|
|
|
|
/****************************************************************************
|
|
* WebRtcNetEQ_RTCPUpdate(...)
|
|
*
|
|
* This function calculates the parameters that are needed for the RTCP
|
|
* report.
|
|
*
|
|
* Input:
|
|
* - RTCP_inst : RTCP instance, that contains information about the
|
|
* packets that have been received etc.
|
|
* - seqNo : Packet number of the first received frame.
|
|
* - timeStamp : Time stamp from the RTP header.
|
|
* - recTime : Time (in RTP timestamps) when this packet was received.
|
|
*
|
|
* Return value : 0 - Ok
|
|
* -1 - Error
|
|
*/
|
|
|
|
int WebRtcNetEQ_RTCPUpdate(WebRtcNetEQ_RTCP_t *RTCP_inst, WebRtc_UWord16 uw16_seqNo,
|
|
WebRtc_UWord32 uw32_timeStamp, WebRtc_UWord32 uw32_recTime);
|
|
|
|
/****************************************************************************
|
|
* WebRtcNetEQ_RTCPGetStats(...)
|
|
*
|
|
* This function calculates the parameters that are needed for the RTCP
|
|
* report.
|
|
*
|
|
* Input:
|
|
* - RTCP_inst : RTCP instance, that contains information about the
|
|
* packets that have been received etc.
|
|
* - doNotReset : If non-zero, the fraction lost statistics will not
|
|
* be reset.
|
|
*
|
|
* Output:
|
|
* - RTCP_inst : Updated RTCP information (some statistics are
|
|
* reset when generating this report)
|
|
* - fraction_lost : Number of lost RTP packets divided by the number of
|
|
* expected packets, since the last RTCP Report.
|
|
* - cum_lost : Cumulative number of lost packets during this
|
|
* session.
|
|
* - ext_max : Extended highest sequence number received.
|
|
* - jitter : Inter-arrival jitter.
|
|
*
|
|
* Return value : 0 - Ok
|
|
* -1 - Error
|
|
*/
|
|
|
|
int WebRtcNetEQ_RTCPGetStats(WebRtcNetEQ_RTCP_t *RTCP_inst,
|
|
WebRtc_UWord16 *puw16_fraction_lost,
|
|
WebRtc_UWord32 *puw32_cum_lost, WebRtc_UWord32 *puw32_ext_max,
|
|
WebRtc_UWord32 *puw32_jitter, WebRtc_Word16 doNotReset);
|
|
|
|
#endif
|