37 #ifndef RTCPSRPACKET_H
39 #define RTCPSRPACKET_H
41 #include "rtpconfig.h"
45 #if ! (defined(WIN32) || defined(_WIN32_WCE))
46 #include <netinet/in.h>
85 uint32_t
GetSSRC(
int index)
const;
115 uint32_t
GetLSR(
int index)
const;
121 uint32_t
GetDLSR(
int index)
const;
127 RTCPReceiverReport *GotoReport(
int index)
const;
135 uint32_t *ssrcptr = (uint32_t *)(data+
sizeof(RTCPCommonHeader));
136 return ntohl(*ssrcptr);
144 RTCPSenderReport *sr = (RTCPSenderReport *)(data+
sizeof(RTCPCommonHeader)+
sizeof(uint32_t));
145 return RTPNTPTime(ntohl(sr->ntptime_msw),ntohl(sr->ntptime_lsw));
152 RTCPSenderReport *sr = (RTCPSenderReport *)(data+
sizeof(RTCPCommonHeader)+
sizeof(uint32_t));
153 return ntohl(sr->rtptimestamp);
160 RTCPSenderReport *sr = (RTCPSenderReport *)(data+
sizeof(RTCPCommonHeader)+
sizeof(uint32_t));
161 return ntohl(sr->packetcount);
168 RTCPSenderReport *sr = (RTCPSenderReport *)(data+
sizeof(RTCPCommonHeader)+
sizeof(uint32_t));
169 return ntohl(sr->octetcount);
176 RTCPCommonHeader *hdr = (RTCPCommonHeader *)data;
177 return ((
int)hdr->count);
180 inline RTCPReceiverReport *RTCPSRPacket::GotoReport(
int index)
const
182 RTCPReceiverReport *r = (RTCPReceiverReport *)(data+
sizeof(RTCPCommonHeader)+
sizeof(uint32_t)+
sizeof(RTCPSenderReport)+index*
sizeof(RTCPReceiverReport));
190 RTCPReceiverReport *r = GotoReport(index);
191 return ntohl(r->ssrc);
198 RTCPReceiverReport *r = GotoReport(index);
199 return r->fractionlost;
206 RTCPReceiverReport *r = GotoReport(index);
207 uint32_t count = ((uint32_t)r->packetslost[2])|(((uint32_t)r->packetslost[1])<<8)|(((uint32_t)r->packetslost[0])<<16);
208 if ((count&0x00800000) != 0)
210 int32_t *count2 = (int32_t *)(&count);
218 RTCPReceiverReport *r = GotoReport(index);
219 return ntohl(r->exthighseqnr);
226 RTCPReceiverReport *r = GotoReport(index);
227 return ntohl(r->jitter);
234 RTCPReceiverReport *r = GotoReport(index);
235 return ntohl(r->lsr);
242 RTCPReceiverReport *r = GotoReport(index);
243 return ntohl(r->dlsr);
246 #endif // RTCPSRPACKET_H