Loading lib_rend/ivas_rom_binauralRenderer.c +94329 −47060 File changed.Preview size limit exceeded, changes collapsed. Show changes lib_rend/ivas_stat_rend.h +3 −3 Original line number Diff line number Diff line Loading @@ -729,11 +729,11 @@ typedef struct ivas_hrtfs_parambin_struct Word16 hrtfShCoeffsRe_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /*factor_Q_hrtfShCoeffs_fx*/ Word16 hrtfShCoeffsIm_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /*factor_Q_hrtfShCoeffs_fx*/ Word16 factor_Q_reverberationTimes_fx; Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_reverberationTimes_fx*/ Word16 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_reverberationTimes_fx*/ Word16 factor_Q_reverberationEneCorrections_fx; Word32 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_reverberationEneCorrections_fx*/ Word16 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_reverberationEneCorrections_fx*/ Word16 factor_Q_EarlyPartEneCorrection_fx; Word32 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_EarlyPartEneCorrection_fx*/ Word16 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_EarlyPartEneCorrection_fx*/ #endif // IVAS_FLOAT_FIXED float parametricReverberationTimes[CLDFB_NO_CHANNELS_MAX]; Loading scripts/binauralRenderer_interface/Table_Format_Converter/.vscode/settings.jsondeleted 100755 → 0 +0 −17 Original line number Diff line number Diff line { "cmake.configureArgs": [ "-DCOPY_EXECUTABLES_FROM_BUILD_DIR=TRUE", "-DVCPKG_TARGET_TRIPLET=-static" ], "vcpkg.general.enable": true, "vcpkg.target.hostTriplet": "x64-windows", "vcpkg.target.defaultTriplet": "-static", "vcpkg.target.useStaticLib": true, "cmake.configureSettings": { "CMAKE_TOOLCHAIN_FILE": "D:/DEV/vcpkg/scripts/buildsystems/vcpkg.cmake" }, "vcpkg.target.installDependencies": true, "vcpkg.target.preferSystemLibs": false, "vcpkg.target.useManifest": false, "cmake.generator": "Ninja" } No newline at end of file scripts/binauralRenderer_interface/fastconv/write_fastconv_rom_table.m +98 −0 Original line number Diff line number Diff line Loading @@ -44,18 +44,60 @@ function write_fastconv_rom_table(output_file, FastConv_SHD_IR_FOA, FastConv_SHD %% HRIRs (SHD) % HOA3 IR = FastConv_SHD_IR_HOA3; factorQ = int16(floor( double(31) - log( IR.latency_s ) / log( 2. ) )); latency_s_fx = int32(IR.latency_s .* (2.^double(factorQ))); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word16 FASTCONV_' FastConv_SHD_IR_HOA3.order '_latency_s_Q_fx = %d;\n'], factorQ); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word32 FASTCONV_' FastConv_SHD_IR_HOA3.order '_latency_s_fx = %d;\n'], latency_s_fx); writeData3L_fx_32(fid, ['const Word32 leftHRIRReal_' FastConv_SHD_IR_HOA3.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 leftHRIRImag_' FastConv_SHD_IR_HOA3.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRReal_' FastConv_SHD_IR_HOA3.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(2,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRImag_' FastConv_SHD_IR_HOA3.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(2,:,:,:))), IR.factorQ); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n\n'); fprintf(fid, ['const uint32_t FASTCONV_' FastConv_SHD_IR_HOA3.order '_latency_s = 0x%tx;\n'], FastConv_SHD_IR_HOA3.latency_s); writeData3L(fid, ['const uint32_t leftHRIRReal_' FastConv_SHD_IR_HOA3.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(FastConv_SHD_IR_HOA3.IR(1,:,:,:)))); writeData3L(fid, ['const uint32_t leftHRIRImag_' FastConv_SHD_IR_HOA3.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_HOA3.IR(1,:,:,:)))); writeData3L(fid, ['const uint32_t rightHRIRReal_' FastConv_SHD_IR_HOA3.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(FastConv_SHD_IR_HOA3.IR(2,:,:,:)))); writeData3L(fid, ['const uint32_t rightHRIRImag_' FastConv_SHD_IR_HOA3.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_HOA3.IR(2,:,:,:)))); % HOA2 IR = FastConv_SHD_IR_HOA2; factorQ = int16(floor( double(31) - log( IR.latency_s ) / log( 2. ) )); latency_s_fx = int32(IR.latency_s .* (2.^double(factorQ))); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word16 FASTCONV_' FastConv_SHD_IR_HOA2.order '_latency_s_Q_fx = %d;\n'], factorQ); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word32 FASTCONV_' FastConv_SHD_IR_HOA2.order '_latency_s_fx = %d;\n'], latency_s_fx); writeData3L_fx_32(fid, ['const Word32 leftHRIRReal_' FastConv_SHD_IR_HOA2.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 leftHRIRImag_' FastConv_SHD_IR_HOA2.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRReal_' FastConv_SHD_IR_HOA2.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(2,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRImag_' FastConv_SHD_IR_HOA2.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(2,:,:,:))), IR.factorQ); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid, ['const uint32_t FASTCONV_' FastConv_SHD_IR_HOA2.order '_latency_s = 0x%tx;\n'], FastConv_SHD_IR_HOA2.latency_s); writeData3L(fid, ['const uint32_t leftHRIRReal_' FastConv_SHD_IR_HOA2.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(FastConv_SHD_IR_HOA2.IR(1,:,:,:)))); writeData3L(fid, ['const uint32_t leftHRIRImag_' FastConv_SHD_IR_HOA2.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_HOA2.IR(1,:,:,:)))); writeData3L(fid, ['const uint32_t rightHRIRReal_' FastConv_SHD_IR_HOA2.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(FastConv_SHD_IR_HOA2.IR(2,:,:,:)))); writeData3L(fid, ['const uint32_t rightHRIRImag_' FastConv_SHD_IR_HOA2.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_HOA2.IR(2,:,:,:)))); % FOA IR = FastConv_SHD_IR_FOA; factorQ = int16(floor( double(31) - log( IR.latency_s ) / log( 2. ) )); latency_s_fx = int32(IR.latency_s .* (2.^double(factorQ))); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word16 FASTCONV_' FastConv_SHD_IR_FOA.order '_latency_s_Q_fx = %d;\n'], factorQ); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word32 FASTCONV_' FastConv_SHD_IR_FOA.order '_latency_s_fx = %d;\n'], latency_s_fx); writeData3L_fx_32(fid, ['const Word32 leftHRIRReal_' FastConv_SHD_IR_FOA.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 leftHRIRImag_' FastConv_SHD_IR_FOA.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRReal_' FastConv_SHD_IR_FOA.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(2,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRImag_' FastConv_SHD_IR_FOA.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(2,:,:,:))), IR.factorQ); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid, ['const uint32_t FASTCONV_' FastConv_SHD_IR_FOA.order '_latency_s = 0x%tx;\n'], FastConv_SHD_IR_FOA.latency_s); writeData3L(fid, ['const uint32_t leftHRIRReal_' FastConv_SHD_IR_FOA.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(FastConv_SHD_IR_FOA.IR(1,:,:,:)))); writeData3L(fid, ['const uint32_t leftHRIRImag_' FastConv_SHD_IR_FOA.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_FOA.IR(1,:,:,:)))); Loading @@ -63,6 +105,20 @@ function write_fastconv_rom_table(output_file, FastConv_SHD_IR_FOA, FastConv_SHD writeData3L(fid, ['const uint32_t rightHRIRImag_' FastConv_SHD_IR_FOA.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_FOA.IR(2,:,:,:)))); %% HRIRs (SD) IR = FastConv_SD_IR; factorQ = int16(floor( double(31) - log( IR.latency_s ) / log( 2. ) )); latency_s_fx = int32(IR.latency_s .* (2.^double(factorQ))); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word16 FASTCONV_HRIR_latency_s_Q_fx = %d;\n', factorQ); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word32 FASTCONV_HRIR_latency_s_fx = %d;\n', latency_s_fx); writeData3L_fx_32(fid, 'const Word32 leftHRIRReal_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', real(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, 'const Word32 leftHRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', imag(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, 'const Word32 rightHRIRReal_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', real(squeeze(IR.IR(2,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, 'const Word32 rightHRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', imag(squeeze(IR.IR(2,:,:,:))), IR.factorQ); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid, 'const uint32_t FASTCONV_HRIR_latency_s = 0x%tx;\n', FastConv_SD_IR.latency_s); writeData3L(fid, 'const uint32_t leftHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', real(squeeze(FastConv_SD_IR.IR(1,:,:,:)))); writeData3L(fid, 'const uint32_t leftHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', imag(squeeze(FastConv_SD_IR.IR(1,:,:,:)))); Loading @@ -70,6 +126,20 @@ function write_fastconv_rom_table(output_file, FastConv_SHD_IR_FOA, FastConv_SHD writeData3L(fid, 'const uint32_t rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', imag(squeeze(FastConv_SD_IR.IR(2,:,:,:)))); %% BRIRs (SD) IR = FastConv_SD_BRIR; factorQ = int16(floor( double(31) - log( IR.rev_param.latency_s ) / log( 2. ) )); latency_s_fx = int32(IR.rev_param.latency_s .* (2.^double(factorQ))); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word16 FASTCONV_BRIR_latency_s_Q_fx = %d;\n', factorQ); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word32 FASTCONV_BRIR_latency_s_fx = %d;\n', latency_s_fx); writeData3L_fx_32(fid, 'const uint32_t leftBRIRReal_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]', real(squeeze(IR.IR(1,:,:,1:FastConv_SD_BRIR.rev_param.NFilter))), IR.factorQ); writeData3L_fx_32(fid, 'const uint32_t leftBRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]', imag(squeeze(IR.IR(1,:,:,1:FastConv_SD_BRIR.rev_param.NFilter))), IR.factorQ); writeData3L_fx_32(fid, 'const uint32_t rightBRIRReal_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]', real(squeeze(IR.IR(2,:,:,1:FastConv_SD_BRIR.rev_param.NFilter))), IR.factorQ); writeData3L_fx_32(fid, 'const uint32_t rightBRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]', imag(squeeze(IR.IR(2,:,:,1:FastConv_SD_BRIR.rev_param.NFilter))), IR.factorQ); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid, '/* Binaural rendering data set based on BRIRs \n'); fprintf(fid, ' * Tables derived from Mozart IIS BRIRs.*/\n'); fprintf(fid, 'const uint32_t FASTCONV_BRIR_latency_s = 0x%tx;\n', FastConv_SD_BRIR.rev_param.latency_s); Loading @@ -79,6 +149,20 @@ function write_fastconv_rom_table(output_file, FastConv_SHD_IR_FOA, FastConv_SHD writeData3L(fid, 'const uint32_t rightBRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]', imag(squeeze(FastConv_SD_BRIR.IR(2,:,:,1:FastConv_SD_BRIR.rev_param.NFilter)))); % RT60 rt60 = IR.rev_param.rt60 .* (2.^double(IR.factorQ_rt60)); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word16 fastconvReverberationTimes_Q_fx = %d;\n', IR.factorQ_rt60); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid,'const Word16 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX] = \n{'); fprintf(fid,'\n\t'); for bandIdx = 1:FastConv_SD_BRIR.rev_param.kAna fprintf(fid,'%d, ', int16(rt60(bandIdx))); end fprintf(fid,'\n};\n'); fprintf(fid,'\n\n'); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid,'const uint32_t fastconvReverberationTimes[CLDFB_NO_CHANNELS_MAX] = \n{'); fprintf(fid,'\n\t'); for bandIdx = 1:FastConv_SD_BRIR.rev_param.kAna Loading @@ -88,6 +172,20 @@ function write_fastconv_rom_table(output_file, FastConv_SHD_IR_FOA, FastConv_SHD fprintf(fid,'\n\n'); % energyReverb nrgLr = IR.rev_param.nrgLr .* (2.^double(IR.factorQ_nrgLr)); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word16 fastconvReverberationEneCorrections_Q_fx = %d;\n', IR.factorQ_rt60); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid,'const Word16 fastconvReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX] = \n{'); fprintf(fid,'\n\t'); for bandIdx = 1:FastConv_SD_BRIR.rev_param.kAna fprintf(fid,'%d, ', int16(nrgLr(bandIdx))); end fprintf(fid,'\n};\n'); fprintf(fid,'\n\n'); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid,'const uint32_t fastconvReverberationEneCorrections[CLDFB_NO_CHANNELS_MAX] = \n{'); fprintf(fid,'\n\t'); for bandIdx = 1:FastConv_SD_BRIR.rev_param.kAna Loading scripts/binauralRenderer_interface/generate_ivas_binauralizer_tables_from_sofa.m +0 −3 Original line number Diff line number Diff line Loading @@ -153,9 +153,6 @@ fp = fopen(rom_file,'at'); fprintf(fp,"\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n\n%s\n\n%s\n\n%s\n%s\n%s\n\n%s\n%s\n%s\n", ... '#include <stdint.h>', ... '#include "options.h"', ... '#ifdef DEBUGGING', ... '#include "debug.h"', ... '#endif', ... '#include "cnst.h"', ... '#include "ivas_cnst.h"', ... '#include "wmc_auto.h"', ... Loading Loading
lib_rend/ivas_rom_binauralRenderer.c +94329 −47060 File changed.Preview size limit exceeded, changes collapsed. Show changes
lib_rend/ivas_stat_rend.h +3 −3 Original line number Diff line number Diff line Loading @@ -729,11 +729,11 @@ typedef struct ivas_hrtfs_parambin_struct Word16 hrtfShCoeffsRe_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /*factor_Q_hrtfShCoeffs_fx*/ Word16 hrtfShCoeffsIm_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /*factor_Q_hrtfShCoeffs_fx*/ Word16 factor_Q_reverberationTimes_fx; Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_reverberationTimes_fx*/ Word16 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_reverberationTimes_fx*/ Word16 factor_Q_reverberationEneCorrections_fx; Word32 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_reverberationEneCorrections_fx*/ Word16 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_reverberationEneCorrections_fx*/ Word16 factor_Q_EarlyPartEneCorrection_fx; Word32 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_EarlyPartEneCorrection_fx*/ Word16 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; /*factor_Q_EarlyPartEneCorrection_fx*/ #endif // IVAS_FLOAT_FIXED float parametricReverberationTimes[CLDFB_NO_CHANNELS_MAX]; Loading
scripts/binauralRenderer_interface/Table_Format_Converter/.vscode/settings.jsondeleted 100755 → 0 +0 −17 Original line number Diff line number Diff line { "cmake.configureArgs": [ "-DCOPY_EXECUTABLES_FROM_BUILD_DIR=TRUE", "-DVCPKG_TARGET_TRIPLET=-static" ], "vcpkg.general.enable": true, "vcpkg.target.hostTriplet": "x64-windows", "vcpkg.target.defaultTriplet": "-static", "vcpkg.target.useStaticLib": true, "cmake.configureSettings": { "CMAKE_TOOLCHAIN_FILE": "D:/DEV/vcpkg/scripts/buildsystems/vcpkg.cmake" }, "vcpkg.target.installDependencies": true, "vcpkg.target.preferSystemLibs": false, "vcpkg.target.useManifest": false, "cmake.generator": "Ninja" } No newline at end of file
scripts/binauralRenderer_interface/fastconv/write_fastconv_rom_table.m +98 −0 Original line number Diff line number Diff line Loading @@ -44,18 +44,60 @@ function write_fastconv_rom_table(output_file, FastConv_SHD_IR_FOA, FastConv_SHD %% HRIRs (SHD) % HOA3 IR = FastConv_SHD_IR_HOA3; factorQ = int16(floor( double(31) - log( IR.latency_s ) / log( 2. ) )); latency_s_fx = int32(IR.latency_s .* (2.^double(factorQ))); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word16 FASTCONV_' FastConv_SHD_IR_HOA3.order '_latency_s_Q_fx = %d;\n'], factorQ); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word32 FASTCONV_' FastConv_SHD_IR_HOA3.order '_latency_s_fx = %d;\n'], latency_s_fx); writeData3L_fx_32(fid, ['const Word32 leftHRIRReal_' FastConv_SHD_IR_HOA3.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 leftHRIRImag_' FastConv_SHD_IR_HOA3.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRReal_' FastConv_SHD_IR_HOA3.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(2,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRImag_' FastConv_SHD_IR_HOA3.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(2,:,:,:))), IR.factorQ); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n\n'); fprintf(fid, ['const uint32_t FASTCONV_' FastConv_SHD_IR_HOA3.order '_latency_s = 0x%tx;\n'], FastConv_SHD_IR_HOA3.latency_s); writeData3L(fid, ['const uint32_t leftHRIRReal_' FastConv_SHD_IR_HOA3.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(FastConv_SHD_IR_HOA3.IR(1,:,:,:)))); writeData3L(fid, ['const uint32_t leftHRIRImag_' FastConv_SHD_IR_HOA3.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_HOA3.IR(1,:,:,:)))); writeData3L(fid, ['const uint32_t rightHRIRReal_' FastConv_SHD_IR_HOA3.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(FastConv_SHD_IR_HOA3.IR(2,:,:,:)))); writeData3L(fid, ['const uint32_t rightHRIRImag_' FastConv_SHD_IR_HOA3.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA3.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_HOA3.IR(2,:,:,:)))); % HOA2 IR = FastConv_SHD_IR_HOA2; factorQ = int16(floor( double(31) - log( IR.latency_s ) / log( 2. ) )); latency_s_fx = int32(IR.latency_s .* (2.^double(factorQ))); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word16 FASTCONV_' FastConv_SHD_IR_HOA2.order '_latency_s_Q_fx = %d;\n'], factorQ); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word32 FASTCONV_' FastConv_SHD_IR_HOA2.order '_latency_s_fx = %d;\n'], latency_s_fx); writeData3L_fx_32(fid, ['const Word32 leftHRIRReal_' FastConv_SHD_IR_HOA2.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 leftHRIRImag_' FastConv_SHD_IR_HOA2.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRReal_' FastConv_SHD_IR_HOA2.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(2,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRImag_' FastConv_SHD_IR_HOA2.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(2,:,:,:))), IR.factorQ); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid, ['const uint32_t FASTCONV_' FastConv_SHD_IR_HOA2.order '_latency_s = 0x%tx;\n'], FastConv_SHD_IR_HOA2.latency_s); writeData3L(fid, ['const uint32_t leftHRIRReal_' FastConv_SHD_IR_HOA2.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(FastConv_SHD_IR_HOA2.IR(1,:,:,:)))); writeData3L(fid, ['const uint32_t leftHRIRImag_' FastConv_SHD_IR_HOA2.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_HOA2.IR(1,:,:,:)))); writeData3L(fid, ['const uint32_t rightHRIRReal_' FastConv_SHD_IR_HOA2.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(FastConv_SHD_IR_HOA2.IR(2,:,:,:)))); writeData3L(fid, ['const uint32_t rightHRIRImag_' FastConv_SHD_IR_HOA2.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_HOA2.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_HOA2.IR(2,:,:,:)))); % FOA IR = FastConv_SHD_IR_FOA; factorQ = int16(floor( double(31) - log( IR.latency_s ) / log( 2. ) )); latency_s_fx = int32(IR.latency_s .* (2.^double(factorQ))); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word16 FASTCONV_' FastConv_SHD_IR_FOA.order '_latency_s_Q_fx = %d;\n'], factorQ); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, ['const Word32 FASTCONV_' FastConv_SHD_IR_FOA.order '_latency_s_fx = %d;\n'], latency_s_fx); writeData3L_fx_32(fid, ['const Word32 leftHRIRReal_' FastConv_SHD_IR_FOA.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 leftHRIRImag_' FastConv_SHD_IR_FOA.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRReal_' FastConv_SHD_IR_FOA.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(IR.IR(2,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, ['const Word32 rightHRIRImag_' FastConv_SHD_IR_FOA.order '_fx[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(IR.IR(2,:,:,:))), IR.factorQ); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid, ['const uint32_t FASTCONV_' FastConv_SHD_IR_FOA.order '_latency_s = 0x%tx;\n'], FastConv_SHD_IR_FOA.latency_s); writeData3L(fid, ['const uint32_t leftHRIRReal_' FastConv_SHD_IR_FOA.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], real(squeeze(FastConv_SHD_IR_FOA.IR(1,:,:,:)))); writeData3L(fid, ['const uint32_t leftHRIRImag_' FastConv_SHD_IR_FOA.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_FOA.IR(1,:,:,:)))); Loading @@ -63,6 +105,20 @@ function write_fastconv_rom_table(output_file, FastConv_SHD_IR_FOA, FastConv_SHD writeData3L(fid, ['const uint32_t rightHRIRImag_' FastConv_SHD_IR_FOA.order '[BINAURAL_CONVBANDS][' FastConv_SHD_IR_FOA.order '_CHANNELS][BINAURAL_NTAPS_SBA]'], imag(squeeze(FastConv_SHD_IR_FOA.IR(2,:,:,:)))); %% HRIRs (SD) IR = FastConv_SD_IR; factorQ = int16(floor( double(31) - log( IR.latency_s ) / log( 2. ) )); latency_s_fx = int32(IR.latency_s .* (2.^double(factorQ))); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word16 FASTCONV_HRIR_latency_s_Q_fx = %d;\n', factorQ); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word32 FASTCONV_HRIR_latency_s_fx = %d;\n', latency_s_fx); writeData3L_fx_32(fid, 'const Word32 leftHRIRReal_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', real(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, 'const Word32 leftHRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', imag(squeeze(IR.IR(1,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, 'const Word32 rightHRIRReal_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', real(squeeze(IR.IR(2,:,:,:))), IR.factorQ); writeData3L_fx_32(fid, 'const Word32 rightHRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', imag(squeeze(IR.IR(2,:,:,:))), IR.factorQ); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid, 'const uint32_t FASTCONV_HRIR_latency_s = 0x%tx;\n', FastConv_SD_IR.latency_s); writeData3L(fid, 'const uint32_t leftHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', real(squeeze(FastConv_SD_IR.IR(1,:,:,:)))); writeData3L(fid, 'const uint32_t leftHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', imag(squeeze(FastConv_SD_IR.IR(1,:,:,:)))); Loading @@ -70,6 +126,20 @@ function write_fastconv_rom_table(output_file, FastConv_SHD_IR_FOA, FastConv_SHD writeData3L(fid, 'const uint32_t rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]', imag(squeeze(FastConv_SD_IR.IR(2,:,:,:)))); %% BRIRs (SD) IR = FastConv_SD_BRIR; factorQ = int16(floor( double(31) - log( IR.rev_param.latency_s ) / log( 2. ) )); latency_s_fx = int32(IR.rev_param.latency_s .* (2.^double(factorQ))); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word16 FASTCONV_BRIR_latency_s_Q_fx = %d;\n', factorQ); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word32 FASTCONV_BRIR_latency_s_fx = %d;\n', latency_s_fx); writeData3L_fx_32(fid, 'const uint32_t leftBRIRReal_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]', real(squeeze(IR.IR(1,:,:,1:FastConv_SD_BRIR.rev_param.NFilter))), IR.factorQ); writeData3L_fx_32(fid, 'const uint32_t leftBRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]', imag(squeeze(IR.IR(1,:,:,1:FastConv_SD_BRIR.rev_param.NFilter))), IR.factorQ); writeData3L_fx_32(fid, 'const uint32_t rightBRIRReal_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]', real(squeeze(IR.IR(2,:,:,1:FastConv_SD_BRIR.rev_param.NFilter))), IR.factorQ); writeData3L_fx_32(fid, 'const uint32_t rightBRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]', imag(squeeze(IR.IR(2,:,:,1:FastConv_SD_BRIR.rev_param.NFilter))), IR.factorQ); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid, '/* Binaural rendering data set based on BRIRs \n'); fprintf(fid, ' * Tables derived from Mozart IIS BRIRs.*/\n'); fprintf(fid, 'const uint32_t FASTCONV_BRIR_latency_s = 0x%tx;\n', FastConv_SD_BRIR.rev_param.latency_s); Loading @@ -79,6 +149,20 @@ function write_fastconv_rom_table(output_file, FastConv_SHD_IR_FOA, FastConv_SHD writeData3L(fid, 'const uint32_t rightBRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]', imag(squeeze(FastConv_SD_BRIR.IR(2,:,:,1:FastConv_SD_BRIR.rev_param.NFilter)))); % RT60 rt60 = IR.rev_param.rt60 .* (2.^double(IR.factorQ_rt60)); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word16 fastconvReverberationTimes_Q_fx = %d;\n', IR.factorQ_rt60); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid,'const Word16 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX] = \n{'); fprintf(fid,'\n\t'); for bandIdx = 1:FastConv_SD_BRIR.rev_param.kAna fprintf(fid,'%d, ', int16(rt60(bandIdx))); end fprintf(fid,'\n};\n'); fprintf(fid,'\n\n'); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid,'const uint32_t fastconvReverberationTimes[CLDFB_NO_CHANNELS_MAX] = \n{'); fprintf(fid,'\n\t'); for bandIdx = 1:FastConv_SD_BRIR.rev_param.kAna Loading @@ -88,6 +172,20 @@ function write_fastconv_rom_table(output_file, FastConv_SHD_IR_FOA, FastConv_SHD fprintf(fid,'\n\n'); % energyReverb nrgLr = IR.rev_param.nrgLr .* (2.^double(IR.factorQ_nrgLr)); fprintf(fid, '#ifdef IVAS_FLOAT_FIXED\n'); fprintf(fid, '#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid, 'const Word16 fastconvReverberationEneCorrections_Q_fx = %d;\n', IR.factorQ_rt60); fprintf(fid, '#endif // FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT\n'); fprintf(fid,'const Word16 fastconvReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX] = \n{'); fprintf(fid,'\n\t'); for bandIdx = 1:FastConv_SD_BRIR.rev_param.kAna fprintf(fid,'%d, ', int16(nrgLr(bandIdx))); end fprintf(fid,'\n};\n'); fprintf(fid,'\n\n'); fprintf(fid, '#endif // IVAS_FLOAT_FIXED\n'); fprintf(fid,'const uint32_t fastconvReverberationEneCorrections[CLDFB_NO_CHANNELS_MAX] = \n{'); fprintf(fid,'\n\t'); for bandIdx = 1:FastConv_SD_BRIR.rev_param.kAna Loading
scripts/binauralRenderer_interface/generate_ivas_binauralizer_tables_from_sofa.m +0 −3 Original line number Diff line number Diff line Loading @@ -153,9 +153,6 @@ fp = fopen(rom_file,'at'); fprintf(fp,"\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n\n%s\n\n%s\n\n%s\n%s\n%s\n\n%s\n%s\n%s\n", ... '#include <stdint.h>', ... '#include "options.h"', ... '#ifdef DEBUGGING', ... '#include "debug.h"', ... '#endif', ... '#include "cnst.h"', ... '#include "ivas_cnst.h"', ... '#include "wmc_auto.h"', ... Loading