X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fmatroskadec.c;h=2faaf9dfb8b1bfe83a993b9ff9663e5df8493e8a;hb=99cc3cf7a26cd4113e5047034577027d8c6f07a2;hp=cda8df221344b21f27717db44b52257bd6cf82ba;hpb=d23fff0d8a0e7df170c67a9dd5c1f7c1fc0da489;p=ffmpeg diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index cda8df22134..2faaf9dfb8b 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2397,6 +2397,10 @@ static int matroska_parse_tracks(AVFormatContext *s) return ret; } else if (codec_id == AV_CODEC_ID_PRORES && track->codec_priv.size == 4) { fourcc = AV_RL32(track->codec_priv.data); + } else if (codec_id == AV_CODEC_ID_VP9 && track->codec_priv.size) { + /* we don't need any value stored in CodecPrivate. + make sure that it's not exported as extradata. */ + track->codec_priv.size = 0; } track->codec_priv.size -= extradata_offset; @@ -3107,7 +3111,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska, err = av_new_packet(pkt, text_len); if (err < 0) { av_free(pkt); - return AVERROR(err); + return err; } memcpy(pkt->data, text, text_len); @@ -3117,6 +3121,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska, AV_PKT_DATA_WEBVTT_IDENTIFIER, id_len); if (!buf) { + av_packet_unref(pkt); av_free(pkt); return AVERROR(ENOMEM); } @@ -3128,6 +3133,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska, AV_PKT_DATA_WEBVTT_SETTINGS, settings_len); if (!buf) { + av_packet_unref(pkt); av_free(pkt); return AVERROR(ENOMEM); }