diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2011-10-24 08:44:24 -0400 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2011-10-28 14:40:52 -0400 |
commit | f3db0f7403f652428930dd77d5fd049b8165c54a (patch) | |
tree | 71bd056909eb193da1916eafc286dc91aa2ccf06 /libavcodec | |
parent | 77c8ef9a36cf3489420486d356bbaaed72c48592 (diff) | |
download | ffmpeg-f3db0f7403f652428930dd77d5fd049b8165c54a.tar.gz |
nellymoserenc: take float input samples instead of int16
This avoids having to convert all input data from int16 to float, which is used
internally for encoding.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/nellymoserenc.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/libavcodec/nellymoserenc.c b/libavcodec/nellymoserenc.c index 0f94e75c92..0f521db1e9 100644 --- a/libavcodec/nellymoserenc.c +++ b/libavcodec/nellymoserenc.c @@ -146,7 +146,7 @@ static av_cold int encode_init(AVCodecContext *avctx) avctx->frame_size = NELLY_SAMPLES; s->avctx = avctx; - ff_mdct_init(&s->mdct_ctx, 8, 0, 1.0); + ff_mdct_init(&s->mdct_ctx, 8, 0, 32768.0); dsputil_init(&s->dsp, avctx); /* Generate overlap window */ @@ -352,17 +352,15 @@ static void encode_block(NellyMoserEncodeContext *s, unsigned char *output, int static int encode_frame(AVCodecContext *avctx, uint8_t *frame, int buf_size, void *data) { NellyMoserEncodeContext *s = avctx->priv_data; - const int16_t *samples = data; + const float *samples = data; int i; if (s->last_frame) return 0; if (data) { - for (i = 0; i < avctx->frame_size; i++) { - s->buf[s->bufsel][i] = samples[i]; - } - for (; i < NELLY_SAMPLES; i++) { + memcpy(s->buf[s->bufsel], samples, avctx->frame_size * sizeof(*samples)); + for (i = avctx->frame_size; i < NELLY_SAMPLES; i++) { s->buf[s->bufsel][i] = 0; } s->bufsel = 1 - s->bufsel; @@ -393,5 +391,5 @@ AVCodec ff_nellymoser_encoder = { .close = encode_end, .capabilities = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY, .long_name = NULL_IF_CONFIG_SMALL("Nellymoser Asao"), - .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE}, + .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_FLT,AV_SAMPLE_FMT_NONE}, }; |