mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-06-06 03:02:54 -04:00
Merge branch 'spa_bluez_follow_MediaPlayer1' into 'master'
Draft: RFC: spa: bluez: follow MediaPlayer1 objects and set media.* keys in a2dp-source See merge request pipewire/pipewire!802
This commit is contained in:
commit
3b79ecad7a
4 changed files with 498 additions and 14 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"
|
||||
|
||||
|
|
@ -411,6 +412,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
|
||||
|
|
@ -427,6 +429,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 {
|
||||
|
|
@ -460,6 +468,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;
|
||||
|
||||
|
|
@ -644,6 +653,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 /* spa_bt_volume_hw_to_linear(40, 100) */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue