diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c index 12a654e611..09357be1bf 100644 --- a/gst/isomp4/gstqtmux.c +++ b/gst/isomp4/gstqtmux.c @@ -5685,9 +5685,10 @@ refuse_caps: } refuse_renegotiation: { - GST_WARNING_OBJECT (qtmux, - "pad %s refused renegotiation to %" GST_PTR_FORMAT, GST_PAD_NAME (pad), - caps); + GST_ELEMENT_WARNING (qtmux, STREAM, FORMAT, + ("Can't change input format at runtime."), + ("pad %s refused renegotiation to %" GST_PTR_FORMAT, GST_PAD_NAME (pad), + caps)); gst_object_unref (qtmux); return FALSE; } diff --git a/gst/multifile/gstsplitmuxsink.c b/gst/multifile/gstsplitmuxsink.c index 20bded2f86..be37933f0c 100644 --- a/gst/multifile/gstsplitmuxsink.c +++ b/gst/multifile/gstsplitmuxsink.c @@ -1250,6 +1250,39 @@ bus_handler (GstBin * bin, GstMessage * message) } } break; + case GST_MESSAGE_WARNING: + { + GError *gerror = NULL; + + gst_message_parse_warning (message, &gerror, NULL); + + if (g_error_matches (gerror, GST_STREAM_ERROR, GST_STREAM_ERROR_FORMAT)) { + GList *item; + gboolean caps_change = FALSE; + + GST_SPLITMUX_LOCK (splitmux); + + for (item = splitmux->contexts; item; item = item->next) { + MqStreamCtx *ctx = item->data; + + if (ctx->caps_change) { + caps_change = TRUE; + break; + } + } + + GST_SPLITMUX_UNLOCK (splitmux); + + if (caps_change) { + GST_LOG_OBJECT (splitmux, + "Ignoring warning change from child %" GST_PTR_FORMAT + " while switching caps", GST_MESSAGE_SRC (message)); + gst_message_unref (message); + return; + } + } + break; + } default: break; }