demux_mkv: fix memory leak of codec params

Fixes: 84ee84abb8
This commit is contained in:
Kacper Michajłow authored and Jan Ekström committed 2024-12-09 20:46:48 +02:00
1 parent 0bb1659cd6
commit 63e6dfba6e
1 file changed
+8 -6
+8 -6
View File
@@ -1559,6 +1559,11 @@ static const char *const mkv_video_tags[][2] = {
{0}
};
static void avcodec_par_destructor(void *p)
{
avcodec_parameters_free(p);
}
static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track)
{
unsigned char *extradata = NULL;
@@ -1692,7 +1697,9 @@ static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track)
// this gets called in all lavc decoders through `mp_set_avctx_codec_headers`
// and its failure causes decoding failure. Thus if this call fails here, it is
// likely that decoding of this track would also lead to an error.
sh_v->lav_codecpar = mp_codec_params_to_av(sh_v);
struct AVCodecParameters **lavp = talloc_ptrtype(track, lavp);
talloc_set_destructor(lavp, avcodec_par_destructor);
*lavp = sh_v->lav_codecpar = mp_codec_params_to_av(sh_v);
if (!sh_v->lav_codecpar) {
MP_ERR(demuxer, "Failed to create codec parameters for track %d!",
track->tnum);
@@ -2078,11 +2085,6 @@ static const char *const mkv_sub_tag[][2] = {
{0}
};
static void avcodec_par_destructor(void *p)
{
avcodec_parameters_free(p);
}
static int demux_mkv_open_sub(demuxer_t *demuxer, mkv_track_t *track)
{
const char *subtitle_type = NULL;