X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Flibilbc.c;h=af693bd7289ac52054039ce245606d2416553b5c;hb=054013a0fc6f2b52c60cee3e051be8cc7f82cef3;hp=281206109c709e6cb0e9e33014d03ff1df227675;hpb=30f8da29bf609d741bbebd33b2a5003c426ab919;p=ffmpeg diff --git a/libavcodec/libilbc.c b/libavcodec/libilbc.c index 281206109c7..af693bd7289 100644 --- a/libavcodec/libilbc.c +++ b/libavcodec/libilbc.c @@ -21,10 +21,10 @@ #include -#include "libavutil/audioconvert.h" -#include "avcodec.h" +#include "libavutil/channel_layout.h" #include "libavutil/common.h" #include "libavutil/opt.h" +#include "avcodec.h" #include "internal.h" static int get_mode(AVCodecContext *avctx) @@ -41,7 +41,6 @@ static int get_mode(AVCodecContext *avctx) typedef struct ILBCDecContext { const AVClass *class; - AVFrame frame; iLBC_Dec_Inst_t decoder; int enhance; } ILBCDecContext; @@ -66,8 +65,6 @@ static av_cold int ilbc_decode_init(AVCodecContext *avctx) } WebRtcIlbcfix_InitDecode(&s->decoder, mode, s->enhance); - avcodec_get_frame_defaults(&s->frame); - avctx->coded_frame = &s->frame; avctx->channels = 1; avctx->channel_layout = AV_CH_LAYOUT_MONO; @@ -83,6 +80,7 @@ static int ilbc_decode_frame(AVCodecContext *avctx, void *data, const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; ILBCDecContext *s = avctx->priv_data; + AVFrame *frame = data; int ret; if (s->decoder.no_of_bytes > buf_size) { @@ -91,30 +89,29 @@ static int ilbc_decode_frame(AVCodecContext *avctx, void *data, return AVERROR_INVALIDDATA; } - s->frame.nb_samples = s->decoder.blockl; - if ((ret = avctx->get_buffer(avctx, &s->frame)) < 0) { + frame->nb_samples = s->decoder.blockl; + if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); return ret; } - WebRtcIlbcfix_DecodeImpl((WebRtc_Word16*) s->frame.data[0], + WebRtcIlbcfix_DecodeImpl((WebRtc_Word16*) frame->data[0], (const WebRtc_UWord16*) buf, &s->decoder, 1); - *got_frame_ptr = 1; - *(AVFrame *)data = s->frame; + *got_frame_ptr = 1; return s->decoder.no_of_bytes; } AVCodec ff_libilbc_decoder = { .name = "libilbc", + .long_name = NULL_IF_CONFIG_SMALL("iLBC (Internet Low Bitrate Codec)"), .type = AVMEDIA_TYPE_AUDIO, .id = AV_CODEC_ID_ILBC, .priv_data_size = sizeof(ILBCDecContext), .init = ilbc_decode_init, .decode = ilbc_decode_frame, .capabilities = CODEC_CAP_DR1, - .long_name = NULL_IF_CONFIG_SMALL("iLBC (Internet Low Bitrate Codec)"), .priv_class = &ilbc_dec_class, }; @@ -156,20 +153,7 @@ static av_cold int ilbc_encode_init(AVCodecContext *avctx) avctx->block_align = s->encoder.no_of_bytes; avctx->frame_size = s->encoder.blockl; -#if FF_API_OLD_ENCODE_AUDIO - avctx->coded_frame = avcodec_alloc_frame(); - if (!avctx->coded_frame) - return AVERROR(ENOMEM); -#endif - - return 0; -} -static av_cold int ilbc_encode_close(AVCodecContext *avctx) -{ -#if FF_API_OLD_ENCODE_AUDIO - av_freep(&avctx->coded_frame); -#endif return 0; } @@ -198,15 +182,14 @@ static const AVCodecDefault ilbc_encode_defaults[] = { AVCodec ff_libilbc_encoder = { .name = "libilbc", + .long_name = NULL_IF_CONFIG_SMALL("iLBC (Internet Low Bitrate Codec)"), .type = AVMEDIA_TYPE_AUDIO, .id = AV_CODEC_ID_ILBC, .priv_data_size = sizeof(ILBCEncContext), .init = ilbc_encode_init, .encode2 = ilbc_encode_frame, - .close = ilbc_encode_close, .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE }, - .long_name = NULL_IF_CONFIG_SMALL("iLBC (Internet Low Bitrate Codec)"), .defaults = ilbc_encode_defaults, .priv_class = &ilbc_enc_class, };