On 29/03/2017 12:36, Luca Barbato wrote: > On 29/03/2017 12:04, Vittorio Giovara wrote: >> 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; > > 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.
As discussed on IRC I made the mentioned changes and I'd push it if nobody else have an opinion. lu _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
