update 8 mode support

This commit is contained in:
Steven Dan
2026-03-18 10:36:29 +08:00
parent cf1678b303
commit 4b9ea5f42e
14 changed files with 498 additions and 705 deletions

View File

@@ -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

Binary file not shown.

View File

@@ -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__

View File

@@ -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;

View File

@@ -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);