58 RTPFirstDynamicPayloadHandler= handler;
97 for (handler = RTPFirstDynamicPayloadHandler;
98 handler; handler = handler->
next)
109 for (handler = RTPFirstDynamicPayloadHandler;
110 handler; handler = handler->
next)
125 if (payload_len < 20) {
150 #define RTP_SEQ_MOD (1<<16)
183 uint16_t udelta= seq - s->
max_seq;
184 const int MAX_DROPOUT= 3000;
185 const int MAX_MISORDER = 100;
186 const int MIN_SEQUENTIAL = 2;
203 }
else if (udelta < MAX_DROPOUT) {
205 if(seq < s->max_seq) {
234 uint32_t extended_max;
235 uint32_t expected_interval;
236 uint32_t received_interval;
237 uint32_t lost_interval;
242 if (!s->
rtp_ctx || (count < 1))
268 expected= extended_max - stats->
base_seq + 1;
270 lost=
FFMIN(lost, 0xffffff);
275 lost_interval= expected_interval - received_interval;
276 if (expected_interval==0 || lost_interval<=0) fraction= 0;
277 else fraction = (lost_interval<<8)/expected_interval;
279 fraction= (fraction<<24) | lost;
307 for (len = (6 + len) % 4; len % 4; len++) {
313 if ((len > 0) && buf) {
315 av_dlog(s->
ic,
"sending %d bytes of RR\n", len);
317 av_dlog(s->
ic,
"result from ffurl_write: %d\n", result);
341 if ((len > 0) && buf)
356 if ((len > 0) && buf)
457 const uint8_t *buf,
int len)
459 unsigned int ssrc, h;
460 int payload_type, seq, ret,
flags = 0;
467 payload_type = buf[1] & 0x7f;
485 payload_type, seq, ((s->
seq + 1) & 0xffff));
490 int padding = buf[len - 1];
491 if (len >= 12 + padding)
505 ext = (
AV_RB16(buf + 2) + 1) << 2;
531 s->
st, pkt, ×tamp, buf, len, flags);
544 memcpy(pkt->
data, buf, len);
562 memcpy(pkt->
data, buf, len);
566 memcpy(pkt->
data, buf, len);
594 uint16_t seq =
AV_RB16(buf + 2);
599 int16_t diff = seq - cur->
seq;
641 "RTP: missed %d packets\n", s->
queue->
seq - s->
seq - 1);
654 uint8_t **bufptr,
int len)
656 uint8_t* buf = bufptr ? *bufptr :
NULL;
673 s->
st, pkt, ×tamp,
NULL, 0, flags);
705 uint16_t seq =
AV_RB16(buf + 2);
706 int16_t diff = seq - s->
seq;
710 "RTP: dropping old packet received too late\n");
712 }
else if (diff <= 1) {
739 uint8_t **bufptr,
int len)
760 char *attr,
char *value))
765 int value_size = strlen(p) + 1;
773 while (*p && *p ==
' ') p++;
774 while (*p && *p !=
' ') p++;
775 while (*p && *p ==
' ') p++;
779 value, value_size)) {