static av_cold int dca_decode_init(AVCodecContext * avctx) { DCAContext *s = avctx->priv_data; int i; s->avctx = avctx; dca_init_vlcs(); dsputil_init(&s->dsp, avctx); ff_mdct_init(&s->imdct, 6, 1, 1.0); for(i = 0; i < 6; i++) s->samples_chanptr[i] = s->samples + i * 256; avctx->sample_fmt = SAMPLE_FMT_S16; if(s->dsp.float_to_int16_interleave == ff_float_to_int16_interleave_c) { s->add_bias = 385.0f; s->scale_bias = 1.0 / 32768.0; } else { s->add_bias = 0.0f; s->scale_bias = 1.0; /* allow downmixing to stereo */ if (avctx->channels > 0 && avctx->request_channels < avctx->channels && avctx->request_channels == 2) { avctx->channels = avctx->request_channels; } } return 0; }
static av_cold int dca_decode_init(AVCodecContext * avctx) { DCAContext *s = avctx->priv_data; s->avctx = avctx; dca_init_vlcs(); pre_calc_cosmod(s); dsputil_init(&s->dsp, avctx); /* allow downmixing to stereo */ if (avctx->channels > 0 && avctx->request_channels < avctx->channels && avctx->request_channels == 2) { avctx->channels = avctx->request_channels; } return 0; }