Module: libav
Branch: master
Commit: 5d47850bbd9ea70f6ab6b8eecaf3992a8c444492

Author:    Michael Niedermayer <[email protected]>
Committer: Justin Ruggles <[email protected]>
Date:      Mon Oct 29 05:21:47 2012 +0100

dcadec: skip QMF on unused channels

When the extra rear channel is present but unused, the
s->channel_order_tab[] value for that channel is -1. The QMF can be
skipped for the extra channel, and doing so avoids an out-of-array read
on s->samples_chanptr[].

Signed-off-by: Michael Niedermayer <[email protected]>
Signed-off-by: Justin Ruggles <[email protected]>

---

 libavcodec/dcadec.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c
index 712a72a..325f3fe 100644
--- a/libavcodec/dcadec.c
+++ b/libavcodec/dcadec.c
@@ -1279,9 +1279,10 @@ static int dca_filter_channels(DCAContext *s, int 
block_index)
     for (k = 0; k < s->prim_channels; k++) {
 /*        static float pcm_to_double[8] = { 32768.0, 32768.0, 524288.0, 
524288.0,
                                             0, 8388608.0, 8388608.0 };*/
-        qmf_32_subbands(s, k, subband_samples[k],
-                        s->samples_chanptr[s->channel_order_tab[k]],
-                        M_SQRT1_2 / 32768.0 /* 
pcm_to_double[s->source_pcm_res] */);
+        if (s->channel_order_tab[k] >= 0)
+            qmf_32_subbands(s, k, subband_samples[k],
+                            s->samples_chanptr[s->channel_order_tab[k]],
+                            M_SQRT1_2 / 32768.0 /* 
pcm_to_double[s->source_pcm_res] */);
     }
 
     /* Down mixing */

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

Reply via email to