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;
int interlacing_leftweight;
PutBitContext pbctx;
RiceContext rc;
- LPCContext lpc[MAX_CHANNELS];
- DSPContext dspctx;
+ AlacLPCContext lpc[MAX_CHANNELS];
+ LPCContext lpc_ctx;
AVCodecContext *avctx;
} AlacEncodeContext;
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,
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];
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->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,
+ AV_LPC_TYPE_LEVINSON);
- return 0;
+ return ret;
}
static int alac_encode_frame(AVCodecContext *avctx, uint8_t *frame,
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 = {
+AVCodec ff_alac_encoder = {
"alac",
AVMEDIA_TYPE_AUDIO,
CODEC_ID_ALAC,