mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-28 19:20:35 +00:00
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:
parent
2778e393c6
commit
7d9dd13c6e
4 changed files with 20 additions and 0 deletions
13
ChangeLog
13
ChangeLog
|
@ -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)
|
||||
|
|
|
@ -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)) {
|
||||
|
|
Loading…
Reference in a new issue