extradata changing would result in an invalid stream.
also, as the code was written, rewriting extradata was corrupting the
track header resulting in an invalid file.
---
libavformat/matroskaenc.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 784973a951..d6932bdb5b 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -2183,6 +2183,14 @@ static int mkv_check_new_extra_data(AVFormatContext *s,
const AVPacket *pkt)
case AV_CODEC_ID_AAC:
if (side_data_size && (s->pb->seekable & AVIO_SEEKABLE_NORMAL) &&
!mkv->is_live) {
int filler, output_sample_rate = 0;
+ if (par->extradata && par->extradata_size)
+ if (par->extradata_size != side_data_size ||
+ memcmp(par->extradata, side_data, side_data_size)) {
+ av_log(s, AV_LOG_ERROR, "Error, AAC extradata changed
mid-stream.\n");
+ return AVERROR_INPUT_CHANGED;
+ } else // Already written
+ break;
+
ret = get_aac_sample_rates(s, side_data, side_data_size,
&track->sample_rate,
&output_sample_rate);
if (ret < 0)
--
2.25.4
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".