diff --git a/docs/libs/gstreamer-libs-sections.txt b/docs/libs/gstreamer-libs-sections.txt index 855ceb1691..97086ec482 100644 --- a/docs/libs/gstreamer-libs-sections.txt +++ b/docs/libs/gstreamer-libs-sections.txt @@ -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 GST_BYTE_WRITER diff --git a/libs/gst/base/gstbytewriter.c b/libs/gst/base/gstbytewriter.c index 375c41055c..b76ffe3e6f 100644 --- a/libs/gst/base/gstbytewriter.c +++ b/libs/gst/base/gstbytewriter.c @@ -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 + */ diff --git a/libs/gst/base/gstbytewriter.h b/libs/gst/base/gstbytewriter.h index df5dad218d..87658e55b2 100644 --- a/libs/gst/base/gstbytewriter.h +++ b/libs/gst/base/gstbytewriter.h @@ -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); diff --git a/win32/common/libgstbase.def b/win32/common/libgstbase.def index 7e0ba98718..68af7f5652 100644 --- a/win32/common/libgstbase.def +++ b/win32/common/libgstbase.def @@ -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