Loading .gitlab-ci.yml +18 −16 Original line number Diff line number Diff line Loading @@ -1012,11 +1012,13 @@ voip-be-on-merge-request: - .test-job-linux-needs-testv-dir - .rules-merge-request stage: test needs: ["build-codec-linux-make", "codec-smoke-test"] needs: ["build-codec-linux-make"] timeout: "10 minutes" script: - *print-common-info - bash ci/ivas_voip_be_test.sh - make clean - make -j - python3 -m pytest tests/test_be_for_jbm_neutral_dly_profile.py clang-format-check: extends: Loading Loading @@ -2205,7 +2207,7 @@ coverage-test-on-main-scheduled: - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v -n auto --update_ref 1 -m create_ref --param_file scripts/config/self_test_evs.prm --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec - bash ci/smoke_test.sh coverage - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v -n auto --update_ref 1 -m create_ref --param_file scripts/config/self_test_ltv.prm --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec - bash ci/ivas_voip_be_test.sh coverage - python3 -m pytest tests/test_be_for_jbm_neutral_dly_profile.py - lcov -c -d obj -o coverage.info # remove apps and lib_util files from coverage - lcov -r coverage.info "*apps*" -o coverage.info Loading @@ -2231,7 +2233,7 @@ coverage-test-on-main-scheduled: &complexity-measurements-setup # create necessary environment - mkdir -p wmops/logs - job_id=$(python3 ci/get_id_of_last_job_occurence.py $CI_COMMIT_REF_NAME $CI_JOB_NAME $CI_PROJECT_ID --success_only) - job_id=$(python3 ci/get_id_of_last_job_occurence.py $CI_COMMIT_REF_NAME $CI_JOB_NAME $CI_PROJECT_ID) - echo $job_id - curl --request GET "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip - unzip artifacts.zip || true # this may fail on first run, when there are no artifacts there and the zip file is actually just "404"-html Loading Loading @@ -2289,8 +2291,8 @@ complexity-stereo-in-stereo-out: - *complexity-measurements-setup - in_format=stereo - out_format=stereo - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2307,8 +2309,8 @@ complexity-ism-in-binaural-out: - *complexity-measurements-setup - in_format=ISM - out_format=BINAURAL - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2325,8 +2327,8 @@ complexity-sba-hoa3-in-hoa3-out: - *complexity-measurements-setup - in_format=HOA3 - out_format=HOA3 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2343,8 +2345,8 @@ complexity-mc-in-7_1_4-out: - *complexity-measurements-setup - in_format=MC - out_format=7_1_4 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2361,8 +2363,8 @@ complexity-masa-in-7_1_4-out: - *complexity-measurements-setup - in_format=MASA - out_format=7_1_4 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2379,8 +2381,8 @@ complexity-StereoDmxEVS-stereo-in-mono-out: - *complexity-measurements-setup - in_format=StereoDmxEVS - out_format=mono - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading Workspace_msvc/lib_util.vcxproj +2 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,7 @@ </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="..\lib_util\aeid_file_reader.c" /> <ClCompile Include="..\lib_util\ambi_convert.c" /> <ClCompile Include="..\lib_util\audio_file_reader.c" /> <ClCompile Include="..\lib_util\audio_file_writer.c" /> <ClCompile Include="..\lib_util\bitstream_reader.c" /> Loading Loading @@ -128,6 +129,7 @@ </ItemGroup> <ItemGroup> <ClInclude Include="..\lib_util\aeid_file_reader.h" /> <ClInclude Include="..\lib_util\ambi_convert.h" /> <ClInclude Include="..\lib_util\audio_file_reader.h" /> <ClInclude Include="..\lib_util\audio_file_writer.h" /> <ClInclude Include="..\lib_util\bitstream_reader.h" /> Loading apps/decoder.c +14 −14 Original line number Diff line number Diff line Loading @@ -125,7 +125,7 @@ typedef struct bool customLsOutputEnabled; char *customLsSetupFilename; int16_t orientation_tracking; int16_t Opt_non_diegetic_pan; bool non_diegetic_pan_enabled; float non_diegetic_pan_gain; bool renderConfigEnabled; char *renderConfigFilename; Loading @@ -145,7 +145,7 @@ typedef struct #endif #endif AcousticEnvironmentSequence aeSequence; int16_t Opt_dpid_on; bool dpidEnabled; uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; } DecArguments; Loading Loading @@ -402,8 +402,7 @@ int main( if ( arg.renderConfigEnabled ) { /* sanity check */ if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.Opt_non_diegetic_pan == 0 ) if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.non_diegetic_pan_enabled == false ) { fprintf( stderr, "\nError: Renderer configuration file cannot be used in this output configuration.\n\n" ); goto cleanup; Loading @@ -423,8 +422,8 @@ int main( asked_frame_size = arg.renderFramesize; uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : 65535; 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.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.Opt_dpid_on, aeID, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) 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 ) { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -594,8 +593,7 @@ int main( /* sanity check */ if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.Opt_non_diegetic_pan == 0 ) arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.non_diegetic_pan_enabled == false ) { fprintf( stderr, "\nExternal Renderer Config is supported only when binaural output configurations is used as output OR when Split rendering mode is enabled. Exiting. \n" ); goto cleanup; Loading Loading @@ -1068,12 +1066,12 @@ static bool parseCmdlIVAS_dec( arg->renderConfigEnabled = false; arg->renderConfigFilename = NULL; arg->Opt_dpid_on = 0; arg->dpidEnabled = false; arg->outputMdFilename = NULL; arg->inputFormat = IVAS_DEC_INPUT_FORMAT_G192; arg->Opt_non_diegetic_pan = 0; arg->non_diegetic_pan_enabled = false; arg->non_diegetic_pan_gain = 0.f; arg->tsmEnabled = false; arg->renderFramesize = IVAS_RENDER_FRAMESIZE_20MS; Loading Loading @@ -1412,7 +1410,7 @@ static bool parseCmdlIVAS_dec( else if ( strcmp( argv_to_upper, "-NON_DIEGETIC_PAN" ) == 0 ) { i++; arg->Opt_non_diegetic_pan = 1; arg->non_diegetic_pan_enabled = true; strncpy( argv_to_upper, argv[i], sizeof( argv_to_upper ) - 1 ); argv_to_upper[sizeof( argv_to_upper ) - 1] = '\0'; to_upper( argv_to_upper ); Loading Loading @@ -1510,7 +1508,7 @@ static bool parseCmdlIVAS_dec( { int16_t id, tmp; arg->Opt_dpid_on = 1; arg->dpidEnabled = true; ++i; tmp = 0; while ( is_number( argv[i + tmp] ) && tmp < IVAS_MAX_NUM_OBJECTS ) Loading Loading @@ -1591,7 +1589,8 @@ static bool parseCmdlIVAS_dec( arg->customLsSetupFilename = argv[i]; } i++; if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputConfig != IVAS_AUDIO_CONFIG_STEREO ) ) if ( arg->non_diegetic_pan_enabled && arg->outputConfig != IVAS_AUDIO_CONFIG_STEREO ) { fprintf( stderr, "Error: non-diegetic panning is supported in stereo only\n\n" ); usage_dec(); Loading @@ -1609,7 +1608,8 @@ static bool parseCmdlIVAS_dec( { arg->outputConfig = IVAS_AUDIO_CONFIG_MONO; arg->decMode = IVAS_DEC_MODE_EVS; if ( ( arg->Opt_non_diegetic_pan ) ) if ( arg->non_diegetic_pan_enabled ) { arg->outputConfig = IVAS_AUDIO_CONFIG_STEREO; } Loading apps/encoder.c +10 −1 Original line number Diff line number Diff line Loading @@ -1517,6 +1517,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too low number of ISM channels specified!\n\n" ); usage_enc(); return false; } else { Loading @@ -1528,6 +1529,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too high number of ISM channels!\n\n" ); usage_enc(); return false; } } } Loading @@ -1535,6 +1537,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Number of ISM channels not specified!\n\n" ); usage_enc(); return false; } if ( i < argc - 4 ) { Loading @@ -1554,7 +1557,7 @@ static bool parseCmdlIVAS_enc( default: fprintf( stderr, "Error: MASA channels must be 1 or 2.\n\n" ); usage_enc(); break; return false; } } Loading @@ -1579,6 +1582,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: not enough arguments\n\n" ); usage_enc(); return false; } } Loading @@ -1591,6 +1595,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: not enough MASA arguments\n\n" ); usage_enc(); return false; } } else if ( strcmp( to_upper( argv[i] ), "-ISM_SBA" ) == 0 ) Loading @@ -1609,6 +1614,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too low number of ISM channels specified!\n\n" ); usage_enc(); return false; } else { Loading @@ -1620,6 +1626,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too high number of ISM channels!\n\n" ); usage_enc(); return false; } } } Loading @@ -1627,6 +1634,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Number of ISM channels not specified!\n\n" ); usage_enc(); return false; } if ( i < argc - 4 ) Loading Loading @@ -1678,6 +1686,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: not enough arguments\n\n" ); usage_enc(); return false; } } } Loading ci/basop-pages/create_report_pages.py +44 −11 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ import pathlib import argparse from functools import partial FORMATS = ["Stereo", "ISM", "Multichannel", "MASA", "SBA", "OSBA", "OMASA", "Renderer"] CSV_DELIM = ";" SUBPAGE_TMPL_CSS = """ Loading @@ -25,7 +26,7 @@ SUBPAGE_TMPL_CSS = """ SUBPAGE_TMPL_HTML = """ <h1>Report for job {job_name}</h1 <h1>Report for job {job_name}</h1> Comparing: <ul> Loading @@ -35,6 +36,10 @@ Comparing: </ul> <br> <h2><a href="summary_{job_name}.html">Summary page</a></h2> <br> <br> <b>How is the table sorted?</b> <ul> <li>Cases with result ERROR or invalid/missing values for the numerical measures are given first</li> Loading Loading @@ -92,11 +97,21 @@ ARROW_DOWN = '<span class="arrowdown">⬂</span>' # expected columns. actual columns are filtered from the incoming data later, this # is mainly for controlling the order in the output table COLUMNS = ["testcase", "Result", "MLD", "MAXIMUM ABS DIFF"] COLUMNS = [ "testcase", "Format", "Category", "Result", "MLD", "MAXIMUM ABS DIFF", "MIN_SSNR", "MIN_ODG", ] COLUMNS_GLOBAL = COLUMNS[:1] COLUMNS_DIFFERENTIAL = COLUMNS[1:] COLUMNS_DIFFERENTIAL = COLUMNS[3:] COLUMNS_DIFFERENTIAL_NOT_MLD = COLUMNS_DIFFERENTIAL[2:] def create_subpage( html_out, csv_out, Loading @@ -111,15 +126,23 @@ def create_subpage( ) write_out_csv(merged_reports, merged_reports[0].keys(), csv_out) table_header_a = "".join([TH_TMPL_GLOBAL.format(c) for c in COLUMNS_GLOBAL] + [TH_TMPL_DIFFERENTIAL.format(c) for c in COLUMNS_DIFFERENTIAL]) table_header_a = "".join( [TH_TMPL_GLOBAL.format(c) for c in COLUMNS_GLOBAL] + [TH_TMPL_DIFFERENTIAL.format(c) for c in COLUMNS_DIFFERENTIAL] ) table_header_b = list() for c in COLUMNS_DIFFERENTIAL: table_header_b.append(TH_TMPL_SECOND_ROW.format(f"Previous Run<br>ID: {id_previous}")) table_header_b.append(TH_TMPL_SECOND_ROW.format(f"Current Run<br>ID: {id_current}")) table_header_b.append( TH_TMPL_SECOND_ROW.format(f"Previous Run<br>ID: {id_previous}") ) table_header_b.append( TH_TMPL_SECOND_ROW.format(f"Current Run<br>ID: {id_current}") ) table_header_b = "".join(table_header_b) table_body = "\n".join( tr_from_row(row, id_current, id_previous) for row in merged_reports ) new_subpage = SUBPAGE_TMPL_CSS + SUBPAGE_TMPL_HTML.format( id_current=id_current, id_previous=id_previous, Loading Loading @@ -218,8 +241,9 @@ def merge_and_cleanup_mld_reports( are uninteresting and are put last. """ try: float(x[mld_col_curr]) float(x[mld_col_prev]) cols = [mld_col_curr, mld_col_prev] + [p[1] for p in other_col_pairs] for c in cols: float(x[c]) except ValueError: # Value is no valid floating point value return float("inf") Loading @@ -241,8 +265,13 @@ def merge_and_cleanup_mld_reports( return diff other_col_pairs = [(f"{col}-{id_previous}", f"{col}-{id_current}") for col in COLUMNS_DIFFERENTIAL_NOT_MLD] merged = sorted(merged, key=partial(sort_func, other_col_pairs=other_col_pairs), reverse=True) other_col_pairs = [ (f"{col}-{id_previous}", f"{col}-{id_current}") for col in COLUMNS_DIFFERENTIAL_NOT_MLD ] merged = sorted( merged, key=partial(sort_func, other_col_pairs=other_col_pairs), reverse=True ) # remove the unecessary whole path from the testcase names for row in merged: Loading @@ -263,7 +292,10 @@ def merge_tables(tbl1, tbl2, suffix1, suffix2, merge_key, other_keys): if row1[merge_key] == row2[merge_key]: new_row[merge_key] = row1[merge_key] for key in other_keys: if key in row2: # In case key is missing, just insert a blank new_row[f"{key}-{suffix2}"] = row2[key] else: new_row[f"{key}-{suffix2}"] = "" break merged.append(new_row) Loading @@ -271,6 +303,7 @@ def merge_tables(tbl1, tbl2, suffix1, suffix2, merge_key, other_keys): return merged if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("html_out") Loading Loading
.gitlab-ci.yml +18 −16 Original line number Diff line number Diff line Loading @@ -1012,11 +1012,13 @@ voip-be-on-merge-request: - .test-job-linux-needs-testv-dir - .rules-merge-request stage: test needs: ["build-codec-linux-make", "codec-smoke-test"] needs: ["build-codec-linux-make"] timeout: "10 minutes" script: - *print-common-info - bash ci/ivas_voip_be_test.sh - make clean - make -j - python3 -m pytest tests/test_be_for_jbm_neutral_dly_profile.py clang-format-check: extends: Loading Loading @@ -2205,7 +2207,7 @@ coverage-test-on-main-scheduled: - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v -n auto --update_ref 1 -m create_ref --param_file scripts/config/self_test_evs.prm --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec - bash ci/smoke_test.sh coverage - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v -n auto --update_ref 1 -m create_ref --param_file scripts/config/self_test_ltv.prm --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec - bash ci/ivas_voip_be_test.sh coverage - python3 -m pytest tests/test_be_for_jbm_neutral_dly_profile.py - lcov -c -d obj -o coverage.info # remove apps and lib_util files from coverage - lcov -r coverage.info "*apps*" -o coverage.info Loading @@ -2231,7 +2233,7 @@ coverage-test-on-main-scheduled: &complexity-measurements-setup # create necessary environment - mkdir -p wmops/logs - job_id=$(python3 ci/get_id_of_last_job_occurence.py $CI_COMMIT_REF_NAME $CI_JOB_NAME $CI_PROJECT_ID --success_only) - job_id=$(python3 ci/get_id_of_last_job_occurence.py $CI_COMMIT_REF_NAME $CI_JOB_NAME $CI_PROJECT_ID) - echo $job_id - curl --request GET "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip - unzip artifacts.zip || true # this may fail on first run, when there are no artifacts there and the zip file is actually just "404"-html Loading Loading @@ -2289,8 +2291,8 @@ complexity-stereo-in-stereo-out: - *complexity-measurements-setup - in_format=stereo - out_format=stereo - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2307,8 +2309,8 @@ complexity-ism-in-binaural-out: - *complexity-measurements-setup - in_format=ISM - out_format=BINAURAL - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2325,8 +2327,8 @@ complexity-sba-hoa3-in-hoa3-out: - *complexity-measurements-setup - in_format=HOA3 - out_format=HOA3 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2343,8 +2345,8 @@ complexity-mc-in-7_1_4-out: - *complexity-measurements-setup - in_format=MC - out_format=7_1_4 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2361,8 +2363,8 @@ complexity-masa-in-7_1_4-out: - *complexity-measurements-setup - in_format=MASA - out_format=7_1_4 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2379,8 +2381,8 @@ complexity-StereoDmxEVS-stereo-in-mono-out: - *complexity-measurements-setup - in_format=StereoDmxEVS - out_format=mono - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading
Workspace_msvc/lib_util.vcxproj +2 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,7 @@ </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="..\lib_util\aeid_file_reader.c" /> <ClCompile Include="..\lib_util\ambi_convert.c" /> <ClCompile Include="..\lib_util\audio_file_reader.c" /> <ClCompile Include="..\lib_util\audio_file_writer.c" /> <ClCompile Include="..\lib_util\bitstream_reader.c" /> Loading Loading @@ -128,6 +129,7 @@ </ItemGroup> <ItemGroup> <ClInclude Include="..\lib_util\aeid_file_reader.h" /> <ClInclude Include="..\lib_util\ambi_convert.h" /> <ClInclude Include="..\lib_util\audio_file_reader.h" /> <ClInclude Include="..\lib_util\audio_file_writer.h" /> <ClInclude Include="..\lib_util\bitstream_reader.h" /> Loading
apps/decoder.c +14 −14 Original line number Diff line number Diff line Loading @@ -125,7 +125,7 @@ typedef struct bool customLsOutputEnabled; char *customLsSetupFilename; int16_t orientation_tracking; int16_t Opt_non_diegetic_pan; bool non_diegetic_pan_enabled; float non_diegetic_pan_gain; bool renderConfigEnabled; char *renderConfigFilename; Loading @@ -145,7 +145,7 @@ typedef struct #endif #endif AcousticEnvironmentSequence aeSequence; int16_t Opt_dpid_on; bool dpidEnabled; uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; } DecArguments; Loading Loading @@ -402,8 +402,7 @@ int main( if ( arg.renderConfigEnabled ) { /* sanity check */ if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.Opt_non_diegetic_pan == 0 ) if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.non_diegetic_pan_enabled == false ) { fprintf( stderr, "\nError: Renderer configuration file cannot be used in this output configuration.\n\n" ); goto cleanup; Loading @@ -423,8 +422,8 @@ int main( asked_frame_size = arg.renderFramesize; uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : 65535; 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.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.Opt_dpid_on, aeID, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) 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 ) { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -594,8 +593,7 @@ int main( /* sanity check */ if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.Opt_non_diegetic_pan == 0 ) arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.non_diegetic_pan_enabled == false ) { fprintf( stderr, "\nExternal Renderer Config is supported only when binaural output configurations is used as output OR when Split rendering mode is enabled. Exiting. \n" ); goto cleanup; Loading Loading @@ -1068,12 +1066,12 @@ static bool parseCmdlIVAS_dec( arg->renderConfigEnabled = false; arg->renderConfigFilename = NULL; arg->Opt_dpid_on = 0; arg->dpidEnabled = false; arg->outputMdFilename = NULL; arg->inputFormat = IVAS_DEC_INPUT_FORMAT_G192; arg->Opt_non_diegetic_pan = 0; arg->non_diegetic_pan_enabled = false; arg->non_diegetic_pan_gain = 0.f; arg->tsmEnabled = false; arg->renderFramesize = IVAS_RENDER_FRAMESIZE_20MS; Loading Loading @@ -1412,7 +1410,7 @@ static bool parseCmdlIVAS_dec( else if ( strcmp( argv_to_upper, "-NON_DIEGETIC_PAN" ) == 0 ) { i++; arg->Opt_non_diegetic_pan = 1; arg->non_diegetic_pan_enabled = true; strncpy( argv_to_upper, argv[i], sizeof( argv_to_upper ) - 1 ); argv_to_upper[sizeof( argv_to_upper ) - 1] = '\0'; to_upper( argv_to_upper ); Loading Loading @@ -1510,7 +1508,7 @@ static bool parseCmdlIVAS_dec( { int16_t id, tmp; arg->Opt_dpid_on = 1; arg->dpidEnabled = true; ++i; tmp = 0; while ( is_number( argv[i + tmp] ) && tmp < IVAS_MAX_NUM_OBJECTS ) Loading Loading @@ -1591,7 +1589,8 @@ static bool parseCmdlIVAS_dec( arg->customLsSetupFilename = argv[i]; } i++; if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputConfig != IVAS_AUDIO_CONFIG_STEREO ) ) if ( arg->non_diegetic_pan_enabled && arg->outputConfig != IVAS_AUDIO_CONFIG_STEREO ) { fprintf( stderr, "Error: non-diegetic panning is supported in stereo only\n\n" ); usage_dec(); Loading @@ -1609,7 +1608,8 @@ static bool parseCmdlIVAS_dec( { arg->outputConfig = IVAS_AUDIO_CONFIG_MONO; arg->decMode = IVAS_DEC_MODE_EVS; if ( ( arg->Opt_non_diegetic_pan ) ) if ( arg->non_diegetic_pan_enabled ) { arg->outputConfig = IVAS_AUDIO_CONFIG_STEREO; } Loading
apps/encoder.c +10 −1 Original line number Diff line number Diff line Loading @@ -1517,6 +1517,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too low number of ISM channels specified!\n\n" ); usage_enc(); return false; } else { Loading @@ -1528,6 +1529,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too high number of ISM channels!\n\n" ); usage_enc(); return false; } } } Loading @@ -1535,6 +1537,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Number of ISM channels not specified!\n\n" ); usage_enc(); return false; } if ( i < argc - 4 ) { Loading @@ -1554,7 +1557,7 @@ static bool parseCmdlIVAS_enc( default: fprintf( stderr, "Error: MASA channels must be 1 or 2.\n\n" ); usage_enc(); break; return false; } } Loading @@ -1579,6 +1582,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: not enough arguments\n\n" ); usage_enc(); return false; } } Loading @@ -1591,6 +1595,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: not enough MASA arguments\n\n" ); usage_enc(); return false; } } else if ( strcmp( to_upper( argv[i] ), "-ISM_SBA" ) == 0 ) Loading @@ -1609,6 +1614,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too low number of ISM channels specified!\n\n" ); usage_enc(); return false; } else { Loading @@ -1620,6 +1626,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too high number of ISM channels!\n\n" ); usage_enc(); return false; } } } Loading @@ -1627,6 +1634,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Number of ISM channels not specified!\n\n" ); usage_enc(); return false; } if ( i < argc - 4 ) Loading Loading @@ -1678,6 +1686,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: not enough arguments\n\n" ); usage_enc(); return false; } } } Loading
ci/basop-pages/create_report_pages.py +44 −11 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ import pathlib import argparse from functools import partial FORMATS = ["Stereo", "ISM", "Multichannel", "MASA", "SBA", "OSBA", "OMASA", "Renderer"] CSV_DELIM = ";" SUBPAGE_TMPL_CSS = """ Loading @@ -25,7 +26,7 @@ SUBPAGE_TMPL_CSS = """ SUBPAGE_TMPL_HTML = """ <h1>Report for job {job_name}</h1 <h1>Report for job {job_name}</h1> Comparing: <ul> Loading @@ -35,6 +36,10 @@ Comparing: </ul> <br> <h2><a href="summary_{job_name}.html">Summary page</a></h2> <br> <br> <b>How is the table sorted?</b> <ul> <li>Cases with result ERROR or invalid/missing values for the numerical measures are given first</li> Loading Loading @@ -92,11 +97,21 @@ ARROW_DOWN = '<span class="arrowdown">⬂</span>' # expected columns. actual columns are filtered from the incoming data later, this # is mainly for controlling the order in the output table COLUMNS = ["testcase", "Result", "MLD", "MAXIMUM ABS DIFF"] COLUMNS = [ "testcase", "Format", "Category", "Result", "MLD", "MAXIMUM ABS DIFF", "MIN_SSNR", "MIN_ODG", ] COLUMNS_GLOBAL = COLUMNS[:1] COLUMNS_DIFFERENTIAL = COLUMNS[1:] COLUMNS_DIFFERENTIAL = COLUMNS[3:] COLUMNS_DIFFERENTIAL_NOT_MLD = COLUMNS_DIFFERENTIAL[2:] def create_subpage( html_out, csv_out, Loading @@ -111,15 +126,23 @@ def create_subpage( ) write_out_csv(merged_reports, merged_reports[0].keys(), csv_out) table_header_a = "".join([TH_TMPL_GLOBAL.format(c) for c in COLUMNS_GLOBAL] + [TH_TMPL_DIFFERENTIAL.format(c) for c in COLUMNS_DIFFERENTIAL]) table_header_a = "".join( [TH_TMPL_GLOBAL.format(c) for c in COLUMNS_GLOBAL] + [TH_TMPL_DIFFERENTIAL.format(c) for c in COLUMNS_DIFFERENTIAL] ) table_header_b = list() for c in COLUMNS_DIFFERENTIAL: table_header_b.append(TH_TMPL_SECOND_ROW.format(f"Previous Run<br>ID: {id_previous}")) table_header_b.append(TH_TMPL_SECOND_ROW.format(f"Current Run<br>ID: {id_current}")) table_header_b.append( TH_TMPL_SECOND_ROW.format(f"Previous Run<br>ID: {id_previous}") ) table_header_b.append( TH_TMPL_SECOND_ROW.format(f"Current Run<br>ID: {id_current}") ) table_header_b = "".join(table_header_b) table_body = "\n".join( tr_from_row(row, id_current, id_previous) for row in merged_reports ) new_subpage = SUBPAGE_TMPL_CSS + SUBPAGE_TMPL_HTML.format( id_current=id_current, id_previous=id_previous, Loading Loading @@ -218,8 +241,9 @@ def merge_and_cleanup_mld_reports( are uninteresting and are put last. """ try: float(x[mld_col_curr]) float(x[mld_col_prev]) cols = [mld_col_curr, mld_col_prev] + [p[1] for p in other_col_pairs] for c in cols: float(x[c]) except ValueError: # Value is no valid floating point value return float("inf") Loading @@ -241,8 +265,13 @@ def merge_and_cleanup_mld_reports( return diff other_col_pairs = [(f"{col}-{id_previous}", f"{col}-{id_current}") for col in COLUMNS_DIFFERENTIAL_NOT_MLD] merged = sorted(merged, key=partial(sort_func, other_col_pairs=other_col_pairs), reverse=True) other_col_pairs = [ (f"{col}-{id_previous}", f"{col}-{id_current}") for col in COLUMNS_DIFFERENTIAL_NOT_MLD ] merged = sorted( merged, key=partial(sort_func, other_col_pairs=other_col_pairs), reverse=True ) # remove the unecessary whole path from the testcase names for row in merged: Loading @@ -263,7 +292,10 @@ def merge_tables(tbl1, tbl2, suffix1, suffix2, merge_key, other_keys): if row1[merge_key] == row2[merge_key]: new_row[merge_key] = row1[merge_key] for key in other_keys: if key in row2: # In case key is missing, just insert a blank new_row[f"{key}-{suffix2}"] = row2[key] else: new_row[f"{key}-{suffix2}"] = "" break merged.append(new_row) Loading @@ -271,6 +303,7 @@ def merge_tables(tbl1, tbl2, suffix1, suffix2, merge_key, other_keys): return merged if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("html_out") Loading