[SCM] libav/experimental: dcadec: Use correct channel count in stereo downmix check

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Aug 10 16:02:49 UTC 2014


The following commit has been merged in the experimental branch:
commit 801c39e1e3058fc4ba822bfb5d8612d777111e32
Author: Tim Walker <tdskywalker at gmail.com>
Date:   Sat Apr 12 22:11:53 2014 +0200

    dcadec: Use correct channel count in stereo downmix check
    
    s->prim_channels is greater than num_core_channels
    when an XCh extension is present in the bitstream.
    
    Signed-off-by: Luca Barbato <lu_zero at gentoo.org>

diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c
index 49d7aac..94e79d2 100644
--- a/libavcodec/dcadec.c
+++ b/libavcodec/dcadec.c
@@ -1890,7 +1890,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
             s->channel_order_tab[channels - 1 - !!s->lfe] < 0)
             return AVERROR_INVALIDDATA;
 
-        if (s->prim_channels + !!s->lfe > 2 &&
+        if (num_core_channels + !!s->lfe > 2 &&
             avctx->request_channel_layout == AV_CH_LAYOUT_STEREO) {
             channels = 2;
             s->output = s->prim_channels == 2 ? s->amode : DCA_STEREO;
@@ -1904,7 +1904,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
             if (s->core_downmix && (s->core_downmix_amode == DCA_STEREO ||
                                     s->core_downmix_amode == DCA_STEREO_TOTAL)) {
                 int sign, code;
-                for (i = 0; i < s->prim_channels + !!s->lfe; i++) {
+                for (i = 0; i < num_core_channels + !!s->lfe; i++) {
                     sign = s->core_downmix_codes[i][0] & 0x100 ? 1 : -1;
                     code = s->core_downmix_codes[i][0] & 0x0FF;
                     s->downmix_coef[i][0] = (!code ? 0.0f :
@@ -1922,19 +1922,19 @@ FF_ENABLE_DEPRECATION_WARNINGS
                            "Invalid channel mode %d\n", am);
                     return AVERROR_INVALIDDATA;
                 }
-                if (s->prim_channels + !!s->lfe >
+                if (num_core_channels + !!s->lfe >
                     FF_ARRAY_ELEMS(dca_default_coeffs[0])) {
                     avpriv_request_sample(s->avctx, "Downmixing %d channels",
                                           s->prim_channels + !!s->lfe);
                     return AVERROR_PATCHWELCOME;
                 }
-                for (i = 0; i < s->prim_channels + !!s->lfe; i++) {
+                for (i = 0; i < num_core_channels + !!s->lfe; i++) {
                     s->downmix_coef[i][0] = dca_default_coeffs[am][i][0];
                     s->downmix_coef[i][1] = dca_default_coeffs[am][i][1];
                 }
             }
             av_dlog(s->avctx, "Stereo downmix coeffs:\n");
-            for (i = 0; i < s->prim_channels + !!s->lfe; i++) {
+            for (i = 0; i < num_core_channels + !!s->lfe; i++) {
                 av_dlog(s->avctx, "L, input channel %d = %f\n", i,
                         s->downmix_coef[i][0]);
                 av_dlog(s->avctx, "R, input channel %d = %f\n", i,

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list