| /* |
| * 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 |