From 748384a1868c54346a061c413d3eda2eda5191ce Mon Sep 17 00:00:00 2001 From: Bartlomiej Wolowiec Date: Sun, 31 Aug 2008 19:26:33 +0000 Subject: [PATCH] Okayed parts of nellymoserenc.c Originally committed as revision 15126 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/nellymoserenc.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libavcodec/nellymoserenc.c b/libavcodec/nellymoserenc.c index bc01a50..428ce74 100644 --- a/libavcodec/nellymoserenc.c +++ b/libavcodec/nellymoserenc.c @@ -48,6 +48,8 @@ typedef struct NellyMoserEncodeContext { AVCodecContext *avctx; int last_frame; + DSPContext dsp; + MDCTContext mdct_ctx; } NellyMoserEncodeContext; static float pow_table[POW_TABLE_SIZE]; ///< -pow(2, -i / 2048.0 - 3.0); @@ -110,6 +112,13 @@ static av_cold int encode_init(AVCodecContext *avctx) return -1; } + if (avctx->sample_rate != 8000 && avctx->sample_rate != 11025 && + avctx->sample_rate != 22050 && avctx->sample_rate != 44100 && + avctx->strict_std_compliance >= FF_COMPLIANCE_NORMAL) { + av_log(avctx, AV_LOG_ERROR, "Nellymoser works only with 8000, 11025, 22050 and 44100 sample rate\n"); + return -1; + } + avctx->frame_size = NELLY_SAMPLES; s->avctx = avctx; ff_mdct_init(&s->mdct_ctx, 8, 0); @@ -131,6 +140,12 @@ static av_cold int encode_end(AVCodecContext *avctx) return 0; } +#define find_best(val, table, LUT, LUT_add, LUT_size) \ + best_idx = \ + LUT[av_clip ((lrintf(val) >> 8) + LUT_add, 0, LUT_size - 1)]; \ + if (fabs(val - table[best_idx]) > fabs(val - table[best_idx + 1])) \ + best_idx++; + AVCodec nellymoser_encoder = { .name = "nellymoser", .type = CODEC_TYPE_AUDIO, -- 2.7.4