mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-08 13:30:08 -05:00
pipewiresink: add fd property
Add fd property to connect with a given fd
This commit is contained in:
parent
8da8dbe025
commit
527f4683ba
2 changed files with 25 additions and 2 deletions
|
|
@ -56,7 +56,8 @@ enum
|
||||||
PROP_PATH,
|
PROP_PATH,
|
||||||
PROP_CLIENT_NAME,
|
PROP_CLIENT_NAME,
|
||||||
PROP_STREAM_PROPERTIES,
|
PROP_STREAM_PROPERTIES,
|
||||||
PROP_MODE
|
PROP_MODE,
|
||||||
|
PROP_FD
|
||||||
};
|
};
|
||||||
|
|
||||||
GType
|
GType
|
||||||
|
|
@ -191,6 +192,15 @@ gst_pipewire_sink_class_init (GstPipeWireSinkClass * klass)
|
||||||
G_PARAM_READWRITE |
|
G_PARAM_READWRITE |
|
||||||
G_PARAM_STATIC_STRINGS));
|
G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
g_object_class_install_property (gobject_class,
|
||||||
|
PROP_FD,
|
||||||
|
g_param_spec_int ("fd",
|
||||||
|
"Fd",
|
||||||
|
"The fd to connect with",
|
||||||
|
0, G_MAXINT, -1,
|
||||||
|
G_PARAM_READWRITE |
|
||||||
|
G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
gstelement_class->change_state = gst_pipewire_sink_change_state;
|
gstelement_class->change_state = gst_pipewire_sink_change_state;
|
||||||
|
|
||||||
gst_element_class_set_static_metadata (gstelement_class,
|
gst_element_class_set_static_metadata (gstelement_class,
|
||||||
|
|
@ -267,6 +277,7 @@ gst_pipewire_sink_init (GstPipeWireSink * sink)
|
||||||
sink->pool = gst_pipewire_pool_new ();
|
sink->pool = gst_pipewire_pool_new ();
|
||||||
sink->client_name = pw_get_client_name();
|
sink->client_name = pw_get_client_name();
|
||||||
sink->mode = DEFAULT_PROP_MODE;
|
sink->mode = DEFAULT_PROP_MODE;
|
||||||
|
sink->fd = -1;
|
||||||
|
|
||||||
g_signal_connect (sink->pool, "activated", G_CALLBACK (pool_activated), sink);
|
g_signal_connect (sink->pool, "activated", G_CALLBACK (pool_activated), sink);
|
||||||
|
|
||||||
|
|
@ -353,6 +364,10 @@ gst_pipewire_sink_set_property (GObject * object, guint prop_id,
|
||||||
pwsink->mode = g_value_get_enum (value);
|
pwsink->mode = g_value_get_enum (value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_FD:
|
||||||
|
pwsink->fd = g_value_get_int (value);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
|
@ -382,6 +397,10 @@ gst_pipewire_sink_get_property (GObject * object, guint prop_id,
|
||||||
g_value_set_enum (value, pwsink->mode);
|
g_value_set_enum (value, pwsink->mode);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_FD:
|
||||||
|
g_value_set_int (value, pwsink->fd);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
|
@ -806,7 +825,10 @@ gst_pipewire_sink_open (GstPipeWireSink * pwsink)
|
||||||
&pwsink->remote_listener,
|
&pwsink->remote_listener,
|
||||||
&remote_events, pwsink);
|
&remote_events, pwsink);
|
||||||
|
|
||||||
pw_remote_connect (pwsink->remote);
|
if (pwsink->fd == -1)
|
||||||
|
pw_remote_connect (pwsink->remote);
|
||||||
|
else
|
||||||
|
pw_remote_connect_fd (pwsink->remote, pwsink->fd);
|
||||||
|
|
||||||
while (TRUE) {
|
while (TRUE) {
|
||||||
enum pw_remote_state state = pw_remote_get_state (pwsink->remote, &error);
|
enum pw_remote_state state = pw_remote_get_state (pwsink->remote, &error);
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ struct _GstPipeWireSink {
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
gchar *path;
|
gchar *path;
|
||||||
gchar *client_name;
|
gchar *client_name;
|
||||||
|
int fd;
|
||||||
|
|
||||||
/* video state */
|
/* video state */
|
||||||
gboolean negotiated;
|
gboolean negotiated;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue