mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 19:51:11 +00:00
mpegtsmux: Start last_ts with GST_CLOCK_TIME_NONE
And use the output segment position for the outgoing timestamp while it is. This is needed to delay the calculation of `output_ts_offset` until we actually have a usable timestamp, as tsmux will output a few initial packets while `last_ts` is still unset. Without this, the calculation would use the initial `0` value, which did not have the intended effect of making VBR mode behave like CBR mode, but always calculated an offset equal to the selected start time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1884>
This commit is contained in:
parent
e5dbf86a54
commit
95ff949eff
1 changed files with 6 additions and 3 deletions
|
@ -310,7 +310,7 @@ gst_base_ts_mux_reset (GstBaseTsMux * mux, gboolean alloc)
|
|||
|
||||
mux->first = TRUE;
|
||||
mux->last_flow_ret = GST_FLOW_OK;
|
||||
mux->last_ts = 0;
|
||||
mux->last_ts = GST_CLOCK_TIME_NONE;
|
||||
mux->is_delta = TRUE;
|
||||
mux->is_header = FALSE;
|
||||
|
||||
|
@ -1148,10 +1148,13 @@ new_packet_cb (GstBuffer * buf, void *user_data, gint64 new_pcr)
|
|||
}
|
||||
|
||||
GST_BUFFER_PTS (buf) += mux->output_ts_offset;
|
||||
}
|
||||
|
||||
if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_PTS (buf))) {
|
||||
agg_segment->position = GST_BUFFER_PTS (buf);
|
||||
} else if (agg_segment->position == -1
|
||||
|| agg_segment->position < agg_segment->start) {
|
||||
GST_BUFFER_PTS (buf) = agg_segment->start;
|
||||
} else {
|
||||
GST_BUFFER_PTS (buf) = agg_segment->position;
|
||||
}
|
||||
|
||||
/* do common init (flags and streamheaders) */
|
||||
|
|
Loading…
Reference in a new issue