more memory API porting

This commit is contained in:
Wim Taymans 2012-01-24 14:38:58 +01:00
parent 583d39dd8d
commit b4630dd3e0
26 changed files with 249 additions and 238 deletions

View file

@ -358,10 +358,13 @@ gst_cmml_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstCmmlDec *dec = GST_CMML_DEC (parent);
GstCmmlPacketType packet;
GstMapInfo map;
guint8 *data;
gsize size;
data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
gst_buffer_map (buffer, &map, GST_MAP_READ);
data = map.data;
size = map.size;
if (size == 0) {
/* the EOS page could be empty */
@ -400,7 +403,7 @@ gst_cmml_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
}
done:
gst_buffer_unmap (buffer, data, size);
gst_buffer_unmap (buffer, &map);
gst_buffer_unref (buffer);
return dec->flow_return;

View file

@ -598,23 +598,23 @@ gst_cmml_enc_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GError *err = NULL;
GstCmmlEnc *enc = GST_CMML_ENC (parent);
gchar *data;
gsize size;
GstMapInfo map;
/* the CMML handlers registered with enc->parser will override this when
* encoding/pushing the buffers downstream
*/
enc->flow_return = GST_FLOW_OK;
data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
gst_buffer_map (buffer, &map, GST_MAP_READ);
if (!gst_cmml_parser_parse_chunk (enc->parser, data, size, &err)) {
if (!gst_cmml_parser_parse_chunk (enc->parser, (gchar *) map.data, map.size,
&err)) {
GST_ELEMENT_ERROR (enc, STREAM, ENCODE, (NULL), ("%s", err->message));
g_error_free (err);
enc->flow_return = GST_FLOW_ERROR;
}
gst_buffer_unmap (buffer, data, size);
gst_buffer_unmap (buffer, &map);
gst_buffer_unref (buffer);
return enc->flow_return;
}

View file

@ -536,8 +536,7 @@ gst_flac_dec_write (GstFlacDec * flacdec, const FLAC__Frame * frame,
guint channels = frame->header.channels;
guint samples = frame->header.blocksize;
guint j, i;
gpointer data;
gsize size;
GstMapInfo map;
gboolean caps_changed;
GST_LOG_OBJECT (flacdec, "samples in frame header: %d", samples);
@ -618,9 +617,9 @@ gst_flac_dec_write (GstFlacDec * flacdec, const FLAC__Frame * frame,
GST_LOG_OBJECT (flacdec, "alloc_buffer_and_set_caps");
outbuf = gst_buffer_new_allocate (NULL, samples * channels * (width / 8), 0);
data = gst_buffer_map (outbuf, &size, NULL, GST_MAP_WRITE);
gst_buffer_map (outbuf, &map, GST_MAP_WRITE);
if (width == 8) {
gint8 *outbuffer = (gint8 *) data;
gint8 *outbuffer = (gint8 *) map.data;
gint *reorder_map = flacdec->channel_reorder_map;
if (width != depth) {
@ -637,7 +636,7 @@ gst_flac_dec_write (GstFlacDec * flacdec, const FLAC__Frame * frame,
}
}
} else if (width == 16) {
gint16 *outbuffer = (gint16 *) data;
gint16 *outbuffer = (gint16 *) map.data;
gint *reorder_map = flacdec->channel_reorder_map;
if (width != depth) {
@ -655,7 +654,7 @@ gst_flac_dec_write (GstFlacDec * flacdec, const FLAC__Frame * frame,
}
}
} else if (width == 32) {
gint32 *outbuffer = (gint32 *) data;
gint32 *outbuffer = (gint32 *) map.data;
gint *reorder_map = flacdec->channel_reorder_map;
if (width != depth) {
@ -675,7 +674,7 @@ gst_flac_dec_write (GstFlacDec * flacdec, const FLAC__Frame * frame,
} else {
g_assert_not_reached ();
}
gst_buffer_unmap (outbuf, data, size);
gst_buffer_unmap (outbuf, &map);
GST_DEBUG_OBJECT (flacdec, "pushing %d samples", samples);
@ -743,17 +742,17 @@ gst_flac_dec_handle_frame (GstAudioDecoder * audio_dec, GstBuffer * buf)
if (G_UNLIKELY (!dec->got_headers)) {
gboolean got_audio_frame;
gint64 unused;
guint8 *data;
gsize size;
GstMapInfo map;
/* check if this is a flac audio frame (rather than a header or junk) */
data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
got_audio_frame = gst_flac_dec_scan_got_frame (dec, data, size, &unused);
gst_buffer_unmap (buf, data, size);
gst_buffer_map (buf, &map, GST_MAP_READ);
got_audio_frame =
gst_flac_dec_scan_got_frame (dec, map.data, map.size, &unused);
gst_buffer_unmap (buf, &map);
if (!got_audio_frame) {
GST_INFO_OBJECT (dec, "dropping in-stream header, %" G_GSIZE_FORMAT " "
"bytes", size);
"bytes", map.size);
gst_audio_decoder_finish_frame (audio_dec, NULL, 1);
return GST_FLOW_OK;
}

View file

@ -516,8 +516,7 @@ gst_flac_enc_set_metadata (GstFlacEnc * flacenc, guint64 total_samples)
GstTagImageType image_type = GST_TAG_IMAGE_TYPE_NONE;
#endif
gint i;
guint8 *data;
gsize size;
GstMapInfo map;
for (i = 0; i < n_images + n_preview_images; i++) {
if (i < n_images) {
@ -545,10 +544,10 @@ gst_flac_enc_set_metadata (GstFlacEnc * flacenc, guint64 total_samples)
image_type = image_type + 2;
#endif
data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
gst_buffer_map (buffer, &map, GST_MAP_READ);
FLAC__metadata_object_picture_set_data (flacenc->meta[entries],
data, size, TRUE);
gst_buffer_unmap (buffer, data, size);
map.data, map.size, TRUE);
gst_buffer_unmap (buffer, &map);
#if 0
/* FIXME: There's no way to set the picture type in libFLAC */
@ -915,6 +914,7 @@ gst_flac_enc_process_stream_headers (GstFlacEnc * enc)
for (l = enc->headers; l != NULL; l = l->next) {
GstBuffer *buf;
GstMapInfo map;
guint8 *data;
gsize size;
@ -925,7 +925,9 @@ gst_flac_enc_process_stream_headers (GstFlacEnc * enc)
buf = GST_BUFFER_CAST (l->data);
GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_IN_CAPS);
data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
gst_buffer_map (buf, &map, GST_MAP_READ);
data = map.data;
size = map.size;
/* find initial 4-byte marker which we need to skip later on */
if (size == 4 && memcmp (data, "fLaC", 4) == 0) {
@ -936,7 +938,7 @@ gst_flac_enc_process_stream_headers (GstFlacEnc * enc)
vorbiscomment = buf;
}
gst_buffer_unmap (buf, data, size);
gst_buffer_unmap (buf, &map);
}
if (marker == NULL || streaminfo == NULL || vorbiscomment == NULL) {
@ -951,8 +953,9 @@ gst_flac_enc_process_stream_headers (GstFlacEnc * enc)
{
GstBuffer *buf;
guint16 num;
GstMapInfo map;
guint8 *bdata;
gsize bsize, slen;
gsize slen;
/* minus one for the marker that is merged with streaminfo here */
num = g_list_length (enc->headers) - 1;
@ -960,7 +963,8 @@ gst_flac_enc_process_stream_headers (GstFlacEnc * enc)
slen = gst_buffer_get_size (streaminfo);
buf = gst_buffer_new_and_alloc (13 + slen);
bdata = gst_buffer_map (buf, &bsize, NULL, GST_MAP_WRITE);
gst_buffer_map (buf, &map, GST_MAP_WRITE);
bdata = map.data;
bdata[0] = 0x7f;
memcpy (bdata + 1, "FLAC", 4);
bdata[5] = 0x01; /* mapping version major */
@ -969,7 +973,7 @@ gst_flac_enc_process_stream_headers (GstFlacEnc * enc)
bdata[8] = (num & 0x00FF) >> 0;
memcpy (bdata + 9, "fLaC", 4);
gst_buffer_extract (streaminfo, 0, bdata + 13, slen);
gst_buffer_unmap (buf, bdata, bsize);
gst_buffer_unmap (buf, &map);
notgst_value_array_append_buffer (&array, buf);
gst_buffer_unref (buf);
@ -1169,12 +1173,11 @@ gst_flac_enc_handle_frame (GstAudioEncoder * enc, GstBuffer * buffer)
{
GstFlacEnc *flacenc;
FLAC__int32 *data;
gsize bsize;
gint samples, width, channels;
gulong i;
gint j;
FLAC__bool res;
gpointer bdata;
GstMapInfo map;
GstAudioInfo *info =
gst_audio_encoder_get_audio_info (GST_AUDIO_ENCODER (enc));
gint *reorder_map;
@ -1202,28 +1205,28 @@ gst_flac_enc_handle_frame (GstAudioEncoder * enc, GstBuffer * buffer)
return flacenc->last_flow;
}
bdata = gst_buffer_map (buffer, &bsize, NULL, GST_MAP_READ);
samples = bsize / (width >> 3);
gst_buffer_map (buffer, &map, GST_MAP_READ);
samples = map.size / (width >> 3);
data = g_malloc (samples * sizeof (FLAC__int32));
samples /= channels;
if (width == 8) {
gint8 *indata = (gint8 *) bdata;
gint8 *indata = (gint8 *) map.data;
for (i = 0; i < samples; i++)
for (j = 0; j < channels; j++)
data[i * channels + reorder_map[j]] =
(FLAC__int32) indata[i * channels + j];
} else if (width == 16) {
gint16 *indata = (gint16 *) bdata;
gint16 *indata = (gint16 *) map.data;
for (i = 0; i < samples; i++)
for (j = 0; j < channels; j++)
data[i * channels + reorder_map[j]] =
(FLAC__int32) indata[i * channels + j];
} else if (width == 24) {
guint8 *indata = (guint8 *) bdata;
guint8 *indata = (guint8 *) map.data;
guint32 val;
for (i = 0; i < samples; i++)
@ -1234,7 +1237,7 @@ gst_flac_enc_handle_frame (GstAudioEncoder * enc, GstBuffer * buffer)
data[i * channels + reorder_map[j]] = (FLAC__int32) val;
}
} else if (width == 32) {
gint32 *indata = (gint32 *) bdata;
gint32 *indata = (gint32 *) map.data;
for (i = 0; i < samples; i++)
for (j = 0; j < channels; j++)
@ -1243,7 +1246,7 @@ gst_flac_enc_handle_frame (GstAudioEncoder * enc, GstBuffer * buffer)
} else {
g_assert_not_reached ();
}
gst_buffer_unmap (buffer, bdata, bsize);
gst_buffer_unmap (buffer, &map);
res = FLAC__stream_encoder_process_interleaved (flacenc->encoder,
(const FLAC__int32 *) data, samples / channels);

View file

@ -191,7 +191,7 @@ gst_flac_tag_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstFlacTag *tag;
GstFlowReturn ret;
guint8 *data;
GstMapInfo map;
gsize size;
ret = GST_FLOW_OK;
@ -284,9 +284,9 @@ gst_flac_tag_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
/* clear the is-last flag, as the last metadata block will
* be the vorbis comment block which we will build ourselves.
*/
data = gst_buffer_map (metadata_buffer, &size, NULL, GST_MAP_READWRITE);
data[0] &= (~0x80);
gst_buffer_unmap (metadata_buffer, data, size);
gst_buffer_map (metadata_buffer, &map, GST_MAP_READWRITE);
map.data[0] &= (~0x80);
gst_buffer_unmap (metadata_buffer, &map);
if (tag->state == GST_FLAC_TAG_STATE_WRITING_METADATA_BLOCK) {
GST_DEBUG_OBJECT (tag, "pushing metadata block buffer");
@ -362,11 +362,11 @@ gst_flac_tag_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
if (buffer == NULL)
goto no_buffer;
data = gst_buffer_map (buffer, &size, NULL, GST_MAP_WRITE);
memset (data, 0, size);
data[0] = 0x81; /* 0x80 = Last metadata block,
gst_buffer_map (buffer, &map, GST_MAP_WRITE);
memset (map.data, 0, map.size);
map.data[0] = 0x81; /* 0x80 = Last metadata block,
* 0x01 = padding block */
gst_buffer_unmap (buffer, data, size);
gst_buffer_unmap (buffer, &map);
} else {
guchar header[4];
guint8 fbit[1];
@ -399,14 +399,14 @@ gst_flac_tag_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
/* The 4 byte metadata block header isn't accounted for in the total
* size of the metadata block
*/
data = gst_buffer_map (buffer, &size, NULL, GST_MAP_WRITE);
data[1] = (((size - 4) & 0xFF0000) >> 16);
data[2] = (((size - 4) & 0x00FF00) >> 8);
data[3] = ((size - 4) & 0x0000FF);
gst_buffer_unmap (buffer, data, size);
gst_buffer_map (buffer, &map, GST_MAP_WRITE);
map.data[1] = (((map.size - 4) & 0xFF0000) >> 16);
map.data[2] = (((map.size - 4) & 0x00FF00) >> 8);
map.data[3] = ((map.size - 4) & 0x0000FF);
gst_buffer_unmap (buffer, &map);
GST_DEBUG_OBJECT (tag, "pushing %" G_GSIZE_FORMAT " byte vorbiscomment "
"buffer", size);
"buffer", map.size);
ret = gst_pad_push (tag->srcpad, buffer);
if (ret != GST_FLOW_OK) {

View file

@ -159,10 +159,11 @@ static void
ensure_memory (GstJpegEnc * jpegenc)
{
GstMemory *new_memory;
GstMapInfo map;
gsize old_size, desired_size, new_size;
guint8 *new_data;
old_size = jpegenc->output_size;
old_size = jpegenc->output_map.size;
if (old_size == 0)
desired_size = jpegenc->bufsize;
else
@ -171,19 +172,20 @@ ensure_memory (GstJpegEnc * jpegenc)
/* Our output memory wasn't big enough.
* Make a new memory that's twice the size, */
new_memory = gst_allocator_alloc (NULL, desired_size, 3);
new_data = gst_memory_map (new_memory, &new_size, NULL, GST_MAP_READWRITE);
gst_memory_map (new_memory, &map, GST_MAP_READWRITE);
new_data = map.data;
new_size = map.size;
/* copy previous data if any */
if (jpegenc->output_mem) {
memcpy (new_data, jpegenc->output_data, old_size);
gst_memory_unmap (jpegenc->output_mem);
memcpy (new_data, jpegenc->output_map.data, old_size);
gst_memory_unmap (jpegenc->output_mem, &jpegenc->output_map);
gst_memory_unref (jpegenc->output_mem);
}
/* drop it into place, */
jpegenc->output_mem = new_memory;
jpegenc->output_data = new_data;
jpegenc->output_size = new_size;
jpegenc->output_map = map;
/* and last, update libjpeg on where to work. */
jpegenc->jdest.next_output_byte = new_data + old_size;
@ -215,12 +217,12 @@ gst_jpegenc_term_destination (j_compress_ptr cinfo)
GstJpegEnc *jpegenc = (GstJpegEnc *) (cinfo->client_data);
GST_DEBUG_OBJECT (jpegenc, "gst_jpegenc_chain: term_source");
gst_memory_unmap (jpegenc->output_mem);
gst_memory_unmap (jpegenc->output_mem, &jpegenc->output_map);
/* Trim the buffer size. we will push it in the chain function */
gst_memory_resize (jpegenc->output_mem, 0,
jpegenc->output_size - jpegenc->jdest.free_in_buffer);
jpegenc->output_data = NULL;
jpegenc->output_size = 0;
jpegenc->output_map.size - jpegenc->jdest.free_in_buffer);
jpegenc->output_map.data = NULL;
jpegenc->output_map.size = 0;
}
static void
@ -566,12 +568,10 @@ gst_jpegenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
}
jpegenc->output_mem = gst_allocator_alloc (NULL, jpegenc->bufsize, 3);
jpegenc->output_data =
gst_memory_map (jpegenc->output_mem, &jpegenc->output_size, NULL,
GST_MAP_READWRITE);
gst_memory_map (jpegenc->output_mem, &jpegenc->output_map, GST_MAP_READWRITE);
jpegenc->jdest.next_output_byte = jpegenc->output_data;
jpegenc->jdest.free_in_buffer = jpegenc->output_size;
jpegenc->jdest.next_output_byte = jpegenc->output_map.data;
jpegenc->jdest.free_in_buffer = jpegenc->output_map.size;
/* prepare for raw input */
#if JPEG_LIB_VERSION >= 70

View file

@ -86,8 +86,7 @@ struct _GstJpegEnc
GstFlowReturn last_ret;
GstMemory *output_mem;
gpointer output_data;
gsize output_size;
GstMapInfo output_map;
};
struct _GstJpegEncClass

View file

@ -1737,8 +1737,7 @@ gst_pulsesink_payload (GstAudioBaseSink * sink, GstBuffer * buf)
/* FIXME: alloc memory from PA if possible */
gint framesize = gst_audio_iec61937_frame_size (&sink->ringbuffer->spec);
GstBuffer *out;
guint8 *indata, *outdata;
gsize insize, outsize;
GstMapInfo inmap, outmap;
gboolean res;
if (framesize <= 0)
@ -1746,14 +1745,14 @@ gst_pulsesink_payload (GstAudioBaseSink * sink, GstBuffer * buf)
out = gst_buffer_new_and_alloc (framesize);
indata = gst_buffer_map (buf, &insize, NULL, GST_MAP_READ);
outdata = gst_buffer_map (out, &outsize, NULL, GST_MAP_WRITE);
gst_buffer_map (buf, &inmap, GST_MAP_READ);
gst_buffer_map (out, &outmap, GST_MAP_WRITE);
res = gst_audio_iec61937_payload (indata, insize,
outdata, outsize, &sink->ringbuffer->spec);
res = gst_audio_iec61937_payload (inmap.data, inmap.size,
outmap.data, outmap.size, &sink->ringbuffer->spec);
gst_buffer_unmap (buf, indata, insize);
gst_buffer_unmap (out, outdata, outsize);
gst_buffer_unmap (buf, &inmap);
gst_buffer_unmap (out, &outmap);
if (!res) {
gst_buffer_unref (out);

View file

@ -623,30 +623,28 @@ send_message_locked (GstSoupHttpClientSink * souphttpsink)
if (souphttpsink->offset == 0) {
for (g = souphttpsink->streamheader_buffers; g; g = g_list_next (g)) {
GstBuffer *buffer = g->data;
gpointer data;
gsize size;
GstMapInfo map;
/* FIXME, lifetime of the buffer? */
data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
gst_buffer_map (buffer, &map, GST_MAP_READ);
soup_message_body_append (souphttpsink->message->request_body,
SOUP_MEMORY_STATIC, data, size);
n += size;
gst_buffer_unmap (buffer, data, size);
SOUP_MEMORY_STATIC, map.data, map.size);
n += map.size;
gst_buffer_unmap (buffer, &map);
}
}
for (g = souphttpsink->queued_buffers; g; g = g_list_next (g)) {
GstBuffer *buffer = g->data;
if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_IN_CAPS)) {
gpointer data;
gsize size;
GstMapInfo map;
/* FIXME, lifetime of the buffer? */
data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
gst_buffer_map (buffer, &map, GST_MAP_READ);
soup_message_body_append (souphttpsink->message->request_body,
SOUP_MEMORY_STATIC, data, size);
n += size;
gst_buffer_unmap (buffer, data, size);
SOUP_MEMORY_STATIC, map.data, map.size);
n += map.size;
gst_buffer_unmap (buffer, &map);
}
}

View file

@ -876,7 +876,7 @@ gst_soup_http_src_finished_cb (SoupMessage * msg, GstSoupHTTPSrc * src)
typedef struct
{
GstBuffer *buffer;
gpointer data;
GstMapInfo map;
} SoupGstChunk;
static void
@ -884,7 +884,7 @@ gst_soup_http_src_chunk_free (gpointer user_data)
{
SoupGstChunk *chunk = (SoupGstChunk *) user_data;
gst_buffer_unmap (chunk->buffer, chunk->data, -1);
gst_buffer_unmap (chunk->buffer, &chunk->map);
gst_buffer_unref (chunk->buffer);
g_slice_free (SoupGstChunk, chunk);
}
@ -919,9 +919,9 @@ gst_soup_http_src_chunk_allocator (SoupMessage * msg, gsize max_len,
chunk = g_slice_new0 (SoupGstChunk);
chunk->buffer = gstbuf;
chunk->data = gst_buffer_map (gstbuf, &length, NULL, GST_MAP_READWRITE);
gst_buffer_map (gstbuf, &chunk->map, GST_MAP_READWRITE);
soupbuf = soup_buffer_new_with_owner (chunk->data, length,
soupbuf = soup_buffer_new_with_owner (chunk->map.data, chunk->map.size,
chunk, gst_soup_http_src_chunk_free);
return soupbuf;

View file

@ -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;
}

View file

@ -539,13 +539,16 @@ gst_speex_enc_encode (GstSpeexEnc * enc, GstBuffer * buf)
gint frame_size = enc->frame_size;
gint bytes = frame_size * 2 * enc->channels, samples;
gint outsize, written, dtx_ret = 0;
guint8 *data, *data0 = NULL, *bdata, *outdata;
GstMapInfo map;
guint8 *data, *data0 = NULL, *bdata;
gsize bsize, size;
GstBuffer *outbuf;
GstFlowReturn ret = GST_FLOW_OK;
if (G_LIKELY (buf)) {
bdata = gst_buffer_map (buf, &bsize, NULL, GST_MAP_READ);
gst_buffer_map (buf, &map, GST_MAP_READ);
bdata = map.data;
bsize = map.size;
if (G_UNLIKELY (bsize % bytes)) {
GST_DEBUG_OBJECT (enc, "draining; adding silence samples");
@ -553,7 +556,7 @@ gst_speex_enc_encode (GstSpeexEnc * enc, GstBuffer * buf)
size = ((bsize / bytes) + 1) * bytes;
data0 = data = g_malloc0 (size);
memcpy (data, bdata, bsize);
gst_buffer_unmap (buf, bdata, bsize);
gst_buffer_unmap (buf, &map);
bdata = NULL;
} else {
data = bdata;
@ -585,7 +588,7 @@ gst_speex_enc_encode (GstSpeexEnc * enc, GstBuffer * buf)
outsize = speex_bits_nbytes (&enc->bits);
if (bdata)
gst_buffer_unmap (buf, bdata, bsize);
gst_buffer_unmap (buf, &map);
#if 0
ret = gst_pad_alloc_buffer_and_set_caps (GST_AUDIO_ENCODER_SRC_PAD (enc),
@ -596,9 +599,9 @@ gst_speex_enc_encode (GstSpeexEnc * enc, GstBuffer * buf)
goto done;
#endif
outbuf = gst_buffer_new_allocate (NULL, outsize, 0);
outdata = gst_buffer_map (outbuf, NULL, NULL, GST_MAP_WRITE);
gst_buffer_map (outbuf, &map, GST_MAP_WRITE);
written = speex_bits_write (&enc->bits, (gchar *) outdata, outsize);
written = speex_bits_write (&enc->bits, (gchar *) map.data, outsize);
if (G_UNLIKELY (written < outsize)) {
GST_ERROR_OBJECT (enc, "short write: %d < %d bytes", written, outsize);
@ -606,7 +609,8 @@ gst_speex_enc_encode (GstSpeexEnc * enc, GstBuffer * buf)
GST_ERROR_OBJECT (enc, "overrun: %d > %d bytes", written, outsize);
written = outsize;
}
gst_buffer_unmap (outbuf, outdata, written);
gst_buffer_unmap (outbuf, &map);
gst_buffer_resize (outbuf, 0, written);
if (!dtx_ret)
GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_GAP);

View file

@ -152,12 +152,15 @@ gst_rtp_vorbis_depay_parse_configuration (GstRtpVorbisDepay * rtpvorbisdepay,
{
GstBuffer *buf;
guint32 num_headers;
guint8 *data, *bdata;
GstMapInfo map;
guint8 *data;
gsize size;
guint offset;
gint i, j;
bdata = data = gst_buffer_map (confbuf, &size, NULL, GST_MAP_READ);
gst_buffer_map (confbuf, &map, GST_MAP_READ);
data = map.data;
size = map.size;
GST_DEBUG_OBJECT (rtpvorbisdepay, "config size %" G_GSIZE_FORMAT, size);
@ -295,7 +298,7 @@ gst_rtp_vorbis_depay_parse_configuration (GstRtpVorbisDepay * rtpvorbisdepay,
rtpvorbisdepay->configs = g_list_append (rtpvorbisdepay->configs, conf);
}
gst_buffer_unmap (confbuf, bdata, -1);
gst_buffer_unmap (confbuf, &map);
gst_buffer_unref (confbuf);
return TRUE;
@ -304,7 +307,7 @@ gst_rtp_vorbis_depay_parse_configuration (GstRtpVorbisDepay * rtpvorbisdepay,
too_small:
{
GST_DEBUG_OBJECT (rtpvorbisdepay, "configuration too small");
gst_buffer_unmap (confbuf, bdata, -1);
gst_buffer_unmap (confbuf, &map);
gst_buffer_unref (confbuf);
return FALSE;
}
@ -316,23 +319,23 @@ gst_rtp_vorbis_depay_parse_inband_configuration (GstRtpVorbisDepay *
guint length)
{
GstBuffer *confbuf;
guint8 *conf;
GstMapInfo map;
if (G_UNLIKELY (size < 4))
return FALSE;
/* transform inline to out-of-band and parse that one */
confbuf = gst_buffer_new_and_alloc (size + 9);
conf = gst_buffer_map (confbuf, NULL, NULL, -1);
gst_buffer_map (confbuf, &map, GST_MAP_WRITE);
/* 1 header */
GST_WRITE_UINT32_BE (conf, 1);
GST_WRITE_UINT32_BE (map.data, 1);
/* write Ident */
GST_WRITE_UINT24_BE (conf + 4, ident);
GST_WRITE_UINT24_BE (map.data + 4, ident);
/* write sort-of-length */
GST_WRITE_UINT16_BE (conf + 7, length);
GST_WRITE_UINT16_BE (map.data + 7, length);
/* copy remainder */
memcpy (conf + 9, configuration, size);
gst_buffer_unmap (confbuf, conf, -1);
memcpy (map.data + 9, configuration, size);
gst_buffer_unmap (confbuf, &map);
return gst_rtp_vorbis_depay_parse_configuration (rtpvorbisdepay, confbuf);
}
@ -595,12 +598,8 @@ gst_rtp_vorbis_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
(payload - to_free) + length, payload - to_free, length));
to_free = NULL;
} else {
guint8 *data;
outbuf = gst_buffer_new_and_alloc (length);
data = gst_buffer_map (outbuf, NULL, NULL, GST_MAP_WRITE);
memcpy (data, payload, length);
gst_buffer_unmap (outbuf, data, -1);
gst_buffer_fill (outbuf, 0, payload, length);
}
payload += length;

View file

@ -291,10 +291,10 @@ gst_rtp_vorbis_pay_finish_headers (GstRTPBasePayload * basepayload)
ident = fnv1_hash_32_new ();
for (walk = rtpvorbispay->headers; walk; walk = g_list_next (walk)) {
GstBuffer *buf = GST_BUFFER_CAST (walk->data);
guint bsize, osize;
guint8 *data;
GstMapInfo map;
guint bsize;
bsize = osize = gst_buffer_get_size (buf);
bsize = gst_buffer_get_size (buf);
length += bsize;
n_headers++;
@ -307,9 +307,9 @@ gst_rtp_vorbis_pay_finish_headers (GstRTPBasePayload * basepayload)
} while (bsize);
}
/* update hash */
data = gst_buffer_map (buf, NULL, NULL, GST_MAP_READ);
ident = fnv1_hash_32_update (ident, data, osize);
gst_buffer_unmap (buf, data, -1);
gst_buffer_map (buf, &map, GST_MAP_READ);
ident = fnv1_hash_32_update (ident, map.data, map.size);
gst_buffer_unmap (buf, &map);
}
/* packet length is header size + packet length */
@ -475,6 +475,7 @@ gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload,
GstRtpVorbisPay *rtpvorbispay;
GstFlowReturn ret;
guint newsize;
GstMapInfo map;
gsize size;
guint8 *data;
guint packet_len;
@ -488,7 +489,9 @@ gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload,
rtpvorbispay = GST_RTP_VORBIS_PAY (basepayload);
data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
gst_buffer_map (buffer, &map, GST_MAP_READ);
data = map.data;
size = map.size;
duration = GST_BUFFER_DURATION (buffer);
timestamp = GST_BUFFER_TIMESTAMP (buffer);
@ -523,7 +526,7 @@ gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload,
if (VDT != 0) {
GST_DEBUG_OBJECT (rtpvorbispay, "collecting header");
/* append header to the list of headers */
gst_buffer_unmap (buffer, data, -1);
gst_buffer_unmap (buffer, &map);
rtpvorbispay->headers = g_list_append (rtpvorbispay->headers, buffer);
ret = GST_FLOW_OK;
goto done;
@ -623,7 +626,7 @@ gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload,
if (rtp.buffer)
gst_rtp_buffer_unmap (&rtp);
gst_buffer_unmap (buffer, data, -1);
gst_buffer_unmap (buffer, &map);
gst_buffer_unref (buffer);
done:
@ -635,13 +638,13 @@ wrong_size:
GST_ELEMENT_WARNING (rtpvorbispay, STREAM, DECODE,
("Invalid packet size (1 < %" G_GSIZE_FORMAT " <= 0xffff)", size),
(NULL));
gst_buffer_unmap (buffer, data, -1);
gst_buffer_unmap (buffer, &map);
gst_buffer_unref (buffer);
return GST_FLOW_OK;
}
parse_id_failed:
{
gst_buffer_unmap (buffer, data, -1);
gst_buffer_unmap (buffer, &map);
gst_buffer_unref (buffer);
return GST_FLOW_ERROR;
}
@ -649,7 +652,7 @@ unknown_header:
{
GST_ELEMENT_WARNING (rtpvorbispay, STREAM, DECODE,
(NULL), ("Ignoring unknown header received"));
gst_buffer_unmap (buffer, data, -1);
gst_buffer_unmap (buffer, &map);
gst_buffer_unref (buffer);
return GST_FLOW_OK;
}
@ -657,7 +660,7 @@ header_error:
{
GST_ELEMENT_WARNING (rtpvorbispay, STREAM, DECODE,
(NULL), ("Error initializing header config"));
gst_buffer_unmap (buffer, data, -1);
gst_buffer_unmap (buffer, &map);
gst_buffer_unref (buffer);
return GST_FLOW_OK;
}

View file

@ -2233,7 +2233,8 @@ rtp_session_process_feedback (RTPSession * sess, GstRTCPPacket * packet,
if (fci_length > 0) {
fci_buffer = gst_buffer_copy_region (packet->rtcp->buffer,
GST_BUFFER_COPY_MEMORY, fci_data - packet->rtcp->data, fci_length);
GST_BUFFER_COPY_MEMORY, fci_data - packet->rtcp->map.data,
fci_length);
GST_BUFFER_TIMESTAMP (fci_buffer) = arrival->running_time;
}

View file

@ -2095,9 +2095,9 @@ gst_rtspsrc_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
GstRTSPSrc *src;
GstRTSPStream *stream;
GstFlowReturn res = GST_FLOW_OK;
GstMapInfo map;
guint8 *data;
guint size;
gsize bsize;
GstRTSPResult ret;
GstRTSPMessage message = { 0 };
GstRTSPConnection *conn;
@ -2105,8 +2105,9 @@ gst_rtspsrc_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
stream = (GstRTSPStream *) gst_pad_get_element_private (pad);
src = stream->parent;
data = gst_buffer_map (buffer, &bsize, NULL, GST_MAP_READ);
size = bsize;
gst_buffer_map (buffer, &map, GST_MAP_READ);
size = map.size;
data = map.data;
gst_rtsp_message_init_data (&message, stream->channel[1]);
@ -2127,7 +2128,7 @@ gst_rtspsrc_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
gst_rtsp_message_steal_body (&message, &data, &size);
gst_rtsp_message_unset (&message);
gst_buffer_unmap (buffer, data, size);
gst_buffer_unmap (buffer, &map);
gst_buffer_unref (buffer);
return res;

View file

@ -857,14 +857,17 @@ gst_spectrum_transform_ip (GstBaseTransform * trans, GstBuffer * buffer)
guint nfft = 2 * bands - 2;
guint input_pos;
gfloat *input;
const guint8 *data, *mdata;
GstMapInfo map;
const guint8 *data;
gsize size;
guint fft_todo, msg_todo, block_size;
gboolean have_full_interval;
GstSpectrumChannel *cd;
GstSpectrumInputData input_data;
data = mdata = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
gst_buffer_map (buffer, &map, GST_MAP_READ);
data = map.data;
size = map.size;
GST_LOG_OBJECT (spectrum, "input size: %" G_GSIZE_FORMAT " bytes", size);
@ -993,7 +996,7 @@ gst_spectrum_transform_ip (GstBaseTransform * trans, GstBuffer * buffer)
spectrum->input_pos = input_pos;
gst_buffer_unmap (buffer, (guint8 *) mdata, -1);
gst_buffer_unmap (buffer, &map);
g_assert (size == 0);

View file

@ -167,8 +167,7 @@ gst_dynudpsink_render (GstBaseSink * bsink, GstBuffer * buffer)
{
GstDynUDPSink *sink;
gssize ret;
gsize size;
guint8 *data;
GstMapInfo map;
GstNetAddressMeta *meta;
GSocketAddress *addr;
GError *err = NULL;
@ -190,9 +189,9 @@ gst_dynudpsink_render (GstBaseSink * bsink, GstBuffer * buffer)
if (sink->family != family && family != G_SOCKET_FAMILY_IPV4)
goto invalid_family;
data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
gst_buffer_map (buffer, &map, GST_MAP_READ);
GST_DEBUG ("about to send %" G_GSIZE_FORMAT " bytes", size);
GST_DEBUG ("about to send %" G_GSIZE_FORMAT " bytes", map.size);
#ifndef GST_DISABLE_GST_DEBUG
{
@ -201,16 +200,17 @@ gst_dynudpsink_render (GstBaseSink * bsink, GstBuffer * buffer)
host =
g_inet_address_to_string (g_inet_socket_address_get_address
(G_INET_SOCKET_ADDRESS (addr)));
GST_DEBUG ("sending %" G_GSIZE_FORMAT " bytes to client %s port %d", size,
host, g_inet_socket_address_get_port (G_INET_SOCKET_ADDRESS (addr)));
GST_DEBUG ("sending %" G_GSIZE_FORMAT " bytes to client %s port %d",
map.size, host,
g_inet_socket_address_get_port (G_INET_SOCKET_ADDRESS (addr)));
g_free (host);
}
#endif
ret =
g_socket_send_to (sink->used_socket, addr, (gchar *) data, size,
g_socket_send_to (sink->used_socket, addr, (gchar *) map.data, map.size,
sink->cancellable, &err);
gst_buffer_unmap (buffer, data, size);
gst_buffer_unmap (buffer, &map);
if (ret < 0)
goto send_error;

View file

@ -440,9 +440,9 @@ gst_multiudpsink_render (GstBaseSink * bsink, GstBuffer * buffer)
GstMultiUDPSink *sink;
GList *clients;
GOutputVector *vec;
GstMapInfo *map;
guint n_mem, i;
gpointer bdata;
gsize bsize, size;
gsize size;
GstMemory *mem;
gint num, no_clients;
GError *err = NULL;
@ -454,21 +454,22 @@ gst_multiudpsink_render (GstBaseSink * bsink, GstBuffer * buffer)
goto no_data;
vec = g_new (GOutputVector, n_mem);
map = g_new (GstMapInfo, n_mem);
size = 0;
for (i = 0; i < n_mem; i++) {
mem = gst_buffer_peek_memory (buffer, i, GST_MAP_READ);
bdata = gst_memory_map (mem, &bsize, NULL, GST_MAP_READ);
gst_memory_map (mem, &map[i], GST_MAP_READ);
if (bsize > UDP_MAX_SIZE) {
if (map[i].size > UDP_MAX_SIZE) {
GST_WARNING ("Attempting to send a UDP packet larger than maximum "
"size (%" G_GSIZE_FORMAT " > %d)", bsize, UDP_MAX_SIZE);
"size (%" G_GSIZE_FORMAT " > %d)", map[i].size, UDP_MAX_SIZE);
}
vec[i].buffer = bdata;
vec[i].size = bsize;
vec[i].buffer = map[i].data;
vec[i].size = map[i].size;
size += bsize;
size += map[i].size;
}
sink->bytes_to_serve += size;
@ -509,11 +510,11 @@ gst_multiudpsink_render (GstBaseSink * bsink, GstBuffer * buffer)
g_mutex_unlock (&sink->client_lock);
/* unmap all memory again */
for (i = 0; i < n_mem; i++) {
mem = gst_buffer_peek_memory (buffer, i, GST_MAP_READ);
gst_memory_unmap (mem);
}
for (i = 0; i < n_mem; i++)
gst_memory_unmap (map[i].memory, &map[i]);
g_free (vec);
g_free (map);
GST_LOG_OBJECT (sink, "sent %d bytes to %d (of %d) clients", size, num,
no_clients);

View file

@ -308,18 +308,17 @@ static void
gst_video_crop_transform_packed_complex (GstVideoCrop * vcrop,
GstBuffer * inbuf, GstBuffer * outbuf)
{
GstMapInfo in_map, out_map;
guint8 *in_data, *out_data;
gpointer in_bufdata, out_bufdata;
gsize insize, outsize;
guint i, dx;
gint in_stride;
gint out_stride;
in_bufdata = gst_buffer_map (inbuf, &insize, NULL, GST_MAP_READ);
out_bufdata = gst_buffer_map (outbuf, &outsize, NULL, GST_MAP_WRITE);
gst_buffer_map (inbuf, &in_map, GST_MAP_READ);
gst_buffer_map (outbuf, &out_map, GST_MAP_WRITE);
in_data = in_bufdata;
out_data = out_bufdata;
in_data = in_map.data;
out_data = out_map.data;
in_stride = GST_VIDEO_INFO_PLANE_STRIDE (&vcrop->in.info, 0);
out_stride = GST_VIDEO_INFO_PLANE_STRIDE (&vcrop->out.info, 0);
@ -358,25 +357,24 @@ gst_video_crop_transform_packed_complex (GstVideoCrop * vcrop,
out_data += out_stride;
}
}
gst_buffer_unmap (inbuf, in_bufdata, insize);
gst_buffer_unmap (outbuf, out_bufdata, outsize);
gst_buffer_unmap (inbuf, &in_map);
gst_buffer_unmap (outbuf, &out_map);
}
static void
gst_video_crop_transform_packed_simple (GstVideoCrop * vcrop,
GstBuffer * inbuf, GstBuffer * outbuf)
{
GstMapInfo in_map, out_map;
guint8 *in_data, *out_data;
gpointer in_bufdata, out_bufdata;
gsize insize, outsize;
guint i, dx;
gint in_stride, out_stride;
in_bufdata = gst_buffer_map (inbuf, &insize, NULL, GST_MAP_READ);
out_bufdata = gst_buffer_map (outbuf, &outsize, NULL, GST_MAP_WRITE);
gst_buffer_map (inbuf, &in_map, GST_MAP_READ);
gst_buffer_map (outbuf, &out_map, GST_MAP_WRITE);
in_data = in_bufdata;
out_data = out_bufdata;
in_data = in_map.data;
out_data = out_map.data;
in_stride = GST_VIDEO_INFO_PLANE_STRIDE (&vcrop->in.info, 0);
out_stride = GST_VIDEO_INFO_PLANE_STRIDE (&vcrop->out.info, 0);
@ -393,26 +391,25 @@ gst_video_crop_transform_packed_simple (GstVideoCrop * vcrop,
in_data += in_stride;
out_data += out_stride;
}
gst_buffer_unmap (inbuf, in_bufdata, insize);
gst_buffer_unmap (outbuf, out_bufdata, outsize);
gst_buffer_unmap (inbuf, &in_map);
gst_buffer_unmap (outbuf, &out_map);
}
static void
gst_video_crop_transform_planar (GstVideoCrop * vcrop, GstBuffer * inbuf,
GstBuffer * outbuf)
{
GstMapInfo in_map, out_map;
guint8 *y_out, *u_out, *v_out;
guint8 *y_in, *u_in, *v_in;
guint i, dx;
gpointer in_bufdata, out_bufdata;
gsize insize, outsize;
in_bufdata = gst_buffer_map (inbuf, &insize, NULL, GST_MAP_READ);
out_bufdata = gst_buffer_map (outbuf, &outsize, NULL, GST_MAP_WRITE);
gst_buffer_map (inbuf, &in_map, GST_MAP_READ);
gst_buffer_map (outbuf, &out_map, GST_MAP_WRITE);
/* Y plane */
y_in = in_bufdata;
y_out = out_bufdata;
y_in = in_map.data;
y_out = out_map.data;
y_in +=
(vcrop->crop_top * GST_VIDEO_INFO_PLANE_STRIDE (&vcrop->in.info,
@ -427,9 +424,9 @@ gst_video_crop_transform_planar (GstVideoCrop * vcrop, GstBuffer * inbuf,
/* U + V planes */
u_in =
(guint8 *) in_bufdata + GST_VIDEO_INFO_PLANE_OFFSET (&vcrop->in.info, 1);
(guint8 *) in_map.data + GST_VIDEO_INFO_PLANE_OFFSET (&vcrop->in.info, 1);
u_out =
(guint8 *) out_bufdata + GST_VIDEO_INFO_PLANE_OFFSET (&vcrop->out.info,
(guint8 *) out_map.data + GST_VIDEO_INFO_PLANE_OFFSET (&vcrop->out.info,
1);
u_in +=
@ -437,9 +434,9 @@ gst_video_crop_transform_planar (GstVideoCrop * vcrop, GstBuffer * inbuf,
u_in += vcrop->crop_left / 2;
v_in =
(guint8 *) in_bufdata + GST_VIDEO_INFO_PLANE_OFFSET (&vcrop->in.info, 2);
(guint8 *) in_map.data + GST_VIDEO_INFO_PLANE_OFFSET (&vcrop->in.info, 2);
v_out =
(guint8 *) out_bufdata + GST_VIDEO_INFO_PLANE_OFFSET (&vcrop->out.info,
(guint8 *) out_map.data + GST_VIDEO_INFO_PLANE_OFFSET (&vcrop->out.info,
2);
v_in +=
@ -458,8 +455,8 @@ gst_video_crop_transform_planar (GstVideoCrop * vcrop, GstBuffer * inbuf,
v_out += GST_VIDEO_INFO_PLANE_STRIDE (&vcrop->out.info, 2);
}
gst_buffer_unmap (inbuf, in_bufdata, insize);
gst_buffer_unmap (outbuf, out_bufdata, outsize);
gst_buffer_unmap (inbuf, &in_map);
gst_buffer_unmap (outbuf, &out_map);
}
static GstFlowReturn

View file

@ -169,10 +169,12 @@ gst_wavenc_create_header_buf (GstWavEnc * wavenc, guint audio_data_size)
{
struct wave_header wave;
GstBuffer *buf;
GstMapInfo map;
guint8 *header;
buf = gst_buffer_new_and_alloc (WAV_HEADER_LEN);
header = gst_buffer_map (buf, NULL, NULL, GST_MAP_WRITE);
gst_buffer_map (buf, &map, GST_MAP_WRITE);
header = map.data;
memset (header, 0, WAV_HEADER_LEN);
wave.common.wChannels = wavenc->channels;
@ -209,7 +211,7 @@ gst_wavenc_create_header_buf (GstWavEnc * wavenc, guint audio_data_size)
memcpy (header + 36, (char *) wave.data.id, 4);
GST_WRITE_UINT32_LE (header + 40, wave.data.len);
gst_buffer_unmap (buf, header, -1);
gst_buffer_unmap (buf, &map);
return buf;
}

View file

@ -1283,16 +1283,16 @@ gst_wavparse_stream_headers (GstWavParse * wav)
if (!gst_wavparse_peek_chunk_info (wav, &tag, &size))
goto exit;
} else {
guint8 *data;
GstMapInfo map;
if ((res =
gst_pad_pull_range (wav->sinkpad, wav->offset, 8,
&buf)) != GST_FLOW_OK)
goto header_read_error;
data = gst_buffer_map (buf, NULL, NULL, -1);
tag = GST_READ_UINT32_LE (data);
size = GST_READ_UINT32_LE (data + 4);
gst_buffer_unmap (buf, data, -1);
gst_buffer_map (buf, &map, GST_MAP_READ);
tag = GST_READ_UINT32_LE (map.data);
size = GST_READ_UINT32_LE (map.data + 4);
gst_buffer_unmap (buf, &map);
}
GST_INFO_OBJECT (wav,
@ -1409,15 +1409,16 @@ gst_wavparse_stream_headers (GstWavParse * wav)
tempo = acid->tempo;
gst_adapter_unmap (wav->adapter);
} else {
GstMapInfo map;
gst_buffer_unref (buf);
if ((res =
gst_pad_pull_range (wav->sinkpad, wav->offset + 8,
size, &buf)) != GST_FLOW_OK)
goto header_read_error;
acid = (const gst_riff_acid *) gst_buffer_map (buf, NULL, NULL,
GST_MAP_READ);
gst_buffer_map (buf, &map, GST_MAP_READ);
acid = (const gst_riff_acid *) map.data;
tempo = acid->tempo;
gst_buffer_unmap (buf, (guint8 *) acid, -1);
gst_buffer_unmap (buf, &map);
}
/* send data as tags */
if (!wav->tags)

View file

@ -892,20 +892,20 @@ gst_v4l2_do_read (GstV4l2BufferPool * pool, GstBuffer * buf)
GstFlowReturn res;
GstV4l2Object *obj = pool->obj;
gint amount;
gpointer data;
GstMapInfo map;
gint toread;
toread = obj->sizeimage;
GST_LOG_OBJECT (pool, "reading %d bytes into buffer %p", toread, buf);
data = gst_buffer_map (buf, NULL, NULL, GST_MAP_WRITE);
gst_buffer_map (buf, &map, GST_MAP_WRITE);
do {
if ((res = gst_v4l2_object_poll (obj)) != GST_FLOW_OK)
goto poll_error;
amount = v4l2_read (obj->video_fd, data, toread);
amount = v4l2_read (obj->video_fd, map.data, toread);
if (amount == toread) {
break;
@ -921,7 +921,8 @@ gst_v4l2_do_read (GstV4l2BufferPool * pool, GstBuffer * buf)
} while (TRUE);
GST_LOG_OBJECT (pool, "read %d bytes", amount);
gst_buffer_unmap (buf, data, amount);
gst_buffer_unmap (buf, &map);
gst_buffer_resize (buf, 0, amount);
return GST_FLOW_OK;
@ -941,7 +942,8 @@ read_error:
}
cleanup:
{
gst_buffer_unmap (buf, data, 0);
gst_buffer_unmap (buf, &map);
gst_buffer_resize (buf, 0, 0);
return res;
}
}

View file

@ -2579,9 +2579,6 @@ gboolean
gst_v4l2_object_copy (GstV4l2Object * v4l2object, GstBuffer * dest,
GstBuffer * src)
{
guint8 *data;
gsize size;
if (v4l2object->info.finfo) {
GstVideoFrame src_frame, dest_frame;
@ -2602,10 +2599,12 @@ gst_v4l2_object_copy (GstV4l2Object * v4l2object, GstBuffer * dest,
gst_video_frame_unmap (&src_frame);
gst_video_frame_unmap (&dest_frame);
} else {
GstMapInfo map;
GST_DEBUG_OBJECT (v4l2object->element, "copy raw bytes");
data = gst_buffer_map (src, &size, NULL, GST_MAP_READ);
gst_buffer_fill (dest, 0, data, size);
gst_buffer_unmap (src, data, size);
gst_buffer_map (src, &map, GST_MAP_READ);
gst_buffer_fill (dest, 0, map.data, map.size);
gst_buffer_unmap (src, &map);
}
GST_CAT_LOG_OBJECT (GST_CAT_PERFORMANCE, v4l2object->element,
"slow copy into buffer %p", dest);

View file

@ -437,12 +437,11 @@ composite_pixel (GstXContext * xcontext, guchar * dest, guchar * src)
static void
copy_buffer (GstBuffer * dest, GstBuffer * src)
{
guint8 *data;
gsize size;
GstMapInfo map;
data = gst_buffer_map (src, &size, NULL, GST_MAP_READ);
gst_buffer_fill (dest, 0, data, size);
gst_buffer_unmap (src, data, size);
gst_buffer_map (src, &map, GST_MAP_READ);
gst_buffer_fill (dest, 0, map.data, map.size);
gst_buffer_unmap (src, &map);
}
#endif

View file

@ -69,15 +69,14 @@ buffer_new (const unsigned char *buffer_data, guint size)
gst_buffer_fill (buffer, 0, buffer_data, size);
} else {
guint i;
guint8 *data;
gsize wantsize = size;
GstMapInfo map;
data = gst_buffer_map (buffer, &wantsize, NULL, GST_MAP_WRITE);
gst_buffer_map (buffer, &map, GST_MAP_WRITE);
/* Create a recognizable pattern (loop 0x00 -> 0xff) in the data block */
for (i = 0; i < wantsize; i++) {
data[i] = i % 0x100;
for (i = 0; i < map.size; i++) {
map.data[i] = i % 0x100;
}
gst_buffer_unmap (buffer, data, wantsize);
gst_buffer_unmap (buffer, &map);
}
/* gst_buffer_set_caps (buffer, GST_PAD_CAPS (srcpad)); */