diff options
author | Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> | 2016-05-02 17:38:50 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-06-07 15:11:00 +0300 |
commit | 851c89ded9c417c462868d287fdf3aefb128f8ac (patch) | |
tree | 0e1cbeee0d42dd7dd583132515ade14b92595da3 | |
parent | a037f132716e8bd7126cbd446be6b608185af460 (diff) | |
download | gstreamer-plugins-bad-851c89ded9c417c462868d287fdf3aefb128f8ac.tar.gz |
mpegtsmux: Set PTS on aligned buffers
This was broken in 09c05df (make "alignment" property more useful for
packetisation).
https://bugzilla.gnome.org/show_bug.cgi?id=765926
-rw-r--r-- | gst/mpegtsmux/mpegtsmux.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/gst/mpegtsmux/mpegtsmux.c b/gst/mpegtsmux/mpegtsmux.c index af051caeb..67c2b72bc 100644 --- a/gst/mpegtsmux/mpegtsmux.c +++ b/gst/mpegtsmux/mpegtsmux.c @@ -1521,20 +1521,33 @@ mpegtsmux_push_packets (MpegTsMux * mux, gboolean force) GST_LOG_OBJECT (mux, "aligning to %d bytes", align); while (align <= av) { - gst_buffer_list_add (buffer_list, - gst_adapter_take_buffer (mux->out_adapter, align)); + GstBuffer *buf; + GstClockTime pts; + + pts = gst_adapter_prev_pts (mux->out_adapter, NULL); + buf = gst_adapter_take_buffer (mux->out_adapter, align); + + GST_BUFFER_PTS (buf) = pts; + + gst_buffer_list_add (buffer_list, buf); av -= align; } if (av > 0 && force) { GstBuffer *buf; + GstClockTime pts; guint8 *data; guint32 header; gint dummy; GstMapInfo map; GST_LOG_OBJECT (mux, "handling %d leftover bytes", av); + + pts = gst_adapter_prev_pts (mux->out_adapter, NULL); buf = gst_buffer_new_and_alloc (align); + + GST_BUFFER_PTS (buf) = pts; + gst_buffer_map (buf, &map, GST_MAP_READ); data = map.data; |