From bf79a6908ce2644479d8342152ef0ceb2fc092a2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 17 May 2022 14:15:40 +0300 Subject: [PATCH] tsmux: Make sure to set srcpad caps under all conditions before outputting the first buffer Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1218 Part-of: --- subprojects/gst-plugins-bad/gst/mpegtsmux/gstbasetsmux.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/subprojects/gst-plugins-bad/gst/mpegtsmux/gstbasetsmux.c b/subprojects/gst-plugins-bad/gst/mpegtsmux/gstbasetsmux.c index 11c5acd..880d4d5 100644 --- a/subprojects/gst-plugins-bad/gst/mpegtsmux/gstbasetsmux.c +++ b/subprojects/gst-plugins-bad/gst/mpegtsmux/gstbasetsmux.c @@ -2319,6 +2319,21 @@ gst_base_ts_mux_aggregate (GstAggregator * agg, gboolean timeout) GstBaseTsMux *mux = GST_BASE_TS_MUX (agg); GstFlowReturn ret = GST_FLOW_OK; GstBaseTsMuxPad *best = gst_base_ts_mux_find_best_pad (agg); + GstCaps *caps; + + /* set caps on the srcpad if no caps were set yet */ + if (!(caps = gst_pad_get_current_caps (agg->srcpad))) { + GstStructure *structure; + + caps = gst_pad_get_pad_template_caps (GST_AGGREGATOR_SRC_PAD (mux)); + caps = gst_caps_make_writable (caps); + structure = gst_caps_get_structure (caps, 0); + gst_structure_set (structure, "packetsize", G_TYPE_INT, mux->packet_size, + NULL); + + gst_aggregator_set_src_caps (GST_AGGREGATOR (mux), caps); + } + gst_caps_unref (caps); if (best) { GstBuffer *buffer; -- 2.7.4