update f2 f3 to 16bit
This commit is contained in:
@@ -54,8 +54,7 @@ set(SW_USB_AUDIO_FLAGS ${EXTRA_BUILD_FLAGS} -Os
|
||||
-DBCD_DEVICE_M=${FW_VER_M}
|
||||
-DBCD_DEVICE_N=${FW_VER_N}
|
||||
-D${CODEC_IC}
|
||||
-DWINDOWS_OS_DESCRIPTOR_SUPPORT
|
||||
-DDEBUG_PRINT_ENABLE=0)
|
||||
-DWINDOWS_OS_DESCRIPTOR_SUPPORT)
|
||||
|
||||
set(SW_USB_FACT_FLAGS ${EXTRA_BUILD_FLAGS} -Os
|
||||
-report
|
||||
@@ -70,8 +69,7 @@ set(SW_USB_FACT_FLAGS ${EXTRA_BUILD_FLAGS} -Os
|
||||
-DBCD_DEVICE_M=5
|
||||
-DBCD_DEVICE_N=6
|
||||
-D${CODEC_IC}
|
||||
-DWINDOWS_OS_DESCRIPTOR_SUPPORT
|
||||
-DDEBUG_PRINT_ENABLE=0)
|
||||
-DWINDOWS_OS_DESCRIPTOR_SUPPORT)
|
||||
|
||||
|
||||
|
||||
@@ -182,6 +180,10 @@ set(APP_COMPILER_FLAGS_f3_f4_fps_uac2 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||
-llib_ex3d_all
|
||||
-DEQ_EN=1
|
||||
-DDNR_ENABLE=1
|
||||
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
|
||||
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
|
||||
-DINPUT_FORMAT_COUNT=1
|
||||
-DOUTPUT_FORMAT_COUNT=1
|
||||
-DEX3D_SF_NUM=3
|
||||
-DNUM_USB_CHAN_OUT=8
|
||||
-DNUM_USB_CHAN_IN=2
|
||||
|
||||
@@ -15,8 +15,13 @@
|
||||
|
||||
#include "share_buffer.h"
|
||||
|
||||
extern uint32_t init_eq_data(unsigned sample_freq);
|
||||
|
||||
void dnr_exchange_buffer(int32_t *data);
|
||||
void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[]) {
|
||||
|
||||
// sample_freq 作为首字发送给 tile[0] 的 dsp_main,用于采样率变化检测和 EQ 初始化
|
||||
void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[], unsigned sample_freq) {
|
||||
chan_out_word(c_data, sample_freq);
|
||||
chan_out_buf_word (c_data, sampsFromUsbToAudio, 2);
|
||||
chan_in_buf_word (c_data , sampsFromUsbToAudio, 2);
|
||||
#if DNR_ENABLE == 1
|
||||
@@ -29,12 +34,27 @@ void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned
|
||||
void dsp_main (chanend_t c_data) {
|
||||
int play_input[NUM_USB_CHAN_OUT];
|
||||
int play_output[I2S_CHANS_DAC];
|
||||
int mic_input[NUM_USB_CHAN_IN];
|
||||
int mic_input[I2S_CHANS_ADC];
|
||||
int mic_output[I2S_CHANS_ADC];
|
||||
int count = 0;
|
||||
unsigned ch[1] = {2};
|
||||
unsigned current_sample_freq = 0;
|
||||
while (1) {
|
||||
chan_in_buf_word (c_data , play_input, 2) ;
|
||||
unsigned sample_freq = (unsigned)chan_in_word(c_data);
|
||||
chan_in_buf_word (c_data , play_input, 2);
|
||||
|
||||
// 采样率变化:重新初始化 EQ 系数并清空 ring buffer,避免残留状态污染
|
||||
if (sample_freq != current_sample_freq && sample_freq != 0) {
|
||||
current_sample_freq = sample_freq;
|
||||
init_eq_data(sample_freq);
|
||||
clear_ring_buffer(0);
|
||||
clear_ring_buffer(1);
|
||||
clear_ring_buffer(2);
|
||||
clear_ring_buffer(3);
|
||||
play_output[0] = 0;
|
||||
play_output[1] = 0;
|
||||
}
|
||||
|
||||
chan_out_buf_word (c_data , play_output, I2S_CHANS_DAC);
|
||||
#if DNR_ENABLE == 1
|
||||
chan_in_buf_word (c_data , mic_input, 2) ;
|
||||
@@ -49,6 +69,5 @@ void dsp_main (chanend_t c_data) {
|
||||
mic_output[0] = mic_input[0];
|
||||
mic_output[1] = mic_input[1];
|
||||
#endif
|
||||
// dnr_exchange_buffer((int32_t *)mic_input, (int32_t *)mic_output);
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,7 @@ int32_t sys_vol = 0;
|
||||
unsigned g_mic_vol_cmd_pending = 0;
|
||||
|
||||
chanend_t uc_ex3d_to_ubm, uc_eq_data;
|
||||
static unsigned ubm_sample_freq = 0;
|
||||
|
||||
#if (STEREO_8K == 1) || (STEREO_2K == 1)
|
||||
#define UBM_TO_EX3D_CHANS (2)
|
||||
@@ -113,7 +114,7 @@ void key_sender(chanend_t c)
|
||||
|
||||
void UserBufferManagementInit(unsigned sampFreq)
|
||||
{
|
||||
(void)sampFreq;
|
||||
ubm_sample_freq = sampFreq;
|
||||
#if USE_EX3D == 1
|
||||
memset(ubm_ingress, 0, sizeof(ubm_ingress));
|
||||
memset(ubm_egress, 0, sizeof(ubm_egress));
|
||||
@@ -131,7 +132,7 @@ void UserBufferManagementInit(unsigned sampFreq)
|
||||
}
|
||||
float fLevel[NUM_USB_CHAN_OUT] = {0,};
|
||||
enum {UBM_A3D_OFF=0, UBM_A3D_VON=1, UBM_A3D_ON=2};
|
||||
extern void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[]);
|
||||
extern void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[], unsigned sample_freq);
|
||||
extern unsigned int is_eq_disabled(void);
|
||||
extern unsigned int g_eq_enable;
|
||||
void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[])
|
||||
@@ -237,8 +238,10 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
|
||||
chan_in_buf_word(uc_ex3d_to_ubm, (uint32_t *)ubm_ingress, EX3D_TO_UBM_CHANS * DSP_BLOCK_LENGTH);
|
||||
};
|
||||
#endif
|
||||
#if DNR_ENABLE == 1
|
||||
buffer_exchange(uc_eq_data, sampsFromUsbToAudio, sampsFromAudioToUsb);
|
||||
#if EQ_EN == 1 && USE_EX3D == 0
|
||||
buffer_exchange(uc_eq_data, sampsFromUsbToAudio, sampsFromAudioToUsb, ubm_sample_freq);
|
||||
#elif DNR_ENABLE == 1
|
||||
buffer_exchange(uc_eq_data, sampsFromUsbToAudio, sampsFromAudioToUsb, ubm_sample_freq);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ extern unsigned int g_saved_eq_mode; // 改动原因:添加保存模式外部
|
||||
extern void debug_print_eq_params(unsigned sample_freq);
|
||||
extern uint32_t get_reference_time(void);
|
||||
extern void update_eq_post_gain(void);
|
||||
extern unsigned int g_eq_sample_rate;
|
||||
extern unsigned g_windows_detect_done;
|
||||
|
||||
#pragma unsafe arrays
|
||||
@@ -45,7 +46,7 @@ void dsp_core0(void)
|
||||
static unsigned int usb_to_dsp_ratio = 1;
|
||||
static int buffer_in_active = 0;
|
||||
static int buffer_out_active = 0;
|
||||
static unsigned int sample_freq = 48000;
|
||||
static unsigned int sample_freq = 48000 ;
|
||||
unsigned b_fade_in = 0;
|
||||
unsigned u_in_step;
|
||||
unsigned b_fade_out = 0;
|
||||
@@ -138,7 +139,8 @@ void dsp_core0(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
sample_freq = 48000;
|
||||
GET_SHARED_GLOBAL(sample_freq, g_eq_sample_rate);
|
||||
if (sample_freq == 0) sample_freq = 48000;
|
||||
audio_in_samples[0] = read_from_ring_buffer(0);
|
||||
audio_in_samples[1] = read_from_ring_buffer(1);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user