summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
Diffstat (limited to 'gst')
-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)) {