From 347e8140743fcea40f5e4bbe1b6f9ba440579a6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 11 May 2017 20:01:15 +0200 Subject: [PATCH] qtmux: When accepting renegotiation, just return TRUE and change nothing We only accept new caps if they are basically the same. We don't want to reset anything as if the caps are new, otherwise various state could get out of sync with the current run. --- gst/isomp4/gstqtmux.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c index 267d3d8fd6..fb3b68582a 100644 --- a/gst/isomp4/gstqtmux.c +++ b/gst/isomp4/gstqtmux.c @@ -4658,8 +4658,6 @@ gst_qt_mux_audio_sink_set_caps (GstQTPad * qtpad, GstCaps * caps) gint constant_size = 0; const gchar *stream_format; - qtpad->prepare_buf_func = NULL; - /* does not go well to renegotiate stream mid-way, unless * the old caps are a subset of the new one (this means upstream * added more info to the caps, as both should be 'fixed' caps) */ @@ -4677,11 +4675,15 @@ gst_qt_mux_audio_sink_set_caps (GstQTPad * qtpad, GstCaps * caps) "pad %s accepted renegotiation to %" GST_PTR_FORMAT " from %" GST_PTR_FORMAT, GST_PAD_NAME (pad), caps, current_caps); gst_caps_unref (current_caps); + + return TRUE; } GST_DEBUG_OBJECT (qtmux, "%s:%s, caps=%" GST_PTR_FORMAT, GST_DEBUG_PAD_NAME (pad), caps); + qtpad->prepare_buf_func = NULL; + format = qtmux_klass->format; structure = gst_caps_get_structure (caps, 0); mimetype = gst_structure_get_name (structure); @@ -5025,8 +5027,6 @@ gst_qt_mux_video_sink_set_caps (GstQTPad * qtpad, GstCaps * caps) gboolean sync = FALSE; int par_num, par_den; - qtpad->prepare_buf_func = NULL; - /* does not go well to renegotiate stream mid-way, unless * the old caps are a subset of the new one (this means upstream * added more info to the caps, as both should be 'fixed' caps) */ @@ -5044,11 +5044,15 @@ gst_qt_mux_video_sink_set_caps (GstQTPad * qtpad, GstCaps * caps) "pad %s accepted renegotiation to %" GST_PTR_FORMAT " from %" GST_PTR_FORMAT, GST_PAD_NAME (pad), caps, current_caps); gst_caps_unref (current_caps); + + return TRUE; } GST_DEBUG_OBJECT (qtmux, "%s:%s, caps=%" GST_PTR_FORMAT, GST_DEBUG_PAD_NAME (pad), caps); + qtpad->prepare_buf_func = NULL; + format = qtmux_klass->format; structure = gst_caps_get_structure (caps, 0); mimetype = gst_structure_get_name (structure); @@ -5543,6 +5547,8 @@ gst_qt_mux_subtitle_sink_set_caps (GstQTPad * qtpad, GstCaps * caps) "pad %s accepted renegotiation to %" GST_PTR_FORMAT " from %" GST_PTR_FORMAT, GST_PAD_NAME (pad), caps, current_caps); gst_caps_unref (current_caps); + + return TRUE; } GST_DEBUG_OBJECT (qtmux, "%s:%s, caps=%" GST_PTR_FORMAT,