On 29/03/2017 12:04, Vittorio Giovara wrote: > 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;
put here int num_core_channels and set it to s->audio_header.prim_channels to reduce the changes and make certain compiler possibly happier? > 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, > } > } > Below it is ok. > - /* 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; > I'm not against it even w/out the suggested changes. lu _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel