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

Reply via email to