|
|
|
@ -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 \
|
|
|
|
|
} |
|
|
|
|