diff options
author | Mathieu Duponchelle <mathieu@centricular.com> | 2019-07-05 01:26:26 +0200 |
---|---|---|
committer | Mathieu Duponchelle <mduponchelle1@gmail.com> | 2019-07-04 23:28:42 +0000 |
commit | 9996ae9ae0eb5413cc7a2455a9cddd339d394fff (patch) | |
tree | b50b36061ad359192eb1f5560cd9666598f3818a /gst | |
parent | 15f149a9901fa9fc8bbb8cdcc363192ba7c71e31 (diff) | |
download | gstreamer-plugins-bad-9996ae9ae0eb5413cc7a2455a9cddd339d394fff.tar.gz |
tsmux: output smoothly increasing PTS when in CBR mode
Thanks to that, when its output is plugged into eg a udp sink, the
outgoing data can be output in a smoother way, reducing burstiness
Diffstat (limited to 'gst')
-rw-r--r-- | gst/mpegtsmux/gstbasetsmux.c | 3 | ||||
-rw-r--r-- | gst/mpegtsmux/tsmux/tsmux.c | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/gst/mpegtsmux/gstbasetsmux.c b/gst/mpegtsmux/gstbasetsmux.c index 9ee7e5379..dfde9676e 100644 --- a/gst/mpegtsmux/gstbasetsmux.c +++ b/gst/mpegtsmux/gstbasetsmux.c @@ -1017,7 +1017,8 @@ new_packet_cb (GstBuffer * buf, void *user_data, gint64 new_pcr) gst_buffer_map (buf, &map, GST_MAP_READWRITE); - GST_BUFFER_PTS (buf) = mux->last_ts; + if (!GST_CLOCK_TIME_IS_VALID (GST_BUFFER_PTS (buf))) + GST_BUFFER_PTS (buf) = mux->last_ts; /* do common init (flags and streamheaders) */ new_packet_common_init (mux, buf, map.data, map.size); diff --git a/gst/mpegtsmux/tsmux/tsmux.c b/gst/mpegtsmux/tsmux/tsmux.c index dfc112077..16b556f7c 100644 --- a/gst/mpegtsmux/tsmux/tsmux.c +++ b/gst/mpegtsmux/tsmux/tsmux.c @@ -660,6 +660,10 @@ tsmux_packet_out (TsMux * mux, GstBuffer * buf, gint64 pcr) return TRUE; } + if (mux->bitrate) + GST_BUFFER_PTS (buf) = + gst_util_uint64_scale (mux->n_bytes * 8, GST_SECOND, mux->bitrate); + mux->n_bytes += gst_buffer_get_size (buf); return mux->write_func (buf, mux->write_func_data, pcr); |