mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-12-16 08:56:45 -05:00
a2dp: move codecs to separate files
This commit is contained in:
parent
5c5b9f61bb
commit
e18c4d76dc
8 changed files with 649 additions and 479 deletions
|
|
@ -26,6 +26,9 @@
|
|||
#define BLUEALSA_A2DPCODECS_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include <spa/param/audio/format.h>
|
||||
|
||||
#define A2DP_CODEC_SBC 0x00
|
||||
#define A2DP_CODEC_MPEG12 0x01
|
||||
|
|
@ -33,6 +36,8 @@
|
|||
#define A2DP_CODEC_ATRAC 0x03
|
||||
#define A2DP_CODEC_VENDOR 0xFF
|
||||
|
||||
#define A2DP_MAX_CAPS_SIZE 254
|
||||
|
||||
/* customized 16-bit vendor extension */
|
||||
#define A2DP_CODEC_VENDOR_APTX 0x4FFF
|
||||
#define A2DP_CODEC_VENDOR_LDAC 0x2DFF
|
||||
|
|
@ -58,8 +63,8 @@
|
|||
#define SBC_ALLOCATION_LOUDNESS (1 << 0)
|
||||
#define SBC_ALLOCATION_SNR (1 << 1)
|
||||
|
||||
#define MIN_BITPOOL 2
|
||||
#define MAX_BITPOOL 64
|
||||
#define SBC_MIN_BITPOOL 2
|
||||
#define SBC_MAX_BITPOOL 64
|
||||
|
||||
#define MPEG_CHANNEL_MODE_JOINT_STEREO (1 << 0)
|
||||
#define MPEG_CHANNEL_MODE_STEREO (1 << 1)
|
||||
|
|
@ -155,8 +160,6 @@
|
|||
#define LDAC_VENDOR_ID 0x0000012d
|
||||
#define LDAC_CODEC_ID 0x00aa
|
||||
|
||||
#define A2DP_MAX_CONFIG_SIZE 254
|
||||
|
||||
typedef struct {
|
||||
uint32_t vendor_id;
|
||||
uint16_t codec_id;
|
||||
|
|
@ -286,13 +289,48 @@ static inline int a2dp_sbc_get_frequency(a2dp_sbc_t *config)
|
|||
}
|
||||
}
|
||||
|
||||
extern const a2dp_sbc_t bluez_a2dp_sbc;
|
||||
struct a2dp_codec {
|
||||
uint32_t flags;
|
||||
|
||||
uint8_t codec_id;
|
||||
uint32_t vendor_id;
|
||||
uint16_t vendor_codec_id;
|
||||
|
||||
const char *name;
|
||||
const char *description;
|
||||
|
||||
int (*fill_caps) (uint32_t flags, uint8_t caps[A2DP_MAX_CAPS_SIZE]);
|
||||
int (*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]);
|
||||
|
||||
void *(*init) (uint32_t flags, void *config, size_t config_size, struct spa_audio_info *info);
|
||||
void (*deinit) (void *data);
|
||||
|
||||
int (*get_block_size) (void *data);
|
||||
int (*get_num_blocks) (void *data, size_t mtu);
|
||||
|
||||
int (*start_encode) (void *data,
|
||||
void *dst, size_t dst_size, uint16_t seqnum, uint32_t timestamp);
|
||||
int (*encode) (void *data,
|
||||
const void *src, size_t src_size,
|
||||
void *dst, size_t dst_size,
|
||||
size_t *dst_out);
|
||||
|
||||
int (*decode) (void *data,
|
||||
const void *src, size_t src_size,
|
||||
void *dst, size_t dst_size,
|
||||
size_t *dst_out);
|
||||
|
||||
int (*reduce_bitpool) (void *data);
|
||||
int (*increase_bitpool) (void *data);
|
||||
};
|
||||
|
||||
extern struct a2dp_codec a2dp_codec_sbc;
|
||||
extern struct a2dp_codec a2dp_codec_aac;
|
||||
|
||||
#if ENABLE_MP3
|
||||
extern const a2dp_mpeg_t bluez_a2dp_mpeg;
|
||||
#endif
|
||||
#if ENABLE_AAC
|
||||
extern const a2dp_aac_t bluez_a2dp_aac;
|
||||
#endif
|
||||
#if ENABLE_APTX
|
||||
extern const a2dp_aptx_t bluez_a2dp_aptx;
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue