This fixes https://bugzilla.libav.org/show_bug.cgi?id=599.

MvH
Benjamin Larsson
>From d4bbe456698502fa56269ba425f154cf05518faf Mon Sep 17 00:00:00 2001
From: Benjamin Larsson <[email protected]>
Date: Sun, 5 Jan 2014 14:42:14 +0100
Subject: [PATCH] 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
---
 libavformat/flvdec.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index c65c90c..72d3ca4 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;
-- 
1.8.3.2

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to