Commit 7d9dd13c authored by Tim-Philipp Müller's avatar Tim-Philipp Müller 🐠

gst/matroska/: Set timestamps on outgoing ebml headers as well, so that the...

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).
parent 2778e393
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)
......
......@@ -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;
}
......
......@@ -46,6 +46,7 @@ typedef struct _GstEbmlWrite {
GstPad *srcpad;
guint64 pos;
GstClockTime timestamp;
GstBuffer *cache;
guint cache_size;
......
......@@ -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)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment