From 705b1421345692312752311774de6b780a96d9e9 Mon Sep 17 00:00:00 2001 From: "Zhao, Gang" Date: Tue, 28 Jan 2025 23:08:01 +0800 Subject: [PATCH] fdsrc: Add property is-live Fixed #4184 Part-of: --- .../docs/plugins/gst_plugins_cache.json | 12 ++++++++++++ .../gstreamer/plugins/elements/gstfdsrc.c | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/subprojects/gstreamer/docs/plugins/gst_plugins_cache.json b/subprojects/gstreamer/docs/plugins/gst_plugins_cache.json index e6fc6ded11..17858a7add 100644 --- a/subprojects/gstreamer/docs/plugins/gst_plugins_cache.json +++ b/subprojects/gstreamer/docs/plugins/gst_plugins_cache.json @@ -839,6 +839,18 @@ "type": "gint", "writable": true }, + "is-live": { + "blurb": "Act like a live source", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "false", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, "timeout": { "blurb": "Post a message after timeout microseconds (0 = disabled)", "conditionally-available": false, diff --git a/subprojects/gstreamer/plugins/elements/gstfdsrc.c b/subprojects/gstreamer/plugins/elements/gstfdsrc.c index 89ccd5a145..c2c59f5e4b 100644 --- a/subprojects/gstreamer/plugins/elements/gstfdsrc.c +++ b/subprojects/gstreamer/plugins/elements/gstfdsrc.c @@ -109,6 +109,7 @@ enum PROP_FD, PROP_TIMEOUT, + PROP_IS_LIVE, PROP_LAST }; @@ -172,6 +173,17 @@ gst_fd_src_class_init (GstFdSrcClass * klass) G_MAXUINT64, DEFAULT_TIMEOUT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * GstFdSrc:is-live + * + * Act like a live source if set to %TRUE. + * + * Since: 1.26 + */ + g_object_class_install_property (gobject_class, PROP_IS_LIVE, + g_param_spec_boolean ("is-live", "is-live", "Act like a live source", + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + gst_element_class_set_static_metadata (gstelement_class, "Filedescriptor Source", "Source/File", @@ -362,6 +374,10 @@ gst_fd_src_set_property (GObject * object, guint prop_id, const GValue * value, GST_DEBUG_OBJECT (src, "poll timeout set to %" GST_TIME_FORMAT, GST_TIME_ARGS (src->timeout)); break; + case PROP_IS_LIVE: + GST_DEBUG_OBJECT (src, "live set to %d", g_value_get_boolean (value)); + gst_base_src_set_live (GST_BASE_SRC (src), g_value_get_boolean (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -381,6 +397,9 @@ gst_fd_src_get_property (GObject * object, guint prop_id, GValue * value, case PROP_TIMEOUT: g_value_set_uint64 (value, src->timeout); break; + case PROP_IS_LIVE: + g_value_set_boolean (value, gst_base_src_is_live (GST_BASE_SRC (src))); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break;