+2008-02-15 Stefan Kost <ensonic@users.sf.net>
+
+ * gst/gstbuffer.c:
+ Copy selected buffer-flags when creating subbuffers.
+ Fixes #516395.
+
2008-02-12 Sebastian Dröge <slomo@circular-chaos.org>
* gst/gstbuffer.c: (gst_buffer_class_init), (gst_buffer_finalize):
} else {
ret = gst_buffer_create_sub (buf, 0, GST_BUFFER_SIZE (buf));
- /* copy all the flags except IN_CAPS */
- GST_BUFFER_FLAGS (ret) = GST_BUFFER_FLAGS (buf);
- GST_BUFFER_FLAG_UNSET (ret, GST_BUFFER_FLAG_IN_CAPS);
- /* data should always be set to READONLY */
- GST_BUFFER_FLAG_SET (ret, GST_BUFFER_FLAG_READONLY);
-
gst_buffer_unref (buf);
}
GST_BUFFER_DATA (GST_BUFFER_CAST (subbuffer)) = buffer->data + offset;
GST_BUFFER_SIZE (GST_BUFFER_CAST (subbuffer)) = size;
+ if ((offset == 0) && (size == GST_BUFFER_SIZE (buffer))) {
+ /* copy all the flags except IN_CAPS */
+ GST_BUFFER_FLAG_SET (subbuffer, GST_BUFFER_FLAGS (buffer));
+ GST_BUFFER_FLAG_UNSET (subbuffer, GST_BUFFER_FLAG_IN_CAPS);
+ } else {
+ /* copy only PREROLL & GAP flags */
+ GST_BUFFER_FLAG_SET (subbuffer, (GST_BUFFER_FLAGS (buffer) &
+ (GST_BUFFER_FLAG_PREROLL | GST_BUFFER_FLAG_GAP)));
+ }
+
/* we can copy the timestamp and offset if the new buffer starts at
* offset 0 */
if (offset == 0) {