diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2005-11-01 12:35:39 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2005-11-01 12:35:39 +0000 |
commit | 7d9dd13c6e11c0e8be2906b41d23103bf6a83200 (patch) | |
tree | e24b3e2223eb1da284ff5ae8391024b7a9e94995 /gst/matroska | |
parent | 2778e393c67c6282e4d785725119f3db1dd6afee (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.c | 3 | ||||
-rw-r--r-- | gst/matroska/ebml-write.h | 1 | ||||
-rw-r--r-- | gst/matroska/matroska-mux.c | 3 |
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)) { |