This commit is contained in:
Steven Dan
2025-12-11 10:13:58 +08:00
parent d8b2974133
commit b3a2e22dc9
16 changed files with 920 additions and 0 deletions

BIN
lib_ex3d/lib_ex3d/api/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,52 @@
#ifndef __DSAUDIODEF_H__
#define __DSAUDIODEF_H__
#include "DSmath.h"
#define INT20_MIN -524288
#define INT20_MAX 524287
#define INT24_MIN -8388608
#define INT24_MAX 8388607
#define DSLIMITER_ATAN_THRESH 0.95f
#define DSLIMITER_ATAN_RANGE (1.0f - DSLIMITER_ATAN_THRESH)
#define DSLIMITER_ATAN(_x_) (DSLIMITER_ATAN_THRESH < _x_ ? \
(DS_ATAN((_x_ - DSLIMITER_ATAN_THRESH)/DSLIMITER_ATAN_RANGE)/M_PI_2)*DSLIMITER_ATAN_RANGE + DSLIMITER_ATAN_THRESH : \
(_x_ < -DSLIMITER_ATAN_THRESH ? -((DS_ATAN(-(_x_ + DSLIMITER_ATAN_THRESH)/DSLIMITER_ATAN_RANGE)/M_PI_2)*DSLIMITER_ATAN_RANGE + DSLIMITER_ATAN_THRESH) : _x_))
#define DS_DOUBLE_TO_PCM16_ATAN(_pi16PCM_, _pdbOffset_) *_pi16PCM_++ = (INT16)(DSLIMITER_ATAN( *_pdbOffset_ ) * INT16_MAX); \
_pdbOffset_++
#define DS_DOUBLE_TO_PCM24_ATAN(_i32V_, _p24PCM_, _pdbOffset_) _i32V_ = (INT32)(DSLIMITER_ATAN( *_pdbOffset_ ) * INT24_MAX); \
*_p24PCM_++ = (BYTE)_i32V_; _i32V_ >>= 8; \
*_p24PCM_++ = (BYTE)_i32V_; _i32V_ >>= 8; \
*_p24PCM_++ = (BYTE)_i32V_; _pdbOffset_++
#define DS_DOUBLE_TO_FLOAT_ATAN(_pfAData_, _pdbOffset_) *_pfAData_++ = (float)DSLIMITER_ATAN( *_pdbOffset_ ); \
_pdbOffset_++
#define DS_DOUBLE_TO_PCM16_CLIPPING(_pi16PCM_, _pdbOffset_) *_pi16PCM_++ = (INT16)((*_pdbOffset_ > 1.0 ? 1.0 : (*_pdbOffset_ < -1.0 ? -1.0 : *_pdbOffset_)) * INT16_MAX); \
_pdbOffset_++
#define DS_DOUBLE_TO_PCM24_CLIPPING(_i32V_, _p24PCM_, _pdbOffset_) _i32V_ = (INT32)((*_pdbOffset_ > 1.0 ? 1.0 : (*_pdbOffset_ < -1.0 ? -1.0 : *_pdbOffset_)) * INT24_MAX); \
*_p24PCM_++ = (BYTE)_i32V_; _i32V_ >>= 8; \
*_p24PCM_++ = (BYTE)_i32V_; _i32V_ >>= 8; \
*_p24PCM_++ = (BYTE)_i32V_; _pdbOffset_++
#define DS_DOUBLE_TO_FLOAT_CLIPPING(_pfAData_, _pdbOffset_) *_pfAData_++ = (float)(*_pdbOffset_ > 1.0 ? 1.0 : (*_pdbOffset_ < -1.0 ? -1.0 : *_pdbOffset_)); \
_pdbOffset_++
#define DS_DOUBLE_TO_PCM16(_pi16PCM_, _pdbOffset_) *_pi16PCM_++ = (INT16)(*_pdbOffset_++ * INT16_MAX)
#define DS_DOUBLE_TO_PCM24(_i32V_, _p24PCM_, _pdbOffset_) _i32V_ = (INT32)(*_pdbOffset_++ * INT24_MAX); \
*_p24PCM_++ = (BYTE)_i32V_; _i32V_ >>= 8; \
*_p24PCM_++ = (BYTE)_i32V_; _i32V_ >>= 8; \
*_p24PCM_++ = (BYTE)_i32V_
#define DS_DOUBLE_TO_FLOAT(_pfAData_, _pdbOffset_) *_pfAData_++ = (float)*_pdbOffset_++
#define DS_PCM16_TO_DOUBLE(_pdbOffset_, _pi16PCM_) *_pdbOffset_++ = *_pi16PCM_++ / (float)INT16_MAX
#endif // __DSAUDIODEF_H__

View File

@@ -0,0 +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
//#define SHOOTING_GAME
#define DSP_WORKER_COUNT 4//3 //the count of workers
#define DSP_WORKER_DATA_CH_COUNT 2 //3 //the number of channels each one handles
#define DSP_WORKER_FILTER_PER_DATA_CH 2 //the number of channels each one handles
// #define IR_AUDIO
// #define IR_VIDEO
#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__

720
lib_ex3d/lib_ex3d/api/IR.h Normal file
View File

@@ -0,0 +1,720 @@
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_lfe_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_lfe_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_lfe_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_lfe_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_lfe_left_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_lfe_left_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_lfe_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_lfe_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_lfe_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_lfe_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_lfe_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_lfe_right_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_lfe_right_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_lfe_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h000_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h000_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h000_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h000_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h000_left_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h000_left_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h000_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h000_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h000_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h000_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h000_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h000_right_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h000_right_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h000_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h045_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h045_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h045_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h045_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h045_left_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h045_left_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h045_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h045_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h045_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h045_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h045_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h045_right_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h045_right_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h045_right_FRAME_OVERLAP (0)
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 (2520)
#define SPATIAL_71_DRAMA_v090h090_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h090_left_BLOCK_COUNT (313)
#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 (2520)
#define SPATIAL_71_DRAMA_v090h090_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h090_right_BLOCK_COUNT (313)
#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;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h135_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h135_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h135_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h135_left_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h135_left_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h135_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h135_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h135_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h135_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h135_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h135_right_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h135_right_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h135_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h225_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h225_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h225_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h225_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h225_left_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h225_left_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h225_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h225_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h225_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h225_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h225_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h225_right_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h225_right_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h225_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h270_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h270_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h270_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h270_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h270_left_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h270_left_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h270_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h270_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h270_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h270_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h270_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h270_right_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h270_right_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h270_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h315_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h315_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h315_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h315_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h315_left_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h315_left_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h315_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h315_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h315_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_DRAMA_v090h315_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_DRAMA_v090h315_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_DRAMA_v090h315_right_BLOCK_COUNT (313)
#define SPATIAL_71_DRAMA_v090h315_right_FRAME_ADVANCE (8)
#define SPATIAL_71_DRAMA_v090h315_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_lfe_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_lfe_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_lfe_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_lfe_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_lfe_left_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_lfe_left_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_lfe_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_lfe_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_lfe_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_lfe_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_lfe_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_lfe_right_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_lfe_right_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_lfe_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h000_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h000_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h000_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h000_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h000_left_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h000_left_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h000_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h000_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h000_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h000_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h000_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h000_right_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h000_right_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h000_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h045_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h045_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h045_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h045_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h045_left_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h045_left_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h045_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h045_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h045_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h045_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h045_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h045_right_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h045_right_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h045_right_FRAME_OVERLAP (0)
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 (2520)
#define SPATIAL_71_GAME_v090h090_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h090_left_BLOCK_COUNT (313)
#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 (2520)
#define SPATIAL_71_GAME_v090h090_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h090_right_BLOCK_COUNT (313)
#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;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h135_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h135_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h135_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h135_left_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h135_left_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h135_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h135_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h135_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h135_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h135_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h135_right_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h135_right_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h135_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h225_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h225_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h225_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h225_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h225_left_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h225_left_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h225_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h225_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h225_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h225_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h225_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h225_right_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h225_right_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h225_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h270_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h270_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h270_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h270_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h270_left_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h270_left_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h270_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h270_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h270_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h270_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h270_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h270_right_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h270_right_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h270_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h315_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h315_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h315_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h315_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h315_left_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h315_left_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h315_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h315_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h315_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_GAME_v090h315_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_GAME_v090h315_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_GAME_v090h315_right_BLOCK_COUNT (313)
#define SPATIAL_71_GAME_v090h315_right_FRAME_ADVANCE (8)
#define SPATIAL_71_GAME_v090h315_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_lfe_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_lfe_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_lfe_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_lfe_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_lfe_left_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_lfe_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_lfe_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_lfe_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_lfe_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_lfe_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_lfe_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_lfe_right_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_lfe_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_lfe_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h000_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h000_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h000_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h000_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h000_left_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h000_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h000_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h000_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h000_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h000_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h000_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h000_right_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h000_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h000_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h045_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h045_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h045_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h045_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h045_left_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h045_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h045_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h045_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h045_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h045_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h045_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h045_right_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h045_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h045_right_FRAME_OVERLAP (0)
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 (2520)
#define SPATIAL_71_MOVIE_v090h090_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h090_left_BLOCK_COUNT (313)
#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 (2520)
#define SPATIAL_71_MOVIE_v090h090_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h090_right_BLOCK_COUNT (313)
#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;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h135_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h135_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h135_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h135_left_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h135_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h135_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h135_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h135_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h135_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h135_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h135_right_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h135_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h135_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h225_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h225_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h225_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h225_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h225_left_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h225_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h225_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h225_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h225_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h225_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h225_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h225_right_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h225_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h225_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h270_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h270_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h270_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h270_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h270_left_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h270_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h270_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h270_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h270_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h270_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h270_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h270_right_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h270_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h270_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h315_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h315_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h315_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h315_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h315_left_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h315_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h315_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h315_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h315_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MOVIE_v090h315_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MOVIE_v090h315_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MOVIE_v090h315_right_BLOCK_COUNT (313)
#define SPATIAL_71_MOVIE_v090h315_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MOVIE_v090h315_right_FRAME_OVERLAP (0)
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 (2520)
#define SPATIAL_71_MUSIC_lfe_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_lfe_left_BLOCK_COUNT (313)
#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 (2520)
#define SPATIAL_71_MUSIC_lfe_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_lfe_right_BLOCK_COUNT (313)
#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;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h000_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h000_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h000_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h000_left_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h000_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h000_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h000_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h000_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h000_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h000_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h000_right_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h000_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h000_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h045_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h045_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h045_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h045_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h045_left_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h045_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h045_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h045_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h045_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h045_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h045_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h045_right_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h045_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h045_right_FRAME_OVERLAP (0)
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 (2520)
#define SPATIAL_71_MUSIC_v090h090_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h090_left_BLOCK_COUNT (313)
#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 (2520)
#define SPATIAL_71_MUSIC_v090h090_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h090_right_BLOCK_COUNT (313)
#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;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h135_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h135_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h135_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h135_left_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h135_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h135_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h135_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h135_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h135_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h135_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h135_right_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h135_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h135_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h225_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h225_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h225_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h225_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h225_left_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h225_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h225_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h225_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h225_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h225_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h225_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h225_right_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h225_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h225_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h270_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h270_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h270_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h270_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h270_left_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h270_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h270_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h270_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h270_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h270_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h270_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h270_right_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h270_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h270_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h315_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h315_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h315_left_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h315_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h315_left_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h315_left_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h315_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h315_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h315_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_71_MUSIC_v090h315_right_DATA_BUFFER_ELEMENTS (2520)
#define SPATIAL_71_MUSIC_v090h315_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_71_MUSIC_v090h315_right_BLOCK_COUNT (313)
#define SPATIAL_71_MUSIC_v090h315_right_FRAME_ADVANCE (8)
#define SPATIAL_71_MUSIC_v090h315_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_STEREO_2K_v090h090_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_STEREO_2K_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_STEREO_2K_v090h090_left_DATA_BUFFER_ELEMENTS (2064)
#define SPATIAL_STEREO_2K_v090h090_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_STEREO_2K_v090h090_left_BLOCK_COUNT (256)
#define SPATIAL_STEREO_2K_v090h090_left_FRAME_ADVANCE (8)
#define SPATIAL_STEREO_2K_v090h090_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_STEREO_2K_v090h090_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_STEREO_2K_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_STEREO_2K_v090h090_right_DATA_BUFFER_ELEMENTS (2064)
#define SPATIAL_STEREO_2K_v090h090_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_STEREO_2K_v090h090_right_BLOCK_COUNT (256)
#define SPATIAL_STEREO_2K_v090h090_right_FRAME_ADVANCE (8)
#define SPATIAL_STEREO_2K_v090h090_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_STEREO_2K_v090h270_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_STEREO_2K_v090h270_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_STEREO_2K_v090h270_left_DATA_BUFFER_ELEMENTS (2064)
#define SPATIAL_STEREO_2K_v090h270_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_STEREO_2K_v090h270_left_BLOCK_COUNT (256)
#define SPATIAL_STEREO_2K_v090h270_left_FRAME_ADVANCE (8)
#define SPATIAL_STEREO_2K_v090h270_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_STEREO_2K_v090h270_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_STEREO_2K_v090h270_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_STEREO_2K_v090h270_right_DATA_BUFFER_ELEMENTS (2064)
#define SPATIAL_STEREO_2K_v090h270_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_STEREO_2K_v090h270_right_BLOCK_COUNT (256)
#define SPATIAL_STEREO_2K_v090h270_right_FRAME_ADVANCE (8)
#define SPATIAL_STEREO_2K_v090h270_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_STEREO_8K_v090h090_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_STEREO_8K_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_STEREO_8K_v090h090_left_DATA_BUFFER_ELEMENTS (8208)
#define SPATIAL_STEREO_8K_v090h090_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_STEREO_8K_v090h090_left_BLOCK_COUNT (1024)
#define SPATIAL_STEREO_8K_v090h090_left_FRAME_ADVANCE (8)
#define SPATIAL_STEREO_8K_v090h090_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_STEREO_8K_v090h090_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_STEREO_8K_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_STEREO_8K_v090h090_right_DATA_BUFFER_ELEMENTS (8208)
#define SPATIAL_STEREO_8K_v090h090_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_STEREO_8K_v090h090_right_BLOCK_COUNT (1024)
#define SPATIAL_STEREO_8K_v090h090_right_FRAME_ADVANCE (8)
#define SPATIAL_STEREO_8K_v090h090_right_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_STEREO_8K_v090h270_left;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_STEREO_8K_v090h270_left_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_STEREO_8K_v090h270_left_DATA_BUFFER_ELEMENTS (8208)
#define SPATIAL_STEREO_8K_v090h270_left_TD_BLOCK_LENGTH (8)
#define SPATIAL_STEREO_8K_v090h270_left_BLOCK_COUNT (1024)
#define SPATIAL_STEREO_8K_v090h270_left_FRAME_ADVANCE (8)
#define SPATIAL_STEREO_8K_v090h270_left_FRAME_OVERLAP (0)
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_STEREO_8K_v090h270_right;
//This is the count of int32_t words to allocate for one data channel.
//i.e. int32_t channel_data[SPATIAL_STEREO_8K_v090h270_right_DATA_BUFFER_ELEMENTS] = { 0 };
#define SPATIAL_STEREO_8K_v090h270_right_DATA_BUFFER_ELEMENTS (8208)
#define SPATIAL_STEREO_8K_v090h270_right_TD_BLOCK_LENGTH (8)
#define SPATIAL_STEREO_8K_v090h270_right_BLOCK_COUNT (1024)
#define SPATIAL_STEREO_8K_v090h270_right_FRAME_ADVANCE (8)
#define SPATIAL_STEREO_8K_v090h270_right_FRAME_OVERLAP (0)

View File

@@ -0,0 +1,72 @@
#if defined(EXTERN)
#undef EXTERN
#endif
#if defined(_AUDIO_EX3D_CONTROL_C_)
#define EXTERN
#else
#define EXTERN extern
#endif
#define NO_ERR 0
#ifndef TRUE
#define TRUE 1
#endif
#ifndef true
#define true 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef false
#define false 0
#endif
#ifndef DS_BOOL
typedef int DS_BOOL;
#endif
#define EX3D_SET_CH_NUM NUM_USB_CHAN_OUT
#define EX3D_SF_NUM 1
EXTERN void audio_ex3d_load_key(chanend_t c);
EXTERN int audio_ex3d_activate_key(chanend_t c);
EXTERN int audio_ex3d_init(uint32_t dwChannels, uint32_t dwSampleSize, uint32_t dwSRHz, uint32_t dwAudioDataSize);
EXTERN int audio_ex3d_conv_init(uint32_t dwTileNum, uint32_t dwChannels);
EXTERN int audio_ex3d_deinit(void);
EXTERN int audio_ex3d_change_parameter(uint32_t dwChannels, uint32_t dwSampleSize, uint32_t dwSRHz, uint32_t dwAudioDataSize);
EXTERN void audio_ex3d_set_onoff(DS_BOOL onoff);
EXTERN void audio_ex3d_set_sf(uint32_t SF_Idx);
#if 1
EXTERN void audio_ex3d_set_angle(uint32_t dwCh1Angle, uint32_t dwCh2Angle);
#else
EXTERN void audio_ex3d_set_angle(uint32_t dwCh1Angle, uint32_t dwCh2Angle,
uint32_t dwCh3Angle, uint32_t dwCh4Angle,
uint32_t dwCh5Angle, uint32_t dwCh6Angle,
uint32_t dwCh7Angle, uint32_t dwCh8Angle);
#endif
EXTERN void audio_ex3d_set_upmix(DS_BOOL onoff);
EXTERN void audio_ex3d_upmix_toggle(void);
EXTERN void audio_ex3d_toggle(void);
EXTERN void audio_ex3d_task(void);
EXTERN uint32_t EX3D_HAngle[EX3D_SET_CH_NUM]; // EX3D Channel 수평각
EXTERN uint32_t EX3D_VAngle[EX3D_SET_CH_NUM]; // EX3D Channel 수직각
EXTERN DS_BOOL EX3D_Mute[EX3D_SET_CH_NUM]; // EX3D Channel Mute
EXTERN uint8_t bEX3D_Open; // EX3D Open 유무 저장
EXTERN uint8_t bEX3D_On; // EX3D On 유무 저장
EXTERN int32_t Ex3dOnGain; // EX3D On Gain 값
EXTERN int32_t Ex3dOffGain; // EX3D Off Gain 값
EXTERN int32_t Ex3dLfeGain; // EX3D Lfe Gain 값
EXTERN uint8_t bEX3D_Upmix; // EX3D Upmix 유무 저장
EXTERN float Ex3dLimiterThreshold; // EX3D Limiter threshold 값
EXTERN int32_t Ex3dLimiterAttackTime; // EX3D Limiter Attack Time 값
EXTERN int32_t Ex3dLimiterReleaseTime; // EX3D Limiter Release Time 값

View File

@@ -0,0 +1,15 @@
#if defined(EXTERN)
#undef EXTERN
#endif
#if defined(_AUDIO_EX3D_CONTROL_C_)
#define EXTERN
#else
#define EXTERN extern
#endif
#include "dsp/td_block_fir.h"
#include "../api/IR.h"
void user_buffer_init(int ch_cnt, int block_cnt, unsigned frame_index, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[], int32_t *ubm_egress, int32_t *ubm_ingress);
void filter_init(td_block_fir_filter_t *filter);