forked from HandBrake/HandBrake
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathA22-matroskaenc-aac-extradata-updated.patch
36 lines (33 loc) · 1.53 KB
/
A22-matroskaenc-aac-extradata-updated.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
From 5ae5c7ab274b7d85f2496e72c27449fd01b9b396 Mon Sep 17 00:00:00 2001
From: Damiano Galassi <[email protected]>
Date: Sat, 16 Jul 2022 10:04:58 +0200
Subject: [PATCH] avformat/matroskaenc: return error if aac extradata changes
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. Original patch by John Stebbins.
---
libavformat/matroskaenc.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 1256bdfe36..d24f6a7ad3 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -2693,6 +2693,16 @@ static int mkv_check_new_extra_data(AVFormatContext *s, const AVPacket *pkt)
case AV_CODEC_ID_AAC:
if (side_data_size && mkv->track.bc) {
int 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(EINVAL);
+ } else {
+ // Already written
+ break;
+ }
+ }
ret = get_aac_sample_rates(s, mkv, side_data, side_data_size,
&track->sample_rate, &output_sample_rate);
if (ret < 0)
--
2.32.1 (Apple Git-133)