|
|
|
@ -190,6 +190,10 @@ static void init_rtp_handler(RTPDynamicProtocolHandler *handler, |
|
|
|
|
rtsp_st->dynamic_protocol_context = handler->alloc(); |
|
|
|
|
if (!rtsp_st->dynamic_protocol_context) |
|
|
|
|
rtsp_st->dynamic_handler = NULL; |
|
|
|
|
} else if (handler->priv_data_size) { |
|
|
|
|
rtsp_st->dynamic_protocol_context = av_mallocz(handler->priv_data_size); |
|
|
|
|
if (!rtsp_st->dynamic_protocol_context) |
|
|
|
|
rtsp_st->dynamic_handler = NULL; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -721,9 +725,13 @@ void ff_rtsp_close_streams(AVFormatContext *s) |
|
|
|
|
for (i = 0; i < rt->nb_rtsp_streams; i++) { |
|
|
|
|
rtsp_st = rt->rtsp_streams[i]; |
|
|
|
|
if (rtsp_st) { |
|
|
|
|
if (rtsp_st->dynamic_handler && rtsp_st->dynamic_protocol_context) |
|
|
|
|
rtsp_st->dynamic_handler->free( |
|
|
|
|
rtsp_st->dynamic_protocol_context); |
|
|
|
|
if (rtsp_st->dynamic_handler && rtsp_st->dynamic_protocol_context) { |
|
|
|
|
if (rtsp_st->dynamic_handler->free) |
|
|
|
|
rtsp_st->dynamic_handler->free( |
|
|
|
|
rtsp_st->dynamic_protocol_context); |
|
|
|
|
else |
|
|
|
|
av_free(rtsp_st->dynamic_protocol_context); |
|
|
|
|
} |
|
|
|
|
for (j = 0; j < rtsp_st->nb_include_source_addrs; j++) |
|
|
|
|
av_free(rtsp_st->include_source_addrs[j]); |
|
|
|
|
av_freep(&rtsp_st->include_source_addrs); |
|
|
|
|