summaryrefslogtreecommitdiffstats
path: root/ext/speex/gstspeexenc.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/speex/gstspeexenc.c')
-rw-r--r--ext/speex/gstspeexenc.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/ext/speex/gstspeexenc.c b/ext/speex/gstspeexenc.c
index a7059edf..963d5607 100644
--- a/ext/speex/gstspeexenc.c
+++ b/ext/speex/gstspeexenc.c
@@ -867,25 +867,21 @@ gst_speex_enc_encode (GstSpeexEnc * enc, gboolean flush)
while (gst_adapter_available (enc->adapter) >= bytes) {
gint16 *data;
- gint i;
gint outsize, written;
GstBuffer *outbuf;
- data = (gint16 *) gst_adapter_peek (enc->adapter, bytes);
-
- for (i = 0; i < frame_size * enc->channels; i++) {
- enc->input[i] = (gfloat) data[i];
- }
- gst_adapter_flush (enc->adapter, bytes);
+ data = (gint16 *) gst_adapter_take (enc->adapter, bytes);
enc->samples_in += frame_size;
GST_DEBUG_OBJECT (enc, "encoding %d samples (%d bytes)", frame_size, bytes);
if (enc->channels == 2) {
- speex_encode_stereo (enc->input, frame_size, &enc->bits);
+ speex_encode_stereo_int (data, frame_size, &enc->bits);
}
- speex_encode (enc->state, enc->input, &enc->bits);
+ speex_encode_int (enc->state, data, &enc->bits);
+
+ g_free (data);
enc->frameno++;
enc->frameno_out++;