bytewriter: add _fill function
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>
Fri, 22 Jan 2010 12:19:31 +0000 (09:19 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>
Fri, 12 Feb 2010 20:23:29 +0000 (17:23 -0300)
Adds a new function to GstByteWriter that writes
a constant value to a memory area (aka memset).
Useful for adding padding to buffers.

Also updates .def file and docs.

API: gst_byte_writer_fill()

docs/libs/gstreamer-libs-sections.txt
libs/gst/base/gstbytewriter.c
libs/gst/base/gstbytewriter.h
win32/common/libgstbase.def

index 855ceb1..97086ec 100644 (file)
@@ -595,6 +595,7 @@ gst_byte_writer_put_string_utf32
 gst_byte_writer_put_string_utf8
 
 gst_byte_writer_put_data
+gst_byte_writer_fill
 
 <SUBSECTION Private>
 GST_BYTE_WRITER
index 375c410..b76ffe3 100644 (file)
@@ -492,6 +492,21 @@ gst_byte_writer_put_data (GstByteWriter * writer, const guint8 * data,
   return TRUE;
 }
 
+gboolean
+gst_byte_writer_fill (GstByteWriter * writer, const guint8 value, guint size)
+{
+  g_return_val_if_fail (writer != NULL, FALSE);
+
+  if (G_UNLIKELY (!gst_byte_writer_ensure_free_space (writer, size)))
+    return FALSE;
+
+  memset ((guint8 *) & writer->parent.data[writer->parent.byte], value, size);
+  writer->parent.byte += size;
+  writer->parent.size = MAX (writer->parent.size, writer->parent.byte);
+
+  return TRUE;
+}
+
 #define CREATE_WRITE_STRING_FUNC(bits,type) \
 gboolean \
 gst_byte_writer_put_string_utf##bits (GstByteWriter *writer, const type * data) \
@@ -806,3 +821,15 @@ CREATE_WRITE_STRING_FUNC (32, guint32);
  *
  * Since: 0.10.26
  */
+/**
+ * gst_byte_writer_fill:
+ * @writer: #GstByteWriter instance
+ * @value: Value to be writen
+ * @size: Number of bytes to be writen
+ *
+ * Writes @size bytes containing @value to @writer.
+ *
+ * Returns: %TRUE if the value could be written
+ *
+ * Since: 0.10.26
+ */
index df5dad2..87658e5 100644 (file)
@@ -144,6 +144,7 @@ gboolean gst_byte_writer_put_double_be (GstByteWriter *writer, gdouble val);
 gboolean gst_byte_writer_put_double_le (GstByteWriter *writer, gdouble val);
 
 gboolean gst_byte_writer_put_data (GstByteWriter *writer, const guint8 *data, guint size);
+gboolean gst_byte_writer_fill (GstByteWriter *writer, const guint8 value, guint size);
 gboolean gst_byte_writer_put_string_utf8 (GstByteWriter *writer, const gchar *data);
 gboolean gst_byte_writer_put_string_utf16 (GstByteWriter *writer, const guint16 *data);
 gboolean gst_byte_writer_put_string_utf32 (GstByteWriter *writer, const guint32 *data);
index 7e0ba98..68af7f5 100644 (file)
@@ -142,6 +142,7 @@ EXPORTS
        gst_byte_reader_skip_string_utf32
        gst_byte_reader_skip_string_utf8
        gst_byte_writer_ensure_free_space
+       gst_byte_writer_fill
        gst_byte_writer_free
        gst_byte_writer_free_and_get_buffer
        gst_byte_writer_free_and_get_data