summaryrefslogtreecommitdiff
path: root/profiles
diff options
context:
space:
mode:
authorPauli Virtanen <pav@iki.fi>2023-02-15 22:26:00 +0000
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2023-02-15 16:36:28 -0800
commitf7d0599afe9b94aef494613acf10abe6af15342b (patch)
tree3be67bf05936be8d16a1929eab40735ddd7dc010 /profiles
parentaa50506c9f40fa4f221583e2a8e99e513ebf9630 (diff)
downloadbluez-f7d0599afe9b94aef494613acf10abe6af15342b.tar.gz
audio/transport: add media_transport_get_stream method for transports
Add a method for getting the audio stream associated with a media transport.
Diffstat (limited to 'profiles')
-rw-r--r--profiles/audio/transport.c18
-rw-r--r--profiles/audio/transport.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
index 5e057e2a5..912f404e8 100644
--- a/profiles/audio/transport.c
+++ b/profiles/audio/transport.c
@@ -116,6 +116,8 @@ struct media_transport {
guint id);
void (*set_state) (struct media_transport *transport,
transport_state_t state);
+ void *(*get_stream)
+ (struct media_transport *transport);
GDestroyNotify destroy;
void *data;
};
@@ -1380,6 +1382,13 @@ static void bap_connecting(struct bt_bap_stream *stream, bool state, int fd,
bap_update_links(transport);
}
+static void *get_stream_bap(struct media_transport *transport)
+{
+ struct bap_transport *bap = transport->data;
+
+ return bap->stream;
+}
+
static void free_bap(void *data)
{
struct bap_transport *bap = data;
@@ -1415,6 +1424,7 @@ static int media_transport_init_bap(struct media_transport *transport,
transport->suspend = suspend_bap;
transport->cancel = cancel_bap;
transport->set_state = set_state_bap;
+ transport->get_stream = get_stream_bap;
transport->destroy = free_bap;
return 0;
@@ -1483,6 +1493,14 @@ const char *media_transport_get_path(struct media_transport *transport)
return transport->path;
}
+void *media_transport_get_stream(struct media_transport *transport)
+{
+ if (transport->get_stream)
+ return transport->get_stream(transport);
+
+ return NULL;
+}
+
void media_transport_update_delay(struct media_transport *transport,
uint16_t delay)
{
diff --git a/profiles/audio/transport.h b/profiles/audio/transport.h
index 102fc3cf1..5ca9b8f9e 100644
--- a/profiles/audio/transport.h
+++ b/profiles/audio/transport.h
@@ -19,6 +19,7 @@ struct media_transport *media_transport_create(struct btd_device *device,
void media_transport_destroy(struct media_transport *transport);
const char *media_transport_get_path(struct media_transport *transport);
+void *media_transport_get_stream(struct media_transport *transport);
struct btd_device *media_transport_get_dev(struct media_transport *transport);
int8_t media_transport_get_volume(struct media_transport *transport);
void media_transport_update_delay(struct media_transport *transport,