bluez5: improve a2dp codec api

Pass dict to select_config to influence the selection
Make a method to validate a config.
Add spa_dict to the codec to pass more info around.
This commit is contained in:
Wim Taymans 2021-01-07 17:28:49 +01:00
parent 1ca3998b41
commit ece8a95c29
5 changed files with 9 additions and 7 deletions

View file

@ -103,7 +103,7 @@ static struct {
static int codec_select_config(const struct a2dp_codec *codec, uint32_t flags,
const void *caps, size_t caps_size,
const struct spa_audio_info *info, uint8_t config[A2DP_MAX_CAPS_SIZE])
const struct spa_dict *info, uint8_t config[A2DP_MAX_CAPS_SIZE])
{
a2dp_aac_t conf;
int freq;

View file

@ -76,7 +76,7 @@ static int codec_fill_caps(const struct a2dp_codec *codec, uint32_t flags,
static int codec_select_config(const struct a2dp_codec *codec, uint32_t flags,
const void *caps, size_t caps_size,
const struct spa_audio_info *info, uint8_t config[A2DP_MAX_CAPS_SIZE])
const struct spa_dict *info, uint8_t config[A2DP_MAX_CAPS_SIZE])
{
a2dp_aptx_t conf;
size_t actual_conf_size = codec_get_caps_size(codec);

View file

@ -128,7 +128,7 @@ static int codec_fill_caps(const struct a2dp_codec *codec, uint32_t flags, uint8
static int codec_select_config(const struct a2dp_codec *codec, uint32_t flags,
const void *caps, size_t caps_size,
const struct spa_audio_info *info, uint8_t config[A2DP_MAX_CAPS_SIZE])
const struct spa_dict *info, uint8_t config[A2DP_MAX_CAPS_SIZE])
{
a2dp_ldac_t conf;

View file

@ -119,7 +119,7 @@ static uint8_t default_bitpool(uint8_t freq, uint8_t mode)
static int codec_select_config(const struct a2dp_codec *codec, uint32_t flags,
const void *caps, size_t caps_size,
const struct spa_audio_info *info, uint8_t config[A2DP_MAX_CAPS_SIZE])
const struct spa_dict *info, uint8_t config[A2DP_MAX_CAPS_SIZE])
{
a2dp_sbc_t conf;
int bitpool;

View file

@ -325,13 +325,12 @@ static inline int a2dp_sbc_get_frequency(a2dp_sbc_t *config)
struct a2dp_codec_handle;
struct a2dp_codec {
uint32_t flags;
uint8_t codec_id;
a2dp_vendor_codec_t vendor;
const char *name;
const char *description;
const struct spa_dict *info;
const int send_fill_frames;
const int recv_fill_frames;
@ -340,10 +339,13 @@ struct a2dp_codec {
uint8_t caps[A2DP_MAX_CAPS_SIZE]);
int (*select_config) (const struct a2dp_codec *codec, uint32_t flags,
const void *caps, size_t caps_size,
const struct spa_audio_info *info, uint8_t config[A2DP_MAX_CAPS_SIZE]);
const struct spa_dict *info, uint8_t config[A2DP_MAX_CAPS_SIZE]);
int (*enum_config) (const struct a2dp_codec *codec,
const void *caps, size_t caps_size, uint32_t id, uint32_t idx,
struct spa_pod_builder *builder, struct spa_pod **param);
int (*validate_config) (const struct a2dp_codec *codec, uint32_t flags,
const void *caps, size_t caps_size,
struct spa_audio_info *info);
void *(*init) (const struct a2dp_codec *codec, uint32_t flags, void *config, size_t config_size,
const struct spa_audio_info *info, size_t mtu);