gstreamer: buffer: reuse more code
Wim Taymans
wtay at kemper.freedesktop.org
Sun Apr 1 03:03:06 PDT 2012
Module: gstreamer
Branch: master
Commit: f3aad8b4306d786848af9c612a03c81bec30d25b
URL: http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=f3aad8b4306d786848af9c612a03c81bec30d25b
Author: Wim Taymans <wim.taymans at collabora.co.uk>
Date: Sun Apr 1 12:01:34 2012 +0200
buffer: reuse more code
---
gst/gstbuffer.c | 27 ++++++++++++---------------
1 files changed, 12 insertions(+), 15 deletions(-)
diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c
index 2612419..e3a1e05 100644
--- a/gst/gstbuffer.c
+++ b/gst/gstbuffer.c
@@ -261,13 +261,18 @@ _replace_memory (GstBuffer * buffer, guint len, guint idx, guint length,
for (i = idx; i < end; i++)
gst_memory_unref (GST_BUFFER_MEM_PTR (buffer, i));
- if (end != len) {
- g_memmove (&GST_BUFFER_MEM_PTR (buffer, idx + 1),
+ if (mem != NULL) {
+ /* replace with single memory */
+ GST_BUFFER_MEM_PTR (buffer, idx) = mem;
+ idx++;
+ length--;
+ }
+
+ if (end < len) {
+ g_memmove (&GST_BUFFER_MEM_PTR (buffer, idx),
&GST_BUFFER_MEM_PTR (buffer, end), (len - end) * sizeof (gpointer));
}
- /* replace with single memory */
- GST_BUFFER_MEM_PTR (buffer, idx) = mem;
- GST_BUFFER_MEM_LEN (buffer) = len - length + 1;
+ GST_BUFFER_MEM_LEN (buffer) = len - length;
}
static inline void
@@ -876,7 +881,7 @@ gst_buffer_replace_memory_range (GstBuffer * buffer, guint idx, gint length,
void
gst_buffer_remove_memory_range (GstBuffer * buffer, guint idx, gint length)
{
- guint len, i, end;
+ guint len;
g_return_if_fail (GST_IS_BUFFER (buffer));
g_return_if_fail (gst_buffer_is_writable (buffer));
@@ -887,15 +892,7 @@ gst_buffer_remove_memory_range (GstBuffer * buffer, guint idx, gint length)
if (length == -1)
length = len - idx;
- end = idx + length;
- for (i = idx; i < end; i++)
- gst_memory_unref (GST_BUFFER_MEM_PTR (buffer, i));
-
- if (end != len) {
- g_memmove (&GST_BUFFER_MEM_PTR (buffer, idx),
- &GST_BUFFER_MEM_PTR (buffer, end), (len - end) * sizeof (gpointer));
- }
- GST_BUFFER_MEM_LEN (buffer) = len - length;
+ _replace_memory (buffer, len, idx, length, NULL);
}
/**
More information about the gstreamer-commits
mailing list