diff options
author | Vivia Nikolaidou <vivia@ahiru.eu> | 2021-08-26 21:26:01 +0300 |
---|---|---|
committer | Vivia Nikolaidou <vivia@ahiru.eu> | 2021-08-27 09:40:50 +0000 |
commit | 43199bc883d68b1935b51b07a5c464f9f80c605a (patch) | |
tree | 5f66861cc5d36ad5d88ef183a04dfade14c03a54 /gst | |
parent | dee294809f3781e662180c66ed2fd59c267def45 (diff) | |
download | gstreamer-plugins-bad-43199bc883d68b1935b51b07a5c464f9f80c605a.tar.gz |
errorignore: Add ignore-eos mode
It's otherwise very complicated to ignore GST_FLOW_EOS without a
ghostpad's chain function to rewrite.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2492>
Diffstat (limited to 'gst')
-rw-r--r-- | gst/debugutils/gsterrorignore.c | 19 | ||||
-rw-r--r-- | gst/debugutils/gsterrorignore.h | 1 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gst/debugutils/gsterrorignore.c b/gst/debugutils/gsterrorignore.c index f65ca9210..8f3546fcf 100644 --- a/gst/debugutils/gsterrorignore.c +++ b/gst/debugutils/gsterrorignore.c @@ -50,6 +50,7 @@ enum PROP_IGNORE_ERROR, PROP_IGNORE_NOTLINKED, PROP_IGNORE_NOTNEGOTIATED, + PROP_IGNORE_EOS, PROP_CONVERT_TO }; @@ -122,6 +123,16 @@ gst_error_ignore_class_init (GstErrorIgnoreClass * klass) "Whether to ignore GST_FLOW_NOT_NEGOTIATED", TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * GstErrorIgnore:ignore-eos: + * + * Since: 1.20 + */ + g_object_class_install_property (object_class, PROP_IGNORE_EOS, + g_param_spec_boolean ("ignore-eos", + "Ignore GST_FLOW_EOS", "Whether to ignore GST_FLOW_EOS", + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (object_class, PROP_CONVERT_TO, g_param_spec_enum ("convert-to", "GstFlowReturn to convert to", "Which GstFlowReturn value we should convert to when ignoring", @@ -153,6 +164,7 @@ gst_error_ignore_init (GstErrorIgnore * self) self->ignore_error = TRUE; self->ignore_notlinked = FALSE; self->ignore_notnegotiated = TRUE; + self->ignore_eos = FALSE; self->convert_to = GST_FLOW_NOT_LINKED; } @@ -172,6 +184,9 @@ gst_error_ignore_set_property (GObject * object, guint prop_id, case PROP_IGNORE_NOTNEGOTIATED: self->ignore_notnegotiated = g_value_get_boolean (value); break; + case PROP_IGNORE_EOS: + self->ignore_eos = g_value_get_boolean (value); + break; case PROP_CONVERT_TO: self->convert_to = g_value_get_enum (value); break; @@ -197,6 +212,9 @@ gst_error_ignore_get_property (GObject * object, guint prop_id, GValue * value, case PROP_IGNORE_NOTNEGOTIATED: g_value_set_boolean (value, self->ignore_notnegotiated); break; + case PROP_IGNORE_EOS: + g_value_set_boolean (value, self->ignore_eos); + break; case PROP_CONVERT_TO: g_value_set_enum (value, self->convert_to); break; @@ -246,6 +264,7 @@ gst_error_ignore_sink_chain (GstPad * pad, GstObject * parent, if ((ret == GST_FLOW_ERROR && self->ignore_error) || (ret == GST_FLOW_NOT_LINKED && self->ignore_notlinked) || + (ret == GST_FLOW_EOS && self->ignore_eos) || (ret == GST_FLOW_NOT_NEGOTIATED && self->ignore_notnegotiated)) return self->convert_to; else diff --git a/gst/debugutils/gsterrorignore.h b/gst/debugutils/gsterrorignore.h index 21d08641f..63d7aee0b 100644 --- a/gst/debugutils/gsterrorignore.h +++ b/gst/debugutils/gsterrorignore.h @@ -44,6 +44,7 @@ struct _GstErrorIgnore { gboolean ignore_error; gboolean ignore_notlinked; gboolean ignore_notnegotiated; + gboolean ignore_eos; GstFlowReturn convert_to; }; |