Loading .gitignore +0 −87 Original line number Diff line number Diff line Loading @@ -76,90 +76,3 @@ Externals/ # coan output files that are created when cleaning out switches coan_out_* /COMPLEXITY /res /tv /wmops /Workspace_msvc/renderer.args.json /Workspace_msvc/encoder.args.json /Workspace_msvc/decoder.args.json /scripts/mem_analysis_enc_VBR_5k9.csv /scripts/mem_analysis_enc_STEREO_sw.png /scripts/mem_analysis_enc_STEREO_sw.csv /scripts/mem_analysis_enc_STEREO_16k4_DTX.csv *.pwv /dcr_ism1 /bwe_clicks_ism1 /BWD_issue /.ipynb_checkpoints /scripts/.ipynb_checkpoints /scripts/wmops_analysis /scripts/wmops_analysis_new /tcx_hq_problem_ism1 /scripts/dly_error_profiles/dly_profile_19_.dat /build.txt /bit.64k /bit.32k /bit /binaural_loudness.ipynb /tmp.txt /syn.wav /syn.ref /syn.64k.0.csv /syn.64k /syn.32k /stvST32c_-stereo_32000_32.bit /split_renderer_config_768_3dof_cldfbpc.txt /split_out_sba_lcld_20ms_out.wav /split_out_sba_lcld_20ms.pkt /split_out_mc_lc3plus_20ms_out.wav /split_out_mc_lc3plus_20ms.pkt /run_ivas_codec.sh /report.html /report-junit.xm /out.wav /ltv48_1ISM.cut14.wav.0.csv /ltv48_1ISM.cut14.pcm /ltv48_1ISM.cut14.dec.pcm.0.csv /ltv48_1ISM.cut14.64k.dec.pcm.0.csv /ltv48_1ISM.cut14.64k.dec.pcm /ltv48_1ISM.cut14.32k.dec.pcm /IvasBuilder.txt /ivas.192 /ism_loudness_stv48_48kHz.md /ism_loudness_stv48_32kHz.md /ism_loudness_sel48_48kHz.md /ism_loudness_old.xlsx /ism_loudness_ltv48_ISM4.md /ism_loudness_ltv48_ISM3.md /ism_loudness_ltv48_ISM2.md /ism_loudness_ltv48_ISM1.md /ism_loudness_ltv48_48kHz.md /ism_loudness.xlsx /ism_loudness.py /HOA2_to_BINAURAL_ROOM_REVERBNone_rend_config_combined_20msNone_0-1000_2-500_1-500.wav /git_blame_string.sh /get_license_table.py /enc_out_mc.pkt /enc_out.pkt /cut_ism.py /scripts/Vlad_mergeNewsletters.py /scripts/Vlad_extract_max_num_ind.py /scripts/tables_obj.txt /scripts/tables_exe.txt /scripts/requirements.txt /scripts/parseNewsletterWmops.py /scripts/output.xlsx /scripts/functions_obj.txt /scripts/functions_exe.txt /scripts/dep_tree.txt /scripts/cmplx_evs_in_ivas.xlsx /scripts/bit /scripts/binaural_loudness.ipynb /scripts/config/Vlad_self_test_ltv.prm /scripts/config/Vlad_self_test.prm /scripts/config/Vlad_ci_linux_ltv.json /scripts/config/Vlad_ci_linux.json /cmake-build /bit.fix /syn apps/decoder.c +139 −82 Original line number Diff line number Diff line Loading @@ -54,11 +54,6 @@ #include "debug.h" #endif #include "wmc_auto.h" #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_EXAMPLE #include <math.h> #endif #endif #define WMC_TOOL_SKIP Loading Loading @@ -155,7 +150,7 @@ typedef struct AcousticEnvironmentSequence aeSequence; bool dpidEnabled; uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; #ifdef OBJ_EDITING_EXAMPLE #ifdef OBJ_EDITING_COMMANDLINE bool objEditEnabled; #endif Loading Loading @@ -202,6 +197,10 @@ static ivas_error printBitstreamInfoVoip( DecArguments arg, BS_READER_HANDLE hBs static int16_t app_own_random( int16_t *seed ); static IVAS_DEC_FORCED_REND_MODE parseForcedRendModeDec( char *forcedRendModeChar ); #endif #ifdef OBJ_EDITING_EXAMPLE static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters ); #endif /*------------------------------------------------------------------------------------------* * main() Loading Loading @@ -452,8 +451,13 @@ int main( asked_frame_size = arg.renderFramesize; uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : 65535; #ifdef OBJ_EDITING_COMMANDLINE if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.non_diegetic_pan_enabled, arg.non_diegetic_pan_gain, arg.dpidEnabled, aeID, arg.objEditEnabled, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.non_diegetic_pan_enabled, arg.non_diegetic_pan_gain, arg.dpidEnabled, aeID, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -1155,11 +1159,10 @@ static bool parseCmdlIVAS_dec( arg->directivityPatternId[i] = 65535; } #ifdef OBJ_EDITING_EXAMPLE #ifdef OBJ_EDITING_COMMANDLINE arg->objEditEnabled = false; #endif #endif /*-----------------------------------------------------------------* * Initialization *-----------------------------------------------------------------*/ Loading Loading @@ -1612,8 +1615,7 @@ static bool parseCmdlIVAS_dec( i += tmp; } #ifdef OBJ_EDITING_EXAMPLE #ifdef OBJ_EDITING_COMMANDLINE else if ( strcmp( argv_to_upper, "-OBJ_EDIT" ) == 0 ) { arg->objEditEnabled = true; Loading Loading @@ -1821,13 +1823,13 @@ static void usage_dec( void ) fprintf( stdout, "-aeid ID | File : Acoustic environment ID (number > 0)\n" ); fprintf( stdout, " alternatively, it can be a text file where each line contains \"ID duration\"\n" ); fprintf( stdout, " for BINAURAL_ROOM_REVERB output configuration.\n" ); #ifdef OBJ_EDITING_COMMANDLINE fprintf( stdout, "-obj_edit : Enable objects editing\n" ); #endif fprintf( stdout, "-level level : Complexity level, level = (1, 2, 3), will be defined after characterisation. \n" ); fprintf( stdout, " Currently, all values default to level 3 (full functionality).\n" ); fprintf( stdout, "-q : Quiet mode, no frame counter\n" ); fprintf( stdout, " default is deactivated\n" ); #ifdef OMASA_OBJECT_EDITING fprintf( stdout, "-obj_edit : enable object editing\n" ); #endif #ifdef DEBUG_MODE_INFO #ifdef DEBUG_MODE_INFO_TWEAK fprintf( stdout, "-info <folder> : specify subfolder name for debug output\n" ); Loading Loading @@ -2198,10 +2200,6 @@ static ivas_error decodeG192( return error; } #ifdef OBJ_EDITING_API IVAS_EDITABLE_PARAMETERS editableParameters; #endif IVAS_RENDER_CONFIG_DATA renderConfig; RenderConfigReader *renderConfigReader = NULL; Loading Loading @@ -2502,16 +2500,19 @@ static ivas_error decodeG192( } } #endif #ifdef FIX_HRTF_LOAD /* Feed into decoder and decode transport channels */ if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, bit_stream, num_bits, bfi ) ) != IVAS_ERR_OK ) #else /* Feed into decoder */ if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, bit_stream, num_bits, bfi #ifndef FIX_HRTF_LOAD #ifdef OBJ_EDITING_API , isSplitRend, splitRendBits #endif #endif ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError: could not feed frame to decoder: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -2547,74 +2548,41 @@ static ivas_error decodeG192( #endif #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_EXAMPLE /* Object metadata editing */ if ( arg.objEditEnabled ) { IVAS_EDITABLE_PARAMETERS editableParameters; /* Do object info editing here */ /* get object parameters */ if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } /* edit object parameters...*/ /* put the objects equally spaced at the horizontal plane */ /* and play a little bit with the gains... */ int16_t obj_idx, non_diegetic_obj_idx; int16_t num_nondiegetic_objects; num_nondiegetic_objects = 0; for ( obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) { if ( !editableParameters.ism_metadata[obj_idx].non_diegetic_flag ) { num_nondiegetic_objects++; } } if ( num_nondiegetic_objects ) { float start_angle, angle_inc; angle_inc = 360.0f / (float) num_nondiegetic_objects; start_angle = angle_inc / 2.0f; for ( obj_idx = 0, non_diegetic_obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) { if ( !editableParameters.ism_metadata[obj_idx].non_diegetic_flag ) { editableParameters.ism_metadata[obj_idx].elevation = 0.0f; editableParameters.ism_metadata[obj_idx].azimuth = start_angle + (float) non_diegetic_obj_idx * angle_inc; non_diegetic_obj_idx++; } } } /* breakover object gains */ for ( obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) { editableParameters.ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; return error; } editableParameters.gain_bed = 0.5f; /* Do object metadata editing here ... */ #ifdef OBJ_EDITING_EXAMPLE do_object_editing( &editableParameters ); #endif /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; return error; } } #endif /* Do the final preparations needed for rendering */ if ( ( error = IVAS_DEC_PrepareRenderer( hIvasDec ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not prepare the renderer: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } #endif } #endif /* Render */ if ( isSplitRend ) { if ( ( error = IVAS_DEC_GetSplitBinauralBitstream( hIvasDec, (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), splitRendBits, &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) Loading @@ -2628,14 +2596,24 @@ static ivas_error decodeG192( } else { #ifdef OBJ_EDITING_API if ( ( error = IVAS_DEC_GetSamplesRenderer( hIvasDec, nSamplesToRender, IVAS_DEC_PCM_INT16, (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetSamplesRenderer(): %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } #else if ( ( error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, IVAS_DEC_PCM_INT16, (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } #endif nSamplesRendered += nSamplesRendered_loop; nSamplesToRender -= nSamplesRendered_loop; } if ( needNewFrame ) { frame++; Loading Loading @@ -3459,29 +3437,34 @@ static ivas_error decodeVoIP( while ( nSamplesRendered < nOutSamples ) { #endif #ifdef SUPPORT_JBM_TRACEFILE if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms, writeJbmTraceFileFrameWrapper, jbmTraceWriter #ifdef FIX_HRTF_LOAD , &bitstreamReadDone #ifdef OBJ_EDITING_API if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, systemTime_ms ) ) != IVAS_ERR_OK ) #endif #else #ifdef OBJ_EDITING_API , &nSamplesRendered, ¶meterAvailableForEditing if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, systemTime_ms ) ) != IVAS_ERR_OK ) #endif #endif ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms, &nSamplesRendered, ¶meterAvailableForEditing #ifdef FIX_HRTF_LOAD , &bitstreamReadDone #ifdef OBJ_EDITING_API if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &bitstreamReadDone, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &bitstreamReadDone, systemTime_ms ) ) != IVAS_ERR_OK ) #endif #else #ifdef OBJ_EDITING_API & nSamplesRendered, ¶meterAvailableForEditing if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms, &nSamplesRendered, ¶meterAvailableForEditing ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms ) ) != IVAS_ERR_OK ) #endif #endif ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading Loading @@ -3515,9 +3498,29 @@ static ivas_error decodeVoIP( #endif #ifdef OBJ_EDITING_API if ( parameterAvailableForEditing == true ) /* Object metadata editing */ if ( arg.objEditEnabled && parameterAvailableForEditing == true ) { IVAS_EDITABLE_PARAMETERS editableParameters; /* get object parameters */ if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) { /* do the object editing here */ fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } /* Do object metadata editing here ... */ #ifdef OBJ_EDITING_EXAMPLE do_object_editing( &editableParameters ); #endif /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } } } /* while ( nSamplesRendered < nOutSamples ) */ #endif Loading Loading @@ -3803,6 +3806,60 @@ cleanup: return error; } #ifdef OBJ_EDITING_EXAMPLE /*---------------------------------------------------------------------* * do_object_editing() * * Example function to edit objects parameters *---------------------------------------------------------------------*/ static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters ) { /* put the objects equally spaced at the horizontal plane */ /* and play a little bit with the gains... */ int16_t obj_idx, non_diegetic_obj_idx; int16_t num_nondiegetic_objects; num_nondiegetic_objects = 0; for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { if ( !editableParameters->ism_metadata[obj_idx].non_diegetic_flag ) { num_nondiegetic_objects++; } } if ( num_nondiegetic_objects ) { float start_angle, angle_inc; angle_inc = 360.0f / (float) num_nondiegetic_objects; start_angle = angle_inc / 2.0f; for ( obj_idx = 0, non_diegetic_obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { if ( !editableParameters->ism_metadata[obj_idx].non_diegetic_flag ) { editableParameters->ism_metadata[obj_idx].elevation = 0.0f; editableParameters->ism_metadata[obj_idx].azimuth = start_angle + (float) non_diegetic_obj_idx * angle_inc; non_diegetic_obj_idx++; } } } /* breakover object gains */ for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; } editableParameters->gain_bed = 0.5f; return; } #endif #ifdef DEBUGGING Loading ci/basop-pages/basop_index.html +7 −0 Original line number Diff line number Diff line Loading @@ -20,4 +20,11 @@ {} <h2>Test Coverage</h2> <ul> <li><a href="coverage_dec_rend/index.html">Coverage report of Decoder and Renderer</a></li> <li><a href="coverage_enc_dec_rend/index.html">Coverage report of Encoder, Decoder and Renderer</a></li> </ul> </body> ci/complexity_measurements/getWmops.sh +34 −25 Original line number Diff line number Diff line Loading @@ -29,11 +29,11 @@ # the United Nations Convention on Contracts on the International Sales of Goods. function usage { echo "Usage: $0 \"ivas-format(s)\" \"output-format(s)\" \"mode{full(default)|mem_only}\"" echo "Usage: $0 \"ivas-format(s)\" \"output-format(s)\" \"mode{full(default)|mem_only}\" \"repo{float(default)|basop}\" " exit 1 } if [ $# -ne 2 ] && [ $# -ne 3 ]; then if [ $# -ne 2 ] && [ $# -ne 3 ] && [ $# -ne 4 ]; then usage fi Loading @@ -41,7 +41,7 @@ ivas_format=$1 output_format="$2" mode_arg_script="" if [ $# -eq 3 ]; then if [ $# -ge 3 ]; then if [ "$3" = "mem_only" ]; then mode_arg_script="--wmc_tool_mem_only" elif [ "$3" != "full" ]; then Loading @@ -49,11 +49,20 @@ if [ $# -eq 3 ]; then fi fi date=`date +%Y%m%d` # used for log-file file ending shortDate=`date "+%b %d" | sed -e "s/\ /_/g"` # stored in the log-file fullDate=`date "+%c" | sed -e "s/\ /_/g"` # stored in the log-file repo_arg_script="" if [ $# -eq 4 ]; then if [ "$4" = "basop" ]; then repo_arg_script="--basop" elif [ "$4" != "float"]; then usage fi fi commit_sha=`git rev-parse --short HEAD` date=$(date +%Y%m%d) # used for log-file file ending shortDate=$(date "+%b %d" | sed -e "s/\ /_/g") # stored in the log-file fullDate=$(date "+%c" | sed -e "s/\ /_/g") # stored in the log-file commit_sha=$(git rev-parse --short HEAD) destDir="." scriptDir="ci/complexity_measurements" Loading @@ -62,7 +71,8 @@ ep="${scriptDir}/ep_10pct_fer.g192" config_file="scripts/config/ci_linux_ltv.json" # get wmops newsletter wmopsFilenameFlcLast=wmops_newsletter_stereo__${commit_sha}_${date} ivas_format_for_filename=${ivas_format// /-} wmopsFilenameFlcLast=wmops_newsletter_${ivas_format_for_filename}_to_${output_format}__${commit_sha}_${date} wmopsFilenameFlc=${destDir}/wmops/logs/${wmopsFilenameFlcLast} ret_val=0 Loading @@ -75,7 +85,7 @@ if [ "$ivas_format" == "OSBA" ]; then fi # instrument and build ./scripts/IvasBuildAndRunChecks.py $mode_arg_script -p $config_file --checks COMPLEXITY --create_complexity_tables ${wmopsFilenameFlc} -C $ivas_format $mode_arg -f ${ep} --oc $output_format ./scripts/IvasBuildAndRunChecks.py $mode_arg_script $repo_arg_script -p $config_file --checks COMPLEXITY --create_complexity_tables ${wmopsFilenameFlc} -C $ivas_format $mode_arg -f ${ep} --oc $output_format ret_val=$? # get the info on worst-case operating point: WMOPS number, enc-operating mode, dec-operating mode Loading @@ -88,7 +98,6 @@ tcsh ${scriptDir}/genWebpageData_WMOPS.csh ${destDir}/wmops/log_wmops_all.txt ${ # per mode graph tcsh ${scriptDir}/genWebpageData_WmopPerOperatingpoint.csh ${wmopsFilenameFlc}_WMOPS.csv ${destDir}/wmops/graphs_wmops_flc_perOP.js Graphs_WMOPS_perOP # get memory info for webpage ### RAM ${scriptDir}/mergeNewsletterRam.py ${wmopsFilenameFlc}_HEAP.csv ${wmopsFilenameFlc}_STACK.csv >${wmopsFilenameFlc}_RAM.csv Loading ci/setup_pages.py +2 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,8 @@ JOBS_BASOP_REPO = { "complexity-osba-in-binaural-out": "OSBA in, BINAURAL out", "complexity-osba-in-binaural_room_ir-out": "OSBA in, BINAURAL_ROOM_IR out", "complexity-stereo-in-stereo-out": "Stereo in, Stereo out", # "timeless" jobs (not complexity) "coverage-test-on-main-scheduled": "Coverage", } JOBS_FOR_PROJECT_ID = { Loading Loading
.gitignore +0 −87 Original line number Diff line number Diff line Loading @@ -76,90 +76,3 @@ Externals/ # coan output files that are created when cleaning out switches coan_out_* /COMPLEXITY /res /tv /wmops /Workspace_msvc/renderer.args.json /Workspace_msvc/encoder.args.json /Workspace_msvc/decoder.args.json /scripts/mem_analysis_enc_VBR_5k9.csv /scripts/mem_analysis_enc_STEREO_sw.png /scripts/mem_analysis_enc_STEREO_sw.csv /scripts/mem_analysis_enc_STEREO_16k4_DTX.csv *.pwv /dcr_ism1 /bwe_clicks_ism1 /BWD_issue /.ipynb_checkpoints /scripts/.ipynb_checkpoints /scripts/wmops_analysis /scripts/wmops_analysis_new /tcx_hq_problem_ism1 /scripts/dly_error_profiles/dly_profile_19_.dat /build.txt /bit.64k /bit.32k /bit /binaural_loudness.ipynb /tmp.txt /syn.wav /syn.ref /syn.64k.0.csv /syn.64k /syn.32k /stvST32c_-stereo_32000_32.bit /split_renderer_config_768_3dof_cldfbpc.txt /split_out_sba_lcld_20ms_out.wav /split_out_sba_lcld_20ms.pkt /split_out_mc_lc3plus_20ms_out.wav /split_out_mc_lc3plus_20ms.pkt /run_ivas_codec.sh /report.html /report-junit.xm /out.wav /ltv48_1ISM.cut14.wav.0.csv /ltv48_1ISM.cut14.pcm /ltv48_1ISM.cut14.dec.pcm.0.csv /ltv48_1ISM.cut14.64k.dec.pcm.0.csv /ltv48_1ISM.cut14.64k.dec.pcm /ltv48_1ISM.cut14.32k.dec.pcm /IvasBuilder.txt /ivas.192 /ism_loudness_stv48_48kHz.md /ism_loudness_stv48_32kHz.md /ism_loudness_sel48_48kHz.md /ism_loudness_old.xlsx /ism_loudness_ltv48_ISM4.md /ism_loudness_ltv48_ISM3.md /ism_loudness_ltv48_ISM2.md /ism_loudness_ltv48_ISM1.md /ism_loudness_ltv48_48kHz.md /ism_loudness.xlsx /ism_loudness.py /HOA2_to_BINAURAL_ROOM_REVERBNone_rend_config_combined_20msNone_0-1000_2-500_1-500.wav /git_blame_string.sh /get_license_table.py /enc_out_mc.pkt /enc_out.pkt /cut_ism.py /scripts/Vlad_mergeNewsletters.py /scripts/Vlad_extract_max_num_ind.py /scripts/tables_obj.txt /scripts/tables_exe.txt /scripts/requirements.txt /scripts/parseNewsletterWmops.py /scripts/output.xlsx /scripts/functions_obj.txt /scripts/functions_exe.txt /scripts/dep_tree.txt /scripts/cmplx_evs_in_ivas.xlsx /scripts/bit /scripts/binaural_loudness.ipynb /scripts/config/Vlad_self_test_ltv.prm /scripts/config/Vlad_self_test.prm /scripts/config/Vlad_ci_linux_ltv.json /scripts/config/Vlad_ci_linux.json /cmake-build /bit.fix /syn
apps/decoder.c +139 −82 Original line number Diff line number Diff line Loading @@ -54,11 +54,6 @@ #include "debug.h" #endif #include "wmc_auto.h" #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_EXAMPLE #include <math.h> #endif #endif #define WMC_TOOL_SKIP Loading Loading @@ -155,7 +150,7 @@ typedef struct AcousticEnvironmentSequence aeSequence; bool dpidEnabled; uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; #ifdef OBJ_EDITING_EXAMPLE #ifdef OBJ_EDITING_COMMANDLINE bool objEditEnabled; #endif Loading Loading @@ -202,6 +197,10 @@ static ivas_error printBitstreamInfoVoip( DecArguments arg, BS_READER_HANDLE hBs static int16_t app_own_random( int16_t *seed ); static IVAS_DEC_FORCED_REND_MODE parseForcedRendModeDec( char *forcedRendModeChar ); #endif #ifdef OBJ_EDITING_EXAMPLE static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters ); #endif /*------------------------------------------------------------------------------------------* * main() Loading Loading @@ -452,8 +451,13 @@ int main( asked_frame_size = arg.renderFramesize; uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : 65535; #ifdef OBJ_EDITING_COMMANDLINE if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.non_diegetic_pan_enabled, arg.non_diegetic_pan_gain, arg.dpidEnabled, aeID, arg.objEditEnabled, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.non_diegetic_pan_enabled, arg.non_diegetic_pan_gain, arg.dpidEnabled, aeID, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -1155,11 +1159,10 @@ static bool parseCmdlIVAS_dec( arg->directivityPatternId[i] = 65535; } #ifdef OBJ_EDITING_EXAMPLE #ifdef OBJ_EDITING_COMMANDLINE arg->objEditEnabled = false; #endif #endif /*-----------------------------------------------------------------* * Initialization *-----------------------------------------------------------------*/ Loading Loading @@ -1612,8 +1615,7 @@ static bool parseCmdlIVAS_dec( i += tmp; } #ifdef OBJ_EDITING_EXAMPLE #ifdef OBJ_EDITING_COMMANDLINE else if ( strcmp( argv_to_upper, "-OBJ_EDIT" ) == 0 ) { arg->objEditEnabled = true; Loading Loading @@ -1821,13 +1823,13 @@ static void usage_dec( void ) fprintf( stdout, "-aeid ID | File : Acoustic environment ID (number > 0)\n" ); fprintf( stdout, " alternatively, it can be a text file where each line contains \"ID duration\"\n" ); fprintf( stdout, " for BINAURAL_ROOM_REVERB output configuration.\n" ); #ifdef OBJ_EDITING_COMMANDLINE fprintf( stdout, "-obj_edit : Enable objects editing\n" ); #endif fprintf( stdout, "-level level : Complexity level, level = (1, 2, 3), will be defined after characterisation. \n" ); fprintf( stdout, " Currently, all values default to level 3 (full functionality).\n" ); fprintf( stdout, "-q : Quiet mode, no frame counter\n" ); fprintf( stdout, " default is deactivated\n" ); #ifdef OMASA_OBJECT_EDITING fprintf( stdout, "-obj_edit : enable object editing\n" ); #endif #ifdef DEBUG_MODE_INFO #ifdef DEBUG_MODE_INFO_TWEAK fprintf( stdout, "-info <folder> : specify subfolder name for debug output\n" ); Loading Loading @@ -2198,10 +2200,6 @@ static ivas_error decodeG192( return error; } #ifdef OBJ_EDITING_API IVAS_EDITABLE_PARAMETERS editableParameters; #endif IVAS_RENDER_CONFIG_DATA renderConfig; RenderConfigReader *renderConfigReader = NULL; Loading Loading @@ -2502,16 +2500,19 @@ static ivas_error decodeG192( } } #endif #ifdef FIX_HRTF_LOAD /* Feed into decoder and decode transport channels */ if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, bit_stream, num_bits, bfi ) ) != IVAS_ERR_OK ) #else /* Feed into decoder */ if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, bit_stream, num_bits, bfi #ifndef FIX_HRTF_LOAD #ifdef OBJ_EDITING_API , isSplitRend, splitRendBits #endif #endif ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError: could not feed frame to decoder: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -2547,74 +2548,41 @@ static ivas_error decodeG192( #endif #ifdef OBJ_EDITING_API #ifdef OBJ_EDITING_EXAMPLE /* Object metadata editing */ if ( arg.objEditEnabled ) { IVAS_EDITABLE_PARAMETERS editableParameters; /* Do object info editing here */ /* get object parameters */ if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } /* edit object parameters...*/ /* put the objects equally spaced at the horizontal plane */ /* and play a little bit with the gains... */ int16_t obj_idx, non_diegetic_obj_idx; int16_t num_nondiegetic_objects; num_nondiegetic_objects = 0; for ( obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) { if ( !editableParameters.ism_metadata[obj_idx].non_diegetic_flag ) { num_nondiegetic_objects++; } } if ( num_nondiegetic_objects ) { float start_angle, angle_inc; angle_inc = 360.0f / (float) num_nondiegetic_objects; start_angle = angle_inc / 2.0f; for ( obj_idx = 0, non_diegetic_obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) { if ( !editableParameters.ism_metadata[obj_idx].non_diegetic_flag ) { editableParameters.ism_metadata[obj_idx].elevation = 0.0f; editableParameters.ism_metadata[obj_idx].azimuth = start_angle + (float) non_diegetic_obj_idx * angle_inc; non_diegetic_obj_idx++; } } } /* breakover object gains */ for ( obj_idx = 0; obj_idx < editableParameters.num_obj; obj_idx++ ) { editableParameters.ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; return error; } editableParameters.gain_bed = 0.5f; /* Do object metadata editing here ... */ #ifdef OBJ_EDITING_EXAMPLE do_object_editing( &editableParameters ); #endif /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; return error; } } #endif /* Do the final preparations needed for rendering */ if ( ( error = IVAS_DEC_PrepareRenderer( hIvasDec ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not prepare the renderer: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } #endif } #endif /* Render */ if ( isSplitRend ) { if ( ( error = IVAS_DEC_GetSplitBinauralBitstream( hIvasDec, (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), splitRendBits, &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) Loading @@ -2628,14 +2596,24 @@ static ivas_error decodeG192( } else { #ifdef OBJ_EDITING_API if ( ( error = IVAS_DEC_GetSamplesRenderer( hIvasDec, nSamplesToRender, IVAS_DEC_PCM_INT16, (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetSamplesRenderer(): %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } #else if ( ( error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, IVAS_DEC_PCM_INT16, (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } #endif nSamplesRendered += nSamplesRendered_loop; nSamplesToRender -= nSamplesRendered_loop; } if ( needNewFrame ) { frame++; Loading Loading @@ -3459,29 +3437,34 @@ static ivas_error decodeVoIP( while ( nSamplesRendered < nOutSamples ) { #endif #ifdef SUPPORT_JBM_TRACEFILE if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms, writeJbmTraceFileFrameWrapper, jbmTraceWriter #ifdef FIX_HRTF_LOAD , &bitstreamReadDone #ifdef OBJ_EDITING_API if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &bitstreamReadDone, systemTime_ms ) ) != IVAS_ERR_OK ) #endif #else #ifdef OBJ_EDITING_API , &nSamplesRendered, ¶meterAvailableForEditing if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, writeJbmTraceFileFrameWrapper, jbmTraceWriter, systemTime_ms ) ) != IVAS_ERR_OK ) #endif #endif ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms, &nSamplesRendered, ¶meterAvailableForEditing #ifdef FIX_HRTF_LOAD , &bitstreamReadDone #ifdef OBJ_EDITING_API if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &bitstreamReadDone, &nSamplesRendered, ¶meterAvailableForEditing, systemTime_ms ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &bitstreamReadDone, systemTime_ms ) ) != IVAS_ERR_OK ) #endif #else #ifdef OBJ_EDITING_API & nSamplesRendered, ¶meterAvailableForEditing if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms, &nSamplesRendered, ¶meterAvailableForEditing ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, systemTime_ms ) ) != IVAS_ERR_OK ) #endif #endif ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_VoIP_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); Loading Loading @@ -3515,9 +3498,29 @@ static ivas_error decodeVoIP( #endif #ifdef OBJ_EDITING_API if ( parameterAvailableForEditing == true ) /* Object metadata editing */ if ( arg.objEditEnabled && parameterAvailableForEditing == true ) { IVAS_EDITABLE_PARAMETERS editableParameters; /* get object parameters */ if ( ( error = IVAS_DEC_GetEditableParameters( hIvasDec, &editableParameters ) ) != IVAS_ERR_OK ) { /* do the object editing here */ fprintf( stderr, "\nError: could not get the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } /* Do object metadata editing here ... */ #ifdef OBJ_EDITING_EXAMPLE do_object_editing( &editableParameters ); #endif /* set new object parameters */ if ( ( error = IVAS_DEC_SetEditableParameters( hIvasDec, editableParameters ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not set the editable parameters: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } } } /* while ( nSamplesRendered < nOutSamples ) */ #endif Loading Loading @@ -3803,6 +3806,60 @@ cleanup: return error; } #ifdef OBJ_EDITING_EXAMPLE /*---------------------------------------------------------------------* * do_object_editing() * * Example function to edit objects parameters *---------------------------------------------------------------------*/ static void do_object_editing( IVAS_EDITABLE_PARAMETERS *editableParameters ) { /* put the objects equally spaced at the horizontal plane */ /* and play a little bit with the gains... */ int16_t obj_idx, non_diegetic_obj_idx; int16_t num_nondiegetic_objects; num_nondiegetic_objects = 0; for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { if ( !editableParameters->ism_metadata[obj_idx].non_diegetic_flag ) { num_nondiegetic_objects++; } } if ( num_nondiegetic_objects ) { float start_angle, angle_inc; angle_inc = 360.0f / (float) num_nondiegetic_objects; start_angle = angle_inc / 2.0f; for ( obj_idx = 0, non_diegetic_obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { if ( !editableParameters->ism_metadata[obj_idx].non_diegetic_flag ) { editableParameters->ism_metadata[obj_idx].elevation = 0.0f; editableParameters->ism_metadata[obj_idx].azimuth = start_angle + (float) non_diegetic_obj_idx * angle_inc; non_diegetic_obj_idx++; } } } /* breakover object gains */ for ( obj_idx = 0; obj_idx < editableParameters->num_obj; obj_idx++ ) { editableParameters->ism_metadata[obj_idx].gain = 0.5f + (float) ( ( frame + obj_idx * 50 ) % 250 ) / 250.0f; } editableParameters->gain_bed = 0.5f; return; } #endif #ifdef DEBUGGING Loading
ci/basop-pages/basop_index.html +7 −0 Original line number Diff line number Diff line Loading @@ -20,4 +20,11 @@ {} <h2>Test Coverage</h2> <ul> <li><a href="coverage_dec_rend/index.html">Coverage report of Decoder and Renderer</a></li> <li><a href="coverage_enc_dec_rend/index.html">Coverage report of Encoder, Decoder and Renderer</a></li> </ul> </body>
ci/complexity_measurements/getWmops.sh +34 −25 Original line number Diff line number Diff line Loading @@ -29,11 +29,11 @@ # the United Nations Convention on Contracts on the International Sales of Goods. function usage { echo "Usage: $0 \"ivas-format(s)\" \"output-format(s)\" \"mode{full(default)|mem_only}\"" echo "Usage: $0 \"ivas-format(s)\" \"output-format(s)\" \"mode{full(default)|mem_only}\" \"repo{float(default)|basop}\" " exit 1 } if [ $# -ne 2 ] && [ $# -ne 3 ]; then if [ $# -ne 2 ] && [ $# -ne 3 ] && [ $# -ne 4 ]; then usage fi Loading @@ -41,7 +41,7 @@ ivas_format=$1 output_format="$2" mode_arg_script="" if [ $# -eq 3 ]; then if [ $# -ge 3 ]; then if [ "$3" = "mem_only" ]; then mode_arg_script="--wmc_tool_mem_only" elif [ "$3" != "full" ]; then Loading @@ -49,11 +49,20 @@ if [ $# -eq 3 ]; then fi fi date=`date +%Y%m%d` # used for log-file file ending shortDate=`date "+%b %d" | sed -e "s/\ /_/g"` # stored in the log-file fullDate=`date "+%c" | sed -e "s/\ /_/g"` # stored in the log-file repo_arg_script="" if [ $# -eq 4 ]; then if [ "$4" = "basop" ]; then repo_arg_script="--basop" elif [ "$4" != "float"]; then usage fi fi commit_sha=`git rev-parse --short HEAD` date=$(date +%Y%m%d) # used for log-file file ending shortDate=$(date "+%b %d" | sed -e "s/\ /_/g") # stored in the log-file fullDate=$(date "+%c" | sed -e "s/\ /_/g") # stored in the log-file commit_sha=$(git rev-parse --short HEAD) destDir="." scriptDir="ci/complexity_measurements" Loading @@ -62,7 +71,8 @@ ep="${scriptDir}/ep_10pct_fer.g192" config_file="scripts/config/ci_linux_ltv.json" # get wmops newsletter wmopsFilenameFlcLast=wmops_newsletter_stereo__${commit_sha}_${date} ivas_format_for_filename=${ivas_format// /-} wmopsFilenameFlcLast=wmops_newsletter_${ivas_format_for_filename}_to_${output_format}__${commit_sha}_${date} wmopsFilenameFlc=${destDir}/wmops/logs/${wmopsFilenameFlcLast} ret_val=0 Loading @@ -75,7 +85,7 @@ if [ "$ivas_format" == "OSBA" ]; then fi # instrument and build ./scripts/IvasBuildAndRunChecks.py $mode_arg_script -p $config_file --checks COMPLEXITY --create_complexity_tables ${wmopsFilenameFlc} -C $ivas_format $mode_arg -f ${ep} --oc $output_format ./scripts/IvasBuildAndRunChecks.py $mode_arg_script $repo_arg_script -p $config_file --checks COMPLEXITY --create_complexity_tables ${wmopsFilenameFlc} -C $ivas_format $mode_arg -f ${ep} --oc $output_format ret_val=$? # get the info on worst-case operating point: WMOPS number, enc-operating mode, dec-operating mode Loading @@ -88,7 +98,6 @@ tcsh ${scriptDir}/genWebpageData_WMOPS.csh ${destDir}/wmops/log_wmops_all.txt ${ # per mode graph tcsh ${scriptDir}/genWebpageData_WmopPerOperatingpoint.csh ${wmopsFilenameFlc}_WMOPS.csv ${destDir}/wmops/graphs_wmops_flc_perOP.js Graphs_WMOPS_perOP # get memory info for webpage ### RAM ${scriptDir}/mergeNewsletterRam.py ${wmopsFilenameFlc}_HEAP.csv ${wmopsFilenameFlc}_STACK.csv >${wmopsFilenameFlc}_RAM.csv Loading
ci/setup_pages.py +2 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,8 @@ JOBS_BASOP_REPO = { "complexity-osba-in-binaural-out": "OSBA in, BINAURAL out", "complexity-osba-in-binaural_room_ir-out": "OSBA in, BINAURAL_ROOM_IR out", "complexity-stereo-in-stereo-out": "Stereo in, Stereo out", # "timeless" jobs (not complexity) "coverage-test-on-main-scheduled": "Coverage", } JOBS_FOR_PROJECT_ID = { Loading