diff --git a/libavformat/rdt.c b/libavformat/rdt.c index e8dc8f5892..158a8212e1 100644 --- a/libavformat/rdt.c +++ b/libavformat/rdt.c @@ -523,18 +523,27 @@ static PayloadContext * rdt_new_context (void) { PayloadContext *rdt = av_mallocz(sizeof(PayloadContext)); - int ret; if (!rdt) return NULL; - ret = avformat_open_input(&rdt->rmctx, "", &ff_rdt_demuxer, NULL); - if (ret < 0) { - av_free(rdt); - return NULL; - } + + rdt->rmctx = avformat_alloc_context(); + if (!rdt->rmctx) + av_freep(&rdt); return rdt; } +static int +rdt_init_context (AVFormatContext *s, int st_index, PayloadContext *rdt) +{ + int ret; + + if ((ret = ff_copy_whitelists(rdt->rmctx, s)) < 0) + return ret; + + return avformat_open_input(&rdt->rmctx, "", &ff_rdt_demuxer, NULL); +} + static void rdt_free_context (PayloadContext *rdt) { @@ -559,6 +568,7 @@ static RTPDynamicProtocolHandler rdt_ ## n ## _handler = { \ .codec_id = AV_CODEC_ID_NONE, \ .parse_sdp_a_line = rdt_parse_sdp_line, \ .alloc = rdt_new_context, \ + .init = rdt_init_context, \ .free = rdt_free_context, \ .parse_packet = rdt_parse_packet \ }