v1
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
//#include "msbc_encoder_port.h"
|
||||
#include "sbc_encoder.h"
|
||||
#include "xc60xx.h"
|
||||
|
||||
#define mSBC_SYNCWORD 0xad
|
||||
#define SBC_MAX_CHANNELS 2
|
||||
|
||||
struct msbc_encoder_state {
|
||||
SBC_ENC_PARAMS *context;
|
||||
int num_data_bytes;
|
||||
uint8_t sbc_packet[512];
|
||||
};
|
||||
|
||||
|
||||
static struct msbc_encoder_state encoder_state = {0};
|
||||
static uint8_t msbc_encode_inited = 0;
|
||||
|
||||
int msbc_encoder_init(void)
|
||||
{
|
||||
static SBC_ENC_PARAMS msbc_context = {
|
||||
.s16NumOfBlocks = 15,
|
||||
.s16NumOfSubBands = 8,
|
||||
.s16AllocationMethod = SBC_LOUDNESS,
|
||||
.s16BitPool = 26,
|
||||
.s16ChannelMode = SBC_MONO,
|
||||
.s16NumOfChannels = 1,
|
||||
.mSBCEnabled = 1,
|
||||
.s16SamplingFreq = SBC_sf16000,
|
||||
};
|
||||
// int status = 0;
|
||||
|
||||
encoder_state.context = &msbc_context;
|
||||
encoder_state.context->pu8Packet = encoder_state.sbc_packet;
|
||||
|
||||
SBC_Encoder_Init(encoder_state.context);
|
||||
msbc_encode_inited = 1;
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
int msbc_encoder_num_audio_frames(void)
|
||||
{
|
||||
SBC_ENC_PARAMS * context = encoder_state.context;
|
||||
return context->s16NumOfSubBands * context->s16NumOfBlocks;
|
||||
}
|
||||
|
||||
uint8_t * msbc_encoder_sbc_buffer(void)
|
||||
{
|
||||
SBC_ENC_PARAMS * context = encoder_state.context;
|
||||
return context->pu8Packet;
|
||||
}
|
||||
|
||||
uint16_t msbc_encoder_sbc_buffer_length(void)
|
||||
{
|
||||
SBC_ENC_PARAMS * context = encoder_state.context;
|
||||
return context->u16PacketLength;
|
||||
}
|
||||
|
||||
void /*__attribute__((section("ram_em")))*/ msbc_encoder_process_data(int16_t * input_buffer)
|
||||
{
|
||||
if (!msbc_encode_inited) {
|
||||
printf("SBC encoder: sbc state is NULL, call btstack_sbc_encoder_init to initialize it\r\n");
|
||||
}
|
||||
SBC_ENC_PARAMS * context = encoder_state.context;
|
||||
context->ps16PcmBuffer = input_buffer;
|
||||
if (context->mSBCEnabled) {
|
||||
context->pu8Packet[0] = 0xad;
|
||||
}
|
||||
SBC_Encoder(context);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user