mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
Add autoconnect parameter to pipewiresrc element
This commit is contained in:
parent
2d5e0ef47b
commit
23b86761a5
2 changed files with 25 additions and 1 deletions
|
|
@ -46,6 +46,7 @@ GST_DEBUG_CATEGORY_STATIC (pipewire_src_debug);
|
|||
#define DEFAULT_MAX_BUFFERS INT32_MAX
|
||||
#define DEFAULT_RESEND_LAST false
|
||||
#define DEFAULT_KEEPALIVE_TIME 0
|
||||
#define DEFAULT_AUTOCONNECT true
|
||||
|
||||
enum
|
||||
{
|
||||
|
|
@ -61,6 +62,7 @@ enum
|
|||
PROP_FD,
|
||||
PROP_RESEND_LAST,
|
||||
PROP_KEEPALIVE_TIME,
|
||||
PROP_AUTOCONNECT,
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -150,6 +152,10 @@ gst_pipewire_src_set_property (GObject * object, guint prop_id,
|
|||
pwsrc->keepalive_time = g_value_get_int (value);
|
||||
break;
|
||||
|
||||
case PROP_AUTOCONNECT:
|
||||
pwsrc->autoconnect = g_value_get_boolean (value);
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
@ -207,6 +213,10 @@ gst_pipewire_src_get_property (GObject * object, guint prop_id,
|
|||
g_value_set_int (value, pwsrc->keepalive_time);
|
||||
break;
|
||||
|
||||
case PROP_AUTOCONNECT:
|
||||
g_value_set_boolean (value, pwsrc->autoconnect);
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
@ -376,6 +386,15 @@ gst_pipewire_src_class_init (GstPipeWireSrcClass * klass)
|
|||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_AUTOCONNECT,
|
||||
g_param_spec_boolean ("autoconnect",
|
||||
"Connect automatically",
|
||||
"Attempt to find a peer to connect to",
|
||||
DEFAULT_AUTOCONNECT,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
gstelement_class->provide_clock = gst_pipewire_src_provide_clock;
|
||||
gstelement_class->change_state = gst_pipewire_src_change_state;
|
||||
gstelement_class->send_event = gst_pipewire_src_send_event;
|
||||
|
|
@ -419,6 +438,7 @@ gst_pipewire_src_init (GstPipeWireSrc * src)
|
|||
src->fd = -1;
|
||||
src->resend_last = DEFAULT_RESEND_LAST;
|
||||
src->keepalive_time = DEFAULT_KEEPALIVE_TIME;
|
||||
src->autoconnect = DEFAULT_AUTOCONNECT;
|
||||
|
||||
src->client_name = g_strdup(pw_get_client_name ());
|
||||
|
||||
|
|
@ -870,10 +890,13 @@ gst_pipewire_src_negotiate (GstBaseSrc * basesrc)
|
|||
GST_DEBUG_OBJECT (basesrc, "connect capture with path %s, target-object %s",
|
||||
pwsrc->path, pwsrc->target_object);
|
||||
pwsrc->negotiated = FALSE;
|
||||
enum pw_stream_flags flags = PW_STREAM_FLAG_DONT_RECONNECT;
|
||||
if (pwsrc->autoconnect)
|
||||
flags |= PW_STREAM_FLAG_AUTOCONNECT;
|
||||
pw_stream_connect (pwsrc->stream,
|
||||
PW_DIRECTION_INPUT,
|
||||
target_id,
|
||||
PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_DONT_RECONNECT,
|
||||
flags,
|
||||
(const struct spa_pod **)possible->pdata,
|
||||
possible->len);
|
||||
g_ptr_array_free (possible, TRUE);
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ struct _GstPipeWireSrc {
|
|||
int fd;
|
||||
gboolean resend_last;
|
||||
gint keepalive_time;
|
||||
gboolean autoconnect;
|
||||
|
||||
GstCaps *caps;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue