X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Falacenc.c;h=fe03bb7dad11c69400ee5a99c14c5e27f0658a08;hb=492cc1bef3d1b47b576cae8686b196368290ffe6;hp=0fad99febdb0cc7e785955d31a125243f6a68c34;hpb=edac49daf5f703aa4e742ecdd747658e82d91b33;p=ffmpeg diff --git a/libavcodec/alacenc.c b/libavcodec/alacenc.c index 0fad99febdb..fe03bb7dad1 100644 --- a/libavcodec/alacenc.c +++ b/libavcodec/alacenc.c @@ -2,20 +2,20 @@ * ALAC audio encoder * Copyright (c) 2008 Jaikrishnan Menon * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * FFmpeg is distributed in the hope that it will be useful, + * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -51,11 +51,11 @@ typedef struct RiceContext { int rice_modifier; } RiceContext; -typedef struct LPCContext { +typedef struct AlacLPCContext { int lpc_order; int lpc_coeff[ALAC_MAX_LPC_ORDER+1]; int lpc_quant; -} LPCContext; +} AlacLPCContext; typedef struct AlacEncodeContext { int compression_level; @@ -69,8 +69,8 @@ typedef struct AlacEncodeContext { int interlacing_leftweight; PutBitContext pbctx; RiceContext rc; - LPCContext lpc[MAX_CHANNELS]; - DSPContext dspctx; + AlacLPCContext lpc[MAX_CHANNELS]; + LPCContext lpc_ctx; AVCodecContext *avctx; } AlacEncodeContext; @@ -141,12 +141,12 @@ static void calc_predictor_params(AlacEncodeContext *s, int ch) s->lpc[ch].lpc_coeff[4] = 80; s->lpc[ch].lpc_coeff[5] = -25; } else { - opt_order = ff_lpc_calc_coefs(&s->dspctx, s->sample_buf[ch], + opt_order = ff_lpc_calc_coefs(&s->lpc_ctx, s->sample_buf[ch], s->avctx->frame_size, s->min_prediction_order, s->max_prediction_order, ALAC_MAX_LPC_PRECISION, coefs, shift, - AV_LPC_TYPE_LEVINSON, 0, + FF_LPC_TYPE_LEVINSON, 0, ORDER_METHOD_EST, ALAC_MAX_LPC_SHIFT, 1); s->lpc[ch].lpc_order = opt_order; @@ -237,7 +237,7 @@ static void alac_stereo_decorrelation(AlacEncodeContext *s) static void alac_linear_predictor(AlacEncodeContext *s, int ch) { int i; - LPCContext lpc = s->lpc[ch]; + AlacLPCContext lpc = s->lpc[ch]; if(lpc.lpc_order == 31) { s->predictor_buf[0] = s->sample_buf[ch][0]; @@ -378,12 +378,13 @@ static void write_compressed_frame(AlacEncodeContext *s) static av_cold int alac_encode_init(AVCodecContext *avctx) { AlacEncodeContext *s = avctx->priv_data; + int ret; uint8_t *alac_extradata = av_mallocz(ALAC_EXTRADATA_SIZE+1); avctx->frame_size = DEFAULT_FRAME_SIZE; avctx->bits_per_coded_sample = DEFAULT_SAMPLE_SIZE; - if(avctx->sample_fmt != SAMPLE_FMT_S16) { + if(avctx->sample_fmt != AV_SAMPLE_FMT_S16) { av_log(avctx, AV_LOG_ERROR, "only pcm_s16 input samples are supported\n"); return -1; } @@ -455,9 +456,10 @@ static av_cold int alac_encode_init(AVCodecContext *avctx) avctx->coded_frame->key_frame = 1; s->avctx = avctx; - dsputil_init(&s->dspctx, avctx); + ret = ff_lpc_init(&s->lpc_ctx, avctx->frame_size, s->max_prediction_order, + FF_LPC_TYPE_LEVINSON); - return 0; + return ret; } static int alac_encode_frame(AVCodecContext *avctx, uint8_t *frame, @@ -513,21 +515,23 @@ verbatim: static av_cold int alac_encode_close(AVCodecContext *avctx) { + AlacEncodeContext *s = avctx->priv_data; + ff_lpc_end(&s->lpc_ctx); av_freep(&avctx->extradata); avctx->extradata_size = 0; av_freep(&avctx->coded_frame); return 0; } -AVCodec alac_encoder = { - "alac", - AVMEDIA_TYPE_AUDIO, - CODEC_ID_ALAC, - sizeof(AlacEncodeContext), - alac_encode_init, - alac_encode_frame, - alac_encode_close, +AVCodec ff_alac_encoder = { + .name = "alac", + .type = AVMEDIA_TYPE_AUDIO, + .id = CODEC_ID_ALAC, + .priv_data_size = sizeof(AlacEncodeContext), + .init = alac_encode_init, + .encode = alac_encode_frame, + .close = alac_encode_close, .capabilities = CODEC_CAP_SMALL_LAST_FRAME, - .sample_fmts = (const enum SampleFormat[]){ SAMPLE_FMT_S16, SAMPLE_FMT_NONE}, + .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE}, .long_name = NULL_IF_CONFIG_SMALL("ALAC (Apple Lossless Audio Codec)"), };