Loading .gitlab-ci.yml +133 −55 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 @@ -2268,9 +2270,13 @@ coverage-test-on-main-scheduled: # still needed as long as no long MASA testvectors are there - .test-job-linux-needs-testv-dir tags: - test-complexity-measurement - ivas-linux-fast timeout: 3 hours 30 minutes stage: test before_script: - *print-common-info - *update-ltv-repo - *complexity-measurements-setup artifacts: name: "$CI_JOB_NAME--$CI_COMMIT_REF_NAME--sha-$CI_COMMIT_SHA" when: always Loading @@ -2278,91 +2284,166 @@ coverage-test-on-main-scheduled: paths: - $CI_JOB_NAME-public complexity-stereo-in-stereo-out: complexity-stereo-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX script: - *print-common-info - *update-ltv-repo - *complexity-measurements-setup - in_format=stereo - out_format=stereo - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - out_format=ext - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-ism-in-binaural-out: complexity-ism-in-binaural_room_ir-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX when: delayed start_in: 1 hour # when: delayed # start_in: 1 hour script: - *print-common-info - *update-ltv-repo - *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=$? - out_format=BINAURAL_ROOM_IR - 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 complexity-sba-hoa3-in-hoa3-out: complexity-ism-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX when: delayed start_in: 2 hours 30 minutes # when: delayed # start_in: 2 hour script: - in_format=ISM - out_format=EXT - 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 complexity-sba-hoa3-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 3 hours script: - *print-common-info - *update-ltv-repo - *complexity-measurements-setup - in_format=HOA3 - out_format=HOA3 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - out_format=EXT - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-mc-in-7_1_4-out: complexity-sba-hoa3-in-binaural_room_ir-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX when: delayed start_in: 4 hours # when: delayed # start_in: 4 hours script: - in_format=HOA3 - out_format=BINAURAL_ROOM_IR - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-mc-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 5 hours script: - *print-common-info - *update-ltv-repo - *complexity-measurements-setup - in_format=MC - out_format=7_1_4 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - out_format=EXT - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-masa-in-7_1_4-out: complexity-mc-in-binaural_room_ir-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX when: delayed start_in: 7 hours 30 minutes # when: delayed # start_in: 6 hours script: - in_format=MC - out_format=BINAURAL_ROOM_IR - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-masa-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 7 hours script: - *print-common-info - *update-ltv-repo - *complexity-measurements-setup - in_format=MASA - out_format=7_1_4 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - out_format=EXT - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-masa-in-binaural-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 8 hours script: - in_format=MASA - out_format=BINAURAL - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-omasa-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 9 hours script: - in_format=OMASA - out_format=EXT - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-omasa-in-binaural-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 10 hours script: - in_format=OMASA - out_format=BINAURAL - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2371,16 +2452,13 @@ complexity-StereoDmxEVS-stereo-in-mono-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX when: delayed start_in: 8 hours 30 minutes # when: delayed # start_in: 11 hours script: - *print-common-info - *update-ltv-repo - *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 +15 −14 Original line number Diff line number Diff line Loading @@ -128,7 +128,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 @@ -148,7 +148,7 @@ typedef struct #endif #endif AcousticEnvironmentSequence aeSequence; int16_t Opt_dpid_on; bool dpidEnabled; uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; } DecArguments; Loading Loading @@ -407,8 +407,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 @@ -427,8 +426,9 @@ 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 +594,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 @@ -1066,12 +1065,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 @@ -1410,7 +1409,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 @@ -1507,7 +1506,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 @@ -1587,7 +1586,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 @@ -1605,7 +1605,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 @@ -1519,6 +1519,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too low number of ISM channels specified!\n\n" ); usage_enc(); return false; } else { Loading @@ -1530,6 +1531,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too high number of ISM channels!\n\n" ); usage_enc(); return false; } } } Loading @@ -1537,6 +1539,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 @@ -1556,7 +1559,7 @@ static bool parseCmdlIVAS_enc( default: fprintf( stderr, "Error: MASA channels must be 1 or 2.\n\n" ); usage_enc(); break; return false; } } Loading @@ -1581,6 +1584,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: not enough arguments\n\n" ); usage_enc(); return false; } } Loading @@ -1593,6 +1597,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 @@ -1611,6 +1616,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too low number of ISM channels specified!\n\n" ); usage_enc(); return false; } else { Loading @@ -1622,6 +1628,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too high number of ISM channels!\n\n" ); usage_enc(); return false; } } } Loading @@ -1629,6 +1636,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 @@ -1680,6 +1688,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 +26 −6 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,9 +97,18 @@ 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", "MIN_SSNR"] 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:] Loading Loading @@ -128,6 +142,7 @@ def create_subpage( 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 @@ -226,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 Loading @@ -276,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 @@ -284,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 +133 −55 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 @@ -2268,9 +2270,13 @@ coverage-test-on-main-scheduled: # still needed as long as no long MASA testvectors are there - .test-job-linux-needs-testv-dir tags: - test-complexity-measurement - ivas-linux-fast timeout: 3 hours 30 minutes stage: test before_script: - *print-common-info - *update-ltv-repo - *complexity-measurements-setup artifacts: name: "$CI_JOB_NAME--$CI_COMMIT_REF_NAME--sha-$CI_COMMIT_SHA" when: always Loading @@ -2278,91 +2284,166 @@ coverage-test-on-main-scheduled: paths: - $CI_JOB_NAME-public complexity-stereo-in-stereo-out: complexity-stereo-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX script: - *print-common-info - *update-ltv-repo - *complexity-measurements-setup - in_format=stereo - out_format=stereo - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - out_format=ext - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-ism-in-binaural-out: complexity-ism-in-binaural_room_ir-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX when: delayed start_in: 1 hour # when: delayed # start_in: 1 hour script: - *print-common-info - *update-ltv-repo - *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=$? - out_format=BINAURAL_ROOM_IR - 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 complexity-sba-hoa3-in-hoa3-out: complexity-ism-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX when: delayed start_in: 2 hours 30 minutes # when: delayed # start_in: 2 hour script: - in_format=ISM - out_format=EXT - 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 complexity-sba-hoa3-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 3 hours script: - *print-common-info - *update-ltv-repo - *complexity-measurements-setup - in_format=HOA3 - out_format=HOA3 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - out_format=EXT - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-mc-in-7_1_4-out: complexity-sba-hoa3-in-binaural_room_ir-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX when: delayed start_in: 4 hours # when: delayed # start_in: 4 hours script: - in_format=HOA3 - out_format=BINAURAL_ROOM_IR - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-mc-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 5 hours script: - *print-common-info - *update-ltv-repo - *complexity-measurements-setup - in_format=MC - out_format=7_1_4 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - out_format=EXT - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-masa-in-7_1_4-out: complexity-mc-in-binaural_room_ir-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX when: delayed start_in: 7 hours 30 minutes # when: delayed # start_in: 6 hours script: - in_format=MC - out_format=BINAURAL_ROOM_IR - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-masa-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 7 hours script: - *print-common-info - *update-ltv-repo - *complexity-measurements-setup - in_format=MASA - out_format=7_1_4 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" - ret_val=$? - out_format=EXT - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-masa-in-binaural-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 8 hours script: - in_format=MASA - out_format=BINAURAL - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-omasa-in-ext-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 9 hours script: - in_format=OMASA - out_format=EXT - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val complexity-omasa-in-binaural-out: extends: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX # when: delayed # start_in: 10 hours script: - in_format=OMASA - out_format=BINAURAL - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$? - *complexity-measurements-prepare-artifacts - exit $ret_val Loading @@ -2371,16 +2452,13 @@ complexity-StereoDmxEVS-stereo-in-mono-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX when: delayed start_in: 8 hours 30 minutes # when: delayed # start_in: 11 hours script: - *print-common-info - *update-ltv-repo - *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 +15 −14 Original line number Diff line number Diff line Loading @@ -128,7 +128,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 @@ -148,7 +148,7 @@ typedef struct #endif #endif AcousticEnvironmentSequence aeSequence; int16_t Opt_dpid_on; bool dpidEnabled; uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; } DecArguments; Loading Loading @@ -407,8 +407,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 @@ -427,8 +426,9 @@ 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 +594,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 @@ -1066,12 +1065,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 @@ -1410,7 +1409,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 @@ -1507,7 +1506,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 @@ -1587,7 +1586,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 @@ -1605,7 +1605,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 @@ -1519,6 +1519,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too low number of ISM channels specified!\n\n" ); usage_enc(); return false; } else { Loading @@ -1530,6 +1531,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too high number of ISM channels!\n\n" ); usage_enc(); return false; } } } Loading @@ -1537,6 +1539,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 @@ -1556,7 +1559,7 @@ static bool parseCmdlIVAS_enc( default: fprintf( stderr, "Error: MASA channels must be 1 or 2.\n\n" ); usage_enc(); break; return false; } } Loading @@ -1581,6 +1584,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: not enough arguments\n\n" ); usage_enc(); return false; } } Loading @@ -1593,6 +1597,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 @@ -1611,6 +1616,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too low number of ISM channels specified!\n\n" ); usage_enc(); return false; } else { Loading @@ -1622,6 +1628,7 @@ static bool parseCmdlIVAS_enc( { fprintf( stderr, "Error: Too high number of ISM channels!\n\n" ); usage_enc(); return false; } } } Loading @@ -1629,6 +1636,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 @@ -1680,6 +1688,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 +26 −6 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,9 +97,18 @@ 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", "MIN_SSNR"] 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:] Loading Loading @@ -128,6 +142,7 @@ def create_subpage( 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 @@ -226,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 Loading @@ -276,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 @@ -284,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