diff --git a/lib_ex3d/Makefile b/lib_ex3d/Makefile deleted file mode 100644 index 8b74c9a..0000000 --- a/lib_ex3d/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -# This variable should contain a space separated list of all -# the directories containing buildable applications (usually -# prefixed with the app_ prefix) -# -# If the variable is set to "all" then all directories that start with app_ -# are built. -BUILD_SUBDIRS = all - -XMOS_MAKE_PATH ?= .. -include $(XMOS_MAKE_PATH)/xcommon/module_xcommon/build/Makefile.toplevel diff --git a/lib_ex3d/lib_ex3d/.DS_Store b/lib_ex3d/lib_ex3d/.DS_Store index b50c6ed..a479b9e 100644 Binary files a/lib_ex3d/lib_ex3d/.DS_Store and b/lib_ex3d/lib_ex3d/.DS_Store differ diff --git a/lib_ex3d/lib_ex3d/api/DSBuild.h b/lib_ex3d/lib_ex3d/api/DSBuild.h index 7c87dbf..c331c1d 100644 --- a/lib_ex3d/lib_ex3d/api/DSBuild.h +++ b/lib_ex3d/lib_ex3d/api/DSBuild.h @@ -1,51 +1,51 @@ -#ifndef __DS_BUILD_H__ -#define __DS_BUILD_H__ - -//#define _DEBUG - -#define XMOS_SDK - - -#define USE_OS // Thread, Event, Lock 등의 외부 OS API 사용 -#define USE_FIXED_POINT // 내부 연산 고정소수점 사용 -#define USE_PLANAR_ARRAY_INPUT // Audio Input Data Planar 배열 사용 -#if (NUM_USB_CHAN_OUT > 5) -#define USE_LFE_UNIT // LFE 채널 Convolution 사용 -#endif -// #define USE_UPMIX // Upmix 기능 사용 - -#if (NUM_USB_CHAN_OUT <= 8) - #if (NUM_USB_CHAN_OUT == 2) - #define USE_ONLY_STEREO - #endif - #define USE_ONLY_HORIZONTALITY // 수평 방향(Vertical 90도)만 사용 -#elif (NUM_USB_CHAN_OUT == 12) - #define USE_7_1_4_IR_ARRARY // top: 1st~4th (45/135/225/315 ==> TFL/TFR/TBL/TBR) - // middle: 5th~12th (0/45/90/135/180/225/270/315 ==> FL/FR/C/LFE/BL/BR/SL/SR) -#elif (NUM_USB_CHAN_OUT == 16) - #define USE_7_1_4_4_IR_ARRARY // top: 1st~4th (45/135/225/315 ==> TFL/TFR/TBL/TBR) - // middle: 5th~12th (0/45/90/135/180/225/270/315 ==> FL/FR/C/LFE/BL/BR/SL/SR) - // bottom: 13th~16th (45/135/225/315 ==> BFL/BFR/BBL/BBR) -#elif (NUM_USB_CHAN_OUT == 24) - #define USE_7_1_8_8_IR_ARRARY // top: 1st~4th (0/45/90/135/180/225/270/315 ==> TFL/TFR/TFC/TBC/TBL/TBR/TSL/TSR) - // middle: 5th~12th (0/45/90/135/180/225/270/315 ==> FL/FR/C/LFE/BL/BR/SL/SR) - // bottom: 13th~16th (0/45/90/135/180/225/270/315 ==> BFL/BFR/BFC/BBC/BBL/BBR/BSL/BSR) -#endif - -#if NUM_USB_CHAN_OUT == 8 - -// 6ch version -#define DSP_WORKER_COUNT 2//4//3 //the count of workers -#define DSP_WORKER_DATA_CH_COUNT 3//2 //3 //the number of channels each one handles -#define DSP_WORKER_FILTER_PER_DATA_CH 2 //the number of channels each one handles - -#else -#define IR_PS5 -#define DSP_WORKER_COUNT 4 //the count of workers -#define DSP_WORKER_DATA_CH_COUNT 1 //the number of channels each one handles -#define DSP_WORKER_FILTER_PER_DATA_CH 2 //the number of channels each one handles -#endif -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -#endif //__DS_BUILD_H__ +#ifndef __DS_BUILD_H__ +#define __DS_BUILD_H__ + +//#define _DEBUG + +#define XMOS_SDK + + +#define USE_OS // Thread, Event, Lock 등의 외부 OS API 사용 +#define USE_FIXED_POINT // 내부 연산 고정소수점 사용 +#define USE_PLANAR_ARRAY_INPUT // Audio Input Data Planar 배열 사용 +#if (NUM_USB_CHAN_OUT > 5) +#define USE_LFE_UNIT // LFE 채널 Convolution 사용 +#endif +// #define USE_UPMIX // Upmix 기능 사용 + +#if (NUM_USB_CHAN_OUT <= 8) + #if (NUM_USB_CHAN_OUT == 2) + #define USE_ONLY_STEREO + #endif + #define USE_ONLY_HORIZONTALITY // 수평 방향(Vertical 90도)만 사용 +#elif (NUM_USB_CHAN_OUT == 12) + #define USE_7_1_4_IR_ARRARY // top: 1st~4th (45/135/225/315 ==> TFL/TFR/TBL/TBR) + // middle: 5th~12th (0/45/90/135/180/225/270/315 ==> FL/FR/C/LFE/BL/BR/SL/SR) +#elif (NUM_USB_CHAN_OUT == 16) + #define USE_7_1_4_4_IR_ARRARY // top: 1st~4th (45/135/225/315 ==> TFL/TFR/TBL/TBR) + // middle: 5th~12th (0/45/90/135/180/225/270/315 ==> FL/FR/C/LFE/BL/BR/SL/SR) + // bottom: 13th~16th (45/135/225/315 ==> BFL/BFR/BBL/BBR) +#elif (NUM_USB_CHAN_OUT == 24) + #define USE_7_1_8_8_IR_ARRARY // top: 1st~4th (0/45/90/135/180/225/270/315 ==> TFL/TFR/TFC/TBC/TBL/TBR/TSL/TSR) + // middle: 5th~12th (0/45/90/135/180/225/270/315 ==> FL/FR/C/LFE/BL/BR/SL/SR) + // bottom: 13th~16th (0/45/90/135/180/225/270/315 ==> BFL/BFR/BFC/BBC/BBL/BBR/BSL/BSR) +#endif + +#if NUM_USB_CHAN_OUT == 8 + +// 6ch version +#define DSP_WORKER_COUNT 2//4//3 //the count of workers +#define DSP_WORKER_DATA_CH_COUNT 3//2 //3 //the number of channels each one handles +#define DSP_WORKER_FILTER_PER_DATA_CH 2 //the number of channels each one handles + +#else +#define IR_PS5 +#define DSP_WORKER_COUNT 4 //the count of workers +#define DSP_WORKER_DATA_CH_COUNT 1 //the number of channels each one handles +#define DSP_WORKER_FILTER_PER_DATA_CH 2 //the number of channels each one handles +#endif +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +#endif //__DS_BUILD_H__ diff --git a/lib_ex3d/lib_ex3d/api/IR.h b/lib_ex3d/lib_ex3d/api/IR.h index 83a561a..b43118a 100644 --- a/lib_ex3d/lib_ex3d/api/IR.h +++ b/lib_ex3d/lib_ex3d/api/IR.h @@ -62,20 +62,20 @@ EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h090_left; //This is the count of int32_t words to allocate for one data channel. //i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 }; -#define SPATIAL_71_DRAMA_v090h090_left_DATA_BUFFER_ELEMENTS (1824) +#define SPATIAL_71_DRAMA_v090h090_left_DATA_BUFFER_ELEMENTS (1872) #define SPATIAL_71_DRAMA_v090h090_left_TD_BLOCK_LENGTH (8) -#define SPATIAL_71_DRAMA_v090h090_left_BLOCK_COUNT (226) +#define SPATIAL_71_DRAMA_v090h090_left_BLOCK_COUNT (232) #define SPATIAL_71_DRAMA_v090h090_left_FRAME_ADVANCE (8) #define SPATIAL_71_DRAMA_v090h090_left_FRAME_OVERLAP (0) EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h090_right; //This is the count of int32_t words to allocate for one data channel. //i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 }; -#define SPATIAL_71_DRAMA_v090h090_right_DATA_BUFFER_ELEMENTS (1824) +#define SPATIAL_71_DRAMA_v090h090_right_DATA_BUFFER_ELEMENTS (1872) #define SPATIAL_71_DRAMA_v090h090_right_TD_BLOCK_LENGTH (8) -#define SPATIAL_71_DRAMA_v090h090_right_BLOCK_COUNT (226) +#define SPATIAL_71_DRAMA_v090h090_right_BLOCK_COUNT (232) #define SPATIAL_71_DRAMA_v090h090_right_FRAME_ADVANCE (8) #define SPATIAL_71_DRAMA_v090h090_right_FRAME_OVERLAP (0) EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h135_left; @@ -222,20 +222,20 @@ EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h090_left; //This is the count of int32_t words to allocate for one data channel. //i.e. int32_t channel_data[SPATIAL_71_GAME_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 }; -#define SPATIAL_71_GAME_v090h090_left_DATA_BUFFER_ELEMENTS (1824) +#define SPATIAL_71_GAME_v090h090_left_DATA_BUFFER_ELEMENTS (1872) #define SPATIAL_71_GAME_v090h090_left_TD_BLOCK_LENGTH (8) -#define SPATIAL_71_GAME_v090h090_left_BLOCK_COUNT (226) +#define SPATIAL_71_GAME_v090h090_left_BLOCK_COUNT (232) #define SPATIAL_71_GAME_v090h090_left_FRAME_ADVANCE (8) #define SPATIAL_71_GAME_v090h090_left_FRAME_OVERLAP (0) EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h090_right; //This is the count of int32_t words to allocate for one data channel. //i.e. int32_t channel_data[SPATIAL_71_GAME_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 }; -#define SPATIAL_71_GAME_v090h090_right_DATA_BUFFER_ELEMENTS (1824) +#define SPATIAL_71_GAME_v090h090_right_DATA_BUFFER_ELEMENTS (1872) #define SPATIAL_71_GAME_v090h090_right_TD_BLOCK_LENGTH (8) -#define SPATIAL_71_GAME_v090h090_right_BLOCK_COUNT (226) +#define SPATIAL_71_GAME_v090h090_right_BLOCK_COUNT (232) #define SPATIAL_71_GAME_v090h090_right_FRAME_ADVANCE (8) #define SPATIAL_71_GAME_v090h090_right_FRAME_OVERLAP (0) EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h135_left; @@ -382,20 +382,20 @@ EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h090_left; //This is the count of int32_t words to allocate for one data channel. //i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 }; -#define SPATIAL_71_MOVIE_v090h090_left_DATA_BUFFER_ELEMENTS (1824) +#define SPATIAL_71_MOVIE_v090h090_left_DATA_BUFFER_ELEMENTS (1872) #define SPATIAL_71_MOVIE_v090h090_left_TD_BLOCK_LENGTH (8) -#define SPATIAL_71_MOVIE_v090h090_left_BLOCK_COUNT (226) +#define SPATIAL_71_MOVIE_v090h090_left_BLOCK_COUNT (232) #define SPATIAL_71_MOVIE_v090h090_left_FRAME_ADVANCE (8) #define SPATIAL_71_MOVIE_v090h090_left_FRAME_OVERLAP (0) EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h090_right; //This is the count of int32_t words to allocate for one data channel. //i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 }; -#define SPATIAL_71_MOVIE_v090h090_right_DATA_BUFFER_ELEMENTS (1824) +#define SPATIAL_71_MOVIE_v090h090_right_DATA_BUFFER_ELEMENTS (1872) #define SPATIAL_71_MOVIE_v090h090_right_TD_BLOCK_LENGTH (8) -#define SPATIAL_71_MOVIE_v090h090_right_BLOCK_COUNT (226) +#define SPATIAL_71_MOVIE_v090h090_right_BLOCK_COUNT (232) #define SPATIAL_71_MOVIE_v090h090_right_FRAME_ADVANCE (8) #define SPATIAL_71_MOVIE_v090h090_right_FRAME_OVERLAP (0) EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h135_left; @@ -482,20 +482,20 @@ EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_lfe_left; //This is the count of int32_t words to allocate for one data channel. //i.e. int32_t channel_data[SPATIAL_71_MUSIC_lfe_left_DATA_BUFFER_ELEMENTS] = { 0 }; -#define SPATIAL_71_MUSIC_lfe_left_DATA_BUFFER_ELEMENTS (1832) +#define SPATIAL_71_MUSIC_lfe_left_DATA_BUFFER_ELEMENTS (1224) #define SPATIAL_71_MUSIC_lfe_left_TD_BLOCK_LENGTH (8) -#define SPATIAL_71_MUSIC_lfe_left_BLOCK_COUNT (227) +#define SPATIAL_71_MUSIC_lfe_left_BLOCK_COUNT (151) #define SPATIAL_71_MUSIC_lfe_left_FRAME_ADVANCE (8) #define SPATIAL_71_MUSIC_lfe_left_FRAME_OVERLAP (0) EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_lfe_right; //This is the count of int32_t words to allocate for one data channel. //i.e. int32_t channel_data[SPATIAL_71_MUSIC_lfe_right_DATA_BUFFER_ELEMENTS] = { 0 }; -#define SPATIAL_71_MUSIC_lfe_right_DATA_BUFFER_ELEMENTS (1832) +#define SPATIAL_71_MUSIC_lfe_right_DATA_BUFFER_ELEMENTS (1224) #define SPATIAL_71_MUSIC_lfe_right_TD_BLOCK_LENGTH (8) -#define SPATIAL_71_MUSIC_lfe_right_BLOCK_COUNT (227) +#define SPATIAL_71_MUSIC_lfe_right_BLOCK_COUNT (151) #define SPATIAL_71_MUSIC_lfe_right_FRAME_ADVANCE (8) #define SPATIAL_71_MUSIC_lfe_right_FRAME_OVERLAP (0) EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h000_left; @@ -542,20 +542,20 @@ EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h090_left; //This is the count of int32_t words to allocate for one data channel. //i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 }; -#define SPATIAL_71_MUSIC_v090h090_left_DATA_BUFFER_ELEMENTS (1824) +#define SPATIAL_71_MUSIC_v090h090_left_DATA_BUFFER_ELEMENTS (1872) #define SPATIAL_71_MUSIC_v090h090_left_TD_BLOCK_LENGTH (8) -#define SPATIAL_71_MUSIC_v090h090_left_BLOCK_COUNT (226) +#define SPATIAL_71_MUSIC_v090h090_left_BLOCK_COUNT (232) #define SPATIAL_71_MUSIC_v090h090_left_FRAME_ADVANCE (8) #define SPATIAL_71_MUSIC_v090h090_left_FRAME_OVERLAP (0) EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h090_right; //This is the count of int32_t words to allocate for one data channel. //i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 }; -#define SPATIAL_71_MUSIC_v090h090_right_DATA_BUFFER_ELEMENTS (1824) +#define SPATIAL_71_MUSIC_v090h090_right_DATA_BUFFER_ELEMENTS (1872) #define SPATIAL_71_MUSIC_v090h090_right_TD_BLOCK_LENGTH (8) -#define SPATIAL_71_MUSIC_v090h090_right_BLOCK_COUNT (226) +#define SPATIAL_71_MUSIC_v090h090_right_BLOCK_COUNT (232) #define SPATIAL_71_MUSIC_v090h090_right_FRAME_ADVANCE (8) #define SPATIAL_71_MUSIC_v090h090_right_FRAME_OVERLAP (0) EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h135_left; diff --git a/lib_ex3d/lib_ex3d/api/audio_ex3d_control.h b/lib_ex3d/lib_ex3d/api/audio_ex3d_control.h index 38e7565..fc1fd10 100644 --- a/lib_ex3d/lib_ex3d/api/audio_ex3d_control.h +++ b/lib_ex3d/lib_ex3d/api/audio_ex3d_control.h @@ -30,7 +30,7 @@ #endif #define EX3D_SET_CH_NUM NUM_USB_CHAN_OUT -#define EX3D_SF_NUM 1 +#define EX3D_SF_NUM 6 EXTERN void audio_ex3d_load_key(chanend_t c); EXTERN int audio_ex3d_activate_key(chanend_t c); diff --git a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_music.a b/lib_ex3d/lib_ex3d/lib/liblib_ex3d_all.a similarity index 65% rename from lib_ex3d/lib_ex3d/lib/liblib_ex3d_music.a rename to lib_ex3d/lib_ex3d/lib/liblib_ex3d_all.a index 37c88b3..f301d18 100644 Binary files a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_music.a and b/lib_ex3d/lib_ex3d/lib/liblib_ex3d_all.a differ diff --git a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_drama.a b/lib_ex3d/lib_ex3d/lib/liblib_ex3d_drama.a deleted file mode 100644 index fffbf2c..0000000 Binary files a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_drama.a and /dev/null differ diff --git a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_game.a b/lib_ex3d/lib_ex3d/lib/liblib_ex3d_game.a deleted file mode 100644 index 947bb5f..0000000 Binary files a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_game.a and /dev/null differ diff --git a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_movie.a b/lib_ex3d/lib_ex3d/lib/liblib_ex3d_movie.a deleted file mode 100644 index 587fac6..0000000 Binary files a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_movie.a and /dev/null differ diff --git a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_stereo_2k.a b/lib_ex3d/lib_ex3d/lib/liblib_ex3d_stereo_2k.a deleted file mode 100644 index 33c7214..0000000 Binary files a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_stereo_2k.a and /dev/null differ diff --git a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_stereo_8k.a b/lib_ex3d/lib_ex3d/lib/liblib_ex3d_stereo_8k.a deleted file mode 100644 index d46475e..0000000 Binary files a/lib_ex3d/lib_ex3d/lib/liblib_ex3d_stereo_8k.a and /dev/null differ diff --git a/sw_usb_audio/app_usb_aud_phaten_golden/CMakeLists.txt b/sw_usb_audio/app_usb_aud_phaten_golden/CMakeLists.txt index d91d83a..433767e 100644 --- a/sw_usb_audio/app_usb_aud_phaten_golden/CMakeLists.txt +++ b/sw_usb_audio/app_usb_aud_phaten_golden/CMakeLists.txt @@ -54,90 +54,93 @@ set(SW_USB_AUDIO_FLAGS ${EXTRA_BUILD_FLAGS} -O3 LINK_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/../../lib_dnr/lib_dnr) -set(APP_COMPILER_FLAGS_ex3d_UAC1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 - -DI2S_CHANS_ADC=0 - -DAUDIO_CLASS=1 - -DMIN_FREQ=48000 - -DMAX_FREQ=48000 - -DUSE_EX3D - -DMIXER=0 - -DAIZIP_DNR=0 #-ldnr_50ms - -llib_ex3d_stereo_2k - -DNUM_USB_CHAN_OUT=2 - -DNUM_USB_CHAN_OUT_FS=2 - -DNUM_USB_CHAN_IN=0 - -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16 - -DNUM_EX3D_CHAN_OUT=2 - -DINPUT_VOLUME_CONTROL=0 - -DUAC1_MODE=1 - -DOUTPUT_VOLUME_CONTROL=0 - -DXUA_DFU_EN=0 - -DSTEREO_2K - -DHID_CONTROLS=0) +#set(APP_COMPILER_FLAGS_ex3d_UAC1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 +# -DI2S_CHANS_ADC=0 +# -DAUDIO_CLASS=1 +# -DMIN_FREQ=48000 +# -DMAX_FREQ=48000 +# -DUSE_EX3D +# -DMIXER=0 +# -DAIZIP_DNR=0 #-ldnr_50ms +# -llib_ex3d_stereo_2k +# -DNUM_USB_CHAN_OUT=2 +# -DNUM_USB_CHAN_OUT_FS=2 +# -DNUM_USB_CHAN_IN=0 +# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16 +# -DNUM_EX3D_CHAN_OUT=2 +# -DINPUT_VOLUME_CONTROL=0 +# -DUAC1_MODE=1 +# -DOUTPUT_VOLUME_CONTROL=0 +# -DXUA_DFU_EN=0 +# -DSTEREO_2K +# -DHID_CONTROLS=0) +# +# +#set(APP_COMPILER_FLAGS_ex3d_stereo_2k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 +# -DI2S_CHANS_ADC=2 +# #-DAUDIO_CLASS=1 +# -DMIN_FREQ=48000 +# -DMAX_FREQ=48000 +# -DUSE_EX3D +# -DMIXER=0 +# -DAIZIP_DNR=0 #-ldnr_50ms +# -llib_ex3d_stereo_2k +# -DNUM_USB_CHAN_OUT=2 +# -DNUM_USB_CHAN_IN=2 +# -DEQ_EN=1 +# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16 +# -DNUM_EX3D_CHAN_OUT=2 +# -DINPUT_VOLUME_CONTROL=1 +# -DOUTPUT_VOLUME_CONTROL=1 +# -DXUA_DFU_EN=1 +# -DSTEREO_2K +# -DHID_CONTROLS=1) +# +#set(APP_COMPILER_FLAGS_ex3d_stereo_8k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 +# -DI2S_CHANS_ADC=0 +# -DMIN_FREQ=48000 +# -DMAX_FREQ=48000 +# -DUSE_EX3D +# -DMIXER=0 +# -DAIZIP_DNR=0 #-ldnr_50ms +# -llib_ex3d_stereo_8k +# -DNUM_USB_CHAN_OUT=2 +# -DNUM_USB_CHAN_IN=2 +# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16 +# -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16 +# -DNUM_EX3D_CHAN_OUT=2 +# -DXUA_DFU_EN=1 +# -DINPUT_VOLUME_CONTROL=1 +# -DOUTPUT_VOLUME_CONTROL=1 +# -DSTEREO_8K +# -DHID_CONTROLS=1) -set(APP_COMPILER_FLAGS_ex3d_stereo_2k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 - -DI2S_CHANS_ADC=2 - #-DAUDIO_CLASS=1 - -DMIN_FREQ=48000 - -DMAX_FREQ=48000 - -DUSE_EX3D - -DMIXER=0 - -DAIZIP_DNR=0 #-ldnr_50ms - -llib_ex3d_stereo_2k - -DNUM_USB_CHAN_OUT=2 - -DNUM_USB_CHAN_IN=2 - -DEQ_EN=1 - -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16 - -DNUM_EX3D_CHAN_OUT=2 - -DINPUT_VOLUME_CONTROL=1 - -DOUTPUT_VOLUME_CONTROL=1 - -DXUA_DFU_EN=1 - -DSTEREO_2K - -DHID_CONTROLS=1) - -set(APP_COMPILER_FLAGS_ex3d_stereo_8k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 - -DI2S_CHANS_ADC=0 - -DMIN_FREQ=48000 - -DMAX_FREQ=48000 - -DUSE_EX3D - -DMIXER=0 - -DAIZIP_DNR=0 #-ldnr_50ms - -llib_ex3d_stereo_8k - -DNUM_USB_CHAN_OUT=2 - -DNUM_USB_CHAN_IN=2 - -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16 - -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16 - -DNUM_EX3D_CHAN_OUT=2 - -DXUA_DFU_EN=1 - -DINPUT_VOLUME_CONTROL=1 - -DOUTPUT_VOLUME_CONTROL=1 - -DSTEREO_8K - -DHID_CONTROLS=1) - -set(APP_COMPILER_FLAGS_ex3d_71_game ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 +## IR switching mode +set(APP_COMPILER_FLAGS_ex3d_71_all ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 -DI2S_CHANS_ADC=2 - -DMIN_FREQ=48000 - -DMAX_FREQ=48000 + -DMIN_FREQ=48000 + -DMAX_FREQ=48000 -DUSE_EX3D - -DMIXER=0 - -DAIZIP_DNR=0 #-ldnr_50ms - -llib_ex3d_game + -DMIXER=0 + -DAIZIP_DNR=0 -ldnr_50ms + -llib_ex3d_all -DEQ_EN=1 + -DEX3D_SF_NUM=3 -DNUM_USB_CHAN_OUT=8 -DNUM_USB_CHAN_IN=2 -DNUM_EX3D_CHAN_OUT=2 @@ -146,56 +149,75 @@ set(APP_COMPILER_FLAGS_ex3d_71_game ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 -DOUTPUT_VOLUME_CONTROL=1 #-DDEBUG_MEMORY_LOG_ENABLED=1 -DXUA_DFU_EN=1 - -DSPATIAL_GAME + -DIR_SWITCHING_MODE -DHID_CONTROLS=1) - -set(APP_COMPILER_FLAGS_ex3d_71_music ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 - -DI2S_CHANS_ADC=2 - -DMIN_FREQ=48000 - -DMAX_FREQ=48000 - -DUSE_EX3D - -DMIXER=0 - -DAIZIP_DNR=0 #-ldnr_50ms - -llib_ex3d_music - -DNUM_USB_CHAN_OUT=8 - -DNUM_USB_CHAN_IN=2 - -DNUM_EX3D_CHAN_OUT=2 - -DMIN_VOLUME=0xE000 - -DSPATIAL_MUSIC - -DHID_CONTROLS=1) - -set(APP_COMPILER_FLAGS_ex3d_71_movie ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 - -DI2S_CHANS_ADC=2 - -DMIN_FREQ=48000 - -DMAX_FREQ=48000 - -DUSE_EX3D - -DMIXER=0 - -DAIZIP_DNR=0 #-ldnr_50ms - -DEQ_EN=1 - -llib_ex3d_movie - -DNUM_USB_CHAN_OUT=8 - -DNUM_USB_CHAN_IN=2 - -DNUM_EX3D_CHAN_OUT=2 - -DMIN_VOLUME=0xE000 - -DXUA_DFU_EN=1 - -DSPATIAL_MOVIE - -DHID_CONTROLS=1) - -set(APP_COMPILER_FLAGS_ex3d_71_drama ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 - -DI2S_CHANS_ADC=2 - -DMIN_FREQ=48000 - -DMAX_FREQ=48000 - -DUSE_EX3D - -DMIXER=0 - -DAIZIP_DNR=0 #-ldnr_50ms - -llib_ex3d_drama - -DNUM_USB_CHAN_OUT=8 - -DNUM_USB_CHAN_IN=2 - -DNUM_EX3D_CHAN_OUT=2 - -DMIN_VOLUME=0xE000 - -DSPATIAL_DRAMA - -DHID_CONTROLS=1) - +#set(APP_COMPILER_FLAGS_ex3d_71_game ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 +# -DI2S_CHANS_ADC=2 +# -DMIN_FREQ=48000 +# -DMAX_FREQ=48000 +# -DUSE_EX3D +# -DMIXER=0 +# -DAIZIP_DNR=0 #-ldnr_50ms +# -llib_ex3d_game +# -DEQ_EN=1 +# -DNUM_USB_CHAN_OUT=8 +# -DNUM_USB_CHAN_IN=2 +# -DNUM_EX3D_CHAN_OUT=2 +# -DMIN_VOLUME=0xE000 +# -DINPUT_VOLUME_CONTROL=1 +# -DOUTPUT_VOLUME_CONTROL=1 +# #-DDEBUG_MEMORY_LOG_ENABLED=1 +# -DXUA_DFU_EN=1 +# -DSPATIAL_GAME +# -DHID_CONTROLS=1) +# +#set(APP_COMPILER_FLAGS_ex3d_71_music ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 +# -DI2S_CHANS_ADC=2 +# -DMIN_FREQ=48000 +# -DMAX_FREQ=48000 +# -DUSE_EX3D +# -DMIXER=0 +# -DAIZIP_DNR=0 #-ldnr_50ms +# -llib_ex3d_music +# -DNUM_USB_CHAN_OUT=8 +# -DNUM_USB_CHAN_IN=2 +# -DNUM_EX3D_CHAN_OUT=2 +# -DMIN_VOLUME=0xE000 +# -DSPATIAL_MUSIC +# -DHID_CONTROLS=1) +# +#set(APP_COMPILER_FLAGS_ex3d_71_movie ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 +# -DI2S_CHANS_ADC=2 +# -DMIN_FREQ=48000 +# -DMAX_FREQ=48000 +# -DUSE_EX3D +# -DMIXER=0 +# -DAIZIP_DNR=0 #-ldnr_50ms +# -DEQ_EN=1 +# -llib_ex3d_movie +# -DNUM_USB_CHAN_OUT=8 +# -DNUM_USB_CHAN_IN=2 +# -DNUM_EX3D_CHAN_OUT=2 +# -DMIN_VOLUME=0xE000 +# -DXUA_DFU_EN=1 +# -DSPATIAL_MOVIE +# -DHID_CONTROLS=1) +# +#set(APP_COMPILER_FLAGS_ex3d_71_drama ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2 +# -DI2S_CHANS_ADC=2 +# -DMIN_FREQ=48000 +# -DMAX_FREQ=48000 +# -DUSE_EX3D +# -DMIXER=0 +# -DAIZIP_DNR=0 #-ldnr_50ms +# -llib_ex3d_drama +# -DNUM_USB_CHAN_OUT=8 +# -DNUM_USB_CHAN_IN=2 +# -DNUM_EX3D_CHAN_OUT=2 +# -DMIN_VOLUME=0xE000 +# -DSPATIAL_DRAMA +# -DHID_CONTROLS=1) +# set(APP_INCLUDES src src/core src/extensions ../../lib_dnr/lib_dnr) set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../..) diff --git a/sw_usb_audio/app_usb_aud_phaten_golden/src/extensions/dsp.c b/sw_usb_audio/app_usb_aud_phaten_golden/src/extensions/dsp.c index fea0ea5..31b1974 100644 --- a/sw_usb_audio/app_usb_aud_phaten_golden/src/extensions/dsp.c +++ b/sw_usb_audio/app_usb_aud_phaten_golden/src/extensions/dsp.c @@ -61,8 +61,14 @@ unsigned g_mic_level_t1; #define LED_OFF 1 #define S3D_ON LED_ON #define S3D_OFF LED_OFF + +#if defined(IR_SWITCHING_MODE) +enum {IR_OFF=0, IR_GAME=1, IR_MUSIC=2, IR_MOVIE=3, IR_7_1_GAME=4, IR_7_1_MUSIC=5, IR_7_1_MOVIE=6}; +unsigned g_3d_on_off_t1 = IR_OFF; // Default 3D off +#else enum {A3D_OFF=0, A3D_VON=1, A3D_ON=2}; unsigned g_3d_on_off_t1 = A3D_OFF; // Default 3D off +#endif #define DNR_ON 1 #define DNR_OFF 0 unsigned g_dnr_on_off_t1 = DNR_OFF; // Default DNR off @@ -182,8 +188,8 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi #endif #endif } - - #if defined(SPATIAL_DRAMA) || defined(SPATIAL_GAME) || defined(SPATIAL_MOVIE) || defined(SPATIAL_MUSIC) + +#if defined(SPATIAL_DRAMA) || defined(SPATIAL_GAME) || defined(SPATIAL_MOVIE) || defined(SPATIAL_MUSIC) || defined(IR_SWITCHING_MODE) // 6ch version // C and LFE -3dB mixed to L and R. // L = L + C*-3dB + LFE*-3dB @@ -212,8 +218,21 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi if (sum_R > 2147483647) sum_R = 2147483647; else if (sum_R < -2147483648) sum_R = -2147483648; - ubm_egress[0][frame_index] = (int32_t)sum_L; - ubm_egress[1][frame_index] = (int32_t)sum_R; + // only for Stereo game, Stereo music and Stereo movie mode + if ((is_3d > IR_OFF) && (is_3d < IR_7_1_GAME)) { + // stereo mode + ubm_egress[0][frame_index] = 0; + ubm_egress[1][frame_index] = 0; + ubm_egress[2][frame_index] = 0; + ubm_egress[3][frame_index] = 0; + ubm_egress[4][frame_index] = 0; + ubm_egress[5][frame_index] = 0; + ubm_egress[6][frame_index] = (int32_t)sum_L; //SL + ubm_egress[7][frame_index] = (int32_t)sum_R; //SR + } else { + ubm_egress[0][frame_index] = (int32_t)sum_L; + ubm_egress[1][frame_index] = (int32_t)sum_R; + } // Zero out C (2) and LFE (3) since they are mixed into L/R ubm_egress[2][frame_index] = 0; @@ -335,6 +354,11 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData) unsigned *pRcvBuf = (unsigned *)(RcvData + 4); unsigned *pSendBuf = SendData; unsigned angle; + // 改动原因: + // - host UI 根据 EX3D_SF_NUM 遍历声场列表;现在 EX3D_SF_NUM=3,只暴露按键支持的3个“带算法声场”(GAME/MUSIC/MOVIE); + // - 算法开关通过 CMD_ONOFF 单独控制,CMD_SOUND_FIELD 只选择声场,不允许隐式打开算法; + // 因此在HID命令层仅缓存“最近一次声场索引(0~2)”,供 CMD_SOUND_FIELD / CMD_ONOFF 共用(算法OFF时也能记住选择)。 + static unsigned last_sf_idx_0_2 = 0; // 0~2: GAME/MUSIC/MOVIE command_code = pRcvBuf[0]; cmdItem = CMD_ITEM(command_code); @@ -349,8 +373,31 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData) if (CMD_SET(CMD_ONOFF) == command_code) { // set DrAX on/off //audio_ex3d_onoff(pRcvBuf[1]); - audio_ex3d_set_onoff(pRcvBuf[1]); - debug_printf("Set CMD_ONOFF : %u\r\n", pRcvBuf[1]); + uint32_t onoff = pRcvBuf[1]; + //audio_ex3d_set_onoff(pRcvBuf[1]); + audio_ex3d_set_onoff(onoff); + uint32_t cur_mode; + GET_SHARED_GLOBAL(cur_mode, g_3d_on_off_t1); + if (onoff == 0) { + // 改动原因:关闭算法时记录当前声场索引(0~2),供下次打开时恢复;然后仅把共享变量置为IR_OFF + if (cur_mode == IR_7_1_MOVIE) { + last_sf_idx_0_2 = 2; + } else if (cur_mode == IR_7_1_GAME) { + last_sf_idx_0_2 = 1; + } else { + last_sf_idx_0_2 = 0; + } + cur_mode = IR_OFF; + SET_SHARED_GLOBAL(g_3d_on_off_t1, cur_mode); + } else { + // 改动原因:打开算法时恢复到最近一次选择的声场(0~2),并统一映射到 IR_GAME..IR_MOVIE(不再暴露6个族) + unsigned new_mode; + if (last_sf_idx_0_2 == 2) new_mode = IR_7_1_MOVIE; + else if (last_sf_idx_0_2 == 1) new_mode = IR_7_1_GAME; + else new_mode = IR_GAME; + SET_SHARED_GLOBAL(g_3d_on_off_t1, new_mode); + } + printf("Set CMD_ONOFF : %u\r\n", pRcvBuf[1]); } else { debug_printf("Get CMD_ONOFF : %u\r\n", bEX3D_On); pSendBuf[idx] = bEX3D_On; @@ -473,7 +520,26 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData) const char * sfIdxName = "SPATIAL GAME"; //sfDispName[sfIdx]; #elif defined(SPATIAL_MOVIE) const char * sfIdxName = "SPATIAL MOVIE"; //sfDispName[sfIdx]; -#else +#elif defined(IR_SWITCHING_MODE) + // 改动原因:host UI 现在只遍历 EX3D_SF_NUM=3 的声场;这里仅返回按键支持的3个“带算法声场”名字 + // mapping: sfIdx(0..2) -> IR_GAME/IR_7_1_GAME/IR_7_1_MOVIE + const char * sfIdxName = ""; + switch (sfIdx) { + case 0: sfIdxName = "STEREO GAME"; break; + case 1: sfIdxName = "SPATIAL GAME"; break; + case 2: sfIdxName = "SPATIAL MOVIE"; break; + default: break; + } +// if (cur_mode == IR_GAME) { +// sfIdxName = spatial_game; +// } else { +// if (cur_mode == IR_MUSIC) { +// sfIdxName = spatial_music; +// } else { +// sfIdxName = spatial_movie; +// } +// } +#else const char * sfIdxName = "EXTREME"; #endif int32_t NameLen = strlen(sfIdxName); @@ -489,12 +555,45 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData) if (CMD_SET(CMD_SOUND_FIELD) == command_code) { int32_t sfIdx = pRcvBuf[1]; debug_printf("Set CMD_SOUND_FIELD : "); - if (sfIdx < EX3D_SF_NUM) { - audio_ex3d_set_sf(sfIdx); - } else + // 改动原因: + // - host UI 现在只暴露3个“带算法声场”(GAME/MUSIC/MOVIE 三选一)。 + // - 算法开关通过 CMD_ONOFF/其它接口单独控制;CMD_SOUND_FIELD 不能隐式把算法打开/关闭。 + // 因此:CMD_SOUND_FIELD 只接受 0~2(对应 GAME/MUSIC/MOVIE),并且在算法OFF(IR_OFF)时只缓存选择、不改共享变量。 + if (sfIdx >= 0 && sfIdx < 3) { + unsigned cur_mode; + GET_SHARED_GLOBAL(cur_mode, g_3d_on_off_t1); + + last_sf_idx_0_2 = (unsigned)sfIdx; + + if (cur_mode == IR_OFF) { + // 改动原因:算法已关闭时不写 g_3d_on_off_t1,避免 event_polling 误判“主机改变声场”而自动打开算法 + debug_printf("algorithm OFF, cache sound field idx=%d only (no implicit on/off)\n", sfIdx); + } else { + // 改动原因:算法已开启时才更新声场;因EX3D_SF_NUM=3不再区分6个族 + unsigned new_mode; + if (sfIdx == 1) new_mode = IR_7_1_GAME; + else if (sfIdx == 2) new_mode = IR_7_1_MOVIE; + else new_mode = IR_GAME; + SET_SHARED_GLOBAL(g_3d_on_off_t1, new_mode); + debug_printf("set sound field idx=%d -> g_3d_on_off_t1=%d (no implicit on/off)\n", sfIdx, new_mode); + } + } else { + // 改动原因:EX3D_SF_NUM=3后只支持0~2,超过范围返回错误 pSendBuf[idx] = 0xFFFFFFFF; + } } else { // Get - pSendBuf[idx] = 0;//EX3D_SF_Idx; + // 改动原因:返回当前声场索引(0~2: GAME/MUSIC/MOVIE);若算法OFF则返回缓存值,避免依赖 g_3d_on_off_t1=IR_OFF + unsigned cur_mode; + GET_SHARED_GLOBAL(cur_mode, g_3d_on_off_t1); + if (cur_mode == IR_OFF) { + pSendBuf[idx] = last_sf_idx_0_2; + } else if (cur_mode == IR_7_1_MOVIE) { + pSendBuf[idx] = 2; + } else if (cur_mode == IR_7_1_GAME) { + pSendBuf[idx] = 1; + } else { + pSendBuf[idx] = 0; + } } break; @@ -785,7 +884,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c port_t p_leds = XS1_PORT_1G; port_t p_leds2 = XS1_PORT_4D; // set spatial audio on; LED on +#if defined (IR_SWITCHING_MODE) + static uint32_t is_3d_on = IR_OFF; +#else static uint32_t is_3d_on = A3D_OFF; +#endif static uint32_t is_dnr_on = DNR_OFF; static uint8_t leds2_val = LED_DNR_OFF_71_OFF; static uint8_t leds1_val = 1; // LED off @@ -854,6 +957,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c event_mic_vol: { tmp = chan_in_byte(cc_mic_level); +#if 1 debug_printf("event_mic_vol received: 0x%02X\n", tmp); // 改动原因:检查是否是音频模式传输命令(0xFC),如果是则接收当前音频模式值(0-3) if (tmp == 0xFC) { @@ -869,7 +973,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c if (current_mode_local == 0) { // 无音效模式:灯灭,算法关闭 audio_ex3d_onoff(0); +#if IR_SWITCHING_MODE + is_3d_on = IR_OFF; +#else is_3d_on = A3D_OFF; +#endif SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on); leds2_val |= (1< 0) { // 改动原因:短按切换模式(0=无音效,1=STEREO_2K,2=SPATIAL_GAME,3=SPATIAL_MOVIE) // 循环切换:0→1→2→3→0 -#if UAC1_MODE +#if !UAC1_MODE unsigned old_mode = current_mode_local; current_mode_local = (current_mode_local + 1) % 4; // 循环切换 0→1→2→3→0 debug_printf("Short press: switching mode from %d to %d\n", old_mode, current_mode_local); @@ -993,7 +1115,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c if (current_mode_local == 0) { // 无音效模式:灯灭,算法关闭 audio_ex3d_onoff(0); +#if IR_SWITCHING_MODE + is_3d_on = IR_OFF; +#else is_3d_on = A3D_OFF; +#endif SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on); leds2_val |= (1< 1(SPATIAL_GAME) -> 2(SPATIAL_MOVIE) -> 3(无音效) -> 0 - unsigned new_mode; - unsigned mode_flag; - debug_printf("current_mode: %d\n", current_mode); - if (current_mode == 0) { - // 当前是STEREO_2K,切换到STEREO_2K - new_mode = 1; - mode_flag = MODE_STEREO_2K; - debug_printf("Switching from STEREO_2K (0) to STEREO_2K (1)\n"); - } else if (current_mode == 1) { - // 当前是STEREO_2K,切换到SPATIAL_GAME - new_mode = 2; - mode_flag = MODE_SPATIAL_GAME; - debug_printf("Switching from STEREO_2K (1) to SPATIAL_GAME (2)\n"); - } else if (current_mode == 2) { - // 当前是SPATIAL_GAME,切换到SPATIAL_MOVIE - new_mode = 3; - mode_flag = MODE_SPATIAL_MOVIE; // SPATIAL_MOVIE模式使用SPATIAL_MOVIE固件 - debug_printf("Switching from SPATIAL_GAME (2) to SPATIAL_MOVIE (3)\n"); - } // 更新g_game_mode - else if(current_mode == 3) { + if (new_mode > 3) { new_mode = 0; - mode_flag = MODE_STEREO_2K; - debug_printf("Switching from SPATIAL_MOVIE (3) to STEREO_2K (0)\n"); } - // 改动原因:保存新的模式值到flash的 "game_mode" 文件(Windows模式专用) + // 改动原因:把模式值传到tile0保存(RAM共享变量用于运行时同步,flash用于掉电保持) + SET_SHARED_GLOBAL(g_game_mode, new_mode); unsigned char path[] = "game_mode"; save_value(path, (unsigned char)new_mode); - debug_printf("Saved game_mode %d to flash\n", new_mode); - delay_milliseconds(20); - - // 改动原因:判断是否需要切换固件,mode 0和mode 1都使用STEREO_2K固件,不需要reboot - // 只有在需要切换固件时才reboot,同一固件内的模式切换(如0<->1)只更新模式和算法状态 -#if !UAC1_MODE - - if (new_mode != 1) { - // 改动原因:需要切换固件,执行reboot - debug_printf("Set role switch flag: 0x%04X, switching firmware, rebooting...\n", mode_flag); - SetRoleSwitchFlag(mode_flag); - delay_milliseconds(20); - device_reboot(); - while (1); - } else { - // 改动原因:不需要切换固件,只更新模式和算法状态(如mode 0<->1切换),不reboot - debug_printf("Same firmware mode (0x%04X), updating mode and algorithm state without reboot\n", mode_flag); - SET_SHARED_GLOBAL(g_game_mode, new_mode); - // 改动原因:通过channel发送新的audio_mode给hid_button_task,更新LED和算法状态 - chan_out_byte(cc_mic_level, 0xFC); // 音频模式传输命令 - chan_out_byte(cc_mic_level, new_mode); // 音频模式值 - debug_printf("Sent audio_mode %d to hid_button_task via cc_mic_level channel\n", new_mode); - } -#endif break; } #if (HID_CONTROLS == 1) @@ -1497,15 +1640,25 @@ void ex3d_task(){ #define TD_DATA_BUFFER_ELEMENTS SPATIAL_STEREO_2K_v090h090_left_DATA_BUFFER_ELEMENTS #elif defined(STEREO_8K) #define TD_DATA_BUFFER_ELEMENTS SPATIAL_STEREO_8K_v090h090_left_DATA_BUFFER_ELEMENTS +#elif defined(IR_SWITCHING_MODE) +#define TD_DATA_BUFFER_ELEMENTS SPATIAL_71_GAME_v090h225_left_DATA_BUFFER_ELEMENTS #else #error you need to define SPATIAL_DRAMA or STEREO_8K.... #endif -int dsp_worker(chanend_t c_dsp_to_ex3d, +#if defined (IR_SWITCHING_MODE) +int dsp_worker(chanend_t c_dsp_to_ex3d, + td_block_fir_filter_t * filters[DSP_WORKER_FILTER_PER_DATA_CH*DSP_WORKER_DATA_CH_COUNT*4]){ +#else +int dsp_worker(chanend_t c_dsp_to_ex3d, td_block_fir_filter_t * filters[DSP_WORKER_FILTER_PER_DATA_CH*DSP_WORKER_DATA_CH_COUNT]){ - +#endif int32_t sample_buffer[DSP_WORKER_DATA_CH_COUNT][TD_DATA_BUFFER_ELEMENTS]; td_block_fir_data_t fir_data[DSP_WORKER_DATA_CH_COUNT]; +#if defined (IR_SWITCHING_MODE) + static uint32_t ir_mode; + GET_SHARED_GLOBAL(ir_mode, g_3d_on_off_t1); +#endif for(int i=0;i 3) { + ir_mode -= 4; + } else { + ir_mode -= 1; + } + } for(int ch=0;ch