*/
#include "libavutil/intreadwrite.h"
+
#include "avcodec.h"
#include "adx.h"
-#include "get_bits.h"
+#include "bitstream.h"
#include "internal.h"
/**
int ret, header_size;
if (avctx->extradata_size >= 24) {
- if ((ret = avpriv_adx_decode_header(avctx, avctx->extradata,
- avctx->extradata_size, &header_size,
- c->coeff)) < 0) {
+ if ((ret = ff_adx_decode_header(avctx, avctx->extradata,
+ avctx->extradata_size, &header_size,
+ c->coeff)) < 0) {
av_log(avctx, AV_LOG_ERROR, "error parsing ADX header\n");
return AVERROR_INVALIDDATA;
}
const uint8_t *in, int ch)
{
ADXChannelState *prev = &c->prev[ch];
- GetBitContext gb;
+ BitstreamContext bc;
int scale = AV_RB16(in);
int i;
int s0, s1, s2, d;
if (scale & 0x8000)
return -1;
- init_get_bits(&gb, in + 2, (BLOCK_SIZE - 2) * 8);
+ bitstream_init8(&bc, in + 2, BLOCK_SIZE - 2);
out += offset;
s1 = prev->s1;
s2 = prev->s2;
for (i = 0; i < BLOCK_SAMPLES; i++) {
- d = get_sbits(&gb, 4);
+ d = bitstream_read_signed(&bc, 4);
s0 = ((d << COEFF_BITS) * scale + c->coeff[0] * s1 + c->coeff[1] * s2) >> COEFF_BITS;
s2 = s1;
s1 = av_clip_int16(s0);
if (!c->header_parsed && buf_size >= 2 && AV_RB16(buf) == 0x8000) {
int header_size;
- if ((ret = avpriv_adx_decode_header(avctx, buf, buf_size, &header_size,
- c->coeff)) < 0) {
+ if ((ret = ff_adx_decode_header(avctx, buf, buf_size, &header_size,
+ c->coeff)) < 0) {
av_log(avctx, AV_LOG_ERROR, "error parsing ADX header\n");
return AVERROR_INVALIDDATA;
}
/* get output buffer */
frame->nb_samples = num_blocks * BLOCK_SAMPLES;
- if ((ret = ff_get_buffer(avctx, frame)) < 0) {
+ if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) {
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
return ret;
}
AVCodec ff_adpcm_adx_decoder = {
.name = "adpcm_adx",
+ .long_name = NULL_IF_CONFIG_SMALL("SEGA CRI ADX ADPCM"),
.type = AVMEDIA_TYPE_AUDIO,
.id = AV_CODEC_ID_ADPCM_ADX,
.priv_data_size = sizeof(ADXContext),
.init = adx_decode_init,
.decode = adx_decode_frame,
.flush = adx_decode_flush,
- .capabilities = CODEC_CAP_DR1,
- .long_name = NULL_IF_CONFIG_SMALL("SEGA CRI ADX ADPCM"),
+ .capabilities = AV_CODEC_CAP_DR1,
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P,
AV_SAMPLE_FMT_NONE },
};