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).
This commit is contained in:
Tim-Philipp Müller 2005-11-01 12:35:39 +00:00
parent 2778e393c6
commit 7d9dd13c6e
4 changed files with 20 additions and 0 deletions

View file

@ -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)

View file

@ -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;
}

View file

@ -46,6 +46,7 @@ typedef struct _GstEbmlWrite {
GstPad *srcpad;
guint64 pos;
GstClockTime timestamp;
GstBuffer *cache;
guint cache_size;

View file

@ -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)) {