mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2026-02-25 01:40:32 -05:00
backend-native: implement volume control
Parse the gain changed AT commands from the headset and fire 2 new hooks as a result. The device will connect to those hooks and change the source/sink volumes. When the source/sink volume changes, set the gain on the microphone or speaker respectively. Make sure we do nothing if the transport can not handle the gain changes.
This commit is contained in:
parent
7d4a497b3d
commit
34a5c754a9
3 changed files with 203 additions and 1 deletions
|
|
@ -40,6 +40,8 @@ typedef struct pa_bluetooth_backend pa_bluetooth_backend;
|
|||
typedef enum pa_bluetooth_hook {
|
||||
PA_BLUETOOTH_HOOK_DEVICE_CONNECTION_CHANGED, /* Call data: pa_bluetooth_device */
|
||||
PA_BLUETOOTH_HOOK_TRANSPORT_STATE_CHANGED, /* Call data: pa_bluetooth_transport */
|
||||
PA_BLUETOOTH_HOOK_TRANSPORT_MICROPHONE_GAIN_CHANGED, /* Call data: pa_bluetooth_transport */
|
||||
PA_BLUETOOTH_HOOK_TRANSPORT_SPEAKER_GAIN_CHANGED, /* Call data: pa_bluetooth_transport */
|
||||
PA_BLUETOOTH_HOOK_MAX
|
||||
} pa_bluetooth_hook_t;
|
||||
|
||||
|
|
@ -61,6 +63,8 @@ typedef enum pa_bluetooth_transport_state {
|
|||
typedef int (*pa_bluetooth_transport_acquire_cb)(pa_bluetooth_transport *t, bool optional, size_t *imtu, size_t *omtu);
|
||||
typedef void (*pa_bluetooth_transport_release_cb)(pa_bluetooth_transport *t);
|
||||
typedef void (*pa_bluetooth_transport_destroy_cb)(pa_bluetooth_transport *t);
|
||||
typedef void (*pa_bluetooth_transport_set_speaker_gain_cb)(pa_bluetooth_transport *t, uint16_t gain);
|
||||
typedef void (*pa_bluetooth_transport_set_microphone_gain_cb)(pa_bluetooth_transport *t, uint16_t gain);
|
||||
|
||||
struct pa_bluetooth_transport {
|
||||
pa_bluetooth_device *device;
|
||||
|
|
@ -73,11 +77,16 @@ struct pa_bluetooth_transport {
|
|||
uint8_t *config;
|
||||
size_t config_size;
|
||||
|
||||
uint16_t microphone_gain;
|
||||
uint16_t speaker_gain;
|
||||
|
||||
pa_bluetooth_transport_state_t state;
|
||||
|
||||
pa_bluetooth_transport_acquire_cb acquire;
|
||||
pa_bluetooth_transport_release_cb release;
|
||||
pa_bluetooth_transport_destroy_cb destroy;
|
||||
pa_bluetooth_transport_set_speaker_gain_cb set_speaker_gain;
|
||||
pa_bluetooth_transport_set_microphone_gain_cb set_microphone_gain;
|
||||
void *userdata;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue