mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	If BAP codec configuration is mono channel with unspecified location, set the channel position from transport location. This in principle should be set in SelectProperties, but currently BlueZ doesn't tell us that yet there, so we hack it up later on.
		
			
				
	
	
		
			121 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Spa BAP codec API */
 | 
						|
/* SPDX-FileCopyrightText: Copyright © 2022 Collabora */
 | 
						|
/* SPDX-License-Identifier: MIT */
 | 
						|
 | 
						|
#ifndef SPA_BLUEZ5_BAP_CODEC_CAPS_H_
 | 
						|
#define SPA_BLUEZ5_BAP_CODEC_CAPS_H_
 | 
						|
 | 
						|
#define BAP_CODEC_LC3           0x06
 | 
						|
 | 
						|
#define LC3_TYPE_FREQ           0x01
 | 
						|
#define LC3_FREQ_8KHZ           (1 << 0)
 | 
						|
#define LC3_FREQ_11KHZ          (1 << 1)
 | 
						|
#define LC3_FREQ_16KHZ          (1 << 2)
 | 
						|
#define LC3_FREQ_22KHZ          (1 << 3)
 | 
						|
#define LC3_FREQ_24KHZ          (1 << 4)
 | 
						|
#define LC3_FREQ_32KHZ          (1 << 5)
 | 
						|
#define LC3_FREQ_44KHZ          (1 << 6)
 | 
						|
#define LC3_FREQ_48KHZ          (1 << 7)
 | 
						|
#define LC3_FREQ_ANY            (LC3_FREQ_8KHZ | \
 | 
						|
                                 LC3_FREQ_11KHZ | \
 | 
						|
                                 LC3_FREQ_16KHZ | \
 | 
						|
                                 LC3_FREQ_22KHZ | \
 | 
						|
                                 LC3_FREQ_24KHZ | \
 | 
						|
                                 LC3_FREQ_32KHZ | \
 | 
						|
                                 LC3_FREQ_44KHZ | \
 | 
						|
                                 LC3_FREQ_48KHZ)
 | 
						|
 | 
						|
#define LC3_TYPE_DUR            0x02
 | 
						|
#define LC3_DUR_7_5             (1 << 0)
 | 
						|
#define LC3_DUR_10              (1 << 1)
 | 
						|
#define LC3_DUR_ANY             (LC3_DUR_7_5 | \
 | 
						|
                                 LC3_DUR_10)
 | 
						|
 | 
						|
#define LC3_TYPE_CHAN           0x03
 | 
						|
#define LC3_CHAN_1              (1 << 0)
 | 
						|
#define LC3_CHAN_2              (1 << 1)
 | 
						|
 | 
						|
#define LC3_TYPE_FRAMELEN       0x04
 | 
						|
#define LC3_TYPE_BLKS           0x05
 | 
						|
 | 
						|
/* LC3 config parameters */
 | 
						|
#define LC3_CONFIG_FREQ_8KHZ    0x01
 | 
						|
#define LC3_CONFIG_FREQ_11KHZ   0x02
 | 
						|
#define LC3_CONFIG_FREQ_16KHZ   0x03
 | 
						|
#define LC3_CONFIG_FREQ_22KHZ   0x04
 | 
						|
#define LC3_CONFIG_FREQ_24KHZ   0x05
 | 
						|
#define LC3_CONFIG_FREQ_32KHZ   0x06
 | 
						|
#define LC3_CONFIG_FREQ_44KHZ   0x07
 | 
						|
#define LC3_CONFIG_FREQ_48KHZ   0x08
 | 
						|
 | 
						|
#define LC3_CONFIG_DURATION_7_5 0x00
 | 
						|
#define LC3_CONFIG_DURATION_10  0x01
 | 
						|
 | 
						|
#define LC3_CONFIG_CHNL_NOT_ALLOWED 0x00000000
 | 
						|
#define LC3_CONFIG_CHNL_FL          0x00000001 /* front left */
 | 
						|
#define LC3_CONFIG_CHNL_FR          0x00000002 /* front right */
 | 
						|
#define LC3_CONFIG_CHNL_FC          0x00000004 /* front center */
 | 
						|
#define LC3_CONFIG_CHNL_LFE         0x00000008 /* LFE */
 | 
						|
#define LC3_CONFIG_CHNL_BL          0x00000010 /* back left */
 | 
						|
#define LC3_CONFIG_CHNL_BR          0x00000020 /* back right */
 | 
						|
#define LC3_CONFIG_CHNL_FLC         0x00000040 /* front left center */
 | 
						|
#define LC3_CONFIG_CHNL_FRC         0x00000080 /* front right center */
 | 
						|
#define LC3_CONFIG_CHNL_BC          0x00000100 /* back center */
 | 
						|
#define LC3_CONFIG_CHNL_LFE2		0x00000200 /* LFE 2 */
 | 
						|
#define LC3_CONFIG_CHNL_SL          0x00000400 /* side left */
 | 
						|
#define LC3_CONFIG_CHNL_SR          0x00000800 /* side right */
 | 
						|
#define LC3_CONFIG_CHNL_TFL         0x00001000 /* top front left */
 | 
						|
#define LC3_CONFIG_CHNL_TFR         0x00002000 /* top front right */
 | 
						|
#define LC3_CONFIG_CHNL_TFC         0x00004000 /* top front center */
 | 
						|
#define LC3_CONFIG_CHNL_TC          0x00008000 /* top center */
 | 
						|
#define LC3_CONFIG_CHNL_TBL         0x00010000 /* top back left */
 | 
						|
#define LC3_CONFIG_CHNL_TBR         0x00020000 /* top back right */
 | 
						|
#define LC3_CONFIG_CHNL_TSL         0x00040000 /* top side left */
 | 
						|
#define LC3_CONFIG_CHNL_TSR         0x00080000 /* top side right */
 | 
						|
#define LC3_CONFIG_CHNL_TBC         0x00100000 /* top back center */
 | 
						|
#define LC3_CONFIG_CHNL_BFC         0x00200000 /* bottom front center */
 | 
						|
#define LC3_CONFIG_CHNL_BFL         0x00400000 /* bottom front left */
 | 
						|
#define LC3_CONFIG_CHNL_BFR         0x00800000 /* bottom front right */
 | 
						|
#define LC3_CONFIG_CHNL_FLW         0x01000000 /* front left wide */
 | 
						|
#define LC3_CONFIG_CHNL_FRW         0x02000000 /* front right wide */
 | 
						|
#define LC3_CONFIG_CHNL_LS          0x04000000 /* left surround */
 | 
						|
#define LC3_CONFIG_CHNL_RS          0x08000000 /* right surround */
 | 
						|
 | 
						|
#define LC3_MAX_CHANNELS 28
 | 
						|
 | 
						|
#define BT_ISO_QOS_CIG_UNSET    0xff
 | 
						|
#define BT_ISO_QOS_CIS_UNSET    0xff
 | 
						|
 | 
						|
#define BT_ISO_QOS_TARGET_LATENCY_LOW		0x01
 | 
						|
#define BT_ISO_QOS_TARGET_LATENCY_BALANCED	0x02
 | 
						|
#define BT_ISO_QOS_TARGET_LATENCY_RELIABILITY	0x03
 | 
						|
 | 
						|
struct __attribute__((packed)) ltv {
 | 
						|
	uint8_t  len;
 | 
						|
	uint8_t  type;
 | 
						|
	uint8_t  value[];
 | 
						|
};
 | 
						|
 | 
						|
struct bap_endpoint_qos {
 | 
						|
        uint8_t  framing;
 | 
						|
        uint8_t  phy;
 | 
						|
        uint8_t  retransmission;
 | 
						|
        uint16_t latency;
 | 
						|
        uint32_t delay_min;
 | 
						|
        uint32_t delay_max;
 | 
						|
        uint32_t preferred_delay_min;
 | 
						|
        uint32_t preferred_delay_max;
 | 
						|
};
 | 
						|
 | 
						|
struct bap_codec_qos {
 | 
						|
	uint32_t interval;
 | 
						|
	uint8_t framing;
 | 
						|
	uint8_t phy;
 | 
						|
	uint16_t sdu;
 | 
						|
	uint8_t retransmission;
 | 
						|
	uint16_t latency;
 | 
						|
	uint32_t delay;
 | 
						|
	uint8_t target_latency;
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |