diff options
-rw-r--r-- | ChangeLog | 13 | ||||
-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 |
4 files changed, 20 insertions, 0 deletions
@@ -1,3 +1,16 @@ +2005-11-01 Josef Zlomek <josef dot zlomek at xeris dot cz> + + 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). + 2005-10-31 Andy Wingo <wingo@pobox.com> * gst/videomixer/videomixer.c (gst_videomixer_pad_unlink) 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)) { |