Commit 3ce559f6 authored by Stefan Doehla's avatar Stefan Doehla
Browse files

Merge branch 'main' into 1154-add-rtpdump-support

parents 10265cef a6427733
Loading
Loading
Loading
Loading
Loading
+0 −87
Original line number Diff line number Diff line
@@ -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
+135 −24
Original line number Diff line number Diff line
@@ -23,11 +23,14 @@ variables:
      - 'test-long-self-test'
      - 'ivas-conformance'
      - 'ivas-conformance-linux'
      - 'check-float-reference'
      - 'check-clipping'
      - 'test-branch-vs-input-passthrough'

  GIT_CLEAN_FLAGS: -ffdxq
  TESTCASE_TIMEOUT_STV_SANITIZERS: 180
  TESTCASE_TIMEOUT_LTV_SANITIZERS: 1200
  TESTCASE_TIMEOUT_LTV_SANITIZERS: 2400
  BASOP_REFERENCE_BRANCH: "ivas-float-update"
  SCALE_FACTOR: "3.162"


default:
@@ -66,10 +69,12 @@ workflow:
      variables:
        IVAS_PIPELINE_NAME: 'Draft IVAS Conformance test -- Linux: $CI_COMMIT_BRANCH'        
    - if: $CI_PIPELINE_SOURCE == 'trigger'
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'check-float-reference'
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'check-clipping'
      variables:
        IVAS_PIPELINE_NAME: 'check-float-reference: $CI_COMMIT_BRANCH'
    
        IVAS_PIPELINE_NAME: 'Check core input clipping: $CI_COMMIT_BRANCH'
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'test-branch-vs-input-passthrough'
      variables:
        IVAS_PIPELINE_NAME: 'Pass-through comparison vs input: $CI_COMMIT_BRANCH'

stages:
  - .pre
@@ -122,6 +127,11 @@ stages:
# automatically disable #DEBUGGING macro in options.h using /**/-comment
  - sed -i.bak -e "s/^[[:space:]]*\(#define[[:space:]]*DEBUGGING\)/\/\*\1\*\//g" lib_com/options.h

.enable-debugging-macro: &enable-debugging-macro
# automatically enable #DEBUGGING macro in options.h using either /**/-comment or //-comment
  - sed -i.bak -e "s/\/\*\ *\(#define\ *DEBUGGING\ *\)\*\//\1/g" lib_com/options.h
  - sed -i.bak -e "s/\/\/\ *\(#define\ *DEBUGGING\ *\)/\1/g" lib_com/options.h

.merge-request-comparison-setup-codec: &merge-request-comparison-setup-codec 
  ### build test binaries, initial clean for paranoia reasons
  - *disable-debugging-macro
@@ -263,7 +273,8 @@ stages:
      when: never      
    - if: $MANUAL_PIPELINE_TYPE == 'ivas-conformance-linux'
      when: never      
    - if: $MANUAL_PIPELINE_TYPE == 'check-float-reference'
    - if: $MANUAL_PIPELINE_TYPE == 'check-clipping'
    - if: $MANUAL_PIPELINE_TYPE == 'test-branch-vs-input-passthrough'
      when: never
    - when: on_success

@@ -404,6 +415,16 @@ check-self-test-names-pre:
  script:
    - python3 ci/check_self_test_names.py scripts/config/self_test.prm 135

check-no-duplicates-in-self-tests:
  extends:
    - .rules-merge-request
  stage: prevalidate
  needs: []
  tags:
    - ivas-linux
  script:
    - python3 ci/find_duplicates_in_prm_files.py

branch-is-up-to-date-with-main-post:
  extends:
    - .rules-merge-request
@@ -415,8 +436,7 @@ branch-is-up-to-date-with-main-post:
    - echo $commits_behind_count
    - if [ $commits_behind_count -eq 0 ]; then exit 0; else echo "Your branch is behind main, possibly main changed during your pipeline run, run 'git merge origin/main' to update." exit 1; fi;

# for merges to basop-ci-branch, run the long test suite in reference generation mode to catch problems already here and not only in the BASOP repo
check-compatibility-with-basop-reference-branch:
.basop-ci-branch-compat-template:
  extends:
    - .test-job-linux
  rules:
@@ -424,29 +444,24 @@ check-compatibility-with-basop-reference-branch:
      changes:
        - tests/**/*
        - scripts/**/*
        - ci/**/*
    - if: ($CI_PIPELINE_SOURCE == 'web' || $CI_PIPELINE_SOURCE == 'trigger') && $MANUAL_PIPELINE_TYPE == 'check-float-reference'
    - if: $CI_PIPELINE_SOURCE == 'push'
      when: never
  tags:
    - ivas-linux-fast
  script:
  before_script:
    - git clone -b $BASOP_REFERENCE_BRANCH https://forge.3gpp.org/rep/sa4/audio/ivas-basop.git --single-branch
    - make -j -C ivas-basop
    - cp ivas-basop/IVAS_cod ./IVAS_cod_ref
    - cp ivas-basop/IVAS_dec ./IVAS_dec_ref
    - cp ivas-basop/IVAS_cod ./IVAS_cod # Not used but needed to launch the pytest
    - cp ivas-basop/IVAS_dec ./IVAS_dec # Not used but needed to launch the pytest
    - python3 ci/remove_unsupported_testcases.py scripts/config/self_test.prm
    - python3 ci/remove_unsupported_testcases.py $PARAM_FILE
    - python3 tests/create_short_testvectors.py
    - exit_code1=0
    - exit_code2=0
    - python3 -m pytest tests/codec_be_on_mr_nonselection -v --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml || exit_code1=$?
    - *update-ltv-repo
    - *copy-ltv-files-to-testv-dir

    - python3 -m pytest tests/codec_be_on_mr_nonselection --param_file $PARAM_FILE --update_ref 1 --ref_encoder_path ivas-basop/IVAS_cod --ref_decoder_path ivas-basop/IVAS_dec --html=report.html --self-contained-html --junit-xml=report-junit.xml || true
    - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true
    - if [ $zero_errors != 1 ]; then echo "Run errors encountered!"; exit $EXIT_CODE_FAIL; fi
    - exit 0
    - if [ $zero_errors != 1 ]; then echo "Run errors encountered with $PARAM_FILE !"; exit $EXIT_CODE_FAIL; fi

  artifacts:
    name: "check-float-reference--sha-$CI_COMMIT_SHORT_SHA--results"
    name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results"
    when: always
    expire_in: 1 month
    paths:
@@ -458,6 +473,38 @@ check-compatibility-with-basop-reference-branch:
      junit:
        - report-junit.xml

check-compatibility-with-basop-reference-branch-stv:
  extends:
    - .basop-ci-branch-compat-template
  variables:
    PARAM_FILE: scripts/config/self_test.prm
  script:
    - exit 0

check-compatibility-with-basop-reference-branch-ltv:
  extends:
    - .basop-ci-branch-compat-template
  variables:
    PARAM_FILE: scripts/config/self_test_ltv.prm
  script:
    - exit 0

check-compatibility-with-basop-reference-branch-encoder-stv:
  extends:
    - .basop-ci-branch-compat-template
  variables:
    PARAM_FILE: scripts/config/self_test_basop_encoder.prm
  script:
    - exit 0

check-compatibility-with-basop-reference-branch-encoder-ltv:
  extends:
    - .basop-ci-branch-compat-template
  variables:
    PARAM_FILE: scripts/config/self_test_ltv_basop_encoder.prm
  script:
    - exit 0

# ---------------------------------------------------------------
# Build jobs
# ---------------------------------------------------------------
@@ -491,7 +538,6 @@ build-codec-instrumented-linux:
  timeout: "10 minutes"
  script:
    - *print-common-info
    - *activate-Werror-linux
    - ./scripts/prepare_instrumentation.sh
    - make -j -C scripts/c-code_instrument

@@ -1639,6 +1685,71 @@ test-long-self-test:
      junit:
        - report-junit-ltv.xml

check-clipping:
  tags:
    - ivas-linux
  stage: test
  timeout: "30 minutes"
  rules:
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'check-clipping'
  allow_failure:
    exit_codes:
      - 123
  script:
    - *print-common-info
    - *enable-debugging-macro
    - make -j
    - tests/scale_pcm.py ./scripts/testv/ $SCALE_FACTOR # Default: 3.162 (+10 dB). Can be set in manual trigger.
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec
    - python3 scripts/parse_xml_report.py report-junit.xml report.csv --clipping
  artifacts:
    name: "check-clipping--sha-$CI_COMMIT_SHORT_SHA--results"
    when: always
    expire_in: 2 weeks
    paths:
      - report-junit.xml
      - report.html
      - report.csv
    expose_as: "check-clipping results"
    reports:
      junit:
        - report-junit.xml

test-branch-vs-input-passthrough:
  tags:
    - ivas-linux
  stage: compare
  timeout: "30 minutes" # TBD
  rules:
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'test-branch-vs-input-passthrough'
  allow_failure:
    exit_codes:
      - 123
  script:
    - *print-common-info
    - make -j

    - exit_code=0
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --html=report.html --self-contained-html --junit-xml=report-junit.xml --compare_to_input --mld --ssnr --odg || exit_code=$?
    - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true
    - python3 scripts/parse_xml_report.py report-junit.xml report.csv
    - if [ $zero_errors != 1 ]; then echo "Run errors encountered!"; exit $EXIT_CODE_FAIL; fi
    - if [ $exit_code -eq 1 ]; then echo "Differences encountered."; exit $EXIT_CODE_NON_BE; fi
    - exit 0

  artifacts:
    name: "test-branch-vs-input-passthrough--sha-$CI_COMMIT_SHORT_SHA--results"
    when: always
    expire_in: 4 mos
    paths:
      - report-junit.xml
      - report.html
      - report.csv
    expose_as: "test-branch-vs-input-passthrough results"
    reports:
      junit:
        - report-junit.xml


# ---------------------------------------------------------------
# Scheduled jobs on main
@@ -2304,7 +2415,7 @@ coverage-test-on-main-scheduled:
  &complexity-measurements-prepare-artifacts # prepare artifacts -> move to public directory
  - public_dir="$CI_JOB_NAME-public"
  - mkdir $public_dir
  - mv -f wmops/log_*_all.txt wmops/*.js ${public_dir}/
  - mv -f wmops/log_*_all.txt ./*.js ${public_dir}/
  # move logfiles for links
  - mkdir $public_dir/logs
  # first move logs
+366 −240

File changed.

Preview size limit exceeded, changes collapsed.

+8 −0
Original line number Diff line number Diff line
@@ -212,6 +212,8 @@ int main(
#ifdef DEBUG_SBA
    int16_t numTransportChannels = 1;
#endif
    int32_t noClipping;
    float maxOverload, minOverload;
#endif

#ifdef DEBUGGING
@@ -941,6 +943,12 @@ int main(
    }

#ifdef DEBUGGING
    if ( ( noClipping = IVAS_ENC_GetNoCLipping( hIvasEnc, &maxOverload, &minOverload ) ) > 0 )
    {
        fprintf( stdout, "Core input overload detected: %d samples!!!\n", noClipping );
        fprintf( stdout, "Max overload value: %f \n", maxOverload );
        fprintf( stdout, "Min overload value: %f \n\n", minOverload );
    }
    print_snr();
#endif
    /*------------------------------------------------------------------------------------------*
+17 −8
Original line number Diff line number Diff line
@@ -615,7 +615,7 @@ static int16_t get_cldfb_in_flag(
    int16_t cldfb_in_flag;

    cldfb_in_flag = 0;
    if ( renderConfig->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV )
    if ( renderConfig->split_rend_config.rendererSelection == IVAS_BIN_RENDERER_TYPE_FASTCONV )
    {
#ifdef DEBUGGING
        cldfb_in_flag = 1;
@@ -665,7 +665,7 @@ int main(
    SplitRendBFIFileReader *splitRendBFIReader = NULL;
    Vector3PairFileReader *referenceVectorReader = NULL;
    hrtfFileReader *hrtfFileReader = NULL;
    IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL;
    IVAS_DEC_HRTF_CREND_HANDLE *hHrtfCrend = NULL;
    IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL;
    IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL;
    IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL;
@@ -906,7 +906,11 @@ int main(
                goto cleanup;
            }

#ifdef FIX_1228_SAMPLING_RATE_MISMATCH_IN_HRTF_FILE
            if ( ( error = load_TDrend_HRTF_binary( *hHrtfTD, args.sampleRate, hrtfFileReader ) ) != IVAS_ERR_OK )
#else
            if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfFileReader ) ) != IVAS_ERR_OK )
#endif
            {
                if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
                {
@@ -920,13 +924,19 @@ int main(
            }


            if ( ( error = IVAS_REND_GetHrtfCRendHandle( hIvasRend, &hSetOfHRTF ) ) != IVAS_ERR_OK )
            if ( ( error = IVAS_REND_GetHrtfCRendHandle( hIvasRend, &hHrtfCrend ) ) != IVAS_ERR_OK )
            {
                fprintf( stderr, "\nIVAS_Rend_GetHrtfCRendHandle failed: %s\n\n", ivas_error_to_string( error ) );
                goto cleanup;
            }

            if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfFileReader, args.sampleRate ) ) != IVAS_ERR_OK )
            IVAS_AUDIO_CONFIG hrtf_set_audio_cfg = IVAS_AUDIO_CONFIG_7_1_4;
            if ( args.inConfig.ambisonicsBuses->audioConfig != IVAS_AUDIO_CONFIG_INVALID && args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR )
            {
                hrtf_set_audio_cfg = args.inConfig.ambisonicsBuses->audioConfig;
            }

            if ( ( error = load_Crend_HRTF_from_binary( *hHrtfCrend, hrtfFileReader, args.outConfig.audioConfig, hrtf_set_audio_cfg, args.sampleRate ) ) != IVAS_ERR_OK )
            {
                if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
                {
@@ -935,7 +945,7 @@ int main(
                }
                else
                {
                    destroy_SetOfHRTF( hSetOfHRTF );
                    destroy_crend_hrtf( hHrtfCrend );
                }
            }

@@ -945,7 +955,7 @@ int main(
                goto cleanup;
            }

            if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hrtfFileReader ) ) != IVAS_ERR_OK )
            if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, args.outConfig.audioConfig, args.inConfig.ambisonicsBuses->audioConfig, hrtfFileReader ) ) != IVAS_ERR_OK )
            {
                if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
                {
@@ -1044,7 +1054,6 @@ int main(
                fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", aeID );
                exit( -1 );
            }
            renderConfig.roomAcoustics.override = 1;
        }

        /* ISAR frame size is set from command line, not renderer config file.
@@ -1953,7 +1962,6 @@ cleanup:

    Vector3PairFileReader_close( &referenceVectorReader );
    destroy_td_hrtf( hHrtfTD );
    destroy_SetOfHRTF( hSetOfHRTF );
    destroy_hrtf_statistics( hHrtfStatistics );
    IVAS_REND_Close( &hIvasRend );
    IsmPositionProvider_close( positionProvider );
@@ -2496,6 +2504,7 @@ static CmdlnArgs defaultArgs(
    args.outConfig.audioConfig = IVAS_AUDIO_CONFIG_INVALID;
    args.outConfig.outSetupCustom.num_spk = 0;
    args.outConfig.outSetupCustom.num_lfe = 0;
    args.inConfig.ambisonicsBuses->audioConfig = IVAS_AUDIO_CONFIG_INVALID;

    for ( int32_t i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i )
    {
Loading