* A mdct based codec using a 256 points large transform
* divided into 32 bands with some mix of scale factors.
* Only mono is supported.
- *
*/
int sumLenArr[BANDS]; ///< bits for all coeffs in band
int skipFlagRaw[BANDS]; ///< skip flags are stored in raw form or not
int skipFlagBits[BANDS]; ///< bits used to code skip flags
- int skipFlagCount[BANDS]; ///< skipped coeffients per band
+ int skipFlagCount[BANDS]; ///< skipped coefficients per band
int skipFlags[COEFFS]; ///< skip coefficient decoding or not
int codewords[COEFFS]; ///< raw codewords read from bitstream
int decoder_reset;
} IMCChannel;
-typedef struct {
+typedef struct IMCContext {
IMCChannel chctx[2];
/** MDCT tables */
return ret;
}
ff_bswapdsp_init(&q->bdsp);
- avpriv_float_dsp_init(&q->fdsp, avctx->flags & CODEC_FLAG_BITEXACT);
+ avpriv_float_dsp_init(&q->fdsp, avctx->flags & AV_CODEC_FLAG_BITEXACT);
avctx->sample_fmt = AV_SAMPLE_FMT_FLTP;
avctx->channel_layout = avctx->channels == 1 ? AV_CH_LAYOUT_MONO
: AV_CH_LAYOUT_STEREO;
pos = q->coef0_pos;
flcoeffs1[pos] = 20000.0 / pow (2, levlCoeffBuf[0] * 0.18945); // 0.18945 = log2(10) * 0.05703125
- flcoeffs2[pos] = log2f(flcoeffs1[0]);
+ flcoeffs2[pos] = log2f(flcoeffs1[pos]);
tmp = flcoeffs1[pos];
tmp2 = flcoeffs2[pos];
cw = 0;
if (get_bits_count(&q->gb) + cw_len > 512) {
- av_dlog(NULL, "Band %i coeff %i cw_len %i\n", i, j, cw_len);
+ ff_dlog(NULL, "Band %i coeff %i cw_len %i\n", i, j, cw_len);
return AVERROR_INVALIDDATA;
}
flag = get_bits1(&q->gb);
if (stream_format_code & 0x1)
- imc_decode_level_coefficients_raw(q, chctx->levlCoeffBuf,
- chctx->flcoeffs1, chctx->flcoeffs2);
- else if (stream_format_code & 0x1)
imc_read_level_coeffs_raw(q, stream_format_code, chctx->levlCoeffBuf);
else
imc_read_level_coeffs(q, stream_format_code, chctx->levlCoeffBuf);
- if (stream_format_code & 0x4)
+ if (stream_format_code & 0x1)
+ imc_decode_level_coefficients_raw(q, chctx->levlCoeffBuf,
+ chctx->flcoeffs1, chctx->flcoeffs2);
+ else if (stream_format_code & 0x4)
imc_decode_level_coefficients(q, chctx->levlCoeffBuf,
chctx->flcoeffs1, chctx->flcoeffs2);
else
IMCContext *q = avctx->priv_data;
- LOCAL_ALIGNED_16(uint16_t, buf16, [IMC_BLOCK_SIZE / 2]);
+ LOCAL_ALIGNED_16(uint16_t, buf16, [(IMC_BLOCK_SIZE + AV_INPUT_BUFFER_PADDING_SIZE) / 2]);
if (buf_size < IMC_BLOCK_SIZE * avctx->channels) {
av_log(avctx, AV_LOG_ERROR, "frame too small!\n");
.init = imc_decode_init,
.close = imc_decode_close,
.decode = imc_decode_frame,
- .capabilities = CODEC_CAP_DR1,
+ .capabilities = AV_CODEC_CAP_DR1,
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP,
AV_SAMPLE_FMT_NONE },
};
.init = imc_decode_init,
.close = imc_decode_close,
.decode = imc_decode_frame,
- .capabilities = CODEC_CAP_DR1,
+ .capabilities = AV_CODEC_CAP_DR1,
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP,
AV_SAMPLE_FMT_NONE },
};