aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/nellymoserenc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/libavcodec/nellymoserenc.c b/libavcodec/nellymoserenc.c
index bc01a50e73..428ce7480d 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,