diff options
author | Justin Kim <justin.kim@collabora.com> | 2017-12-04 20:12:40 +0900 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2018-02-01 10:12:46 +0000 |
commit | ad8a6cb6399c100e3ed74c3672e1cd69a718aa85 (patch) | |
tree | b714496683409bb86d1d11b41a09a5ecffed2a3e /gst/multifile | |
parent | dabeed52a995d27e16eba9e4617e61eb0bcd44c4 (diff) | |
download | gstreamer-plugins-good-ad8a6cb6399c100e3ed74c3672e1cd69a718aa85.tar.gz |
qtmux: send stream warning when refusing video caps
If codec_data is changed, the stream is no longer valid.
Rather than keeping running when refusing new caps,
this patch send a warning to the bus.
Also fix up splitmuxsink to ignore this warning while changing caps.
https://bugzilla.gnome.org/show_bug.cgi?id=790000
Diffstat (limited to 'gst/multifile')
-rw-r--r-- | gst/multifile/gstsplitmuxsink.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/gst/multifile/gstsplitmuxsink.c b/gst/multifile/gstsplitmuxsink.c index 20bded2f8..be37933f0 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; } |