bluez5: add aptX and aptX HD codecs

They need the libopenaptx libraries from
https://github.com/pali/libopenaptx
This commit is contained in:
Wim Taymans 2020-12-04 11:34:38 +01:00
parent af8bb55762
commit 106d597305
11 changed files with 474 additions and 68 deletions

View file

@ -51,7 +51,8 @@ struct impl {
int max_bitpool;
};
static int codec_fill_caps(uint32_t flags, uint8_t caps[A2DP_MAX_CAPS_SIZE])
static int codec_fill_caps(const struct a2dp_codec *codec, uint32_t flags,
uint8_t caps[A2DP_MAX_CAPS_SIZE])
{
const a2dp_sbc_t a2dp_sbc = {
.frequency =
@ -116,8 +117,9 @@ static uint8_t default_bitpool(uint8_t freq, uint8_t mode)
return 53;
}
static int codec_select_config(uint32_t flags, const void *caps, size_t caps_size,
const struct spa_audio_info *info, uint8_t config[A2DP_MAX_CAPS_SIZE])
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])
{
a2dp_sbc_t conf;
int bitpool;
@ -191,8 +193,9 @@ static int codec_set_bitpool(struct impl *this, int bitpool)
return this->sbc.bitpool;
}
static int codec_enum_config(const void *caps, size_t caps_size, uint32_t id, uint32_t idx,
struct spa_pod_builder *b, struct spa_pod **param)
static int codec_enum_config(const struct a2dp_codec *codec,
const void *caps, size_t caps_size, uint32_t id, uint32_t idx,
struct spa_pod_builder *b, struct spa_pod **param)
{
a2dp_sbc_t conf;
struct spa_pod_frame f[2];
@ -290,7 +293,8 @@ static int codec_get_block_size(void *data)
return this->codesize;
}
static void *codec_init(uint32_t flags, void *config, size_t config_len, struct spa_audio_info *info, size_t mtu)
static void *codec_init(const struct a2dp_codec *codec, uint32_t flags,
void *config, size_t config_len, struct spa_audio_info *info, size_t mtu)
{
struct impl *this;
a2dp_sbc_t *conf = config;
@ -482,8 +486,8 @@ static int codec_decode(void *data,
return res;
}
struct a2dp_codec a2dp_codec_sbc = {
.id = {.codec_id = A2DP_CODEC_SBC},
const struct a2dp_codec a2dp_codec_sbc = {
.codec_id = A2DP_CODEC_SBC,
.name = "sbc",
.description = "SBC",
.fill_caps = codec_fill_caps,