]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Okayed parts of nellymoserenc.c
authorbwolowiec <bwolowiec@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sun, 31 Aug 2008 19:26:33 +0000 (19:26 +0000)
committerbwolowiec <bwolowiec@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sun, 31 Aug 2008 19:26:33 +0000 (19:26 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@15126 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/nellymoserenc.c

index bc01a50e73fdbdb2eab5b407743bcb4fd6205389..428ce7480de07a0d08a1d2902f652e6344453dff 100644 (file)
@@ -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,