From f3db0f7403f652428930dd77d5fd049b8165c54a Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Mon, 24 Oct 2011 08:44:24 -0400 Subject: 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. --- libavcodec/nellymoserenc.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'libavcodec/nellymoserenc.c') 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}, }; -- cgit v1.2.3