#define OFFSET(x) offsetof(G722Context, x)
#define AD AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_DECODING_PARAM
static const AVOption options[] = {
- { "bits_per_codeword", "Bits per G722 codeword", OFFSET(bits_per_codeword), AV_OPT_TYPE_FLAGS, { .i64 = 8 }, 6, 8, AD },
+ { "bits_per_codeword", "Bits per G722 codeword", OFFSET(bits_per_codeword), AV_OPT_TYPE_INT, { .i64 = 8 }, 6, 8, AD },
{ NULL }
};
c->band[1].scale_factor = 2;
c->prev_samples_pos = 22;
- avcodec_get_frame_defaults(&c->frame);
- avctx->coded_frame = &c->frame;
-
return 0;
}
int *got_frame_ptr, AVPacket *avpkt)
{
G722Context *c = avctx->priv_data;
+ AVFrame *frame = data;
int16_t *out_buf;
int j, ret;
const int skip = 8 - c->bits_per_codeword;
GetBitContext gb;
/* get output buffer */
- c->frame.nb_samples = avpkt->size * 2;
- if ((ret = ff_get_buffer(avctx, &c->frame)) < 0) {
+ frame->nb_samples = avpkt->size * 2;
+ if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) {
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
return ret;
}
- out_buf = (int16_t *)c->frame.data[0];
+ out_buf = (int16_t *)frame->data[0];
init_get_bits(&gb, avpkt->data, avpkt->size * 8);
}
}
- *got_frame_ptr = 1;
- *(AVFrame *)data = c->frame;
+ *got_frame_ptr = 1;
return avpkt->size;
}
AVCodec ff_adpcm_g722_decoder = {
.name = "g722",
+ .long_name = NULL_IF_CONFIG_SMALL("G.722 ADPCM"),
.type = AVMEDIA_TYPE_AUDIO,
.id = AV_CODEC_ID_ADPCM_G722,
.priv_data_size = sizeof(G722Context),
.init = g722_decode_init,
.decode = g722_decode_frame,
.capabilities = CODEC_CAP_DR1,
- .long_name = NULL_IF_CONFIG_SMALL("G.722 ADPCM"),
.priv_class = &g722_decoder_class,
};