Add a mechanism to configure the default A2DP codec priorities

Previously, the relative codec priorities were hard-codec internally.
The new mechanism uses the following configurable resources in
packages/apps/Bluetooth/res/values/config.xml to re-assign the
default codec priorities per device, or to explicitly disable a codec.

 - a2dp_source_codec_priority_sbc
 - a2dp_source_codec_priority_aac
 - a2dp_source_codec_priority_aptx
 - a2dp_source_codec_priority_aptx_hd
 - a2dp_source_codec_priority_ldac

Those values are assigned on startup.
Also, they can be changed per device by using an overlay:
device/<VENDOR>/<DEVICE>/overlay/packages/apps/Bluetooth/res/values/config.xml

Test: Manually streaming to a headset
Change-Id: I432174975d7afbecb8f27cb0e55f5aa816c6e64e
This commit is contained in:
Pavlin Radoslavov 2017-01-31 22:02:49 -08:00
parent 451a32cb56
commit 310d0f5979

View file

@ -69,7 +69,15 @@ typedef enum {
} btav_a2dp_codec_index_t;
typedef enum {
// Disable the codec.
// NOTE: This value can be used only during initialization when
// function btav_source_interface_t::init() is called.
BTAV_A2DP_CODEC_PRIORITY_DISABLED = -1,
// Reset the codec priority to its default value.
BTAV_A2DP_CODEC_PRIORITY_DEFAULT = 0,
// Highest codec priority.
BTAV_A2DP_CODEC_PRIORITY_HIGHEST = 1000 * 1000
} btav_a2dp_codec_priority_t;
@ -156,7 +164,7 @@ typedef struct {
btav_audio_source_config_callback audio_config_cb;
} btav_source_callbacks_t;
/** BT-AV A2DP Source callback structure. */
/** BT-AV A2DP Sink callback structure. */
typedef struct {
/** set to sizeof(btav_sink_callbacks_t) */
size_t size;
@ -183,9 +191,10 @@ typedef struct {
/** set to sizeof(btav_source_interface_t) */
size_t size;
/**
* Register the BtAv callbacks
* Register the BtAv callbacks.
*/
bt_status_t (*init)( btav_source_callbacks_t* callbacks );
bt_status_t (*init)(btav_source_callbacks_t* callbacks,
std::vector<btav_a2dp_codec_config_t> codec_priorities);
/** connect to headset */
bt_status_t (*connect)( bt_bdaddr_t *bd_addr );