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_M=${FW_VER_M}
|
||||||
-DBCD_DEVICE_N=${FW_VER_N}
|
-DBCD_DEVICE_N=${FW_VER_N}
|
||||||
-D${CODEC_IC}
|
-D${CODEC_IC}
|
||||||
-DWINDOWS_OS_DESCRIPTOR_SUPPORT
|
-DWINDOWS_OS_DESCRIPTOR_SUPPORT)
|
||||||
-DDEBUG_PRINT_ENABLE=0)
|
|
||||||
|
|
||||||
set(SW_USB_FACT_FLAGS ${EXTRA_BUILD_FLAGS} -Os
|
set(SW_USB_FACT_FLAGS ${EXTRA_BUILD_FLAGS} -Os
|
||||||
-report
|
-report
|
||||||
@@ -70,8 +69,7 @@ set(SW_USB_FACT_FLAGS ${EXTRA_BUILD_FLAGS} -Os
|
|||||||
-DBCD_DEVICE_M=5
|
-DBCD_DEVICE_M=5
|
||||||
-DBCD_DEVICE_N=6
|
-DBCD_DEVICE_N=6
|
||||||
-D${CODEC_IC}
|
-D${CODEC_IC}
|
||||||
-DWINDOWS_OS_DESCRIPTOR_SUPPORT
|
-DWINDOWS_OS_DESCRIPTOR_SUPPORT)
|
||||||
-DDEBUG_PRINT_ENABLE=0)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -182,6 +180,10 @@ set(APP_COMPILER_FLAGS_f3_f4_fps_uac2 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
|||||||
-llib_ex3d_all
|
-llib_ex3d_all
|
||||||
-DEQ_EN=1
|
-DEQ_EN=1
|
||||||
-DDNR_ENABLE=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
|
-DEX3D_SF_NUM=3
|
||||||
-DNUM_USB_CHAN_OUT=8
|
-DNUM_USB_CHAN_OUT=8
|
||||||
-DNUM_USB_CHAN_IN=2
|
-DNUM_USB_CHAN_IN=2
|
||||||
|
|||||||
@@ -15,8 +15,13 @@
|
|||||||
|
|
||||||
#include "share_buffer.h"
|
#include "share_buffer.h"
|
||||||
|
|
||||||
void dnr_exchange_buffer(int32_t *data);
|
extern uint32_t init_eq_data(unsigned sample_freq);
|
||||||
void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[]) {
|
|
||||||
|
void dnr_exchange_buffer(int32_t *data);
|
||||||
|
|
||||||
|
// 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_out_buf_word (c_data, sampsFromUsbToAudio, 2);
|
||||||
chan_in_buf_word (c_data , sampsFromUsbToAudio, 2);
|
chan_in_buf_word (c_data , sampsFromUsbToAudio, 2);
|
||||||
#if DNR_ENABLE == 1
|
#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) {
|
void dsp_main (chanend_t c_data) {
|
||||||
int play_input[NUM_USB_CHAN_OUT];
|
int play_input[NUM_USB_CHAN_OUT];
|
||||||
int play_output[I2S_CHANS_DAC];
|
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 mic_output[I2S_CHANS_ADC];
|
||||||
int count = 0;
|
int count = 0;
|
||||||
unsigned ch[1] = {2};
|
unsigned ch[1] = {2};
|
||||||
|
unsigned current_sample_freq = 0;
|
||||||
while (1) {
|
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);
|
chan_out_buf_word (c_data , play_output, I2S_CHANS_DAC);
|
||||||
#if DNR_ENABLE == 1
|
#if DNR_ENABLE == 1
|
||||||
chan_in_buf_word (c_data , mic_input, 2) ;
|
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[0] = mic_input[0];
|
||||||
mic_output[1] = mic_input[1];
|
mic_output[1] = mic_input[1];
|
||||||
#endif
|
#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;
|
unsigned g_mic_vol_cmd_pending = 0;
|
||||||
|
|
||||||
chanend_t uc_ex3d_to_ubm, uc_eq_data;
|
chanend_t uc_ex3d_to_ubm, uc_eq_data;
|
||||||
|
static unsigned ubm_sample_freq = 0;
|
||||||
|
|
||||||
#if (STEREO_8K == 1) || (STEREO_2K == 1)
|
#if (STEREO_8K == 1) || (STEREO_2K == 1)
|
||||||
#define UBM_TO_EX3D_CHANS (2)
|
#define UBM_TO_EX3D_CHANS (2)
|
||||||
@@ -113,7 +114,7 @@ void key_sender(chanend_t c)
|
|||||||
|
|
||||||
void UserBufferManagementInit(unsigned sampFreq)
|
void UserBufferManagementInit(unsigned sampFreq)
|
||||||
{
|
{
|
||||||
(void)sampFreq;
|
ubm_sample_freq = sampFreq;
|
||||||
#if USE_EX3D == 1
|
#if USE_EX3D == 1
|
||||||
memset(ubm_ingress, 0, sizeof(ubm_ingress));
|
memset(ubm_ingress, 0, sizeof(ubm_ingress));
|
||||||
memset(ubm_egress, 0, sizeof(ubm_egress));
|
memset(ubm_egress, 0, sizeof(ubm_egress));
|
||||||
@@ -131,7 +132,7 @@ void UserBufferManagementInit(unsigned sampFreq)
|
|||||||
}
|
}
|
||||||
float fLevel[NUM_USB_CHAN_OUT] = {0,};
|
float fLevel[NUM_USB_CHAN_OUT] = {0,};
|
||||||
enum {UBM_A3D_OFF=0, UBM_A3D_VON=1, UBM_A3D_ON=2};
|
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 is_eq_disabled(void);
|
||||||
extern unsigned int g_eq_enable;
|
extern unsigned int g_eq_enable;
|
||||||
void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[])
|
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);
|
chan_in_buf_word(uc_ex3d_to_ubm, (uint32_t *)ubm_ingress, EX3D_TO_UBM_CHANS * DSP_BLOCK_LENGTH);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
#if DNR_ENABLE == 1
|
#if EQ_EN == 1 && USE_EX3D == 0
|
||||||
buffer_exchange(uc_eq_data, sampsFromUsbToAudio, sampsFromAudioToUsb);
|
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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ extern unsigned int g_saved_eq_mode; // 改动原因:添加保存模式外部
|
|||||||
extern void debug_print_eq_params(unsigned sample_freq);
|
extern void debug_print_eq_params(unsigned sample_freq);
|
||||||
extern uint32_t get_reference_time(void);
|
extern uint32_t get_reference_time(void);
|
||||||
extern void update_eq_post_gain(void);
|
extern void update_eq_post_gain(void);
|
||||||
|
extern unsigned int g_eq_sample_rate;
|
||||||
extern unsigned g_windows_detect_done;
|
extern unsigned g_windows_detect_done;
|
||||||
|
|
||||||
#pragma unsafe arrays
|
#pragma unsafe arrays
|
||||||
@@ -45,7 +46,7 @@ void dsp_core0(void)
|
|||||||
static unsigned int usb_to_dsp_ratio = 1;
|
static unsigned int usb_to_dsp_ratio = 1;
|
||||||
static int buffer_in_active = 0;
|
static int buffer_in_active = 0;
|
||||||
static int buffer_out_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 b_fade_in = 0;
|
||||||
unsigned u_in_step;
|
unsigned u_in_step;
|
||||||
unsigned b_fade_out = 0;
|
unsigned b_fade_out = 0;
|
||||||
@@ -138,7 +139,8 @@ void dsp_core0(void)
|
|||||||
}
|
}
|
||||||
else
|
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[0] = read_from_ring_buffer(0);
|
||||||
audio_in_samples[1] = read_from_ring_buffer(1);
|
audio_in_samples[1] = read_from_ring_buffer(1);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user