From: Anton Khirnov <[email protected]>
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
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel