ff_register_dynamic_payload_handler(&ff_theora_dynamic_handler);
ff_register_dynamic_payload_handler(&ff_vorbis_dynamic_handler);
ff_register_dynamic_payload_handler(&ff_vp8_dynamic_handler);
+ ff_register_dynamic_payload_handler(&ff_vp9_dynamic_handler);
ff_register_dynamic_payload_handler(&opus_dynamic_handler);
ff_register_dynamic_payload_handler(&realmedia_mp3_dynamic_handler);
ff_register_dynamic_payload_handler(&speex_dynamic_handler);
len = avio_close_dyn_buf(pb, &buf);
if ((len > 0) && buf) {
int av_unused result;
- av_dlog(s->ic, "sending %d bytes of RR\n", len);
+ av_log(s->ic, AV_LOG_TRACE, "sending %d bytes of RR\n", len);
result = ffurl_write(fd, buf, len);
- av_dlog(s->ic, "result from ffurl_write: %d\n", result);
+ av_log(s->ic, AV_LOG_TRACE, "result from ffurl_write: %d\n", result);
av_free(buf);
}
return 0;
s->ic = s1;
s->st = st;
s->queue_size = queue_size;
+
+ av_log(s->st ? s->st->codec : NULL, AV_LOG_VERBOSE,
+ "setting jitter buffer size to %d\n", s->queue_size);
+
rtp_init_statistics(&s->statistics, 0);
if (st) {
switch (st->codec->codec_id) {
s->prev_ret = 0;
}
-static void enqueue_packet(RTPDemuxContext *s, uint8_t *buf, int len)
+static int enqueue_packet(RTPDemuxContext *s, uint8_t *buf, int len)
{
uint16_t seq = AV_RB16(buf + 2);
RTPPacket **cur = &s->queue, *packet;
packet = av_mallocz(sizeof(*packet));
if (!packet)
- return;
+ return AVERROR(ENOMEM);
packet->recvtime = av_gettime_relative();
packet->seq = seq;
packet->len = len;
packet->next = *cur;
*cur = packet;
s->queue_len++;
+
+ return 0;
}
static int has_next_packet(RTPDemuxContext *s)
return rv;
} else {
/* Still missing some packet, enqueue this one. */
- enqueue_packet(s, buf, len);
+ rv = enqueue_packet(s, buf, len);
+ if (rv < 0)
+ return rv;
*bufptr = NULL;
/* Return the first enqueued packet if the queue is full,
* even if we're missing something */
- if (s->queue_len >= s->queue_size)
+ if (s->queue_len >= s->queue_size) {
+ av_log(s->st ? s->st->codec : NULL, AV_LOG_WARNING,
+ "jitter buffer full\n");
return rtp_parse_queued_packet(s, pkt);
+ }
return -1;
}
}
int (*parse_fmtp)(AVFormatContext *s,
AVStream *stream,
PayloadContext *data,
- char *attr, char *value))
+ const char *attr, const char *value))
{
char attr[256];
char *value;