27 #ifndef OPAL_RTP_METRICS_H
28 #define OPAL_RTP_METRICS_H
51 class RTCP_XR_Metrics :
public PObject
53 PCLASSINFO(RTCP_XR_Metrics, PObject);
60 unsigned payloadBitrate
80 typedef struct TimePeriod {
82 PTimeInterval duration;
88 typedef struct IdPeriod {
89 PTimeInterval duration;
96 typedef struct IePeriod {
98 PTimeInterval duration;
116 void OnPacketReceived();
120 void OnPacketDiscarded();
134 void OnRxSenderReport(
145 BYTE GetDiscardRate();
150 BYTE GetBurstDensity();
155 BYTE GetGapDensity();
160 PUInt16b GetBurstDuration();
165 PUInt16b GetGapDuration();
170 PUInt16b GetRoundTripDelay ();
174 PUInt16b GetEndSystemDelay();
193 void InsertExtendedReportPacket(
200 static OpalRTPSession::ExtendedReportArray
219 void ResetCounters();
229 BYTE EndOfCallRFactor();
241 float EndOfCallMOS();
249 float GetPonderateId();
259 float GetEndOfCallIe();
263 float GetPonderateIe();
267 TimePeriod createTimePeriod(
269 PTime beginTimestamp,
275 IdPeriod createIdPeriod(
276 PTime beginTimestamp,
282 IePeriod createIePeriod(
283 TimePeriod timePeriod
289 float m_lookAheadTime;
290 PINDEX m_payloadSize;
291 unsigned m_payloadBitrate;
295 DWORD m_packetsReceived;
296 DWORD m_packetsSinceLastLoss;
298 DWORD m_packetsDiscarded;
299 DWORD m_srPacketsReceived;
301 DWORD m_packetsReceivedInGap;
302 DWORD m_packetsLostInGap;
304 DWORD m_packetsReceivedInBurst;
305 DWORD m_packetsLostInBurst;
328 PTimeInterval m_dlsrTime;
335 std::list<TimePeriod> m_timePeriods;
336 std::list<IePeriod> m_iePeriods;
337 std::list<IdPeriod> m_idPeriods;
339 PeriodType m_currentPeriodType;
340 PTime m_periodBeginTimestamp;
341 PTime m_lastLossTimestamp;
342 PTime m_lastLossInBurstTimestamp;
343 PTime m_lastJitterBufferChangeTimestamp;
348 #endif // OPAL_RTCP_XR
350 #endif // OPAL_METRICS_H