-}
-
-/**
- * Decode stream header.
- *
- * @param avctx codec context
- * @param buf packet data
- * @param bufsize packet size
- * @return data offset or negative error code if header is invalid
- */
-static int adx_decode_header(AVCodecContext *avctx, const uint8_t *buf,
- int bufsize)
-{
- ADXContext *c = avctx->priv_data;
- int offset, cutoff;
-
- if (AV_RB16(buf) != 0x8000)
- return AVERROR_INVALIDDATA;
- offset = AV_RB16(buf + 2) + 4;
- if (bufsize < offset || memcmp(buf + offset - 6, "(c)CRI", 6))
- return AVERROR_INVALIDDATA;
-
- c->channels = avctx->channels = buf[7];
- if (avctx->channels > 2)
- return AVERROR_INVALIDDATA;
- avctx->sample_rate = AV_RB32(buf + 8);
- if (avctx->sample_rate < 1 ||
- avctx->sample_rate > INT_MAX / (avctx->channels * 18 * 8))
- return AVERROR_INVALIDDATA;
- avctx->bit_rate = avctx->sample_rate * avctx->channels * 18 * 8 / 32;
-
- cutoff = AV_RB16(buf + 16);
- ff_adx_calculate_coeffs(cutoff, avctx->sample_rate, COEFF_BITS, c->coeff);