summaryrefslogtreecommitdiff
path: root/libavformat/flvdec.c
diff options
context:
space:
mode:
authorBenjamin Larsson <benjamin@southpole.se>2014-01-05 14:42:14 +0100
committerAnton Khirnov <anton@khirnov.net>2014-01-11 13:14:20 +0100
commit547f8345373843fe4428e2b3de6b46de4df797af (patch)
tree41d2e8d28ea82f2292e57b0fd6f81695085d8e43 /libavformat/flvdec.c
parent44a0a98f92c7df1452029aa0295e0ece9d2165ca (diff)
flv: Workaround for buggy Omnia A/XE encoder
The Omnia A/XE encoder writes the explicit extra data incorrectly and wrongly disables parametric stereo. Truncating the extra data by setting the size to 2 works around this. The AAC extra data parser will then only parse the correct parts. Bug-id: 599
Diffstat (limited to 'libavformat/flvdec.c')
-rw-r--r--libavformat/flvdec.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index c65c90c1ae..a3630f8078 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -915,6 +915,12 @@ skip:
return ret;
if (st->codec->codec_id == AV_CODEC_ID_AAC) {
MPEG4AudioConfig cfg;
+
+ /* Workaround for buggy Omnia A/XE encoder */
+ AVDictionaryEntry *t = av_dict_get(s->metadata, "Encoder", NULL, 0);
+ if (t && !strcmp(t->value, "Omnia A/XE"))
+ st->codec->extradata_size = 2;
+
avpriv_mpeg4audio_get_config(&cfg, st->codec->extradata,
st->codec->extradata_size * 8, 1);
st->codec->channels = cfg.channels;