summaryrefslogtreecommitdiffstats
path: root/audio/gstavdtpsink.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/gstavdtpsink.c')
-rw-r--r--audio/gstavdtpsink.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/audio/gstavdtpsink.c b/audio/gstavdtpsink.c
index 25fc1ced..d5737258 100644
--- a/audio/gstavdtpsink.c
+++ b/audio/gstavdtpsink.c
@@ -51,6 +51,8 @@ GST_DEBUG_CATEGORY_STATIC(avdtp_sink_debug);
#define CRC_PROTECTED 1
#define CRC_UNPROTECTED 0
+#define DEFAULT_AUTOCONNECT TRUE
+
#define GST_AVDTP_SINK_MUTEX_LOCK(s) G_STMT_START { \
g_mutex_lock (s->sink_lock); \
} G_STMT_END
@@ -73,6 +75,7 @@ struct bluetooth_data {
enum {
PROP_0,
PROP_DEVICE,
+ PROP_AUTOCONNECT
};
GST_BOILERPLATE(GstAvdtpSink, gst_avdtp_sink, GstBaseSink,
@@ -193,6 +196,9 @@ static void gst_avdtp_sink_set_property(GObject *object, guint prop_id,
sink->device = g_value_dup_string(value);
break;
+ case PROP_AUTOCONNECT:
+ sink->autoconnect = g_value_get_boolean(value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@@ -209,6 +215,9 @@ static void gst_avdtp_sink_get_property(GObject *object, guint prop_id,
g_value_set_string(value, sink->device);
break;
+ case PROP_AUTOCONNECT:
+ g_value_set_boolean(value, sink->autoconnect);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@@ -764,6 +773,8 @@ static gboolean gst_avdtp_sink_get_capabilities(GstAvdtpSink *self)
if (self->device == NULL)
return FALSE;
strncpy(req->device, self->device, 18);
+ if (self->autoconnect)
+ req->flags |= BT_FLAG_AUTOCONNECT;
io_error = gst_avdtp_sink_audioservice_send(self, &req->h);
if (io_error != G_IO_ERROR_NONE) {
@@ -1198,6 +1209,13 @@ static void gst_avdtp_sink_class_init(GstAvdtpSinkClass *klass)
"Bluetooth remote device address",
NULL, G_PARAM_READWRITE));
+ g_object_class_install_property(object_class, PROP_AUTOCONNECT,
+ g_param_spec_boolean("auto-connect",
+ "Auto-connect",
+ "Automatically attempt to connect "
+ "to device", DEFAULT_AUTOCONNECT,
+ G_PARAM_READWRITE));
+
GST_DEBUG_CATEGORY_INIT(avdtp_sink_debug, "avdtpsink", 0,
"A2DP headset sink element");
}
@@ -1212,6 +1230,8 @@ static void gst_avdtp_sink_init(GstAvdtpSink *self,
self->dev_caps = NULL;
+ self->autoconnect = DEFAULT_AUTOCONNECT;
+
self->sink_lock = g_mutex_new();
/* FIXME this is for not synchronizing with clock, should be tested