X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fg722dec.c;h=26f288b72170097d1324b8d2717de1626396d6b6;hb=d711d839ca6714a5ef5b53ee51bc7632e62cf203;hp=55a23d1c5e4fd3cb3029431cf8d19c8f8f7108ae;hpb=a903f8f087b0bdcc5643054147f3a5f278e7eb99;p=ffmpeg diff --git a/libavcodec/g722dec.c b/libavcodec/g722dec.c index 55a23d1c5e4..26f288b7217 100644 --- a/libavcodec/g722dec.c +++ b/libavcodec/g722dec.c @@ -39,11 +39,12 @@ #include "avcodec.h" #include "get_bits.h" #include "g722.h" +#include "internal.h" #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 } }; @@ -66,9 +67,6 @@ static av_cold int g722_decode_init(AVCodecContext * avctx) c->band[1].scale_factor = 2; c->prev_samples_pos = 22; - avcodec_get_frame_defaults(&c->frame); - avctx->coded_frame = &c->frame; - return 0; } @@ -87,6 +85,7 @@ static int g722_decode_frame(AVCodecContext *avctx, void *data, 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; @@ -94,12 +93,12 @@ static int g722_decode_frame(AVCodecContext *avctx, void *data, GetBitContext gb; /* get output buffer */ - c->frame.nb_samples = avpkt->size * 2; - if ((ret = avctx->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); @@ -134,20 +133,19 @@ static int g722_decode_frame(AVCodecContext *avctx, void *data, } } - *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, };