summaryrefslogtreecommitdiff
path: root/ext/speex/gstspeexdec.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/speex/gstspeexdec.c')
-rw-r--r--ext/speex/gstspeexdec.c39
1 files changed, 19 insertions, 20 deletions
diff --git a/ext/speex/gstspeexdec.c b/ext/speex/gstspeexdec.c
index 4ba4d285f..6ec7d5ba9 100644
--- a/ext/speex/gstspeexdec.c
+++ b/ext/speex/gstspeexdec.c
@@ -190,13 +190,12 @@ static GstFlowReturn
gst_speex_dec_parse_header (GstSpeexDec * dec, GstBuffer * buf)
{
GstCaps *caps;
- char *data;
- gsize size;
+ GstMapInfo map;
/* get the header */
- data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
- dec->header = speex_packet_to_header (data, size);
- gst_buffer_unmap (buf, data, size);
+ gst_buffer_map (buf, &map, GST_MAP_READ);
+ dec->header = speex_packet_to_header ((gchar *) map.data, map.size);
+ gst_buffer_unmap (buf, &map);
if (!dec->header)
goto no_header;
@@ -368,23 +367,22 @@ gst_speex_dec_parse_data (GstSpeexDec * dec, GstBuffer * buf)
GstFlowReturn res = GST_FLOW_OK;
gint i, fpp;
SpeexBits *bits;
- gsize size;
- char *data;
+ GstMapInfo map;
if (!dec->frame_duration)
goto not_negotiated;
if (G_LIKELY (gst_buffer_get_size (buf))) {
/* send data to the bitstream */
- data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
- speex_bits_read_from (&dec->bits, data, size);
- gst_buffer_unmap (buf, data, size);
+ gst_buffer_map (buf, &map, GST_MAP_READ);
+ speex_bits_read_from (&dec->bits, (gchar *) map.data, map.size);
+ gst_buffer_unmap (buf, &map);
fpp = dec->header->frames_per_packet;
bits = &dec->bits;
GST_DEBUG_OBJECT (dec, "received buffer of size %" G_GSIZE_FORMAT
- ", fpp %d, %d bits", size, fpp, speex_bits_remaining (bits));
+ ", fpp %d, %d bits", map.size, fpp, speex_bits_remaining (bits));
} else {
/* FIXME ? actually consider how much concealment is needed */
/* concealment data, pass NULL as the bits parameters */
@@ -396,7 +394,6 @@ gst_speex_dec_parse_data (GstSpeexDec * dec, GstBuffer * buf)
/* now decode each frame, catering for unknown number of them (e.g. rtp) */
for (i = 0; i < fpp; i++) {
GstBuffer *outbuf;
- gint16 *out_data;
gint ret;
GST_LOG_OBJECT (dec, "decoding frame %d/%d, %d bits remaining", i, fpp,
@@ -418,9 +415,8 @@ gst_speex_dec_parse_data (GstSpeexDec * dec, GstBuffer * buf)
gst_buffer_new_allocate (NULL,
dec->frame_size * dec->header->nb_channels * 2, 0);
- out_data = gst_buffer_map (outbuf, &size, NULL, GST_MAP_WRITE);
- ret = speex_decode_int (dec->state, bits, out_data);
- gst_buffer_unmap (outbuf, out_data, size);
+ gst_buffer_map (outbuf, &map, GST_MAP_WRITE);
+ ret = speex_decode_int (dec->state, bits, (spx_int16_t *) map.data);
if (ret == -1) {
/* uh? end of stream */
@@ -445,7 +441,10 @@ gst_speex_dec_parse_data (GstSpeexDec * dec, GstBuffer * buf)
gst_buffer_unref (outbuf);
}
if (dec->header->nb_channels == 2)
- speex_decode_stereo_int (out_data, dec->frame_size, dec->stereo);
+ speex_decode_stereo_int ((spx_int16_t *) map.data, dec->frame_size,
+ dec->stereo);
+
+ gst_buffer_unmap (outbuf, &map);
res = gst_audio_decoder_finish_frame (GST_AUDIO_DECODER (dec), outbuf, 1);
@@ -469,8 +468,8 @@ not_negotiated:
static gboolean
memcmp_buffers (GstBuffer * buf1, GstBuffer * buf2)
{
+ GstMapInfo map;
gsize size1, size2;
- gpointer data1;
gboolean res;
size1 = gst_buffer_get_size (buf1);
@@ -479,9 +478,9 @@ memcmp_buffers (GstBuffer * buf1, GstBuffer * buf2)
if (size1 != size2)
return FALSE;
- data1 = gst_buffer_map (buf1, NULL, NULL, GST_MAP_READ);
- res = gst_buffer_memcmp (buf2, 0, data1, size1) == 0;
- gst_buffer_unmap (buf1, data1, size1);
+ gst_buffer_map (buf1, &map, GST_MAP_READ);
+ res = gst_buffer_memcmp (buf2, 0, map.data, map.size) == 0;
+ gst_buffer_unmap (buf1, &map);
return res;
}