From: Anton Khirnov <an...@khirnov.net>

num_core_channels is always equal to s->audio_header.prim_channels,
neither one of those variables ever get changed.
---
 libavcodec/dcadec.c | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c
index fa2a2400fe..85bb7ed1a8 100644
--- a/libavcodec/dcadec.c
+++ b/libavcodec/dcadec.c
@@ -1263,7 +1263,7 @@ static int scan_for_extensions(AVCodecContext *avctx)
     return ret;
 }
 
-static int set_channel_layout(AVCodecContext *avctx, int channels, int 
num_core_channels)
+static int set_channel_layout(AVCodecContext *avctx, int channels)
 {
     DCAContext *s = avctx->priv_data;
     int i;
@@ -1290,7 +1290,7 @@ static int set_channel_layout(AVCodecContext *avctx, int 
channels, int num_core_
                 s->channel_order_tab = 
ff_dca_channel_reorder_nolfe_xch[s->amode];
             }
         } else {
-            channels       = num_core_channels + !!s->lfe;
+            channels       = s->audio_header.prim_channels + !!s->lfe;
             s->xch_present = 0; /* disable further xch processing */
             if (s->lfe) {
                 avctx->channel_layout |= AV_CH_LOW_FREQUENCY;
@@ -1306,7 +1306,7 @@ static int set_channel_layout(AVCodecContext *avctx, int 
channels, int num_core_
             s->channel_order_tab[channels - 1 - !!s->lfe] < 0)
             return AVERROR_INVALIDDATA;
 
-        if (num_core_channels + !!s->lfe > 2 &&
+        if (s->audio_header.prim_channels + !!s->lfe > 2 &&
             avctx->request_channel_layout == AV_CH_LAYOUT_STEREO) {
             channels              = 2;
             s->output             = s->audio_header.prim_channels == 2 ? 
s->amode : DCA_STEREO;
@@ -1319,7 +1319,7 @@ static int set_channel_layout(AVCodecContext *avctx, int 
channels, int num_core_
              */
             if (s->core_downmix && (s->core_downmix_amode == DCA_STEREO ||
                                     s->core_downmix_amode == 
DCA_STEREO_TOTAL)) {
-                for (i = 0; i < num_core_channels + !!s->lfe; i++) {
+                for (i = 0; i < s->audio_header.prim_channels + !!s->lfe; i++) 
{
                     /* Range checked earlier */
                     s->downmix_coef[i][0] = 
dca_dmix_code(s->core_downmix_codes[i][0]);
                     s->downmix_coef[i][1] = 
dca_dmix_code(s->core_downmix_codes[i][1]);
@@ -1332,19 +1332,19 @@ static int set_channel_layout(AVCodecContext *avctx, 
int channels, int num_core_
                            "Invalid channel mode %d\n", am);
                     return AVERROR_INVALIDDATA;
                 }
-                if (num_core_channels + !!s->lfe >
+                if (s->audio_header.prim_channels + !!s->lfe >
                     FF_ARRAY_ELEMS(ff_dca_default_coeffs[0])) {
                     avpriv_request_sample(s->avctx, "Downmixing %d channels",
                                           s->audio_header.prim_channels + 
!!s->lfe);
                     return AVERROR_PATCHWELCOME;
                 }
-                for (i = 0; i < num_core_channels + !!s->lfe; i++) {
+                for (i = 0; i < s->audio_header.prim_channels + !!s->lfe; i++) 
{
                     s->downmix_coef[i][0] = ff_dca_default_coeffs[am][i][0];
                     s->downmix_coef[i][1] = ff_dca_default_coeffs[am][i][1];
                 }
             }
             ff_dlog(s->avctx, "Stereo downmix coeffs:\n");
-            for (i = 0; i < num_core_channels + !!s->lfe; i++) {
+            for (i = 0; i < s->audio_header.prim_channels + !!s->lfe; i++) {
                 ff_dlog(s->avctx, "L, input channel %d = %f\n", i,
                         s->downmix_coef[i][0]);
                 ff_dlog(s->avctx, "R, input channel %d = %f\n", i,
@@ -1372,7 +1372,6 @@ static int dca_decode_frame(AVCodecContext *avctx, void 
*data,
     int buf_size       = avpkt->size;
 
     int lfe_samples;
-    int num_core_channels = 0;
     int i, ret;
     float  **samples_flt;
     DCAContext *s = avctx->priv_data;
@@ -1406,9 +1405,6 @@ static int dca_decode_frame(AVCodecContext *avctx, void 
*data,
         }
     }
 
-    /* record number of core channels incase less than max channels are 
requested */
-    num_core_channels = s->audio_header.prim_channels;
-
     if (s->ext_coding)
         s->core_ext_mask = dca_ext_audio_descr_mask[s->ext_descr];
     else
@@ -1420,7 +1416,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void 
*data,
 
     full_channels = channels = s->audio_header.prim_channels + !!s->lfe;
 
-    ret = set_channel_layout(avctx, channels, num_core_channels);
+    ret = set_channel_layout(avctx, channels);
     if (ret < 0)
         return ret;
     avctx->channels = channels;
-- 
2.12.0

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to