diff options
Diffstat (limited to 'gst')
-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)) { |