diff --git a/libavformat/rdt.c b/libavformat/rdt.c index 68ad814851..3d28be7b92 100644 --- a/libavformat/rdt.c +++ b/libavformat/rdt.c @@ -554,7 +554,6 @@ rdt_free_context (PayloadContext *rdt) avformat_close_input(&rdt->rmctx); av_freep(&rdt->mlti_data); av_freep(&rdt->rmst); - av_free(rdt); } #define RDT_HANDLER(n, s, t) \ diff --git a/libavformat/rtpdec.h b/libavformat/rtpdec.h index b54e258412..23329b6df3 100644 --- a/libavformat/rtpdec.h +++ b/libavformat/rtpdec.h @@ -127,7 +127,9 @@ struct RTPDynamicProtocolHandler { /** Parse the a= line from the sdp field */ int (*parse_sdp_a_line)(AVFormatContext *s, int st_index, PayloadContext *priv_data, const char *line); - /** Free any data needed by the rtp parsing for this dynamic data. */ + /** Free any data needed by the rtp parsing for this dynamic data. + * Don't free the protocol_data pointer itself, that is freed by the + * caller. */ void (*free)(PayloadContext *protocol_data); /** Parse handler for this dynamic packet */ DynamicPayloadPacketHandlerProc parse_packet; diff --git a/libavformat/rtpdec_ac3.c b/libavformat/rtpdec_ac3.c index 5511d217b8..b9e6e228fb 100644 --- a/libavformat/rtpdec_ac3.c +++ b/libavformat/rtpdec_ac3.c @@ -44,7 +44,6 @@ static void free_fragment(PayloadContext *data) static void ac3_free_context(PayloadContext *data) { free_fragment(data); - av_free(data); } static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data, diff --git a/libavformat/rtpdec_dv.c b/libavformat/rtpdec_dv.c index d8a4de4c07..3a7e14159b 100644 --- a/libavformat/rtpdec_dv.c +++ b/libavformat/rtpdec_dv.c @@ -42,7 +42,6 @@ static void dv_free_dyn_buffer(AVIOContext **dyn_buf) static av_cold void dv_free_context(PayloadContext *data) { dv_free_dyn_buffer(&data->buf); - av_free(data); } static av_cold int dv_sdp_parse_fmtp_config(AVFormatContext *s, diff --git a/libavformat/rtpdec_h261.c b/libavformat/rtpdec_h261.c index 1555523195..2f562bb579 100644 --- a/libavformat/rtpdec_h261.c +++ b/libavformat/rtpdec_h261.c @@ -50,9 +50,6 @@ static av_cold void h261_free_context(PayloadContext *pl_ctx) if (pl_ctx->buf) { h261_free_dyn_buffer(&pl_ctx->buf); } - - /* free context */ - av_free(pl_ctx); } static int h261_handle_packet(AVFormatContext *ctx, PayloadContext *rtp_h261_ctx, diff --git a/libavformat/rtpdec_h263_rfc2190.c b/libavformat/rtpdec_h263_rfc2190.c index 1800a261ed..ce2aacaf50 100644 --- a/libavformat/rtpdec_h263_rfc2190.c +++ b/libavformat/rtpdec_h263_rfc2190.c @@ -46,7 +46,6 @@ static void h263_free_context(PayloadContext *data) avio_close_dyn_buf(data->buf, &p); av_free(p); } - av_free(data); } static int h263_handle_packet(AVFormatContext *ctx, PayloadContext *data, diff --git a/libavformat/rtpdec_h264.c b/libavformat/rtpdec_h264.c index 5db3b56e81..64ecde11c0 100644 --- a/libavformat/rtpdec_h264.c +++ b/libavformat/rtpdec_h264.c @@ -382,8 +382,6 @@ static void h264_free_context(PayloadContext *data) data->packet_types_received[ii], ii); } #endif - - av_free(data); } static int parse_h264_sdp_line(AVFormatContext *s, int st_index, diff --git a/libavformat/rtpdec_jpeg.c b/libavformat/rtpdec_jpeg.c index 255351087f..7c1e7181ae 100644 --- a/libavformat/rtpdec_jpeg.c +++ b/libavformat/rtpdec_jpeg.c @@ -72,7 +72,6 @@ static void free_frame(PayloadContext *jpeg) static void jpeg_free_context(PayloadContext *jpeg) { free_frame(jpeg); - av_free(jpeg); } static int jpeg_create_huffman_table(PutByteContext *p, int table_class, diff --git a/libavformat/rtpdec_latm.c b/libavformat/rtpdec_latm.c index 74bf4f5ce1..2916f6a897 100644 --- a/libavformat/rtpdec_latm.c +++ b/libavformat/rtpdec_latm.c @@ -39,7 +39,6 @@ static void latm_free_context(PayloadContext *data) av_free(p); } av_freep(&data->buf); - av_free(data); } static int latm_parse_packet(AVFormatContext *ctx, PayloadContext *data, diff --git a/libavformat/rtpdec_mpa_robust.c b/libavformat/rtpdec_mpa_robust.c index cbdfb58f09..313062d30f 100644 --- a/libavformat/rtpdec_mpa_robust.c +++ b/libavformat/rtpdec_mpa_robust.c @@ -47,7 +47,6 @@ static void mpa_robust_free_context(PayloadContext *data) { free_fragment(data); av_free(data->split_buf); - av_free(data); } static int mpa_robust_parse_rtp_header(AVFormatContext *ctx, diff --git a/libavformat/rtpdec_mpeg4.c b/libavformat/rtpdec_mpeg4.c index 3ad82dda2d..23b5dc8b0e 100644 --- a/libavformat/rtpdec_mpeg4.c +++ b/libavformat/rtpdec_mpeg4.c @@ -95,7 +95,6 @@ static void free_context(PayloadContext *data) { av_freep(&data->au_headers); av_freep(&data->mode); - av_freep(&data); } static int parse_fmtp_config(AVCodecContext *codec, const char *value) diff --git a/libavformat/rtpdec_mpegts.c b/libavformat/rtpdec_mpegts.c index ae17f4ec0f..c0c07fd0f8 100644 --- a/libavformat/rtpdec_mpegts.c +++ b/libavformat/rtpdec_mpegts.c @@ -36,7 +36,6 @@ static void mpegts_free_context(PayloadContext *data) return; if (data->ts) avpriv_mpegts_parse_close(data->ts); - av_free(data); } static av_cold int mpegts_init(AVFormatContext *ctx, int st_index, diff --git a/libavformat/rtpdec_qt.c b/libavformat/rtpdec_qt.c index 40701ebfa7..2a4a08f960 100644 --- a/libavformat/rtpdec_qt.c +++ b/libavformat/rtpdec_qt.c @@ -238,7 +238,6 @@ static int qt_rtp_parse_packet(AVFormatContext *s, PayloadContext *qt, static void qt_rtp_free(PayloadContext *qt) { av_freep(&qt->pkt.data); - av_free(qt); } #define RTP_QT_HANDLER(m, n, s, t) \ diff --git a/libavformat/rtpdec_svq3.c b/libavformat/rtpdec_svq3.c index bffa1a8fc3..4d2d6ac8d1 100644 --- a/libavformat/rtpdec_svq3.c +++ b/libavformat/rtpdec_svq3.c @@ -115,7 +115,6 @@ static void svq3_extradata_free(PayloadContext *sv) avio_close_dyn_buf(sv->pktbuf, &buf); av_free(buf); } - av_free(sv); } RTPDynamicProtocolHandler ff_svq3_dynamic_handler = { diff --git a/libavformat/rtpdec_vp8.c b/libavformat/rtpdec_vp8.c index fca2295b0e..0c93e191c9 100644 --- a/libavformat/rtpdec_vp8.c +++ b/libavformat/rtpdec_vp8.c @@ -278,7 +278,6 @@ static av_cold int vp8_init(AVFormatContext *s, int st_index, PayloadContext *vp static void vp8_free_context(PayloadContext *vp8) { vp8_free_buffer(vp8); - av_free(vp8); } static int vp8_need_keyframe(PayloadContext *vp8) diff --git a/libavformat/rtpdec_xiph.c b/libavformat/rtpdec_xiph.c index 49a33d7391..535cbff549 100644 --- a/libavformat/rtpdec_xiph.c +++ b/libavformat/rtpdec_xiph.c @@ -63,7 +63,6 @@ static void xiph_free_context(PayloadContext * data) { free_fragment(data); av_freep(&data->split_buf); - av_freep(&data); } diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 79212c0af5..32ff18ec03 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -732,8 +732,7 @@ void ff_rtsp_close_streams(AVFormatContext *s) if (rtsp_st->dynamic_handler->free) rtsp_st->dynamic_handler->free( rtsp_st->dynamic_protocol_context); - else - av_free(rtsp_st->dynamic_protocol_context); + av_free(rtsp_st->dynamic_protocol_context); } for (j = 0; j < rtsp_st->nb_include_source_addrs; j++) av_freep(&rtsp_st->include_source_addrs[j]);