summaryrefslogtreecommitdiffstats
path: root/gst/multipart
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2006-12-06 14:45:30 +0000
committerWim Taymans <wim.taymans@gmail.com>2006-12-06 14:45:30 +0000
commit1444040b98a22a652c7e02c902b7964fdcd21cff (patch)
tree4633c1bbe3006a0e5b5248f7183a1bdc8450191d /gst/multipart
parent21c9ac41a9bf2f8105337d881f3c3f502ff9e71d (diff)
gst/multipart/multipartmux.c: Keep track of the buffer timestamp in the collectdata member instead of modifying the b...
Original commit message from CVS: * gst/multipart/multipartmux.c: (gst_multipart_mux_compare_pads), (gst_multipart_mux_queue_pads), (gst_multipart_mux_collected): Keep track of the buffer timestamp in the collectdata member instead of modifying the buffer without making the metadata writable first. Fixes #382277.
Diffstat (limited to 'gst/multipart')
-rw-r--r--gst/multipart/multipartmux.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/gst/multipart/multipartmux.c b/gst/multipart/multipartmux.c
index fa83c01b..2cfe0379 100644
--- a/gst/multipart/multipartmux.c
+++ b/gst/multipart/multipartmux.c
@@ -66,6 +66,7 @@ typedef struct
GstCollectData collect; /* we extend the CollectData */
GstBuffer *buffer; /* the queued buffer for this pad */
+ GstClockTime timestamp; /* its timestamp */
}
GstMultipartPad;
@@ -366,12 +367,12 @@ gst_multipart_mux_compare_pads (GstMultipartMux * multipart_mux,
return -1;
/* no timestamp on old buffer, it must go first */
- oldtime = GST_BUFFER_TIMESTAMP (old->buffer);
+ oldtime = old->timestamp;
if (oldtime == GST_CLOCK_TIME_NONE)
return -1;
/* no timestamp on new buffer, it must go first */
- newtime = GST_BUFFER_TIMESTAMP (new->buffer);
+ newtime = new->timestamp;
if (newtime == GST_CLOCK_TIME_NONE)
return 1;
@@ -410,10 +411,11 @@ gst_multipart_mux_queue_pads (GstMultipartMux * mux)
buf = gst_collect_pads_pop (mux->collect, data);
- /* Adjust timestamp with segment_start and preroll */
- if (buf) {
- GST_BUFFER_TIMESTAMP (buf) -= data->segment.start;
- }
+ /* Store timestamp with segment_start and preroll */
+ if (buf && GST_BUFFER_TIMESTAMP_IS_VALID (buf))
+ pad->timestamp = GST_BUFFER_TIMESTAMP (buf) - data->segment.start;
+ else
+ pad->timestamp = GST_CLOCK_TIME_NONE;
pad->buffer = buf;
}