2025-11-25 10:21:47 +08:00

68 lines
1.6 KiB
C

#ifndef _SBC_H_
#define _SBC_H_
/* defines */
#define SBC_SUPPORT_OTHER_MODE 0 //0:just support mono mode
#define SBC_SUCCESS 0
#define SBC_NOT_ENOUGH_DATA -1
#define SBC_BUFFER_TOO_SMALL -2
#define SBC_NO_SYNCBYTE -3
#define SBC_CHECKSUM_ERROR -4
#define SBC_SYNCBYTE 0x9c
#define SBC_MAX_SUBBANDS 8
#if SBC_SUPPORT_OTHER_MODE
#define SBC_MAX_CHANNELS 2
#else
#define SBC_MAX_CHANNELS 1
#endif
#define SBC_TERMINATOR -1
/* structs, typedefs */
#define SBC_FREQU16000 0x0
#define SBC_FREQU32000 0x1
#define SBC_FREQU44100 0x2
#define SBC_FREQU48000 0x3
typedef unsigned short TSBCSamplingFrequency;
#define SBC_BLOCKS4 0x0
#define SBC_BLOCKS8 0x1
#define SBC_BLOCKS12 0x2
#define SBC_BLOCKS16 0x3
typedef unsigned short TSBCBlockNumber;
#define SBC_MODE_MONO 0x0
#if SBC_SUPPORT_OTHER_MODE
#define SBC_MODE_DUAL 0x1
#define SBC_MODE_STEREO 0x2
#define SBC_MODE_JOINT 0x3
#endif
typedef unsigned short TSBCChannelMode;
#define SBC_ALLOCLOUDNESS 0x0
#define SBC_ALLOCSNR 0x1
typedef unsigned short TSBCAllocMethod;
#define SBC_SUBBANDS4 0x0
#define SBC_SUBBANDS8 0x1
typedef unsigned short TSBCSubbandNumber;
typedef struct
{
TSBCSamplingFrequency samplingFrequency;
TSBCBlockNumber blockNumber;
TSBCChannelMode channelMode;
TSBCAllocMethod allocMethod;
TSBCSubbandNumber subbandNumber;
unsigned char bitpool;
} T_SBC_PARAMS;
extern T_SBC_PARAMS sbc_enc_params;
void sbc_init_encoder(void);
int sbc_encode(unsigned char *p_input_buff, int input_size, T_SBC_PARAMS *p_params,
unsigned char *p_output_buff, int *p_output_size);
#endif