bluez5: add LHDC V5 A2DP decoder

This commit is contained in:
anonymix007 2025-04-19 18:03:21 +03:00
parent a9ba34da23
commit f2b3b63f21
6 changed files with 318 additions and 20 deletions

View file

@ -218,6 +218,27 @@
#define LHDC_CH_SPLIT_MODE_TWS 0x02
#define LHDC_CH_SPLIT_MODE_TWS_PLUS 0x04
#define LHDCV5_SAMPLING_FREQ_44100 (1 << 5)
#define LHDCV5_SAMPLING_FREQ_48000 (1 << 4)
#define LHDCV5_SAMPLING_FREQ_96000 (1 << 2)
#define LHDCV5_SAMPLING_FREQ_192000 (1 << 0)
#define LHDCV5_BIT_DEPTH_16 (1 << 2)
#define LHDCV5_BIT_DEPTH_24 (1 << 1)
#define LHDCV5_BIT_DEPTH_32 (1 << 0)
#define LHDCV5_MAX_BITRATE_900K (3)
#define LHDCV5_MAX_BITRATE_500K (2)
#define LHDCV5_MAX_BITRATE_400K (1)
#define LHDCV5_MAX_BITRATE_1000K (0)
#define LHDCV5_MIN_BITRATE_400K (3)
#define LHDCV5_MIN_BITRATE_256K (2)
#define LHDCV5_MIN_BITRATE_160K (1)
#define LHDCV5_MIN_BITRATE_64K (0)
#define LHDCV5_VER_1 (1 << 0)
#define FASTSTREAM_VENDOR_ID 0x0000000a
#define FASTSTREAM_CODEC_ID 0x0001
@ -422,23 +443,25 @@ typedef struct {
typedef struct {
a2dp_vendor_codec_t info;
uint8_t frequency:5;
uint8_t rfa1:3;
uint8_t sampling_freq:6;
uint8_t rfa1:2;
uint8_t bit_depth:3;
uint8_t rfa2:1;
uint8_t max_bit_rate:2;
uint8_t min_bit_rate:2;
uint8_t max_bitrate:2;
uint8_t min_bitrate:2;
uint8_t version:4;
uint8_t frame_len_5ms:1;
uint8_t rfa3:3;
uint8_t ar:1;
uint8_t jas:1;
uint8_t meta:1;
uint8_t rfa4:3;
uint8_t rfa4:1;
uint8_t lossless_96k:1;
uint8_t lossless_24b:1;
uint8_t low_latency:1;
uint8_t reserved:1; // lossless?
uint8_t ar_on:1;
uint8_t lossless_48k:1;
uint8_t rfa5:7;
uint8_t lossless_raw_48k:1;
} __attribute__ ((packed)) a2dp_lhdc_v5_t;
#elif __BYTE_ORDER == __BIG_ENDIAN