summaryrefslogtreecommitdiffstats
path: root/gst/matroska
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2005-11-01 12:35:39 +0000
committerTim-Philipp Müller <tim@centricular.net>2005-11-01 12:35:39 +0000
commit7d9dd13c6e11c0e8be2906b41d23103bf6a83200 (patch)
treee24b3e2223eb1da284ff5ae8391024b7a9e94995 /gst/matroska
parent2778e393c67c6282e4d785725119f3db1dd6afee (diff)
gst/matroska/: Set timestamps on outgoing ebml headers as well, so that the element after matroskamux can get the tim...
Original commit message from CVS: Reviewed by: Tim-Philipp Müller <tim at centricular dot net> * gst/matroska/ebml-write.c: (gst_ebml_write_new), (gst_ebml_write_reset), (gst_ebml_write_element_new): * gst/matroska/ebml-write.h: * gst/matroska/matroska-mux.c: (gst_matroska_mux_write_data): Set timestamps on outgoing ebml headers as well, so that the element after matroskamux can get the timestamp already when reading the first ebml element and doesn't have to wait for the actual data buffer for that (#320308).
Diffstat (limited to 'gst/matroska')
-rw-r--r--gst/matroska/ebml-write.c3
-rw-r--r--gst/matroska/ebml-write.h1
-rw-r--r--gst/matroska/matroska-mux.c3
3 files changed, 7 insertions, 0 deletions
diff --git a/gst/matroska/ebml-write.c b/gst/matroska/ebml-write.c
index 27bc6b55..46c83842 100644
--- a/gst/matroska/ebml-write.c
+++ b/gst/matroska/ebml-write.c
@@ -89,6 +89,7 @@ gst_ebml_write_new (GstPad * srcpad)
GST_EBML_WRITE (g_object_new (GST_TYPE_EBML_WRITE, NULL));
ebml->srcpad = gst_object_ref (srcpad);
+ ebml->timestamp = GST_CLOCK_TIME_NONE;
gst_ebml_write_reset (ebml);
@@ -113,6 +114,7 @@ gst_ebml_write_reset (GstEbmlWrite * ebml)
}
ebml->cache_size = 0;
ebml->last_write_result = GST_FLOW_OK;
+ ebml->timestamp = GST_CLOCK_TIME_NONE;
}
@@ -220,6 +222,7 @@ gst_ebml_write_element_new (GstEbmlWrite * ebml, guint size)
/* else, use a one-element buffer. This is slower */
buf = gst_buffer_new_and_alloc (size);
GST_BUFFER_SIZE (buf) = 0;
+ GST_BUFFER_TIMESTAMP (buf) = ebml->timestamp;
return buf;
}
diff --git a/gst/matroska/ebml-write.h b/gst/matroska/ebml-write.h
index 01a99929..b579d8b2 100644
--- a/gst/matroska/ebml-write.h
+++ b/gst/matroska/ebml-write.h
@@ -46,6 +46,7 @@ typedef struct _GstEbmlWrite {
GstPad *srcpad;
guint64 pos;
+ GstClockTime timestamp;
GstBuffer *cache;
guint cache_size;
diff --git a/gst/matroska/matroska-mux.c b/gst/matroska/matroska-mux.c
index ee19fa38..ca8ab86e 100644
--- a/gst/matroska/matroska-mux.c
+++ b/gst/matroska/matroska-mux.c
@@ -1338,6 +1338,9 @@ gst_matroska_mux_write_data (GstMatroskaMux * mux)
buf = best->buffer;
best->buffer = NULL;
+ /* set the timestamp for outgoing buffers */
+ ebml->timestamp = GST_BUFFER_TIMESTAMP (buf);
+
if (mux->cluster) {
/* start a new cluster every two seconds */
if (mux->cluster_time + GST_SECOND * 2 < GST_BUFFER_TIMESTAMP (buf)) {