From 348bdcd7b7d23e3bd54e6b80e12f1dc38d2990b9 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 6 Aug 2013 09:10:30 +0200 Subject: encoder/lame: use lame_encode_buffer_interleaved() Don't deinterleave manually, don't allocate memory. --- src/encoder/LameEncoderPlugin.cxx | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/encoder/LameEncoderPlugin.cxx b/src/encoder/LameEncoderPlugin.cxx index 2411d3624..9a87d87ff 100644 --- a/src/encoder/LameEncoderPlugin.cxx +++ b/src/encoder/LameEncoderPlugin.cxx @@ -236,23 +236,14 @@ lame_encoder_write(Encoder *_encoder, const unsigned num_frames = length / encoder->audio_format.GetFrameSize(); - float *left = g_new(float, num_frames); - float *right = g_new(float, num_frames); /* this is for only 16-bit audio */ - for (unsigned i = 0; i < num_frames; i++) { - left[i] = *src++; - right[i] = *src++; - } - - int bytes_out = lame_encode_buffer_float(encoder->gfp, left, right, - num_frames, - encoder->output_buffer, - sizeof(encoder->output_buffer)); - - g_free(left); - g_free(right); + int bytes_out = lame_encode_buffer_interleaved(encoder->gfp, + const_cast(src), + num_frames, + encoder->output_buffer, + sizeof(encoder->output_buffer)); if (bytes_out < 0) { g_set_error(error, lame_encoder_quark(), 0, -- cgit v1.2.3