Skip to content
......@@ -70,15 +70,15 @@
#endif
#endif
typedef struct __tinyWaveOutHeader
typedef struct tinyWaveOutHeader
{
uint32_t riffType; /* 'RIFF' */
uint32_t riffSize; /* file size */
uint32_t waveType; /* 'WAVE' */
} __tinyWaveOutHeader;
} tinyWaveOutHeader;
typedef struct __tinyWaveOutFmtChunk
typedef struct tinyWaveOutFmtChunk
{
uint32_t formatType;
uint32_t formatSize;
......@@ -91,16 +91,15 @@ typedef struct __tinyWaveOutFmtChunk
uint16_t bitsPerSample;
/* wav fmt ext hdr here */
} __tinyWaveOutFmtChunk;
} tinyWaveOutFmtChunk;
typedef struct __tinyWaveOutDataChunk
typedef struct tinyWaveOutDataChunk
{
uint32_t dataType;
uint32_t dataSize;
} tinyWaveOutDataChunk;
} __tinyWaveOutDataChunk;
typedef struct __tinyWaveOutHandle
typedef struct tinyWaveOutHandle
{
FILE *theFile;
uint32_t dataSize;
......@@ -109,7 +108,7 @@ typedef struct __tinyWaveOutHandle
uint32_t dataChunkOffset;
uint32_t bps;
uint32_t clipCount;
} __tinyWaveOutHandle, WAVEFILEOUT;
} tinyWaveOutHandle, WAVEFILEOUT;
/*--- local protos --------------------------------------------------*/
static __inline uint32_t BigEndian32( char, char, char, char );
......@@ -132,9 +131,9 @@ static WAVEFILEOUT *CreateBWF(
/* ,const uint32_t writeWaveExt */ )
{
WAVEFILEOUT *self;
__tinyWaveOutHeader whdr;
__tinyWaveOutFmtChunk wfch;
__tinyWaveOutDataChunk wdch;
tinyWaveOutHeader whdr;
tinyWaveOutFmtChunk wfch;
tinyWaveOutDataChunk wdch;
uint32_t blockAlignment = 0;
uint32_t ByteCnt = 0; /* Byte counter for fwrite */
......
......@@ -73,9 +73,9 @@ TsmScaleFileReader *TsmScaleFileReader_open(
return NULL;
}
self = calloc( sizeof( TsmScaleFileReader ), 1 );
self = calloc( 1, sizeof( TsmScaleFileReader ) );
self->file = file;
self->file_path = calloc( sizeof( char ), strlen( filePath ) + 1 );
self->file_path = calloc( strlen( filePath ) + 1, sizeof( char ) );
strcpy( self->file_path, filePath );
return self;
......
......@@ -68,9 +68,9 @@ ivas_error Vector3PairFileReader_open(
return IVAS_ERR_FAILED_FILE_OPEN;
}
self = calloc( sizeof( Vector3PairFileReader ), 1 );
self = calloc( 1, sizeof( Vector3PairFileReader ) );
self->trajFile = trajFile;
self->file_path = calloc( sizeof( char ), strlen( trajFilePath ) + 1 );
self->file_path = calloc( strlen( trajFilePath ) + 1, sizeof( char ) );
strcpy( self->file_path, trajFilePath );
*vector3PairReader = self;
......
......@@ -278,7 +278,8 @@ Options:
The decoder may read rtpdump files containing TS26.445 Annex A.2.2
EVS RTP Payload Format. The SDP parameter hf_only is required.
Reading RFC4867 AMR/AMR-WB RTP payload format is not supported.
-Tracefile TF : VoIP mode: Generate trace file named TF
-Tracefile TF : VoIP mode: Generate trace file named TF. Requires -no_delay_cmp to
be enabled so that trace contents remain in sync with audio output.
-fec_cfg_file : Optimal channel aware configuration computed by the JBM
as described in Section 6.3.1 of TS26.448. The output is
written into a .txt file. Each line contains the FER indicator
......@@ -323,7 +324,9 @@ Options:
--------
-i File : Input audio File (WAV, raw PCM or scene description file)
-if Format : Audio Format of input file (e.g. 5_1 or HOA3 or META, use -l for a list)
-im Files : Metadata files for ISM (one file per object) or MASA inputs
META is related to the Scene description file, see scripts/testv/renderer_config_format_readme.txt
-im Files : Metadata files for ISM/MASA/OMASA/OSBA/BINAURAL_SPLIT_PCM (one file per object).
For OMASA input, ISM files must be specified first.
-o File : Output audio File
-of Format : Audio Format of output file
Alternatively, it can be a custom loudspeaker layout File
......@@ -339,9 +342,9 @@ Options:
left or l or 90->left, right or r or -90->right, center or c or 0 ->middle
-exof File : External orientation trajectory File for simulation of external orientations
-dpid ID : Directivity pattern ID(s) (space-separated list of up to 4 numbers can be
specified) for binaural output configuration
specified) for binaural outputs
-aeid ID | File : Acoustic environment ID (number > 0)
alternatively, it can be a text file where each line contains "ID duration" for BINAURAL_ROOM_REVERB output configuration.
alternatively, it can be a text file where each line contains "ID duration" for BINAURAL_ROOM_REVERB output.
-lp Position : Output LFE position. Comma-delimited triplet of [gain, azimuth, elevation] where gain is linear
(like --gain, -g) and azimuth, elevation are in degrees.
If specified, overrides the default behavior which attempts to map input to output LFE channel(s)
......@@ -352,7 +355,8 @@ Options:
-g : Input gain (linear, not in dB) to be applied to input audio file
-l : List supported audio formats
-smd : Metadata Synchronization Delay in ms, Default is 0. Quantized by 5ms subframes.
-om File : Coded metadata File for BINAURAL_SPLIT_PCM output format
-om File : Coded metadata File (only for BINAURAL_SPLIT_PCM output)
-prbfi File : BFI File (only for BINAURAL_SPLIT_PCM output)
-level level : Complexity level, level = (1, 2, 3), will be defined after characterisation.
Currently, all values default to level 3 (full functionality).
-q : Quiet mode, limit printouts to terminal, default is deactivated
......@@ -568,6 +572,17 @@ columns are the Euler angles yaw, pitch, and roll. The rotations are applied in
The yaw angle rotates around the z axis, the pitch angle rotates aroud the new y axis, and the roll angle
rotates around the new x axis.
In case of 6 DoF support for rendering, the head rotation trajectory file may also include a listener
position in absolute Cartesian coordinates on the x-, y- and z-axis. Note that the listener position is
expressed in absolute coordinates, while the listener orientation is expressed as scene displacement.
An example line from a headtracking file of a listener facing forward, positioned at x=3.0, y=4.0 and z=0,
could be:
-3.0,0.0,0.0,0.0,3.0,4.0,0.0
Note that the listener position applies for listener orientation expressed both in Quaternions and Euler angles.
For the Head rotation operation modes, external trajectory files are available:
headrot.csv
......
......@@ -9,6 +9,10 @@ basop_files = here.glob("lib_*/basop*.[ch]")
ignorefiles = sorted(set(non_ivas_files) - set(basop_files))
ignorefunctions = ["L_add_o", "L_add_co", "L_sub_o", "shl_o", "L_deposit_h"]
with open("ubsan_ignorelist.txt", "w") as f:
for cfile in ignorefiles:
print(f"src:{cfile}", file=f)
for fun in ignorefunctions:
print(f"fun:*{fun}*", file=f)
clear -regexp ^((?!writeRomFileOutput|writeBinaryOutput|generateBinaryFile|generateCustomBinaryFile|writeEachRendererBinaryOutput|rom_file|bin_file|hrir_file|brir_file|ivas_path|binary_path|output_bin_name|param_bin_file|fastconv_bin_file|td_binary_file|binary_name|rom_path).)*$
clear -regexp ^((?!writeRomFileOutput|writeBinaryOutput|writeRomFileFx|makeFxFltBEgenerateBinaryFile|generateBinaryFile|generateCustomBinaryFile|writeEachRendererBinaryOutput|rom_file|bin_file|hrir_file|brir_file|ivas_path|binary_path|output_bin_name|param_bin_file|fastconv_bin_file|td_binary_file|binary_name|rom_path).)*$
......@@ -90,6 +90,8 @@
#define DEFAULT_BINARY_FILE_PATH "./bin"
#endif
#define MAX_CICP_CHANNELS 16
/* ------------------------------------------------------------------------------------------
* Struct
*------------------------------------------------------------------------------------------ */
......@@ -129,8 +131,12 @@ void get_ls_layout_config( AUDIO_CONFIG ls_layout_config, struct ivas_layout_con
int generate_crend_ivas_tables_from_sofa( const char *sofa_file_path, ConfigReader *cfgReader );
void update_h_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int32_t samplerate, const int16_t frame_len );
void update_c_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int32_t samplerate, const int16_t frame_len, int16_t factorQ[3] );
void update_c_file_with_reverb( float *pEner_l, float *pEner_r, float *pCoherence, int16_t *pEner_l_fx, int16_t *pEner_r_fx, int16_t *pCoherence_fx, int16_t factorQ, const int32_t samplerate, const int16_t len );
void update_c_file_with_reverb( float *pEner_l, float *pEner_r, float *pCoherence, const int32_t samplerate, const int16_t len );
void update_h_file_with_reverb( const int32_t samplerate );
void update_h_file_fx( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int32_t samplerate, const int16_t frame_len );
void update_c_file_fx( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int32_t samplerate, const int16_t frame_len, int16_t factorQ[3] );
void update_c_file_with_reverb_fx( int16_t *pEner_l_fx, int16_t *pEner_r_fx, int16_t *pCoherence_fx, int16_t factorQ, const int32_t samplerate, const int16_t len );
void update_h_file_with_reverb_fx( const int32_t samplerate );
int generate_reverb_ivas_tables_from_sofa( const char *file_path );
extern int32_t float2int32_t( float, int16_t );
......@@ -228,6 +234,8 @@ void usage_gen_crend_tables( void )
int32_t frame = 0; /* Counter of frames */
char *c_file_path = NULL;
char *h_file_path = NULL;
char *c_file_path_fx = NULL;
char *h_file_path_fx = NULL;
char *rom_file_name = NULL;
uint16_t frame_len_ms = 5;
int32_t sample_rates[3] = { DEFAULT_SAMPLERATE, 32000, LAST_SAMPLERATE }; /* Hz */ /* 8000 Hz not supported by mdft */
......@@ -449,6 +457,14 @@ int main( int argc, char *argv[] )
{
fprintf( stderr, "Memory issue for c file path\n\n" );
usage_gen_crend_tables();
if ( c_file_path )
free( c_file_path );
if ( h_file_path )
free( h_file_path );
if ( c_file_path_fx )
free( c_file_path_fx );
if ( h_file_path_fx )
free( h_file_path_fx );
if ( lib_rend_path )
free( lib_rend_path );
if ( binary_path )
......@@ -466,6 +482,12 @@ int main( int argc, char *argv[] )
usage_gen_crend_tables();
if ( c_file_path )
free( c_file_path );
if ( h_file_path )
free( h_file_path );
if ( c_file_path_fx )
free( c_file_path_fx );
if ( h_file_path_fx )
free( h_file_path_fx );
if ( lib_rend_path )
free( lib_rend_path );
if ( binary_path )
......@@ -504,6 +526,12 @@ int main( int argc, char *argv[] )
usage_gen_crend_tables();
if ( c_file_path )
free( c_file_path );
if ( h_file_path )
free( h_file_path );
if ( c_file_path_fx )
free( c_file_path_fx );
if ( h_file_path_fx )
free( h_file_path_fx );
if ( lib_rend_path )
free( lib_rend_path );
if ( binary_path )
......@@ -519,10 +547,148 @@ int main( int argc, char *argv[] )
{
fprintf( stderr, "Wrong lib_rend path: %s\n\n", lib_rend_path );
usage_gen_crend_tables();
if ( c_file_path )
free( c_file_path );
if ( h_file_path )
free( h_file_path );
if ( c_file_path_fx )
free( c_file_path_fx );
if ( h_file_path_fx )
free( h_file_path_fx );
if ( lib_rend_path )
free( lib_rend_path );
if ( binary_path )
free( binary_path );
if ( binary_common_file_name )
free( binary_common_file_name );
if ( sofa_file_path_for_reverb )
free( sofa_file_path_for_reverb );
return -1;
}
fclose( fp );
c_file_path_fx = (char *) malloc( sizeof( char ) * ( strlen( lib_rend_path ) + strlen( ROM_FILE_NAME ) + 2 + 1 + 3 + notEndingWithFileSeparator ) );
if ( c_file_path_fx )
{
if ( notEndingWithFileSeparator )
{
#ifdef WIN32
sprintf( c_file_path_fx, "%s\\%s_fx.c", lib_rend_path, ROM_FILE_NAME );
#else
sprintf( c_file_path_fx, "%s/%s_fx.c", lib_rend_path, ROM_FILE_NAME );
#endif
}
else
{
#ifdef WIN32
sprintf( c_file_path_fx, "%s%s_fx.c", lib_rend_path, ROM_FILE_NAME );
#else
sprintf( c_file_path_fx, "%s%s_fx.c", lib_rend_path, ROM_FILE_NAME );
#endif
}
}
else
{
fprintf( stderr, "Memory issue for c file path\n\n" );
usage_gen_crend_tables();
if ( c_file_path )
free( c_file_path );
if ( h_file_path )
free( h_file_path );
if ( c_file_path_fx )
free( c_file_path_fx );
if ( h_file_path_fx )
free( h_file_path_fx );
if ( lib_rend_path )
free( lib_rend_path );
if ( binary_path )
free( binary_path );
if ( binary_common_file_name )
free( binary_common_file_name );
if ( sofa_file_path_for_reverb )
free( sofa_file_path_for_reverb );
return -1;
}
fp = fopen( c_file_path_fx, "w" );
if ( fp == NULL )
{
fprintf( stderr, "Wrong lib_rend path: %s\n\n", lib_rend_path );
usage_gen_crend_tables();
if ( c_file_path )
free( c_file_path );
if ( h_file_path )
free( h_file_path );
if ( c_file_path_fx )
free( c_file_path_fx );
if ( h_file_path_fx )
free( h_file_path_fx );
if ( lib_rend_path )
free( lib_rend_path );
if ( binary_path )
free( binary_path );
if ( binary_common_file_name )
free( binary_common_file_name );
if ( sofa_file_path_for_reverb )
free( sofa_file_path_for_reverb );
return -1;
}
fclose( fp );
h_file_path_fx = (char *) malloc( sizeof( char ) * ( strlen( lib_rend_path ) + strlen( ROM_FILE_NAME ) + 2 + 1 + 3 + notEndingWithFileSeparator ) );
if ( h_file_path_fx )
{
if ( notEndingWithFileSeparator )
{
#ifdef WIN32
sprintf( h_file_path_fx, "%s\\%s_fx.h", lib_rend_path, ROM_FILE_NAME );
#else
sprintf( h_file_path_fx, "%s/%s_fx.h", lib_rend_path, ROM_FILE_NAME );
#endif
}
else
{
#ifdef WIN32
sprintf( h_file_path_fx, "%s%s_fx.h", lib_rend_path, ROM_FILE_NAME );
#else
sprintf( h_file_path_fx, "%s%s_fx.h", lib_rend_path, ROM_FILE_NAME );
#endif
}
}
else
{
fprintf( stderr, "Memory issue: for header file path\n\n" );
usage_gen_crend_tables();
if ( c_file_path )
free( c_file_path );
if ( h_file_path )
free( h_file_path );
if ( c_file_path_fx )
free( c_file_path_fx );
if ( h_file_path_fx )
free( h_file_path_fx );
if ( lib_rend_path )
free( lib_rend_path );
if ( binary_path )
free( binary_path );
if ( binary_common_file_name )
free( binary_common_file_name );
if ( sofa_file_path_for_reverb )
free( sofa_file_path_for_reverb );
return -1;
}
fp = fopen( h_file_path_fx, "w" );
if ( fp == NULL )
{
fprintf( stderr, "Wrong lib_rend path: %s\n\n", lib_rend_path );
usage_gen_crend_tables();
if ( c_file_path )
free( c_file_path );
if ( h_file_path )
free( h_file_path );
if ( c_file_path_fx )
free( c_file_path_fx );
if ( h_file_path_fx )
free( h_file_path_fx );
if ( lib_rend_path )
free( lib_rend_path );
if ( binary_path )
......@@ -536,6 +702,7 @@ int main( int argc, char *argv[] )
fclose( fp );
}
if ( binary_path != NULL && binary_common_file_name != NULL )
{
if ( binary_file_path != NULL )
......@@ -568,10 +735,14 @@ int main( int argc, char *argv[] )
{
fprintf( stderr, "Memory issue for binary file path\n\n" );
usage_gen_crend_tables();
if ( h_file_path )
free( h_file_path );
if ( c_file_path )
free( c_file_path );
if ( h_file_path )
free( h_file_path );
if ( c_file_path_fx )
free( c_file_path_fx );
if ( h_file_path_fx )
free( h_file_path_fx );
if ( lib_rend_path )
free( lib_rend_path );
if ( binary_path )
......@@ -665,6 +836,68 @@ int main( int argc, char *argv[] )
}
}
if ( ( h_file_path_fx != NULL ) && ( c_file_path_fx != NULL ) )
{
FILE *fpt = fopen( TEMPLTATE_C_ROM_FILE_NAME, "rb" );
if ( fpt )
{
fseek( fpt, 0, SEEK_END );
size_t fsize = ftell( fpt );
fseek( fpt, 0, SEEK_SET );
char *tmpc = (char *) malloc( fsize + 1 );
size_t ret = fread( tmpc, fsize, 1, fpt );
tmpc[fsize] = '\0';
if ( ret * fsize == fsize )
{
fp = fopen( c_file_path_fx, "wb" );
if ( fp )
{
fwrite( tmpc, fsize, 1, fp );
fclose( fp );
}
fp = fopen( h_file_path_fx, "wb" );
if ( fp )
{
fwrite( tmpc, fsize, 1, fp );
fclose( fp );
}
}
fclose( fpt );
}
fp = fopen( h_file_path_fx, "a" );
if ( fp )
{
fprintf( fp, "\n/* clang-format off */\n" );
fprintf( fp, "\n/*-------------------------------------------------------------------------" );
fprintf( fp, "\n* Binaural rendering related ROM tables" );
fprintf( fp, "\n*------------------------------------------------------------------------*/\n" );
fprintf( fp, "\n/* Binaural rendering data set based on HRIRs */" );
fprintf( fp, "\n/* Tables generated by scripts/binauralRenderer_interface/generate_cren_ivas_tables.c, see mixer_conv_sofa_to_rom_table_converter_readme.txt */" );
fprintf( fp, "\n/* Can be replaced by your own generated HRIR or BRIR tables */\n\n\n" );
fprintf( fp, "\n#ifndef _%s_FX_\n", to_upper( rom_file_name ) );
fprintf( fp, "#define _%s_FX_\n", to_upper( rom_file_name ) );
fprintf( fp, "\n#include \"ivas_cnst.h\"\n\n" );
fclose( fp );
}
fp = fopen( c_file_path_fx, "a" );
if ( fp )
{
fprintf( fp, "\n/* clang-format off */\n" );
fprintf( fp, "\n/*-------------------------------------------------------------------------" );
fprintf( fp, "\n* Binaural rendering related ROM tables" );
fprintf( fp, "\n*------------------------------------------------------------------------*/\n" );
fprintf( fp, "\n/* Binaural rendering data set based on HRIRs */" );
fprintf( fp, "\n/* Tables generated by scripts/binauralRenderer_interface/generate_cren_ivas_tables.c, see mixer_conv_sofa_to_rom_table_converter_readme.txt */" );
fprintf( fp, "\n/* Can be replaced by your own generated HRIR or BRIR tables */\n\n\n" );
fprintf( fp, "\n#include <stddef.h>\n#include \"ivas_cnst.h\"\n\n/* clang-format off */\n\n#define WMC_TOOL_SKIP\n\n" );
fclose( fp );
}
}
char current_path[MAX_PATH];
char ivas_path[MAX_PATH];
......@@ -739,6 +972,66 @@ int main( int argc, char *argv[] )
}
#endif
if ( ( h_file_path_fx != NULL ) && ( c_file_path_fx != NULL ) )
{
if ( add_define )
{
fp = fopen( c_file_path_fx, "a" );
if ( fp )
{
sofa_name = strrchr( argv[i], '/' );
size_t size_path = strlen( sofa_name );
sofa_name = malloc( sizeof( char ) * size_path - 5 );
strncpy( sofa_name, strrchr( argv[i], '/' ) + 1, size_path - 5 );
sofa_name[size_path - 6] = '\0';
fprintf( fp, "\n#ifdef USE_%s\n", to_upper( sofa_name ) );
fclose( fp );
}
fp = fopen( h_file_path_fx, "a" );
if ( fp )
{
fprintf( fp, "\n#ifdef USE_%s\n", to_upper( sofa_name ) );
fclose( fp );
}
}
}
#ifdef USE_MATLAB_ENG
Engine *ep = NULL;
char *tmpChar = strstr( argv[i], ".sofa" );
if ( tmpChar != NULL )
{
if ( !( ep = engOpen( NULL ) ) )
{
printf( "Error starting matlab engine\n" );
return -1;
}
const char addPathCmdStr[] = "addpath(['.' filesep() 'matlab_hrir_generation_scripts']);";
const char startCmdStr[] = "SOFA_save_to_mat('";
const char endCmdStr[] = "');";
char *cdCmd;
char *cmdStr;
int ret;
cdCmd = (char *) malloc( strlen( current_path ) + 4 );
sprintf( cdCmd, "cd %s", current_path );
cmdStr = (char *) malloc( strlen( startCmdStr ) + strlen( argv[i] ) + strlen( endCmdStr ) + 1 );
sprintf( cmdStr, "%s%s%s", startCmdStr, argv[i], endCmdStr );
ret = engEvalString( ep, cdCmd );
ret = engEvalString( ep, addPathCmdStr );
ret = engEvalString( ep, cmdStr );
strcpy( tmpChar, ".mat" );
tmpChar[4] = '\0';
free( cdCmd );
free( cmdStr );
engClose( ep );
}
#endif
convert_backslash( argv[i] );
err = generate_crend_ivas_tables_from_sofa( argv[i], &cfgBrirOptim );
......@@ -778,35 +1071,89 @@ int main( int argc, char *argv[] )
}
}
}
}
if ( ( h_file_path_fx != NULL ) && ( c_file_path_fx != NULL ) )
{
if ( sofa_file_path_for_reverb != NULL )
fp = fopen( c_file_path_fx, "a" );
if ( fp )
{
err = generate_reverb_ivas_tables_from_sofa( sofa_file_path_for_reverb );
fprintf( fp, "\n\n" );
fclose( fp );
}
fp = fopen( h_file_path_fx, "a" );
if ( fp )
{
fprintf( fp, "\n\n" );
fclose( fp );
}
if ( err != 0 )
return err;
}
if ( ( h_file_path != NULL ) && ( c_file_path != NULL ) )
if ( add_define )
{
fp = fopen( h_file_path, "a" );
fp = fopen( c_file_path_fx, "a" );
if ( fp )
{
fprintf( fp, "\n\n#endif /* _%s_ */\n", to_upper( rom_file_name ) );
fprintf( fp, "\n#endif /* USE_%s */\n ", to_upper( sofa_name ) );
fclose( fp );
}
fp = fopen( c_file_path, "a" );
fp = fopen( h_file_path_fx, "a" );
if ( fp )
{
fprintf( fp, "\n\n#undef WMC_TOOL_SKIP\n\n" );
fprintf( fp, "\n#endif /* USE_%s */\n", to_upper( sofa_name ) );
fclose( fp );
}
}
if ( c_file_path )
free( c_file_path );
}
}
if ( sofa_file_path_for_reverb != NULL )
{
err = generate_reverb_ivas_tables_from_sofa( sofa_file_path_for_reverb );
if ( err != 0 )
return err;
}
if ( ( h_file_path != NULL ) && ( c_file_path != NULL ) )
{
fp = fopen( h_file_path, "a" );
if ( fp )
{
fprintf( fp, "\n\n#endif /* _%s_ */\n", to_upper( rom_file_name ) );
fclose( fp );
}
fp = fopen( c_file_path, "a" );
if ( fp )
{
fprintf( fp, "\n\n#undef WMC_TOOL_SKIP\n\n" );
fclose( fp );
}
}
if ( ( h_file_path_fx != NULL ) && ( c_file_path_fx != NULL ) )
{
fp = fopen( h_file_path_fx, "a" );
if ( fp )
{
fprintf( fp, "\n\n#endif /* _%s_ */\n", to_upper( rom_file_name ) );
fclose( fp );
}
fp = fopen( c_file_path_fx, "a" );
if ( fp )
{
fprintf( fp, "\n\n#undef WMC_TOOL_SKIP\n\n" );
fclose( fp );
}
}
if ( c_file_path )
free( c_file_path );
if ( h_file_path )
free( h_file_path );
if ( c_file_path_fx )
free( c_file_path_fx );
if ( h_file_path_fx )
free( h_file_path_fx );
if ( rom_file_name )
free( rom_file_name );
......@@ -1294,6 +1641,8 @@ int generate_crend_ivas_tables_from_sofa( const char *file_path, ConfigReader *c
{
update_h_file( &hrtf_data, lscfg, sample_rates[indSR], frame_len );
update_c_file( &hrtf_data, lscfg, sample_rates[indSR], frame_len, factorQ );
update_h_file_fx( &hrtf_data, lscfg, sample_rates[indSR], frame_len );
update_c_file_fx( &hrtf_data, lscfg, sample_rates[indSR], frame_len, factorQ );
}
if ( binary_file_path != NULL )
......@@ -1872,7 +2221,9 @@ int generate_reverb_ivas_tables_from_sofa( const char *file_path )
if ( lib_rend_path != NULL )
{
update_h_file_with_reverb( sample_rates[indSR] );
update_c_file_with_reverb( p_avg_lr, &p_avg_lr[nr_fc_fft_filter], pCoherence, p_avg_lr_fx, &p_avg_lr_fx[nr_fc_fft_filter], pCoherence_fx, factorQ, sample_rates[indSR], nr_fc_fft_filter );
update_c_file_with_reverb( p_avg_lr, &p_avg_lr[nr_fc_fft_filter], pCoherence, sample_rates[indSR], nr_fc_fft_filter );
update_h_file_with_reverb_fx( sample_rates[indSR] );
update_c_file_with_reverb_fx( p_avg_lr_fx, &p_avg_lr_fx[nr_fc_fft_filter], pCoherence_fx, factorQ, sample_rates[indSR], nr_fc_fft_filter );
}
if ( binary_file_path != NULL )
{
......@@ -1992,7 +2343,7 @@ void write_array_float_to_file( FILE *fp, float *vec, int32_t size_vec, int32_t
}
/*---------------------------------------------------------------------*
*write_array_float_to_file();
*write_array_uint16_to_file();
*---------------------------------------------------------------------*/
void write_array_uint16_to_file( FILE *fp, uint16_t *vec, int32_t size_vec, int32_t sample_per_ligne, const int num_tab, const char *tab )
{
......@@ -2100,7 +2451,7 @@ void write_array_int32_t_to_file( FILE *fp, int32_t *vec, int32_t size_vec, int3
}
/*---------------------------------------------------------------------*
*write_array_int32_t_to_file();
*write_array_int16_t_to_file();
*---------------------------------------------------------------------*/
void write_array_int16_t_to_file( FILE *fp, int16_t *vec, int32_t size_vec, int32_t sample_per_ligne, const int num_tab, const char *tab )
{
......@@ -2152,11 +2503,120 @@ void write_array_int16_t_to_file( FILE *fp, int16_t *vec, int32_t size_vec, int3
}
fprintf( fp, "}" );
}
/*---------------------------------------------------------------------*
*write_array_uint16_t_to_file();
*---------------------------------------------------------------------*/
void write_array_uint16_t_to_file( FILE *fp, uint16_t *vec, int32_t size_vec, int32_t sample_per_ligne, const int num_tab, const char *tab )
{
int32_t k, l, num_iter, remaining_samples;
int16_t i;
num_iter = size_vec / sample_per_ligne;
remaining_samples = size_vec % sample_per_ligne;
if ( remaining_samples == 0 )
{
num_iter--;
remaining_samples = sample_per_ligne;
}
for ( i = 0; i < num_tab; i++ )
{
fprintf( fp, "%s", tab );
}
fprintf( fp, "{" );
for ( k = 0; k < num_iter; k++ )
{
if ( k != 0 )
{
for ( i = 0; i < num_tab; i++ )
{
fprintf( fp, "%s", tab );
}
}
for ( l = 0; l < sample_per_ligne; l++ )
{
fprintf( fp, "%u", vec[k * sample_per_ligne + l] );
fprintf( fp, ", " );
}
fprintf( fp, "\n" );
}
for ( i = 0; i < num_tab; i++ )
{
fprintf( fp, "%s", tab );
}
for ( l = 0; l < remaining_samples - 1; l++ )
{
fprintf( fp, "%u", vec[k * sample_per_ligne + l] );
fprintf( fp, ", " );
}
fprintf( fp, "%u", vec[k * sample_per_ligne + l] );
for ( i = 0; i < num_tab; i++ )
{
fprintf( fp, "%s", tab );
}
fprintf( fp, "}" );
}
/*---------------------------------------------------------------------*
*write_array_float_to_int16_t_to_file();
*---------------------------------------------------------------------*/
void write_array_float_to_int16_t_to_file( FILE *fp, float *vec, int16_t factor_Q, int32_t size_vec, int32_t sample_per_ligne, const int num_tab, const char *tab )
{
int32_t k, l, num_iter, remaining_samples;
int16_t i;
num_iter = size_vec / sample_per_ligne;
remaining_samples = size_vec % sample_per_ligne;
if ( remaining_samples == 0 )
{
num_iter--;
remaining_samples = sample_per_ligne;
}
for ( i = 0; i < num_tab; i++ )
{
fprintf( fp, "%s", tab );
}
fprintf( fp, "{" );
for ( k = 0; k < num_iter; k++ )
{
if ( k != 0 )
{
for ( i = 0; i < num_tab; i++ )
{
fprintf( fp, "%s", tab );
}
}
for ( l = 0; l < sample_per_ligne; l++ )
{
fprintf( fp, "%d", float2int16_t( vec[k * sample_per_ligne + l], factor_Q ) );
fprintf( fp, ", " );
}
fprintf( fp, "\n" );
}
for ( i = 0; i < num_tab; i++ )
{
fprintf( fp, "%s", tab );
}
for ( l = 0; l < remaining_samples - 1; l++ )
{
fprintf( fp, "%d", float2int16_t( vec[k * sample_per_ligne + l], factor_Q ) );
fprintf( fp, ", " );
}
fprintf( fp, "%d", float2int16_t( vec[k * sample_per_ligne + l], factor_Q ) );
for ( i = 0; i < num_tab; i++ )
{
fprintf( fp, "%s", tab );
}
fprintf( fp, "}" );
}
/*---------------------------------------------------------------------*
*update_c_file_with_reverb();
*---------------------------------------------------------------------*/
void update_c_file_with_reverb( float *pEner_l, float *pEner_r, float *pCoherence, int16_t *pEner_l_fx, int16_t *pEner_r_fx, int16_t *pCoherence_fx, int16_t factorQ, const int32_t samplerate, const int16_t len )
void update_c_file_with_reverb( float *pEner_l, float *pEner_r, float *pCoherence, const int32_t samplerate, const int16_t len )
{
char len_str[26] = "LR_IAC_LENGTH_NR_FC";
if ( samplerate == 16000 )
......@@ -2183,42 +2643,340 @@ void update_c_file_with_reverb( float *pEner_l, float *pEner_r, float *pCoherenc
if ( samplerate == DEFAULT_SAMPLERATE )
{
fprintf( fp, "\n/********************** default HRIR reverb rom tables **********************/" );
fprintf( fp, "\n/********************** default HRIR reverb rom tables **********************/" );
}
fprintf( fp, "\n\n/* Sample Rate = %ld */\n", (long) samplerate );
/* float *defaultHRIR_right_avg_power_[LR_IAC_LENGTH_NR_FC];*/
fprintf( fp, "\nconst float defaultHRIR_coherence_%dkHz[%s] = \n", samplerate / 1000, len_str );
write_array_float_to_file( fp, pCoherence, len, NUM_SAMPLES_PER_LINES_REVERB, FORMAT_FLOAT_REVERB, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ";\n" );
/* float *defaultHRIR_left_avg_power_[LR_IAC_LENGTH_NR_FC];*/
fprintf( fp, "\nconst float defaultHRIR_left_avg_power_%dkHz[%s] = \n", samplerate / 1000, len_str );
write_array_float_to_file( fp, pEner_l, len, NUM_SAMPLES_PER_LINES_REVERB, FORMAT_FLOAT_REVERB, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ";\n" );
/* float *defaultHRIR_right_avg_power_[LR_IAC_LENGTH_NR_FC];*/
fprintf( fp, "\nconst float defaultHRIR_right_avg_power_%dkHz[%s] = \n", samplerate / 1000, len_str );
write_array_float_to_file( fp, pEner_r, len, NUM_SAMPLES_PER_LINES_REVERB, FORMAT_FLOAT_REVERB, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ";\n" );
if ( fp )
fclose( fp );
return;
}
/*---------------------------------------------------------------------*
*update_c_file_with_reverb_fx();
*---------------------------------------------------------------------*/
void update_c_file_with_reverb_fx( int16_t *pEner_l_fx, int16_t *pEner_r_fx, int16_t *pCoherence_fx, int16_t factorQ, const int32_t samplerate, const int16_t len )
{
char len_str[26] = "LR_IAC_LENGTH_NR_FC";
if ( samplerate == 16000 )
{
strcpy( len_str, "LR_IAC_LENGTH_NR_FC_16KHZ" );
}
if ( c_file_path_fx == NULL )
return;
if ( pEner_l_fx == NULL )
return;
if ( pEner_r_fx == NULL )
return;
if ( pCoherence_fx == NULL )
return;
FILE *fp = fopen( c_file_path_fx, "a" );
if ( fp == NULL )
return;
if ( samplerate == DEFAULT_SAMPLERATE )
{
fprintf( fp, "\n/********************** default HRIR reverb rom tables **********************/" );
}
fprintf( fp, "\n\n/* Sample Rate = %ld */\n", (long) samplerate );
fprintf( fp, "\nconst Word16 defaultHRIR_Q_%dkHz_fx = %d;", samplerate / 1000, factorQ );
/* float *defaultHRIR_right_avg_power_[LR_IAC_LENGTH_NR_FC];*/
fprintf( fp, "\nconst Word16 defaultHRIR_coherence_%dkHz_fx[%s] = \n", samplerate / 1000, len_str );
write_array_int16_t_to_file( fp, pCoherence_fx, len, NUM_SAMPLES_PER_LINES_REVERB, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ";\n" );
/* float *defaultHRIR_left_avg_power_[LR_IAC_LENGTH_NR_FC];*/
fprintf( fp, "\nconst Word16 defaultHRIR_left_avg_power_%dkHz_fx[%s] = \n", samplerate / 1000, len_str );
write_array_int16_t_to_file( fp, pEner_l_fx, len, NUM_SAMPLES_PER_LINES_REVERB, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ";\n" );
/* float *defaultHRIR_right_avg_power_[LR_IAC_LENGTH_NR_FC];*/
fprintf( fp, "\nconst Word16 defaultHRIR_right_avg_power_%dkHz_fx[%s] = \n", samplerate / 1000, len_str );
write_array_int16_t_to_file( fp, pEner_r_fx, len, NUM_SAMPLES_PER_LINES_REVERB, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ";\n" );
if ( fp )
fclose( fp );
return;
}
/*---------------------------------------------------------------------*
*update_c_file();
*---------------------------------------------------------------------*/
void update_c_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int32_t samplerate, const int16_t frame_len, int16_t factorQ[3] )
{
if ( c_file_path == NULL )
return;
FILE *fp = fopen( c_file_path, "a" );
int16_t i, j;
uint32_t *pTotalNumFreqSampPerIterations[2], maxTotalNumFreqSampPerIterations;
uint32_t pTotalNumFreqSampPerIterationsDiffuse[2], maxTotalNumFreqSampPerIterationsDiffuse;
const char *format_float = FORMAT_FLOAT;
const char *format_float_latency = FORMAT_FLOAT_LATENCY;
pTotalNumFreqSampPerIterations[0] = malloc( sizeof( float ) * hrtf->max_num_ir );
pTotalNumFreqSampPerIterations[1] = malloc( sizeof( float ) * hrtf->max_num_ir );
if ( fp == NULL )
return;
if ( hrtf == NULL )
return;
if ( samplerate == DEFAULT_SAMPLERATE )
{
/* float latency_s; */
fprintf( fp, "\n\n/********************** %s_%s **********************/\n", DECLARATION_NAME, lscfg.name );
fprintf( fp, "\nconst float %s_%s_latency_s = ", DECLARATION_NAME, lscfg.name );
fprintf( fp, format_float_latency, hrtf->latency_s );
fprintf( fp, ";" );
}
fprintf( fp, "\n\n/* Sample Rate = %ld */\n", (long) samplerate );
/* int16_t max_num_iterations; */
fprintf( fp, "\nconst int16_t %s_%s_max_num_iterations_%2dkHz = %d;", DECLARATION_NAME, lscfg.name, samplerate / 1000, hrtf->max_num_iterations );
/* uint16_t num_iterations[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/
fprintf( fp, "\nconst uint16_t %s_%s_num_iterations_%2dkHz[%s][BINAURAL_CHANNELS]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
for ( i = 0; i < hrtf->max_num_ir - 1; i++ )
{
fprintf( fp, "{%u, %u}, ", hrtf->num_iterations[i][0], hrtf->num_iterations[i][1] );
}
fprintf( fp, "{%u, %u} ", hrtf->num_iterations[i][0], hrtf->num_iterations[i][1] );
fprintf( fp, "};" );
/* uint16_t num_iterations_diffuse[BINAURAL_CHANNELS];*/
fprintf( fp, "\nconst uint16_t %s_%s_num_iterations_diffuse_%2dkHz[BINAURAL_CHANNELS] = {%u, %u};", DECLARATION_NAME, lscfg.name, samplerate / 1000, hrtf->num_iterations_diffuse[0], hrtf->num_iterations_diffuse[1] );
maxTotalNumFreqSampPerIterations = 0;
for ( i = 0; i < hrtf->max_num_ir; i++ )
{
pTotalNumFreqSampPerIterations[0][i] = 0;
pTotalNumFreqSampPerIterations[1][i] = 0;
for ( j = 0; j < hrtf->num_iterations[i][0]; j++ )
{
pTotalNumFreqSampPerIterations[0][i] += hrtf->pIndex_frequency_max_dyn[i][0][j];
}
if ( maxTotalNumFreqSampPerIterations < pTotalNumFreqSampPerIterations[0][i] )
{
maxTotalNumFreqSampPerIterations = pTotalNumFreqSampPerIterations[0][i];
}
for ( j = 0; j < hrtf->num_iterations[i][1]; j++ )
{
pTotalNumFreqSampPerIterations[1][i] += hrtf->pIndex_frequency_max_dyn[i][1][j];
}
if ( maxTotalNumFreqSampPerIterations < pTotalNumFreqSampPerIterations[1][i] )
{
maxTotalNumFreqSampPerIterations = pTotalNumFreqSampPerIterations[1][i];
}
}
pTotalNumFreqSampPerIterationsDiffuse[0] = 0;
pTotalNumFreqSampPerIterationsDiffuse[1] = 0;
maxTotalNumFreqSampPerIterationsDiffuse = 0;
for ( j = 0; j < hrtf->num_iterations_diffuse[0]; j++ )
{
pTotalNumFreqSampPerIterationsDiffuse[0] += hrtf->pIndex_frequency_max_diffuse_dyn[0][j];
}
if ( maxTotalNumFreqSampPerIterationsDiffuse < pTotalNumFreqSampPerIterationsDiffuse[0] )
{
maxTotalNumFreqSampPerIterationsDiffuse = pTotalNumFreqSampPerIterationsDiffuse[0];
}
for ( j = 0; j < hrtf->num_iterations_diffuse[1]; j++ )
{
pTotalNumFreqSampPerIterationsDiffuse[1] += hrtf->pIndex_frequency_max_diffuse_dyn[1][j];
}
if ( maxTotalNumFreqSampPerIterationsDiffuse < pTotalNumFreqSampPerIterationsDiffuse[1] )
{
maxTotalNumFreqSampPerIterationsDiffuse = pTotalNumFreqSampPerIterationsDiffuse[1];
}
/*uint16_t *pIndex_frequency_max_dyn[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS]; */
fprintf( fp, "\nconst uint16_t %s_%s_pIndex_frequency_max_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, hrtf->max_num_iterations );
for ( i = 0; i < hrtf->max_num_ir - 1; i++ )
{
fprintf( fp, "{" );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][0], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "," );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][1], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "}," );
}
fprintf( fp, "{" );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][0], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "," );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][1], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "}" );
fprintf( fp, "};" );
/* uint16_t index_frequency_max_diffuse; */
fprintf( fp, "\nconst uint16_t %s_%s_index_frequency_max_diffuse_%2dkHz = %d;", DECLARATION_NAME, lscfg.name, samplerate / 1000, hrtf->index_frequency_max_diffuse );
/* float inv_diffuse_weight[BINAURAL_CHANNELS][MAX_INTERN_CHANNELS]; */
fprintf( fp, "\nconst float %s_%s_inv_diffuse_weight_%2dkHz[BINAURAL_CHANNELS][%s]=", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
fprintf( fp, "{" );
write_array_float_to_file( fp, hrtf->inv_diffuse_weight[0], hrtf->max_num_ir, hrtf->max_num_ir, format_float, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "," );
write_array_float_to_file( fp, hrtf->inv_diffuse_weight[1], hrtf->max_num_ir, hrtf->max_num_ir, format_float, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "}" );
fprintf( fp, ";" );
/* uint16_t *pIndex_frequency_max_diffuse_dyn[BINAURAL_CHANNELS];*/
if ( hrtf->pIndex_frequency_max_diffuse_dyn[0] == NULL )
{
fprintf( fp, "\nconst uint16_t *%s_%s_pIndex_frequency_max_diffuse_%2dkHz[BINAURAL_CHANNELS]={NULL,NULL};", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
}
else
{
fprintf( fp, "\nconst uint16_t %s_%s_pIndex_frequency_max_diffuse_%2dkHz[BINAURAL_CHANNELS][%u]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, ( hrtf->num_iterations_diffuse[0] > hrtf->num_iterations_diffuse[1] ) ? hrtf->num_iterations_diffuse[0] : hrtf->num_iterations_diffuse[1] );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_diffuse_dyn[0], hrtf->num_iterations_diffuse[0], hrtf->num_iterations_diffuse[0], 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "," );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_diffuse_dyn[1], hrtf->num_iterations_diffuse[1], hrtf->num_iterations_diffuse[1], 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "};" );
}
/* float *pOut_to_bin[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/
if ( samplerate == 48000 && maxTotalNumFreqSampPerIterations == L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else if ( samplerate == 32000 && maxTotalNumFreqSampPerIterations == L_FRAME32k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else if ( samplerate == 16000 && maxTotalNumFreqSampPerIterations == L_FRAME16k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else
{
fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations );
}
for ( i = 0; i < hrtf->max_num_ir - 1; i++ )
{
fprintf( fp, "\n%s{\n", TAB_WITH_SPACE_OR_NOT );
write_array_float_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][0], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][1], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n%s},", TAB_WITH_SPACE_OR_NOT );
}
fprintf( fp, "\n%s{\n", TAB_WITH_SPACE_OR_NOT );
write_array_float_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][0], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][1], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n%s}", TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n};" );
if ( samplerate == 48000 && maxTotalNumFreqSampPerIterations == L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else if ( samplerate == 32000 && maxTotalNumFreqSampPerIterations == L_FRAME32k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else if ( samplerate == 16000 && maxTotalNumFreqSampPerIterations == L_FRAME16k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else
{
fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations );
}
for ( i = 0; i < hrtf->max_num_ir - 1; i++ )
{
fprintf( fp, "\n%s{\n", TAB_WITH_SPACE_OR_NOT );
write_array_float_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][0], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][1], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n%s},", TAB_WITH_SPACE_OR_NOT );
}
fprintf( fp, "\n%s{\n", TAB_WITH_SPACE_OR_NOT );
write_array_float_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][0], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][1], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n%s}", TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n};" );
/* float *pOut_to_bin_diffuse_re_dyn[BINAURAL_CHANNELS];*/
if ( hrtf->pOut_to_bin_diffuse_re_dyn[0] == NULL )
{
fprintf( fp, "\nconst float *%s_%s_coeff_diffuse_re_%2dkHz[BINAURAL_CHANNELS]={NULL,NULL};", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
}
else
{
fprintf( fp, "\nconst float %s_%s_coeff_diffuse_re_%2dkHz[BINAURAL_CHANNELS][%u]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, maxTotalNumFreqSampPerIterationsDiffuse );
write_array_float_to_file( fp, hrtf->pOut_to_bin_diffuse_re_dyn[0], pTotalNumFreqSampPerIterationsDiffuse[0], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_diffuse_re_dyn[1], pTotalNumFreqSampPerIterationsDiffuse[1], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n};" );
}
/* float *pOut_to_bin_diffuse_im_dyn[BINAURAL_CHANNELS];*/
if ( hrtf->pOut_to_bin_diffuse_im_dyn[0] == NULL )
{
fprintf( fp, "\nconst float *%s_%s_coeff_diffuse_im_%2dkHz[BINAURAL_CHANNELS]={NULL,NULL};", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
}
else
{
fprintf( fp, "\nconst float %s_%s_coeff_diffuse_im_%2dkHz[BINAURAL_CHANNELS][%u]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, maxTotalNumFreqSampPerIterationsDiffuse );
write_array_float_to_file( fp, hrtf->pOut_to_bin_diffuse_im_dyn[0], pTotalNumFreqSampPerIterationsDiffuse[0], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_diffuse_im_dyn[1], pTotalNumFreqSampPerIterationsDiffuse[1], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n};" );
}
fprintf( fp, "\n\n/* Sample Rate = %ld */\n", (long) samplerate );
/* float *defaultHRIR_right_avg_power_[LR_IAC_LENGTH_NR_FC];*/
fprintf( fp, "\nconst float defaultHRIR_coherence_%dkHz[%s] = \n", samplerate / 1000, len_str );
write_array_float_to_file( fp, pCoherence, len, NUM_SAMPLES_PER_LINES_REVERB, FORMAT_FLOAT_REVERB, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ";\n" );
/* float *defaultHRIR_left_avg_power_[LR_IAC_LENGTH_NR_FC];*/
fprintf( fp, "\nconst float defaultHRIR_left_avg_power_%dkHz[%s] = \n", samplerate / 1000, len_str );
write_array_float_to_file( fp, pEner_l, len, NUM_SAMPLES_PER_LINES_REVERB, FORMAT_FLOAT_REVERB, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ";\n" );
/* float *defaultHRIR_right_avg_power_[LR_IAC_LENGTH_NR_FC];*/
fprintf( fp, "\nconst float defaultHRIR_right_avg_power_%dkHz[%s] = \n", samplerate / 1000, len_str );
write_array_float_to_file( fp, pEner_r, len, NUM_SAMPLES_PER_LINES_REVERB, FORMAT_FLOAT_REVERB, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ";\n" );
if ( fp )
fclose( fp );
if ( pTotalNumFreqSampPerIterations[0] )
{
free( pTotalNumFreqSampPerIterations[0] );
}
if ( pTotalNumFreqSampPerIterations[1] )
{
free( pTotalNumFreqSampPerIterations[1] );
}
return;
}
/*---------------------------------------------------------------------*
*update_c_file();
*---------------------------------------------------------------------*/
void update_c_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int32_t samplerate, const int16_t frame_len, int16_t factorQ[3] )
void update_c_file_fx( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int32_t samplerate, const int16_t frame_len, int16_t factor_Q[3] )
{
if ( c_file_path == NULL )
if ( c_file_path_fx == NULL )
return;
FILE *fp = fopen( c_file_path, "a" );
FILE *fp = fopen( c_file_path_fx, "a" );
int16_t i, j;
uint32_t *pTotalNumFreqSampPerIterations[2], maxTotalNumFreqSampPerIterations;
uint32_t pTotalNumFreqSampPerIterationsDiffuse[2], maxTotalNumFreqSampPerIterationsDiffuse;
......@@ -2237,17 +2995,16 @@ void update_c_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int
{
/* float latency_s; */
fprintf( fp, "\n\n/********************** %s_%s **********************/\n", DECLARATION_NAME, lscfg.name );
fprintf( fp, "\nconst float %s_%s_latency_s = ", DECLARATION_NAME, lscfg.name );
fprintf( fp, format_float_latency, hrtf->latency_s );
fprintf( fp, ";" );
fprintf( fp, "\nconst Word16 %s_%s_Q_latency_s_fx = %d;", DECLARATION_NAME, lscfg.name, factor_Q[0] );
fprintf( fp, "\nconst Word32 %s_%s_latency_s_fx = %d;/*Q-31*/", DECLARATION_NAME, lscfg.name, float2int32_t( hrtf->latency_s, factor_Q[0] ) );
}
fprintf( fp, "\n\n/* Sample Rate = %ld */\n", (long) samplerate );
/* int16_t max_num_iterations; */
fprintf( fp, "\nconst int16_t %s_%s_max_num_iterations_%2dkHz = %d;", DECLARATION_NAME, lscfg.name, samplerate / 1000, hrtf->max_num_iterations );
fprintf( fp, "\nconst Word16 %s_%s_max_num_iterations_%2dkHz = %d;", DECLARATION_NAME, lscfg.name, samplerate / 1000, hrtf->max_num_iterations );
/* uint16_t num_iterations[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/
fprintf( fp, "\nconst uint16_t %s_%s_num_iterations_%2dkHz[%s][BINAURAL_CHANNELS]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
fprintf( fp, "\nconst Word16 %s_%s_num_iterations_%2dkHz[%s][BINAURAL_CHANNELS]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
for ( i = 0; i < hrtf->max_num_ir - 1; i++ )
{
fprintf( fp, "{%u, %u}, ", hrtf->num_iterations[i][0], hrtf->num_iterations[i][1] );
......@@ -2256,7 +3013,7 @@ void update_c_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int
fprintf( fp, "};" );
/* uint16_t num_iterations_diffuse[BINAURAL_CHANNELS];*/
fprintf( fp, "\nconst uint16_t %s_%s_num_iterations_diffuse_%2dkHz[BINAURAL_CHANNELS] = {%u, %u};", DECLARATION_NAME, lscfg.name, samplerate / 1000, hrtf->num_iterations_diffuse[0], hrtf->num_iterations_diffuse[1] );
fprintf( fp, "\nconst Word16 %s_%s_num_iterations_diffuse_%2dkHz[BINAURAL_CHANNELS] = {%u, %u};", DECLARATION_NAME, lscfg.name, samplerate / 1000, hrtf->num_iterations_diffuse[0], hrtf->num_iterations_diffuse[1] );
maxTotalNumFreqSampPerIterations = 0;
for ( i = 0; i < hrtf->max_num_ir; i++ )
......@@ -2302,137 +3059,109 @@ void update_c_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int
}
/*uint16_t *pIndex_frequency_max_dyn[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS]; */
fprintf( fp, "\nconst uint16_t %s_%s_pIndex_frequency_max_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, hrtf->max_num_iterations );
fprintf( fp, "\nconst Word16 %s_%s_pIndex_frequency_max_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, hrtf->max_num_iterations );
for ( i = 0; i < hrtf->max_num_ir - 1; i++ )
{
fprintf( fp, "{" );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][0], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
write_array_uint16_t_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][0], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "," );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][1], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
write_array_uint16_t_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][1], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "}," );
}
fprintf( fp, "{" );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][0], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
write_array_uint16_t_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][0], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "," );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][1], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
write_array_uint16_t_to_file( fp, hrtf->pIndex_frequency_max_dyn[i][1], hrtf->max_num_iterations, hrtf->max_num_iterations, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "}" );
fprintf( fp, "};" );
/* uint16_t index_frequency_max_diffuse; */
fprintf( fp, "\nconst uint16_t %s_%s_index_frequency_max_diffuse_%2dkHz = %d;", DECLARATION_NAME, lscfg.name, samplerate / 1000, hrtf->index_frequency_max_diffuse );
fprintf( fp, "\nconst Word16 %s_%s_index_frequency_max_diffuse_%2dkHz = %d;", DECLARATION_NAME, lscfg.name, samplerate / 1000, hrtf->index_frequency_max_diffuse );
/* float inv_diffuse_weight[BINAURAL_CHANNELS][MAX_INTERN_CHANNELS]; */
fprintf( fp, "\nconst float %s_%s_inv_diffuse_weight_%2dkHz[BINAURAL_CHANNELS][%s]=", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
fprintf( fp, "\nconst Word16 %s_%s_inv_diffuse_weight_Q_%2dkHz_fx = %d;", DECLARATION_NAME, lscfg.name, samplerate / 1000, factor_Q[1] );
/* float inv_diffuse_weight_fx[BINAURAL_CHANNELS][MAX_INTERN_CHANNELS]; */
fprintf( fp, "\nconst Word16 %s_%s_inv_diffuse_weight_%2dkHz_fx[BINAURAL_CHANNELS][%s]=", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
fprintf( fp, "{" );
write_array_float_to_file( fp, hrtf->inv_diffuse_weight[0], hrtf->max_num_ir, hrtf->max_num_ir, format_float, 0, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->inv_diffuse_weight[0], factor_Q[1], hrtf->max_num_ir, hrtf->max_num_ir, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "," );
write_array_float_to_file( fp, hrtf->inv_diffuse_weight[1], hrtf->max_num_ir, hrtf->max_num_ir, format_float, 0, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->inv_diffuse_weight[1], factor_Q[1], hrtf->max_num_ir, hrtf->max_num_ir, 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "}" );
fprintf( fp, ";" );
/* uint16_t *pIndex_frequency_max_diffuse_dyn[BINAURAL_CHANNELS];*/
if ( hrtf->pIndex_frequency_max_diffuse_dyn[0] == NULL )
{
fprintf( fp, "\nconst uint16_t *%s_%s_pIndex_frequency_max_diffuse_%2dkHz[BINAURAL_CHANNELS]={NULL,NULL};", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
fprintf( fp, "\nconst Word16 *%s_%s_pIndex_frequency_max_diffuse_%2dkHz[BINAURAL_CHANNELS]={NULL,NULL};", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
}
else
{
fprintf( fp, "\nconst uint16_t %s_%s_pIndex_frequency_max_diffuse_%2dkHz[BINAURAL_CHANNELS][%u]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, ( hrtf->num_iterations_diffuse[0] > hrtf->num_iterations_diffuse[1] ) ? hrtf->num_iterations_diffuse[0] : hrtf->num_iterations_diffuse[1] );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_diffuse_dyn[0], hrtf->num_iterations_diffuse[0], hrtf->num_iterations_diffuse[0], 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\nconst Word16 %s_%s_pIndex_frequency_max_diffuse_%2dkHz[BINAURAL_CHANNELS][%u]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, ( hrtf->num_iterations_diffuse[0] > hrtf->num_iterations_diffuse[1] ) ? hrtf->num_iterations_diffuse[0] : hrtf->num_iterations_diffuse[1] );
write_array_uint16_t_to_file( fp, hrtf->pIndex_frequency_max_diffuse_dyn[0], hrtf->num_iterations_diffuse[0], hrtf->num_iterations_diffuse[0], 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "," );
write_array_uint16_to_file( fp, hrtf->pIndex_frequency_max_diffuse_dyn[1], hrtf->num_iterations_diffuse[1], hrtf->num_iterations_diffuse[1], 0, TAB_WITH_SPACE_OR_NOT );
write_array_uint16_t_to_file( fp, hrtf->pIndex_frequency_max_diffuse_dyn[1], hrtf->num_iterations_diffuse[1], hrtf->num_iterations_diffuse[1], 0, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "};" );
}
/* float *pOut_to_bin[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/
if ( samplerate == 48000 && maxTotalNumFreqSampPerIterations == L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else if ( samplerate == 32000 && maxTotalNumFreqSampPerIterations == L_FRAME32k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else if ( samplerate == 16000 && maxTotalNumFreqSampPerIterations == L_FRAME16k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else
{
fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations );
}
fprintf( fp, "\nconst Word16 %s_%s_coeff_Q_%2dkHz_fx = %d;", DECLARATION_NAME, lscfg.name, samplerate / 1000, factor_Q[2] );
/* float *pOut_to_bin_fx[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/
fprintf( fp, "\nconst Word16 %s_%s_coeff_re_%2dkHz_fx[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations );
for ( i = 0; i < hrtf->max_num_ir - 1; i++ )
{
fprintf( fp, "\n%s{\n", TAB_WITH_SPACE_OR_NOT );
write_array_float_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][0], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][0], factor_Q[2], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][1], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][1], factor_Q[2], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n%s},", TAB_WITH_SPACE_OR_NOT );
}
fprintf( fp, "\n%s{\n", TAB_WITH_SPACE_OR_NOT );
write_array_float_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][0], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][0], factor_Q[2], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][1], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_re_dyn[i][1], factor_Q[2], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n%s}", TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n};" );
if ( samplerate == 48000 && maxTotalNumFreqSampPerIterations == L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else if ( samplerate == 32000 && maxTotalNumFreqSampPerIterations == L_FRAME32k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else if ( samplerate == 16000 && maxTotalNumFreqSampPerIterations == L_FRAME16k / MAX_PARAM_SPATIAL_SUBFRAMES )
{
fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
}
else
{
fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations );
}
fprintf( fp, "\nconst Word16 %s_%s_coeff_im_%2dkHz_fx[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations );
for ( i = 0; i < hrtf->max_num_ir - 1; i++ )
{
fprintf( fp, "\n%s{\n", TAB_WITH_SPACE_OR_NOT );
write_array_float_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][0], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][0], factor_Q[2], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][1], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][1], factor_Q[2], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n%s},", TAB_WITH_SPACE_OR_NOT );
}
fprintf( fp, "\n%s{\n", TAB_WITH_SPACE_OR_NOT );
write_array_float_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][0], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][0], factor_Q[2], pTotalNumFreqSampPerIterations[0][i], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][1], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_im_dyn[i][1], factor_Q[2], pTotalNumFreqSampPerIterations[1][i], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n%s}", TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n};" );
/* float *pOut_to_bin_diffuse_re_dyn[BINAURAL_CHANNELS];*/
/* float *pOut_to_bin_diffuse_re[BINAURAL_CHANNELS];*/
if ( hrtf->pOut_to_bin_diffuse_re_dyn[0] == NULL )
{
fprintf( fp, "\nconst float *%s_%s_coeff_diffuse_re_%2dkHz[BINAURAL_CHANNELS]={NULL,NULL};", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
fprintf( fp, "\nconst Word16 *%s_%s_coeff_diffuse_re_%2dkHz_fx[BINAURAL_CHANNELS]={NULL,NULL};", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
}
else
{
fprintf( fp, "\nconst float %s_%s_coeff_diffuse_re_%2dkHz[BINAURAL_CHANNELS][%u]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, maxTotalNumFreqSampPerIterationsDiffuse );
write_array_float_to_file( fp, hrtf->pOut_to_bin_diffuse_re_dyn[0], pTotalNumFreqSampPerIterationsDiffuse[0], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\nconst Word16 %s_%s_coeff_diffuse_re_%2dkHz_fx[BINAURAL_CHANNELS][%u]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, maxTotalNumFreqSampPerIterationsDiffuse );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_diffuse_re_dyn[0], factor_Q[2], pTotalNumFreqSampPerIterationsDiffuse[0], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_diffuse_re_dyn[1], pTotalNumFreqSampPerIterationsDiffuse[1], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_diffuse_re_dyn[1], factor_Q[2], pTotalNumFreqSampPerIterationsDiffuse[1], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n};" );
}
/* float *pOut_to_bin_diffuse_im_dyn[BINAURAL_CHANNELS];*/
/* float *pOut_to_bin_diffuse_im[BINAURAL_CHANNELS];*/
if ( hrtf->pOut_to_bin_diffuse_im_dyn[0] == NULL )
{
fprintf( fp, "\nconst float *%s_%s_coeff_diffuse_im_%2dkHz[BINAURAL_CHANNELS]={NULL,NULL};", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
fprintf( fp, "\nconst Word16 *%s_%s_coeff_diffuse_im_%2dkHz_fx[BINAURAL_CHANNELS]={NULL,NULL};", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
}
else
{
fprintf( fp, "\nconst float %s_%s_coeff_diffuse_im_%2dkHz[BINAURAL_CHANNELS][%u]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, maxTotalNumFreqSampPerIterationsDiffuse );
write_array_float_to_file( fp, hrtf->pOut_to_bin_diffuse_im_dyn[0], pTotalNumFreqSampPerIterationsDiffuse[0], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\nconst Word16 %s_%s_coeff_diffuse_im_%2dkHz_fx[BINAURAL_CHANNELS][%u]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, maxTotalNumFreqSampPerIterationsDiffuse );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_diffuse_im_dyn[0], factor_Q[2], pTotalNumFreqSampPerIterationsDiffuse[0], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, ",\n" );
write_array_float_to_file( fp, hrtf->pOut_to_bin_diffuse_im_dyn[1], pTotalNumFreqSampPerIterationsDiffuse[1], NUM_SAMPLES_PER_LINES, format_float, 2, TAB_WITH_SPACE_OR_NOT );
write_array_float_to_int16_t_to_file( fp, hrtf->pOut_to_bin_diffuse_im_dyn[1], factor_Q[2], pTotalNumFreqSampPerIterationsDiffuse[1], NUM_SAMPLES_PER_LINES, 2, TAB_WITH_SPACE_OR_NOT );
fprintf( fp, "\n};" );
}
......@@ -2643,6 +3372,185 @@ void update_h_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int
}
return;
}
/*---------------------------------------------------------------------*
*update_h_file_with_reverb
*---------------------------------------------------------------------*/
void update_h_file_with_reverb_fx( int32_t samplerate )
{
char len_str[26] = "LR_IAC_LENGTH_NR_FC";
if ( samplerate == 16000 )
{
strcpy( len_str, "LR_IAC_LENGTH_NR_FC_16KHZ" );
}
if ( h_file_path_fx == NULL )
return;
FILE *fp = fopen( h_file_path_fx, "a" );
if ( fp == NULL )
return;
if ( samplerate == DEFAULT_SAMPLERATE )
{
fprintf( fp, "\n/********************** default HRIR reverb rom tables **********************/\n" );
}
fprintf( fp, "\n\n/* Sample Rate = %ld */\n", (long) samplerate );
fprintf( fp, "\nextern const Word16 defaultHRIR_Q_%dkHz_fx;", samplerate / 1000 );
/* Word16 *defaultHRIR_coherence_[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/
fprintf( fp, "\nextern const Word16 defaultHRIR_coherence_%dkHz_fx[%s];", samplerate / 1000, len_str );
/* Word16 *defaultHRIR_left_avg_power[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/
fprintf( fp, "\nextern const Word16 defaultHRIR_left_avg_power_%dkHz_fx[%s];", samplerate / 1000, len_str );
fprintf( fp, "\nextern const Word16 defaultHRIR_right_avg_power_%dkHz_fx[%s];", samplerate / 1000, len_str );
if ( fp )
fclose( fp );
return;
}
/*---------------------------------------------------------------------*
*update_h_file();
*---------------------------------------------------------------------*/
void update_h_file_fx( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int32_t samplerate, const int16_t frame_len )
{
uint16_t i, j;
uint32_t *pTotalNumFreqSampPerIterations[2], maxTotalNumFreqSampPerIterations;
uint32_t pTotalNumFreqSampPerIterationsDiffuse[2], maxTotalNumFreqSampPerIterationsDiffuse;
if ( h_file_path_fx == NULL )
return;
pTotalNumFreqSampPerIterations[0] = malloc( sizeof( float ) * hrtf->max_num_ir );
pTotalNumFreqSampPerIterations[1] = malloc( sizeof( float ) * hrtf->max_num_ir );
FILE *fp = fopen( h_file_path_fx, "a" );
if ( fp == NULL )
return;
if ( hrtf == NULL )
return;
maxTotalNumFreqSampPerIterations = 0;
for ( i = 0; i < hrtf->max_num_ir; i++ )
{
pTotalNumFreqSampPerIterations[0][i] = 0;
pTotalNumFreqSampPerIterations[1][i] = 0;
for ( j = 0; j < hrtf->num_iterations[i][0]; j++ )
{
pTotalNumFreqSampPerIterations[0][i] += hrtf->pIndex_frequency_max_dyn[i][0][j];
}
if ( maxTotalNumFreqSampPerIterations < pTotalNumFreqSampPerIterations[0][i] )
{
maxTotalNumFreqSampPerIterations = pTotalNumFreqSampPerIterations[0][i];
}
for ( j = 0; j < hrtf->num_iterations[i][1]; j++ )
{
pTotalNumFreqSampPerIterations[1][i] += hrtf->pIndex_frequency_max_dyn[i][1][j];
}
if ( maxTotalNumFreqSampPerIterations < pTotalNumFreqSampPerIterations[1][i] )
{
maxTotalNumFreqSampPerIterations = pTotalNumFreqSampPerIterations[1][i];
}
}
pTotalNumFreqSampPerIterationsDiffuse[0] = 0;
pTotalNumFreqSampPerIterationsDiffuse[1] = 0;
maxTotalNumFreqSampPerIterationsDiffuse = 0;
for ( j = 0; j < hrtf->num_iterations_diffuse[0]; j++ )
{
pTotalNumFreqSampPerIterationsDiffuse[0] += hrtf->pIndex_frequency_max_diffuse_dyn[0][j];
}
if ( maxTotalNumFreqSampPerIterationsDiffuse < pTotalNumFreqSampPerIterationsDiffuse[0] )
{
maxTotalNumFreqSampPerIterationsDiffuse = pTotalNumFreqSampPerIterationsDiffuse[0];
}
for ( j = 0; j < hrtf->num_iterations_diffuse[1]; j++ )
{
pTotalNumFreqSampPerIterationsDiffuse[1] += hrtf->pIndex_frequency_max_diffuse_dyn[1][j];
}
if ( maxTotalNumFreqSampPerIterationsDiffuse < pTotalNumFreqSampPerIterationsDiffuse[1] )
{
maxTotalNumFreqSampPerIterationsDiffuse = pTotalNumFreqSampPerIterationsDiffuse[1];
}
if ( samplerate == DEFAULT_SAMPLERATE )
{
/* float latency_s; */
fprintf( fp, "\n\n/********************** %s_%s **********************/\n", DECLARATION_NAME, lscfg.name );
fprintf( fp, "\nextern const Word16 %s_%s_Q_latency_s_fx;", DECLARATION_NAME, lscfg.name );
fprintf( fp, "\nextern const Word32 %s_%s_latency_s_fx;", DECLARATION_NAME, lscfg.name );
}
fprintf( fp, "\n\n/* Sample Rate = %ld */\n", (long) samplerate );
/* int16_t max_num_iterations; */
fprintf( fp, "\nextern const Word16 %s_%s_max_num_iterations_%2dkHz;", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
/* uint16_t num_iterations[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/
fprintf( fp, "\nextern const Word16 %s_%s_num_iterations_%2dkHz[%s][BINAURAL_CHANNELS];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
/* uint16_t num_iterations_diffuse[BINAURAL_CHANNELS];*/
fprintf( fp, "\nextern const Word16 %s_%s_num_iterations_diffuse_%2dkHz[BINAURAL_CHANNELS];", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
/*uint16_t *pIndex_frequency_max_dyn[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS]; */
fprintf( fp, "\nextern const Word16 %s_%s_pIndex_frequency_max_%2dkHz[%s][BINAURAL_CHANNELS][%d];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, hrtf->max_num_iterations );
/* uint16_t index_frequency_max_diffuse; */
fprintf( fp, "\nextern const Word16 %s_%s_index_frequency_max_diffuse_%2dkHz;", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
/* Word16 inv_diffuse_weight_fx[BINAURAL_CHANNELS][MAX_INTERN_CHANNELS]; */
fprintf( fp, "\nextern const Word16 %s_%s_inv_diffuse_weight_Q_%2dkHz_fx;", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
fprintf( fp, "\nextern const Word16 %s_%s_inv_diffuse_weight_%2dkHz_fx[BINAURAL_CHANNELS][%s];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name );
/* uint16_t *pIndex_frequency_max_diffuse[BINAURAL_CHANNELS];*/
if ( hrtf->pIndex_frequency_max_diffuse_dyn[0] == NULL )
{
fprintf( fp, "\nextern const Word16 *%s_%s_pIndex_frequency_max_diffuse_%2dkHz[BINAURAL_CHANNELS];", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
}
else
{
fprintf( fp, "\nextern const Word16 %s_%s_pIndex_frequency_max_diffuse_%2dkHz[BINAURAL_CHANNELS][%u];", DECLARATION_NAME, lscfg.name, samplerate / 1000, ( hrtf->num_iterations_diffuse[0] > hrtf->num_iterations_diffuse[1] ) ? hrtf->num_iterations_diffuse[0] : hrtf->num_iterations_diffuse[1] );
}
/* Word16 *pOut_to_bin_fx[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/
fprintf( fp, "\nextern const Word16 %s_%s_coeff_Q_%2dkHz_fx;", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
fprintf( fp, "\nextern const Word16 %s_%s_coeff_re_%2dkHz_fx[%s][BINAURAL_CHANNELS][%u];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations );
fprintf( fp, "\nextern const Word16 %s_%s_coeff_im_%2dkHz_fx[%s][BINAURAL_CHANNELS][%u];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations );
/* float *pOut_to_bin_diffuse_re_fx[BINAURAL_CHANNELS];*/
if ( hrtf->pOut_to_bin_diffuse_re_dyn[0] == NULL )
{
fprintf( fp, "\nextern Word16 *%s_%s_coeff_diffuse_re_%2dkHz_fx[BINAURAL_CHANNELS];", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
}
else
{
fprintf( fp, "\nextern Word16 %s_%s_coeff_diffuse_re_%2dkHz_fx[BINAURAL_CHANNELS][%u];", DECLARATION_NAME, lscfg.name, samplerate / 1000, maxTotalNumFreqSampPerIterationsDiffuse );
}
/* float *pOut_to_bin_diffuse_im_fx[BINAURAL_CHANNELS];*/
if ( hrtf->pOut_to_bin_diffuse_im_dyn[0] == NULL )
{
fprintf( fp, "\nextern Word16 *%s_%s_coeff_diffuse_im_%2dkHz_fx[BINAURAL_CHANNELS];", DECLARATION_NAME, lscfg.name, samplerate / 1000 );
}
else
{
fprintf( fp, "\nextern Word16 %s_%s_coeff_diffuse_im_%2dkHz_fx[BINAURAL_CHANNELS][%u];", DECLARATION_NAME, lscfg.name, samplerate / 1000, maxTotalNumFreqSampPerIterationsDiffuse );
}
if ( fp )
fclose( fp );
if ( pTotalNumFreqSampPerIterations[0] )
{
free( pTotalNumFreqSampPerIterations[0] );
}
if ( pTotalNumFreqSampPerIterations[1] )
{
free( pTotalNumFreqSampPerIterations[1] );
}
return;
}
/*---------------------------------------------------------------------*
* get_tables_dimensions();
......@@ -3342,7 +4250,7 @@ ivas_error write_binary_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg,
}
/*---------------------------------------------------------------------*
* make_fx_be();
* make_reverb_fx_be();
*---------------------------------------------------------------------*/
ivas_error make_reverb_fx_be( float *pEner_l, float *pEner_r, float *pCoherence, const int32_t samplerate, int16_t *factorQ )
{
......
......@@ -118,6 +118,7 @@ end
dataSpec.hrfInDir = hrir_file;
dataSpec.hrfOutDir = binary_path;
dataSpec.genRomFile = writeRomFileOutput;
dataSpec.genRomFileFx = writeRomFileFx;
dataSpec.genBinaryFile = writeBinaryOutput;
dataSpec.makeFxFltBE = true;
dataSpec.romOutDir = rom_path;
......
......@@ -64,6 +64,17 @@ static void printBuf_uint16( const uint16_t *buf, uint16_t size1 )
return;
}
static void printBuf_int16( const int16_t *buf, uint16_t size1 )
{
uint16_t ii;
for ( ii = 0; ii < size1; ++ii )
{
printf( "%d ", (int32_t) buf[ii] );
}
return;
}
/*
static void printBuf_int16( int16_t *buf, uint16_t size1 )
{
......
......@@ -781,6 +781,10 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g1
../IVAS_cod -sba 3 128000 32 testv/stv3OA32c.wav bit
../IVAS_dec -t testv/headrot.csv -exof testv/headrot_case00_3000_q_combinedRotationTest.csv -otr avg BINAURAL_ROOM_IR 32 bit testv/stv3OA32c.pcm_SBA_128000_32-32_Binaural_room_Headrot_EXOF_OtrAvg.tst
// SBA at 128 kbps, 48kHz in, 48kHz out, HOA3 out, mono detector test
../IVAS_cod -sba 3 128000 48 testv/stv3OA48c_mono.wav bit
../IVAS_dec HOA3 48 bit testv/stv3OA48c_mono.pcm_SBA_128000_48-48_HOA3.tst
// SBA at 192 kbps, 48kHz in, 48kHz out, HOA2 out, random FER at 5%
../IVAS_cod -sba 3 192000 48 testv/stv3OA48c.wav bit
eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g192 bit_error
......@@ -1582,143 +1586,143 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g1
// stereo at 32 kbps, 48 kHz in, 32 kHz out, DTX on, JBM Prof 0
../IVAS_cod -stereo -dtx 32000 48 testv/stvST48n.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_0.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP STEREO 32 netsimoutput testv/stvST48n.wav_stereo_32000_48-32_DTX_JBM0.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP STEREO 32 netsimoutput testv/stvST48n.wav_stereo_32000_48-32_DTX_JBM0.tst
// 4 ISm with metadata at 64 kbps, 48 kHz in, 48 kHz out, DTX on, EXT out, JBM Prof 0
../IVAS_cod -dtx -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 64000 48 testv/stv4ISM48n.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_0.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/stv4ISM48s.wav_64000_48-48_DTX_EXT_JBM0.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/stv4ISM48s.wav_64000_48-48_DTX_EXT_JBM0.tst
// MASA 1dir 1TC at 13.2 kbps, 48kHz in, 32kHz out, DTX on, EXT out, JBM Prof 0
../IVAS_cod -dtx -masa 1 testv/stv1MASA1TC48n.met 13200 48 testv/stv1MASA1TC48n.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_0.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP EXT 32 netsimoutput testv/stv1MASA1TC48n.wav_13200_48-32_DTX_EXT_JBM0.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP EXT 32 netsimoutput testv/stv1MASA1TC48n.wav_13200_48-32_DTX_EXT_JBM0.tst
// SBA at 24.4 kbps, 32kHz in, 32kHz out, DTX on, BINAURAL out, JBM 0
../IVAS_cod -sba 3 -dtx 24400 32 testv/stv3OA32c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_0.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 32 netsimoutput testv/stv3OA32c.wav_SBA_24400_32-32_DTX_Binaural_JBM0.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 32 netsimoutput testv/stv3OA32c.wav_SBA_24400_32-32_DTX_Binaural_JBM0.tst
// stereo at 48 kbps, 16 kHz in, 16 kHz out, DTX on, JBM Prof 5
../IVAS_cod -stereo -dtx 48000 16 testv/stvST16n.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP STEREO 16 netsimoutput testv/stvST16n.wav_stereo_48000_16-16_DTX_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP STEREO 16 netsimoutput testv/stvST16n.wav_stereo_48000_16-16_DTX_JBM5.tst
// 4 ISm with metadata at 32 kbps, 48 kHz in, 48 kHz out, FOA out, JBM Prof 5
../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 32000 48 testv/stv4ISM48s.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stv4ISM48s.wav_32000_48-48_FOA_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stv4ISM48s.wav_32000_48-48_FOA_JBM5.tst
// 3 ISM with metadata bitrate switching from 48 kbps to 32 kbps, 48 kHz in, 32 kHz out, DTX, BINAURAL_ROOM_IR out, JBM Prof 5
../IVAS_cod -dtx -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv ../scripts/switchPaths/sw_48-32k_10fr.bin 48 testv/stv3ISM48s.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_IR 32 netsimoutput testv/stv3ISM48s.wav_sw_48-32_DTX_BINAURAL_ROOM_IR_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_IR 32 netsimoutput testv/stv3ISM48s.wav_sw_48-32_DTX_BINAURAL_ROOM_IR_JBM5.tst
// SBA at 80 kbps, 32kHz in, 32kHz out, HOA3 out, JBM Prof 5
../IVAS_cod -sba 3 80000 32 testv/stv3OA32c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP HOA3 32 netsimoutput testv/stv3OA32c.wav_SBA_80000_32-32_HOA3_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP HOA3 32 netsimoutput testv/stv3OA32c.wav_SBA_80000_32-32_HOA3_JBM5.tst
// SBA at 13.2 kbps, 48kHz in, 48kHz out, BINAURAL out, JBM Prof 5
../IVAS_cod -sba 1 13200 48 testv/stvFOA48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stvFOA32c.wav_SBA_13200_48-48_BINAURAL_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stvFOA32c.wav_SBA_13200_48-48_BINAURAL_JBM5.tst
// Multi-channel 5_1 at 384 kbps, 48kHz in, 48kHz out, 7_1_4 out, JBM Prof 5
../IVAS_cod -mc 5_1 384000 48 testv/stv51MC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/stv51MC48c.wav_MC51_384000_48-48_7_1_4_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/stv51MC48c.wav_MC51_384000_48-48_7_1_4_JBM5.tst
// Multi-channel 7_1_4 at 256 kbps, 48kHz in, 48kHz out, 7_1_4 out, JBM Prof 5
../IVAS_cod -mc 7_1_4 256000 48 testv/stv714MC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/stv714MC48c.wav_MC714_256000_48-48_7_1_4_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/stv714MC48c.wav_MC714_256000_48-48_7_1_4_JBM5.tst
// Multi-channel 7_1 bitrate switching, 48kHz in, 32kHz out, BINAURAL_ROOM_REVERB out, HR, JBM Prof 5
../IVAS_cod -mc 7_1 ../scripts/switchPaths/sw_24k4_384k.bin 48 testv/stv71MC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -T testv/headrot.csv -Tracefile tracefile_dec -VOIP binaural_room_reverb 32 netsimoutput testv/stv71MC48c.wav_MC71_brsw_48-32_BinauralRoomReverb_Headrot_JBM5.tst
../IVAS_dec -T testv/headrot.csv -no_delay_cmp -Tracefile tracefile_dec -VOIP binaural_room_reverb 32 netsimoutput testv/stv71MC48c.wav_MC71_brsw_48-32_BinauralRoomReverb_Headrot_JBM5.tst
// Multi-channel 7_1_4 bitrate switching, 48kHz in, 48kHz out, BINAURAL out, HR, JBM Prof 5
../IVAS_cod -mc 7_1_4 ../scripts/switchPaths/sw_24k4_384k.bin 48 testv/stv714MC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -T testv/headrot.csv -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stv714MC48c.wav_MC714_brsw_48-48_BINAURAL_Headrot_JBM5.tst
../IVAS_dec -T testv/headrot.csv -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stv714MC48c.wav_MC714_brsw_48-48_BINAURAL_Headrot_JBM5.tst
// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 32kHz out, 5_1 out, JBM Prof 5
../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 5_1 32 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-32_5_1_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 5_1 32 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-32_5_1_JBM5.tst
// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, STEREO out, JBM Prof 5
../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP STEREO 48 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-48_STEREO_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP STEREO 48 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-48_STEREO_JBM5.tst
// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, FOA out, JBM Prof 5
../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-48_FOA_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-48_FOA_JBM5.tst
// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL out, JBM Prof 5
../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 16 netsimoutput testv/stv1MASA2TC48n.wav_sw_48-16_BINAURAL_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 16 netsimoutput testv/stv1MASA2TC48n.wav_sw_48-16_BINAURAL_JBM5.tst
// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 32kHz out, MONO out, JBM Prof 5
../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP MONO 32 netsimoutput testv/stv1MASA2TC48n.wav_sw_48-32_MONO_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP MONO 32 netsimoutput testv/stv1MASA2TC48n.wav_sw_48-32_MONO_JBM5.tst
// MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, EXT out, JBM Prof 5
../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/stv2MASA2TC48c.wav_sw_48-48_EXT_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/stv2MASA2TC48c.wav_sw_48-48_EXT_JBM5.tst
// MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL out, JBM Prof 5
../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 16 netsimoutput testv/stv2MASA2TC48c.wav_sw_48-16_BINAURAL_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 16 netsimoutput testv/stv2MASA2TC48c.wav_sw_48-16_BINAURAL_JBM5.tst
// OMASA 2Dir2TC 1ISM at br sw techs 13.2 to 512 kbps start 24.4 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_IR out, JBM Prof 5
../IVAS_cod -ism_masa 1 2 testv/stvISM1.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_1ism.bin 48 testv/stvOMASA_1ISM_2MASA2TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_IR 48 netsimoutput testv/stvOMASA_1ISM_2MASA2TC48c.wav_BINAURAL_ROOM_IR_sw_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_IR 48 netsimoutput testv/stvOMASA_1ISM_2MASA2TC48c.wav_BINAURAL_ROOM_IR_sw_48-48_JBM5.tst
// OMASA 2Dir2TC 2ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 48kHz out, 7.1 out, JBM Prof 5
../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv NULL testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_2ism.bin 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1 48 netsimoutput testv/stvOMASA_2ISM_2MASA2TC48c.wav_7_1_sw_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 7_1 48 netsimoutput testv/stvOMASA_2ISM_2MASA2TC48c.wav_7_1_sw_48-48_JBM5.tst
// OMASA 2Dir2TC 3ISM at br sw techs 13.2 to 512 kbps start 160 kbps, 48kHz in, 48kHz out, MONO out, JBM Prof 5
../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_160k_omasatechs_3ism.bin 48 testv/stvOMASA_3ISM_2MASA2TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP MONO 48 netsimoutput testv/stvOMASA_3ISM_2MASA2TC48c.wav_MONO_sw_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP MONO 48 netsimoutput testv/stvOMASA_3ISM_2MASA2TC48c.wav_MONO_sw_48-48_JBM5.tst
// OMASA 2Dir1TC 3ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 32kHz out, STEREO out, JBM Prof 5
../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA1TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_3ism.bin 48 testv/stvOMASA_3ISM_2MASA1TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP STEREO 32 netsimoutput testv/stvOMASA_3ISM_2MASA1TC48c.wav_STEREO_sw_48-32_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP STEREO 32 netsimoutput testv/stvOMASA_3ISM_2MASA1TC48c.wav_STEREO_sw_48-32_JBM5.tst
// OMASA 1Dir2TC 3ISM at br sw techs 13.2 to 512 kbps start 24.4 kbps, 32kHz in, 48kHz out, 5.1.2 out, JBM Prof 5
../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_3ism.bin 32 testv/stvOMASA_3ISM_1MASA2TC32c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 5_1_2 48 netsimoutput testv/stvOMASA_3ISM_1MASA2TC32c.wav_5_1_2_sw_32-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 5_1_2 48 netsimoutput testv/stvOMASA_3ISM_1MASA2TC32c.wav_5_1_2_sw_32-48_JBM5.tst
// OMASA 1Dir1TC 4ISM at br sw techs 13.2 to 512 kbps start 32 kbps, 48kHz in, 48kHz out, BINAURAL out, JBM Prof 5
../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA1TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_32k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_1MASA1TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stvOMASA_4ISM_1MASA1TC48c.wav_BINAURAL_sw_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stvOMASA_4ISM_1MASA1TC48c.wav_BINAURAL_sw_48-48_JBM5.tst
// OMASA 1Dir2TC 4ISM at br sw techs 13.2 to 512 kbps start 80 kbps, 48kHz in, 48kHz out, FOA out, JBM Prof 5
../IVAS_cod -ism_masa 4 2 NULL testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_80k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_1MASA2TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stvOMASA_4ISM_1MASA2TC48c.wav_FOA_sw_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stvOMASA_4ISM_1MASA2TC48c.wav_FOA_sw_48-48_JBM5.tst
// OMASA 2Dir2TC 4ISM at 256 kbps, 48kHz in, 48kHz out, EXT out, JBM Prof 5
../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv NULL testv/stvISM4.csv testv/stv2MASA2TC48c.met 256000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/stvOMASA_4ISM_2MASA2TC48c.wav_EXT_256000_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/stvOMASA_4ISM_2MASA2TC48c.wav_EXT_256000_48-48_JBM5.tst
// OMASA 1Dir1TC 4ISM 48 kbps 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out custom configuration
../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA1TC48c.met 48000 48 testv/stvOMASA_4ISM_1MASA1TC48c.wav bit
......@@ -1993,7 +1997,7 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_10pct.g
// OSBA 2OA 2ISM bitrate switching, 32kHz in, 48kHz out, BINAURAL_ROOM_REVERB out, JBM Prof 5
../IVAS_cod -ism_sba 2 2 testv/stvISM1.csv testv/stvISM2.csv ../scripts/switchPaths/sw_24k4_256k.bin 32 testv/stvOSBA_2ISM_2OA32c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_REVERB 48 netsimoutput testv/stvOSBA_2ISM_2OA32c.wav_BINAURAL_brsw_32-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_REVERB 48 netsimoutput testv/stvOSBA_2ISM_2OA32c.wav_BINAURAL_brsw_32-48_JBM5.tst
// OMASA 2Dir2TC 4ISM at 80 kbps, 48kHz in, 48kHz out, BINAURAL out, default object editing, 1SEP-PARAM
......@@ -2003,12 +2007,12 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit
// OMASA 2Dir2TC 4ISM at 256 kbps, 48kHz in, 48kHz out, BINAURAL out, object editing, JBM Prof 5, DISC
../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met 256000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stvOMASA_4ISM_2MASA2TC48c.wav_BINAURAL_256000_48-48_OE_JBM5.tst
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stvOMASA_4ISM_2MASA2TC48c.wav_BINAURAL_256000_48-48_OE_JBM5.tst
// OMASA 2Dir2TC 2ISM at 96 kbps, 48kHz in, 48kHz out, FOA out, object editing, JBM Prof 5, DISC
../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv testv/stvISM2.csv testv/stv2MASA2TC48c.met 96000 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stvOMASA_2ISM_2MASA2TC48c.wav_FOA_96000_48-48_OE_JBM5.tst
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stvOMASA_2ISM_2MASA2TC48c.wav_FOA_96000_48-48_OE_JBM5.tst
// OMASA 2Dir2TC 2ISM br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 48kHz out, BINAURAL out, object editing
../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv testv/stvISM2.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_2ism.bin 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit
......@@ -2021,7 +2025,7 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit
// OSBA 2OA 3ISM at 128 kbps, 48kHz in, 48kHz out, FOA out, object editing, JBM Prof 5, DISC
../IVAS_cod -ism_sba 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_2OA48c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stvOSBA_3ISM_2OA48c.wav_FOA_128000_48-48_OE_JBM5.tst
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stvOSBA_3ISM_2OA48c.wav_FOA_128000_48-48_OE_JBM5.tst
// OSBA 2OA 3ISM at bitrate switching 13.2 to 512 kbps, 48kHz in, 48kHz out, BINAURAL out, object editing
../IVAS_cod -ism_sba 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stvOSBA_3ISM_2OA48c.wav bit
......@@ -2039,12 +2043,12 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g1
// 3 ISM with metadata at 24.4 kbps, 48 kHz in, 48 kHz out, FOA out, object editing, JBM Prof 5, PARAM_ISM
../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 24400 48 testv/stv3ISM48s.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stv3ISM48s.wav_24400_48-48_FOA_OE_JBM5.tst
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stv3ISM48s.wav_24400_48-48_FOA_OE_JBM5.tst
// 3 ISM with metadata at 384 kbps, 48 kHz in, 48 kHz out, FOA out, object editing, JBM Prof 5, DISC
../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 384000 48 testv/stv3ISM48s.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit NULL -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stv3ISM48s.wav_384000_48-48_FOA_OE_JBM5.tst
../IVAS_dec -obj_edit NULL -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stv3ISM48s.wav_384000_48-48_FOA_OE_JBM5.tst
// 4 ISM with metadata bitrate switching from 32 kbps to 48 kbps, 48 kHz in, 48 kHz out, BINAURAL_ROOM_IR out, object editing
../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv ../scripts/switchPaths/sw_32-48k_10fr.bin 48 testv/stv4ISM48s.wav bit
......@@ -2053,4 +2057,4 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit
// 4 ISM with metadata bitrate switching from 48 kbps to 32 kbps, 48 kHz in, 48 kHz out, BINAURAL out, object editing, JBM Prof 5
../IVAS_cod -ism 4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv ../scripts/switchPaths/sw_48-32k_10fr.bin 48 testv/stv4ISM48s.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stv4ISM48s.wav_sw_48-48_BINAURAL_OE_JBM5.tst
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stv4ISM48s.wav_sw_48-48_BINAURAL_OE_JBM5.tst
......@@ -250,14 +250,14 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g1
// Codec A at 13.20 kbps, 32kHz in, 32kHz out, DTX, JBM Prof 5
../IVAS_cod -dtx 13200 32 testv/stv32c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 32 netsimoutput testv/stv32c_13k20_32-32_DTX_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 32 netsimoutput testv/stv32c_13k20_32-32_DTX_JBM5.tst
// Codec B at 16.40 kbps, 32kHz in, 32kHz out, DTX, JBM Prof 5
../IVAS_cod -dtx 16400 32 testv/stv32c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 32 netsimoutput testv/stv32c_16k40_32-32_DTX_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 32 netsimoutput testv/stv32c_16k40_32-32_DTX_JBM5.tst
// Codec B at 13.20 kbps, 32kHz in, 32kHz out, JBM Prof 9, Channel aware
../IVAS_cod -rf 13200 32 testv/stv32c.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 32 netsimoutput testv/stv32c_13k20_CA_32-32_JBM9.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 32 netsimoutput testv/stv32c_13k20_CA_32-32_JBM9.tst
......@@ -1582,143 +1582,143 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g1
// stereo at 32 kbps, 48 kHz in, 32 kHz out, DTX on, JBM Prof 0
../IVAS_cod -stereo -dtx 32000 48 testv/ltv48_STEREO.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_0.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP STEREO 32 netsimoutput testv/ltv48_STEREO.wav_stereo_32000_48-32_DTX_JBM0.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP STEREO 32 netsimoutput testv/ltv48_STEREO.wav_stereo_32000_48-32_DTX_JBM0.tst
// 4 ISm with metadata at 64 kbps, 48 kHz in, 48 kHz out, DTX on, EXT out, JBM Prof 0
../IVAS_cod -dtx -ism 4 testv/ltvISM1.csv testv/ltvISM2.csv testv/ltvISM3.csv testv/ltvISM4.csv 64000 48 testv/ltv48_4ISM.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_0.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/ltv48_4ISM.wav_64000_48-48_DTX_EXT_JBM0.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/ltv48_4ISM.wav_64000_48-48_DTX_EXT_JBM0.tst
// MASA 1dir 1TC at 13.2 kbps, 48kHz in, 32kHz out, DTX on, EXT out, JBM Prof 0
../IVAS_cod -dtx -masa 1 testv/ltv48_MASA1TC.met 13200 48 testv/ltv48_MASA1TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_0.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP EXT 32 netsimoutput testv/ltv48_MASA1TC.wav_13200_48-32_DTX_EXT_JBM0.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP EXT 32 netsimoutput testv/ltv48_MASA1TC.wav_13200_48-32_DTX_EXT_JBM0.tst
// SBA at 24.4 kbps, 32kHz in, 32kHz out, DTX on, BINAURAL out, JBM 0
../IVAS_cod -sba 3 -dtx 24400 32 testv/ltv32_HOA3.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_0.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 32 netsimoutput testv/ltv32_HOA3.wav_SBA_24400_32-32_DTX_Binaural_JBM0.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 32 netsimoutput testv/ltv32_HOA3.wav_SBA_24400_32-32_DTX_Binaural_JBM0.tst
// stereo at 48 kbps, 16 kHz in, 16 kHz out, DTX on, JBM Prof 5
../IVAS_cod -stereo -dtx 48000 16 testv/ltv16_STEREO.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP STEREO 16 netsimoutput testv/ltv16_STEREO.wav_stereo_48000_16-16_DTX_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP STEREO 16 netsimoutput testv/ltv16_STEREO.wav_stereo_48000_16-16_DTX_JBM5.tst
// 4 ISm with metadata at 32 kbps, 48 kHz in, 48 kHz out, FOA out, JBM Prof 5
../IVAS_cod -ism 4 testv/ltvISM1.csv testv/ltvISM2.csv testv/ltvISM3.csv testv/ltvISM4.csv 32000 48 testv/ltv48_4ISM.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_4ISM.wav_32000_48-48_FOA_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_4ISM.wav_32000_48-48_FOA_JBM5.tst
// 3 ISM with metadata bitrate switching from 48 kbps to 32 kbps, 48 kHz in, 32 kHz out, DTX, BINAURAL_ROOM_IR out, JBM Prof 5
../IVAS_cod -dtx -ism 3 testv/ltvISM1.csv testv/ltvISM2.csv testv/ltvISM3.csv ../scripts/switchPaths/sw_48-32k_10fr.bin 48 testv/ltv48_3ISM.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_IR 32 netsimoutput testv/ltv48_3ISM.wav_sw_48-32_DTX_BINAURAL_ROOM_IR_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_IR 32 netsimoutput testv/ltv48_3ISM.wav_sw_48-32_DTX_BINAURAL_ROOM_IR_JBM5.tst
// SBA at 80 kbps, 32kHz in, 32kHz out, HOA3 out, JBM Prof 5
../IVAS_cod -sba 3 80000 32 testv/ltv32_HOA3.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP HOA3 32 netsimoutput testv/ltv32_HOA3.wav_SBA_80000_32-32_HOA3_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP HOA3 32 netsimoutput testv/ltv32_HOA3.wav_SBA_80000_32-32_HOA3_JBM5.tst
// SBA at 13.2 kbps, 48kHz in, 48kHz out, BINAURAL out, JBM Prof 5
../IVAS_cod -sba 1 13200 48 testv/ltv48_FOA.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/ltv48_FOA.wav_SBA_13200_48-48_BINAURAL_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/ltv48_FOA.wav_SBA_13200_48-48_BINAURAL_JBM5.tst
// Multi-channel 5_1 at 384 kbps, 48kHz in, 48kHz out, 7_1_4 out, JBM Prof 5
../IVAS_cod -mc 5_1 384000 48 testv/ltv48_MC51.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/ltv48_MC51.wav_MC51_384000_48-48_7_1_4_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/ltv48_MC51.wav_MC51_384000_48-48_7_1_4_JBM5.tst
// Multi-channel 7_1_4 at 256 kbps, 48kHz in, 48kHz out, 7_1_4 out, JBM Prof 5
../IVAS_cod -mc 7_1_4 256000 48 testv/ltv48_MC714.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/ltv48_MC714.wav_MC714_256000_48-48_7_1_4_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/ltv48_MC714.wav_MC714_256000_48-48_7_1_4_JBM5.tst
// Multi-channel 7_1 bitrate switching, 48kHz in, 32kHz out, BINAURAL_ROOM_REVERB out, HR, JBM Prof 5
../IVAS_cod -mc 7_1 ../scripts/switchPaths/sw_24k4_384k.bin 48 testv/ltv48_MC71.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -T testv/headrot.csv -Tracefile tracefile_dec -VOIP binaural_room_reverb 32 netsimoutput testv/ltv48_MC71.wav_MC71_brsw_48-32_BinauralRoomReverb_Headrot_JBM5.tst
../IVAS_dec -T testv/headrot.csv -no_delay_cmp -Tracefile tracefile_dec -VOIP binaural_room_reverb 32 netsimoutput testv/ltv48_MC71.wav_MC71_brsw_48-32_BinauralRoomReverb_Headrot_JBM5.tst
// Multi-channel 7_1_4 bitrate switching, 48kHz in, 48kHz out, BINAURAL out, HR, JBM Prof 5
../IVAS_cod -mc 7_1_4 ../scripts/switchPaths/sw_24k4_384k.bin 48 testv/ltv48_MC714.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -T testv/headrot.csv -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/ltv48_MC714.wav_MC714_brsw_48-48_BINAURAL_Headrot_JBM5.tst
../IVAS_dec -T testv/headrot.csv -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/ltv48_MC714.wav_MC714_brsw_48-48_BINAURAL_Headrot_JBM5.tst
// MASA 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 32kHz out, 5_1 out, JBM Prof 5
../IVAS_cod -masa 1 testv/ltv48_MASA1TC.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/ltv48_MASA1TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 5_1 32 netsimoutput testv/ltv48_MASA1TC.wav_sw_48-32_5_1_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 5_1 32 netsimoutput testv/ltv48_MASA1TC.wav_sw_48-32_5_1_JBM5.tst
// MASA 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, STEREO out, JBM Prof 5
../IVAS_cod -masa 1 testv/ltv48_MASA1TC.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/ltv48_MASA1TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP STEREO 48 netsimoutput testv/ltv48_MASA1TC.wav_sw_48-48_STEREO_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP STEREO 48 netsimoutput testv/ltv48_MASA1TC.wav_sw_48-48_STEREO_JBM5.tst
// MASA 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, FOA out, JBM Prof 5
../IVAS_cod -masa 1 testv/ltv48_MASA1TC.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/ltv48_MASA1TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_MASA1TC.wav_sw_48-48_FOA_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_MASA1TC.wav_sw_48-48_FOA_JBM5.tst
// MASA 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL out, JBM Prof 5
../IVAS_cod -masa 2 testv/ltv48_MASA2TC.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/ltv48_MASA2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 16 netsimoutput testv/ltv48_MASA2TC.wav_sw_48-16_BINAURAL_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 16 netsimoutput testv/ltv48_MASA2TC.wav_sw_48-16_BINAURAL_JBM5.tst
// MASA 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 32kHz out, MONO out, JBM Prof 5
../IVAS_cod -masa 2 testv/ltv48_MASA2TC.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/ltv48_MASA2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP MONO 32 netsimoutput testv/ltv48_MASA2TC.wav_sw_48-32_MONO_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP MONO 32 netsimoutput testv/ltv48_MASA2TC.wav_sw_48-32_MONO_JBM5.tst
// MASA 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, EXT out, JBM Prof 5
../IVAS_cod -masa 2 testv/ltv48_MASA2TC.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/ltv48_MASA2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/ltv48_MASA2TC.wav_sw_48-48_EXT_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/ltv48_MASA2TC.wav_sw_48-48_EXT_JBM5.tst
// MASA 1TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL out, JBM Prof 5
../IVAS_cod -masa 1 testv/ltv48_MASA1TC.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/ltv48_MASA1TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 16 netsimoutput testv/ltv48_MASA1TC.wav_sw_48-16_BINAURAL_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 16 netsimoutput testv/ltv48_MASA1TC.wav_sw_48-16_BINAURAL_JBM5.tst
// OMASA 2TC 1ISM at br sw techs 13.2 to 512 kbps start 24.4 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_IR out, JBM Prof 5
../IVAS_cod -ism_masa 1 2 testv/ltv48_OMASA_1ISM_2TC_ISM1.csv testv/ltv48_OMASA_1ISM_2TC.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_1ism.bin 48 testv/ltv48_OMASA_1ISM_2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_IR 48 netsimoutput testv/ltv48_OMASA_1ISM_2TC.wav_BINAURAL_ROOM_IR_sw_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_IR 48 netsimoutput testv/ltv48_OMASA_1ISM_2TC.wav_BINAURAL_ROOM_IR_sw_48-48_JBM5.tst
// OMASA 2TC 2ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 48kHz out, 7.1 out, JBM Prof 5
../IVAS_cod -ism_masa 2 2 testv/ltv48_OMASA_2ISM_2TC_ISM1.csv NULL testv/ltv48_OMASA_2ISM_2TC.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_2ism.bin 48 testv/ltv48_OMASA_2ISM_2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1 48 netsimoutput testv/ltv48_OMASA_2ISM_2TC.wav_7_1_sw_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 7_1 48 netsimoutput testv/ltv48_OMASA_2ISM_2TC.wav_7_1_sw_48-48_JBM5.tst
// OMASA 2TC 3ISM at br sw techs 13.2 to 512 kbps start 160 kbps, 48kHz in, 48kHz out, MONO out, JBM Prof 5
../IVAS_cod -ism_masa 3 2 testv/ltv48_OMASA_3ISM_2TC_ISM1.csv testv/ltv48_OMASA_3ISM_2TC_ISM2.csv testv/ltv48_OMASA_3ISM_2TC_ISM3.csv testv/ltv48_OMASA_3ISM_2TC.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_160k_omasatechs_3ism.bin 48 testv/ltv48_OMASA_3ISM_2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP MONO 48 netsimoutput testv/ltv48_OMASA_3ISM_2TC.wav_MONO_sw_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP MONO 48 netsimoutput testv/ltv48_OMASA_3ISM_2TC.wav_MONO_sw_48-48_JBM5.tst
// OMASA 1TC 3ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 32kHz out, STEREO out, JBM Prof 5
../IVAS_cod -ism_masa 3 1 testv/ltv48_OMASA_3ISM_1TC_ISM1.csv testv/ltv48_OMASA_3ISM_1TC_ISM2.csv testv/ltv48_OMASA_3ISM_1TC_ISM3.csv testv/ltv48_OMASA_3ISM_1TC.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_3ism.bin 48 testv/ltv48_OMASA_3ISM_1TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP STEREO 32 netsimoutput testv/ltv48_OMASA_3ISM_1TC.wav_STEREO_sw_48-32_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP STEREO 32 netsimoutput testv/ltv48_OMASA_3ISM_1TC.wav_STEREO_sw_48-32_JBM5.tst
// OMASA 2TC 3ISM at br sw techs 13.2 to 512 kbps start 24.4 kbps, 32kHz in, 48kHz out, 5.1.2 out, JBM Prof 5
../IVAS_cod -ism_masa 3 2 testv/ltv48_OMASA_3ISM_2TC_ISM1.csv testv/ltv48_OMASA_3ISM_2TC_ISM2.csv testv/ltv48_OMASA_3ISM_2TC_ISM3.csv testv/ltv48_OMASA_3ISM_2TC.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_3ism.bin 32 testv/ltv32_OMASA_3ISM_2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP 5_1_2 48 netsimoutput testv/ltv32_OMASA_3ISM_2TC.wav_5_1_2_sw_32-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP 5_1_2 48 netsimoutput testv/ltv32_OMASA_3ISM_2TC.wav_5_1_2_sw_32-48_JBM5.tst
// OMASA 1TC 4ISM at br sw techs 13.2 to 512 kbps start 32 kbps, 48kHz in, 48kHz out, BINAURAL out, JBM Prof 5
../IVAS_cod -ism_masa 4 1 testv/ltv48_OMASA_4ISM_1TC_ISM1.csv testv/ltv48_OMASA_4ISM_1TC_ISM2.csv testv/ltv48_OMASA_4ISM_1TC_ISM3.csv testv/ltv48_OMASA_4ISM_1TC_ISM4.csv testv/ltv48_OMASA_4ISM_1TC.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_32k_omasatechs_4ism.bin 48 testv/ltv48_OMASA_4ISM_1TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/ltv48_OMASA_4ISM_1TC.wav_BINAURAL_sw_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/ltv48_OMASA_4ISM_1TC.wav_BINAURAL_sw_48-48_JBM5.tst
// OMASA 2TC 4ISM at br sw techs 13.2 to 512 kbps start 80 kbps, 48kHz in, 48kHz out, FOA out, JBM Prof 5
../IVAS_cod -ism_masa 4 2 NULL testv/ltv48_OMASA_4ISM_2TC_ISM2.csv testv/ltv48_OMASA_4ISM_2TC_ISM3.csv testv/ltv48_OMASA_4ISM_2TC_ISM4.csv testv/ltv48_OMASA_4ISM_2TC.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_80k_omasatechs_4ism.bin 48 testv/ltv48_OMASA_4ISM_2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_OMASA_4ISM_2TC.wav_FOA_sw_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_OMASA_4ISM_2TC.wav_FOA_sw_48-48_JBM5.tst
// OMASA 2TC 4ISM at 256 kbps, 48kHz in, 48kHz out, EXT out, JBM Prof 5
../IVAS_cod -ism_masa 4 2 testv/ltv48_OMASA_4ISM_2TC_ISM1.csv testv/ltv48_OMASA_4ISM_2TC_ISM2.csv NULL testv/ltv48_OMASA_4ISM_2TC_ISM4.csv testv/ltv48_OMASA_4ISM_2TC.met 256000 48 testv/ltv48_OMASA_4ISM_2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/ltv48_OMASA_4ISM_2TC.wav_EXT_256000_48-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/ltv48_OMASA_4ISM_2TC.wav_EXT_256000_48-48_JBM5.tst
// OMASA 1TC 4ISM 48 kbps 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out custom configuration
../IVAS_cod -ism_masa 4 1 testv/ltv48_OMASA_4ISM_1TC_ISM1.csv testv/ltv48_OMASA_4ISM_1TC_ISM2.csv testv/ltv48_OMASA_4ISM_1TC_ISM3.csv testv/ltv48_OMASA_4ISM_1TC_ISM4.csv testv/ltv48_OMASA_4ISM_1TC.met 48000 48 testv/ltv48_OMASA_4ISM_1TC.wav bit
......@@ -1993,7 +1993,7 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_10pct.g
// OSBA 2OA 2ISM bitrate switching, 32kHz in, 48kHz out, BINAURAL_ROOM_REVERB out, JBM Prof 5
../IVAS_cod -ism_sba 2 2 testv/ltvISM1.csv testv/ltvISM2.csv ../scripts/switchPaths/sw_24k4_256k.bin 32 testv/ltv32_OSBA_2ISM_HOA2.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_REVERB 48 netsimoutput testv/ltv32_OSBA_2ISM_HOA2.wav_BINAURAL_brsw_32-48_JBM5.tst
../IVAS_dec -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_REVERB 48 netsimoutput testv/ltv32_OSBA_2ISM_HOA2.wav_BINAURAL_brsw_32-48_JBM5.tst
// OMASA 2TC 4ISM at 80 kbps, 48kHz in, 48kHz out, BINAURAL out, default object editing, 1SEP-PARAM
......@@ -2003,12 +2003,12 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit
// OMASA 2TC 4ISM at 256 kbps, 48kHz in, 48kHz out, BINAURAL out, object editing, JBM Prof 5, DISC
../IVAS_cod -ism_masa 4 2 testv/ltv48_OMASA_4ISM_2TC_ISM1.csv testv/ltv48_OMASA_4ISM_2TC_ISM2.csv testv/ltv48_OMASA_4ISM_2TC_ISM3.csv testv/ltv48_OMASA_4ISM_2TC_ISM4.csv testv/ltv48_OMASA_4ISM_2TC.met 256000 48 testv/ltv48_OMASA_4ISM_2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/ltv48_OMASA_4ISM_2TC.wav_BINAURAL_256000_48-48_OE_JBM5.tst
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/ltv48_OMASA_4ISM_2TC.wav_BINAURAL_256000_48-48_OE_JBM5.tst
// OMASA 2TC 2ISM at 96 kbps, 48kHz in, 48kHz out, FOA out, object editing, JBM Prof 5, DISC
../IVAS_cod -ism_masa 2 2 testv/ltv48_OMASA_2ISM_2TC_ISM1.csv testv/ltv48_OMASA_2ISM_2TC_ISM2.csv testv/ltv48_OMASA_2ISM_2TC.met 96000 48 testv/ltv48_OMASA_2ISM_2TC.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_OMASA_2ISM_2TC.wav_FOA_96000_48-48_OE_JBM5.tst
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_OMASA_2ISM_2TC.wav_FOA_96000_48-48_OE_JBM5.tst
// OMASA 2TC 2ISM br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 48kHz out, BINAURAL out, object editing
../IVAS_cod -ism_masa 2 2 testv/ltv48_OMASA_2ISM_2TC_ISM1.csv testv/ltv48_OMASA_2ISM_2TC_ISM2.csv testv/ltv48_OMASA_2ISM_2TC.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_2ism.bin 48 testv/ltv48_OMASA_2ISM_2TC.wav bit
......@@ -2021,7 +2021,7 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit
// OSBA 2OA 3ISM at 128 kbps, 48kHz in, 48kHz out, FOA out, object editing, JBM Prof 5, DISC
../IVAS_cod -ism_sba 3 2 testv/ltv48_OSBA_3ISM_HOA2_ISM1.csv testv/ltv48_OSBA_3ISM_HOA2_ISM2.csv testv/ltv48_OSBA_3ISM_HOA2_ISM3.csv 128000 48 testv/ltv48_OSBA_3ISM_HOA2.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_OSBA_3ISM_HOA2.wav_FOA_128000_48-48_OE_JBM5.tst
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_OSBA_3ISM_HOA2.wav_FOA_128000_48-48_OE_JBM5.tst
// OSBA 2OA 3ISM at bitrate switching 13.2 to 512 kbps, 48kHz in, 48kHz out, BINAURAL out, object editing
../IVAS_cod -ism_sba 3 2 testv/ltv48_OSBA_3ISM_HOA2_ISM1.csv testv/ltv48_OSBA_3ISM_HOA2_ISM2.csv testv/ltv48_OSBA_3ISM_HOA2_ISM3.csv ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/ltv48_OSBA_3ISM_HOA2.wav bit
......@@ -2039,12 +2039,12 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g1
// 3 ISM with metadata at 24.4 kbps, 48 kHz in, 48 kHz out, FOA out, object editing, JBM Prof 5, PARAM_ISM
../IVAS_cod -ism 3 testv/ltvISM1.csv testv/ltvISM2.csv testv/ltvISM3.csv 24400 48 testv/ltv48_3ISM.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_3ISM.wav_24400_48-48_FOA_OE_JBM5.tst
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_3ISM.wav_24400_48-48_FOA_OE_JBM5.tst
// 3 ISM with metadata at 384 kbps, 48 kHz in, 48 kHz out, FOA out, object editing, JBM Prof 5, DISC
../IVAS_cod -ism 3 testv/ltvISM1.csv testv/ltvISM2.csv testv/ltvISM3.csv 384000 48 testv/ltv48_3ISM.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit NULL -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_3ISM.wav_384000_48-48_FOA_OE_JBM5.tst
../IVAS_dec -obj_edit NULL -no_delay_cmp -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/ltv48_3ISM.wav_384000_48-48_FOA_OE_JBM5.tst
// 4 ISM with metadata bitrate switching from 32 kbps to 48 kbps, 48 kHz in, 48 kHz out, BINAURAL_ROOM_IR out, object editing
../IVAS_cod -ism 4 testv/ltvISM1.csv testv/ltvISM2.csv testv/ltvISM3.csv testv/ltvISM4.csv ../scripts/switchPaths/sw_32-48k_10fr.bin 48 testv/ltv48_4ISM.wav bit
......@@ -2053,4 +2053,4 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit
// 4 ISM with metadata bitrate switching from 48 kbps to 32 kbps, 48 kHz in, 48 kHz out, BINAURAL out, object editing, JBM Prof 5
../IVAS_cod -ism 4 testv/ltvISM1.csv testv/ltvISM2.csv testv/ltvISM3.csv testv/ltvISM4.csv ../scripts/switchPaths/sw_48-32k_10fr.bin 48 testv/ltv48_4ISM.wav bit
networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/ltv48_4ISM.wav_sw_48-48_BINAURAL_OE_JBM5.tst
../IVAS_dec -obj_edit ../scripts/object_edit/combined_edit.txt -no_delay_cmp -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/ltv48_4ISM.wav_sw_48-48_BINAURAL_OE_JBM5.tst
Source diff could not be displayed: it is stored in LFS. Options to address this: view the blob.
#!/usr/bin/env python3
import argparse
from pathlib import Path
import pandas as pd
def main(logs_dir, output_filename, measure, days, all_results, diff_thr, ratio_thr, curr_value_thr):
input_path = Path(logs_dir)
logs = [f for f in input_path.iterdir() if f.is_dir()]
# Build dict of scores
formatdict = {}
sha = {}
logdict = {}
for log in logs:
date = log.name
logdict[date] = {}
formatdict[date] = {}
for logfile in log.glob("*.csv"):
tmp = logfile.name.split("-")
job = "-".join(tmp[3:-4])
sha[date] = tmp[-1].split(".")[0]
data = pd.read_csv(logfile, usecols=["testcase", measure, "format"])
logdict[date][job] = {}
formatdict[date][job] = {}
for testcase, value, format in zip(
data["testcase"], data[measure], data["format"]
):
formatdict[date][job][testcase] = format
logdict[date][job][testcase] = value
# Restructure dict
csv_rows = []
formats = []
for date, jobs in logdict.items():
for job, testcases in jobs.items():
for testcase, value in testcases.items():
csv_rows.append((job, testcase, date, value))
formats.append((job, testcase, date, formatdict[date][job][testcase]))
result = pd.DataFrame(csv_rows, columns=["job", "testcase", "date", "value"])
result = result.pivot(
index=["job", "testcase"], columns="date", values="value"
).reset_index()
f = pd.DataFrame(formats, columns=["job", "testcase", "date", "format"])
f = f.pivot(
index=["job", "testcase"], columns="date", values="format"
).reset_index()
if days != -1:
len_history = len(result.columns) - 2
if len_history < days:
print(f"*** Warning: Requested number of days exceeds the number of days in the logs. Will use all {len_history} available days.")
if len_history > days:
remove_days = len_history - days
result = result.drop(result.columns[2:2+remove_days], axis=1)
values = result.iloc[:, 2:]
last_date = values.columns[-1]
result.insert(2, "format", f[last_date])
result.insert(3, "min_date", values.idxmin(axis=1))
result.insert(4, "min_sha", result["min_date"].map(sha))
result.insert(5, "curr_value", values[last_date])
result.insert(6, "min_value", values.min(axis=1))
result.insert(7, "diff", result["curr_value"] - result["min_value"])
result.insert(8, "ratio", result["curr_value"] / result["min_value"])
result.loc[result["min_value"] == 0, "ratio"] = (
1 # Set ratio to 1 for denominator 0
)
if not all_results:
# Filter out test cases above thresholds
result = result[result["diff"] > diff_thr]
result = result[result["ratio"] > ratio_thr]
result = result[result["curr_value"] > curr_value_thr]
result["min_sha"] = "'" + result["min_sha"] # Add apostrophy to prevent Excel reading this as a number
result.to_csv(output_filename, sep=";", index=False)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="logs dir")
parser.add_argument(
"logs_dir",
type=str,
help="Logs dir, e.g. logs",
)
parser.add_argument(
"output_filename",
type=str,
help="Filename of the combined csv file. e.g mld.csv",
)
parser.add_argument(
"--measure",
type=str,
help="Measure for summary, one of MLD MIN_SSNR MAX_ABS_DIFF MIN_ODG, (default: MLD)",
default="MLD",
)
parser.add_argument(
"--days",
type=int,
help="Number of days in history, (default: whole history)",
default=-1,
)
parser.add_argument(
"--all_results",
action="store_true",
help="Output all results, including cases without regression (default: off)",
default=False,
)
parser.add_argument(
"--diff_thr",
type=float,
help="Include test cases with diff above diff_thr, (default: 0.0)",
default=0.0,
)
parser.add_argument(
"--ratio_thr",
type=float,
help="Include test cases with ratio above ratio_thr, (default: 1.0)",
default=1.0,
)
parser.add_argument(
"--curr_value_thr",
type=float,
help="Include test cases with curr_value above curr_value_thr, (default: 0.0)",
default=0.0,
)
args = parser.parse_args()
main(args.logs_dir, args.output_filename, args.measure, args.days, args.all_results, args.diff_thr, args.ratio_thr, args.curr_value_thr)
#!/usr/bin/env python3
import argparse
import pandas as pd
REPRODUCE_REGRESSION_SCRIPT_TMPL = """
#!/bin/bash -x
SCRIPTS_DIR=/usr/local/scripts
LTV_DIR=/usr/local/ltv
MIN_DATE={min_date}
MIN_SHA={min_sha}
LEVEL_SCALING={level_scaling}
TESTCASE="{testcase}"
REF_ENC1={REF_ENC1}
REF_DEC1={REF_DEC1}
DUT_ENC1={DUT_ENC1}
DUT_DEC1={DUT_DEC1}
REF_ENC2={REF_ENC2}
REF_DEC2={REF_DEC2}
DUT_ENC2={DUT_ENC2}
DUT_DEC2={DUT_DEC2}
INV_LEVEL_SCALING=$(awk "BEGIN {{print 1.0 / $LEVEL_SCALING}}")
# Obtain executables from past reference
git checkout `git rev-list -1 --before="$MIN_DATE 22:00:00" ivas-float-update`
echo "ivas_float_update, min version: `git rev-parse HEAD`" > versions.txt
make clean
make -j
mv IVAS_cod IVAS_cod_ref_1
mv IVAS_dec IVAS_dec_ref_1
mv IVAS_rend IVAS_rend_ref_1
git checkout $MIN_SHA
echo "main, min version: `git rev-parse HEAD`" >> versions.txt
make clean
make -j
mv IVAS_cod IVAS_cod_1
mv IVAS_dec IVAS_dec_1
mv IVAS_rend IVAS_rend_1
# Obtain latest executables
git checkout ivas-float-update
git pull
echo "ivas-float-update, current version: `git rev-parse HEAD`" >> versions.txt
make clean
make -j
mv IVAS_cod IVAS_cod_ref_2
mv IVAS_dec IVAS_dec_ref_2
mv IVAS_rend IVAS_rend_ref_2
git checkout main
git pull
echo "main, current version: `git rev-parse HEAD`" >> versions.txt
make clean
make -j
mv IVAS_cod IVAS_cod_2
mv IVAS_dec IVAS_dec_2
mv IVAS_rend IVAS_rend_2
# Get fresh copy of scripts, tests and ci
cp -r $SCRIPTS_DIR/{{scripts,tests,ci,pytest.ini}} .
rm -rf tests/ref tests/dut tests/renderer/ref tests/renderer/cut
python3 ci/remove_unsupported_testcases.py scripts/config/self_test.prm scripts/config/self_test_ltv.prm
# Get LTVs
cp $LTV_DIR/* scripts/testv
# Apply level scaling
tests/scale_pcm.py ./scripts/testv/ "$LEVEL_SCALING"
# Run tests
cp IVAS_rend_ref_1 IVAS_rend_ref
cp IVAS_rend_1 IVAS_rend
python3 -m pytest "$TESTCASE" -n 1 --update_ref 1 --create_ref --param_file scripts/config/self_test_ltv.prm --use_ltv --ref_encoder_path $REF_ENC1 --ref_decoder_path $REF_DEC1
python3 -m pytest "$TESTCASE" -n 1 --create_cut --param_file scripts/config/self_test_ltv.prm --use_ltv --dut_encoder_path $DUT_ENC1 --dut_decoder_path $DUT_DEC1 --mld --ssnr --odg --scalefac $INV_LEVEL_SCALING --junit-xml=report1.xml --html=report1.html --self-contained-html
python3 scripts/parse_xml_report.py report1.xml report1.csv
# Store results from first run
mkdir -p tests1/renderer
cp -r tests/ref tests/dut tests1
cp -r tests/renderer/ref tests1/renderer
cp -r tests/renderer/cut tests1/renderer
cp IVAS_rend_ref_2 IVAS_rend_ref
cp IVAS_rend_2 IVAS_rend
python3 -m pytest "$TESTCASE" -n 1 --update_ref 1 --create_ref --param_file scripts/config/self_test_ltv.prm --use_ltv --ref_encoder_path $REF_ENC2 --ref_decoder_path $REF_DEC2
python3 -m pytest "$TESTCASE" -n 1 --create_cut --param_file scripts/config/self_test_ltv.prm --use_ltv --dut_encoder_path $DUT_ENC2 --dut_decoder_path $DUT_DEC2 --mld --ssnr --odg --scalefac $INV_LEVEL_SCALING --junit-xml=report2.xml --html=report2.html --self-contained-html
python3 scripts/parse_xml_report.py report2.xml report2.csv
"""
def main(critical_list):
critical = pd.read_csv(critical_list, sep=";")
for row_counter, row in critical.iterrows():
# Find level
level_scaling = 1.0
if "lev+10" in row["job"]:
level_scaling = 3.162
if "lev-10" in row["job"]:
level_scaling = 0.3162
# Find executables setup
REF_ENC1 = "IVAS_cod_ref_1"
REF_DEC1 = "IVAS_dec_ref_1"
DUT_ENC1 = "IVAS_cod_1"
DUT_DEC1 = "IVAS_dec_1"
REF_ENC2 = "IVAS_cod_ref_2"
REF_DEC2 = "IVAS_dec_ref_2"
DUT_ENC2 = "IVAS_cod_2"
DUT_DEC2 = "IVAS_dec_2"
if "dec" in row["job"]:
DUT_ENC1 = "IVAS_cod_ref_1"
DUT_ENC2 = "IVAS_cod_ref_2"
if "enc" in row["job"]:
DUT_DEC1 = "IVAS_dec_ref_1"
DUT_DEC2 = "IVAS_dec_ref_2"
script_content = REPRODUCE_REGRESSION_SCRIPT_TMPL.format(
min_date=row["min_date"],
min_sha=row["min_sha"][1:],
level_scaling=level_scaling,
testcase=row["testcase"],
REF_ENC1=REF_ENC1,
REF_DEC1=REF_DEC1,
DUT_ENC1=DUT_ENC1,
DUT_DEC1=DUT_DEC1,
REF_ENC2=REF_ENC2,
REF_DEC2=REF_DEC2,
DUT_ENC2=DUT_ENC2,
DUT_DEC2=DUT_DEC2,
)
script_filename = f"regression_{row_counter+2:03d}.bash"
with open(script_filename, "w") as f:
f.write(script_content)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Generate bash scripts to reproduce test cases from critical testcase csv list")
parser.add_argument(
"critical_list",
type=str,
help="critical file list, e.g. critical.csv",
)
args = parser.parse_args()
main(args.critical_list)
#!/usr/bin/env python3
from pathlib import Path
from scipy.io.wavfile import read, write
import numpy as np
MAX_NUM_CH = 20 # number of channel indices in file
MIN_DURATION_MS = 1200 # minimum duration needed for all indices at 16kHz
TESTV_DIR = Path(__file__).parent.joinpath("testv")
def create_vector(fs: int, num_ch: int):
in_file = TESTV_DIR / f"spectral_{fs}.wav"
# requires spectral_{16,32,48}.wav
if not in_file.exists():
raise FileNotFoundError(f"Source file {in_file} not found!")
# validate num_ch
if num_ch > MAX_NUM_CH or num_ch < 1:
raise ValueError(
f"Requested channel count of {num_ch} channels is invalid. Must be between 1 and {MAX_NUM_CH}!"
)
_, data = read(in_file)
# split source file into parts
part_len = data.shape[0] // MAX_NUM_CH
parts = data.reshape(MAX_NUM_CH, part_len).T
duration = fs * MIN_DURATION_MS
out = np.zeros([duration, num_ch], dtype=np.int16)
# populate output vector, loop over the channel indices
# until the duration is reached
for i in range(duration // part_len):
for ch in range(num_ch):
if i % num_ch == ch:
out[i * part_len : (i + 1) * part_len, ch] = parts[:, ch]
write(TESTV_DIR / f"spectral_test_{num_ch}ch_{fs}kHz.wav", fs * 1000, out)
def main():
for fs in [16, 32, 48]:
for ch in range(1, 21):
create_vector(fs, ch)
if __name__ == "__main__":
main()
......@@ -6,13 +6,13 @@ printf "Cleaning old version of LC3plus\n"
rm -rf lib_lc3plus
printf "Downloading LC3plus code\n"
if false; then
if true; then
# Waiting for official ETSI release.
# TODO: add new URL, remove `if false` when package goes public
curl -o ./lc3plus_sources.zip NEW_URL_HERE
curl -o ./lc3plus_sources.zip https://www.etsi.org/deliver/etsi_ts/103600_103699/103634/01.05.01_60/ts_103634v010501p0.zip
unzip lc3plus_sources.zip -d .
rm lc3plus_sources.zip
cp -r "ETSI_Release/<package name here>/src/floating_point" lib_lc3plus
cp -r "ETSI_Release/LC3plus_ETSI_src_v5f640bd48cc_20240516/src/floating_point" lib_lc3plus
rm -r ETSI_Release
else
# Temp solution for downloading WIP ETSI package
......@@ -57,6 +57,10 @@ find lib_lc3plus -name '*.[ch]' -type f -print0 | \
xargs -0 -I {} \
sed -i 's/^#[[:space:]]\+/#/' {}
# fix for sanitizer issues
sed -i 's/st->low << 8/(LC3_INT)((LC3_UINT32)st->low << 8)/' lib_lc3plus/ari_codec.c
sed -i 's/~3/(uintptr_t)(~3)/' lib_lc3plus/lc3plus.c
# Add .clang-format file to lib_lc3plus to disable formatting there
printf "Disabling clang-format in lib_lc3plus directory\n"
printf '
......
......@@ -227,6 +227,8 @@ find $targetdir -name "*.[ch]" -exec sed -i.bak -e "s/\(0x[0-9a-fA-F]*\)UL/\(\(u
# run wmc_tool, exit if the command fails
set -e
touch wmc_tool_output.txt
trap 'echo "Error calling WMC tool: $?"; cat wmc_tool_output.txt' ERR
"$scriptdir/tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >>wmc_tool_output.txt 2>&1
"$scriptdir/tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >>wmc_tool_output.txt 2>&1
for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool
......@@ -241,6 +243,7 @@ else
# ISAR post rend
"$scriptdir/tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$lc3plus_fftdir" >>wmc_tool_output.txt 2>&1
fi
trap - ERR
set +e
# automatically enable #define WMOPS in options.h
......
......@@ -647,7 +647,7 @@ def runner_setup(runner, args):
"0",
jbm_suffix,
]
dec_options = ["-Tracefile", "{dec_file_name}.tracefile_dec", "-VOIP"]
dec_options = ["-Tracefile", "{dec_file_name}.tracefile_dec", "-no_delay_cmp", "-VOIP"]
add_to_proc_chain(bs_proc_chain, jbm_cmd, dec_options)
if args["sidstart"]:
......@@ -771,7 +771,7 @@ def analyzer_setup(analyzer, args):
"0",
jbm_suffix,
]
dec_options = ["-Tracefile", "{dec_file_name}.tracefile_dec", "-VOIP"]
dec_options = ["-Tracefile", "{dec_file_name}.tracefile_dec", "-no_delay_cmp", "-VOIP"]
add_to_proc_chain(bs_proc_chain, jbm_cmd, dec_options)
if args["sidstart"]:
......
......@@ -30,7 +30,6 @@
the United Nations Convention on Contracts on the International Sales of Goods.
"""
import errno
import os
import platform
......@@ -42,7 +41,6 @@ import urllib
import urllib.parse
import numpy
import prepare_combined_format_inputs
import pyaudio3dtools
import pyivastest.constants as constants
import pyivastest.ivas_svn as svn
......@@ -63,7 +61,16 @@ MODES = {
"5_1_4": "5_1_4",
"7_1_4": "7_1_4",
},
"-ISM": {"1": "ISM1", "2": "ISM2", "3": "ISM3", "4": "ISM4", "+1": "ISM+1", "+2": "ISM+2", "+3": "ISM+3", "+4": "ISM+4"},
"-ISM": {
"1": "ISM1",
"2": "ISM2",
"3": "ISM3",
"4": "ISM4",
"+1": "ISM+1",
"+2": "ISM+2",
"+3": "ISM+3",
"+4": "ISM+4",
},
"-SBA": {
"-3": "HOA3",
"3": "HOA3",
......@@ -198,7 +205,7 @@ class SelfTest(IvasScriptsCommon.IvasScript):
help="Run the decoder under test with specified render framn size",
default=20,
choices=[5, 10, 20],
type=int
type=int,
)
if shutil.which("valgrind"):
self.valgrind = [
......@@ -522,7 +529,6 @@ class SelfTest(IvasScriptsCommon.IvasScript):
# PESQ
if self.run_pesq:
pesq_success = True
pesq_fs = min([16000, mode_dict["in_fs"], mode_dict["out_fs"]])
in_nchans = constants.OC_TO_NCHANNELS[
......@@ -564,11 +570,9 @@ class SelfTest(IvasScriptsCommon.IvasScript):
and not ref_condition_corrupt
and not ref_condition_run_error
):
fd_ref, decoded_item_ref_mono = tempfile.mkstemp(".pcm")
os.close(fd_ref)
if mode_dict["out_fs"] > pesq_fs or n_channels > 1:
pyaudio3dtools.audiofile.mono(
decoded_item_ref,
decoded_item_ref_mono,
......@@ -629,7 +633,6 @@ class SelfTest(IvasScriptsCommon.IvasScript):
and not test_condition_corrupt
and not test_condition_run_error
):
fd_test, decoded_item_test_mono = tempfile.mkstemp((".pcm"))
os.close(fd_test)
if mode_dict["out_fs"] > pesq_fs or n_channels > 1:
......@@ -1004,19 +1007,8 @@ class SelfTest(IvasScriptsCommon.IvasScript):
# check if we need to produce missing combined formats
if not os.path.exists(in_file):
if is_osba_or_omasa:
self.logger.info("Creating missing combined formats test vectors...")
prepare_combined_format_inputs.main()
if not os.path.exists(in_file):
self.logger.error(f"Test vector {in_file} does not exist!")
raise FileNotFoundError(
errno.ENOENT, os.strerror(errno.ENOENT), in_file
)
else:
self.logger.error(f"Test vector {in_file} does not exist!")
raise FileNotFoundError(
errno.ENOENT, os.strerror(errno.ENOENT), in_file
)
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), in_file)
# handle intermediate processing steps, e.g. networksimulator, eid-xor, ...
in_file = bs_enc_file
......@@ -1174,7 +1166,6 @@ class SelfTest(IvasScriptsCommon.IvasScript):
return mode_dict
def run(self):
self.parse_args()
if self.args["list_conditions"] is True:
......@@ -1542,7 +1533,9 @@ class SelfTest(IvasScriptsCommon.IvasScript):
logger_name="{}.testrunner".format(self.logger.name),
)
test_runner.decoder_cmdline_options.extend(["-fr", f"{self.args['dut_fr']}"])
test_runner.decoder_cmdline_options.extend(
["-fr", f"{self.args['dut_fr']}"]
)
test_runner.set_flat_mode_list(run_dict)
test_runner.run()
self.logger.console(" ")
......