mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-06-06 03:02:54 -04:00
spa: bluez: dbus: follow BlueZ's MediaPlayer1 objects
Follow MediaPlayer1 objects in spa_bt_player objects
and collect the players of a device in a list in the device.
Add three new events to spa_bt_device: player_{added,changed,removed}.
See https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/media-api.txt
This commit is contained in:
parent
e082e64c87
commit
902a2113de
2 changed files with 337 additions and 1 deletions
|
|
@ -50,6 +50,7 @@ extern "C" {
|
|||
#define BLUEZ_MEDIA_INTERFACE BLUEZ_SERVICE ".Media1"
|
||||
#define BLUEZ_MEDIA_ENDPOINT_INTERFACE BLUEZ_SERVICE ".MediaEndpoint1"
|
||||
#define BLUEZ_MEDIA_TRANSPORT_INTERFACE BLUEZ_SERVICE ".MediaTransport1"
|
||||
#define BLUEZ_MEDIA_PLAYER_INTERFACE BLUEZ_SERVICE ".MediaPlayer1"
|
||||
#define BLUEZ_INTERFACE_BATTERY_PROVIDER BLUEZ_SERVICE ".BatteryProvider1"
|
||||
#define BLUEZ_INTERFACE_BATTERY_PROVIDER_MANAGER BLUEZ_SERVICE ".BatteryProviderManager1"
|
||||
|
||||
|
|
@ -390,6 +391,7 @@ static inline enum spa_bt_form_factor spa_bt_form_factor_from_class(uint32_t blu
|
|||
|
||||
struct spa_bt_a2dp_codec_switch;
|
||||
struct spa_bt_transport;
|
||||
struct spa_bt_player;
|
||||
|
||||
struct spa_bt_device_events {
|
||||
#define SPA_VERSION_BT_DEVICE_EVENTS 0
|
||||
|
|
@ -406,6 +408,12 @@ struct spa_bt_device_events {
|
|||
|
||||
/** Device freed */
|
||||
void (*destroy) (void *data);
|
||||
|
||||
void (*player_added) (void *data, struct spa_bt_player *player);
|
||||
|
||||
void (*player_changed) (void *data, struct spa_bt_player *player);
|
||||
|
||||
void (*player_removed) (void *data, struct spa_bt_player *player);
|
||||
};
|
||||
|
||||
struct spa_bt_device {
|
||||
|
|
@ -439,6 +447,7 @@ struct spa_bt_device {
|
|||
struct spa_list remote_endpoint_list;
|
||||
struct spa_list transport_list;
|
||||
struct spa_list codec_switch_list;
|
||||
struct spa_list player_list;
|
||||
uint8_t battery;
|
||||
int has_battery;
|
||||
|
||||
|
|
@ -623,6 +632,48 @@ static inline enum spa_bt_transport_state spa_bt_transport_state_from_string(con
|
|||
return SPA_BT_TRANSPORT_STATE_IDLE;
|
||||
}
|
||||
|
||||
enum spa_bt_player_state {
|
||||
SPA_BT_PLAYER_STATE_UNKNOWN,
|
||||
SPA_BT_PLAYER_STATE_PLAYING,
|
||||
SPA_BT_PLAYER_STATE_STOPPED,
|
||||
SPA_BT_PLAYER_STATE_PAUSED,
|
||||
SPA_BT_PLAYER_STATE_FORWARD_SEEK,
|
||||
SPA_BT_PLAYER_STATE_ERROR,
|
||||
};
|
||||
|
||||
enum spa_bt_player_type {
|
||||
SPA_BT_PLAYER_TYPE_UNKNOWN,
|
||||
SPA_BT_PLAYER_TYPE_AUDIO,
|
||||
SPA_BT_PLAYER_TYPE_VIDEO,
|
||||
SPA_BT_PLAYER_TYPE_AUDIO_BROADCASTING,
|
||||
SPA_BT_PLAYER_TYPE_VIDEO_BROADCASTING,
|
||||
};
|
||||
|
||||
struct spa_bt_player {
|
||||
struct spa_list link;
|
||||
|
||||
struct spa_bt_monitor *monitor;
|
||||
|
||||
struct spa_bt_device *device;
|
||||
struct spa_list device_link;
|
||||
|
||||
char *name;
|
||||
char *path;
|
||||
|
||||
struct {
|
||||
uint32_t number;
|
||||
uint64_t duration;
|
||||
|
||||
char *title;
|
||||
char *artist;
|
||||
char *album;
|
||||
char *genre;
|
||||
} track;
|
||||
|
||||
enum spa_bt_player_state status;
|
||||
enum spa_bt_player_type type;
|
||||
};
|
||||
|
||||
#define DEFAULT_AG_VOLUME 1.0f
|
||||
#define DEFAULT_RX_VOLUME 1.0f
|
||||
#define DEFAULT_TX_VOLUME 0.064f /* pa_sw_volume_to_linear(0.4 * PA_VOLUME_NORM) */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue