Loading .gitlab-ci.yml +13 −6 Original line number Diff line number Diff line Loading @@ -69,7 +69,9 @@ stages: # compare to last target branch commit before pipeline was created - target_commit=$(git log $CI_MERGE_REQUEST_TARGET_BRANCH_NAME -1 --oneline --before=${CI_PIPELINE_CREATED_AT} --format=%H) .check-for-testvectors: &check-for-testvectors # check if the testvector files specified in scripts/config/ci_linux*.json are present - python3 -m pytest ci/test_vectors_available.py .merge-request-comparison-setup-codec: &merge-request-comparison-setup-codec ### build test binaries, initial clean for paranoia reasons Loading Loading @@ -660,30 +662,35 @@ clang-format-check: expose_as: 'formatting patch' # check for crashes if first received frame on decoder side is an SID .check-first-frame-is-sid: check-first-frame-is-sid: extends: - .test-job-linux-needs-testv-dir - .rules-merge-request tags: - ivas-linux stage: test needs: ["build-codec-linux-cmake"] # needs: ["build-codec-linux-cmake"] script: - *print-common-info - *update-ltv-repo - *check-for-testvectors - cmake . - make -j # TODO: for some MASA modes, we currently do not have testvectors that actually trigger DTX - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep -v MASA) - echo $modes - scripts/runIvasCodec.py -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 500 # SBA is run separately to use shorter part of file - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep -v MASA | grep -v SBA) - scripts/runIvasCodec.py -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 500 -U 0:20 || exit_code_no_sba=$? - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep SBA) - scripts/runIvasCodec.py -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 500 -U 70:80 || exit_code_sba=$? - if [ $exit_code_no_sba != 0 || $exit_code_sba != 0]; then exit 1; fi artifacts: paths: - out/logs when: on_failure name: "$CI_JOB_NAME--$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--sidstart" expose_as: "logs-sidstart" expire_in: "5 days" # --------------------------------------------------------------- # Test jobs for main branch Loading apps/decoder.c +20 −0 Original line number Diff line number Diff line Loading @@ -1605,7 +1605,11 @@ static ivas_error initOnFirstGoodFrame( /* Duplicate good first frame metadata to fill the beginning of stream. */ MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta = NULL; #ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); return error; Loading Loading @@ -1903,7 +1907,11 @@ static ivas_error decodeG192( else if ( bsFormat == IVAS_DEC_BS_MASA ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; #ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -2451,7 +2459,11 @@ static ivas_error decodeVoIP( else if ( bsFormat == IVAS_DEC_BS_MASA ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; #ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 1 ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -2863,7 +2875,11 @@ static ivas_error decodeVariableSpeed( else if ( bsFormat == IVAS_DEC_BS_MASA ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; #ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 1 ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -3033,7 +3049,11 @@ static ivas_error decodeVariableSpeed( else if ( bsFormat == IVAS_DEC_BS_MASA ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; #ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading ci/test_vectors_available.py 0 → 100644 +19 −0 Original line number Diff line number Diff line import pytest import pathlib import json import itertools TEST_CONFIG_DIR = pathlib.Path(__file__).parent.parent.joinpath("scripts/config") TEST_CONFIGS = [f for f in TEST_CONFIG_DIR.iterdir() if f.name.startswith("ci_linux")] def get_testvectors_from_config(config) -> list: with open(config) as f: cfg = json.load(f) return list(cfg["inpaths"].values()) TESTVECTORS = sorted(set(itertools.chain(*[get_testvectors_from_config(cfg) for cfg in TEST_CONFIGS]))) @pytest.mark.parametrize("testvector", TESTVECTORS) def test_vectors_available(testvector): if not pathlib.Path(testvector).exists(): raise FileNotFoundError(f"Testvector {testvector} can not be found") lib_com/ivas_cnst.h +9 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,9 @@ typedef enum #define MAX_JBM_L_FRAME_NS 40000000L #define MAX_SPAR_INTERNAL_CHANNELS IVAS_SPAR_MAX_CH #define MAX_CLDFB_DIGEST_CHANNELS 4 #ifdef FIX_470_MASA_JBM_EXT #define MASA_JBM_RINGBUFFER_FRAMES 3 #endif typedef enum { Loading Loading @@ -310,6 +313,9 @@ typedef enum #define MIN_BRATE_SWB_SCE ACELP_9k60 /* min. SCE bitrate where SWB is supported */ #define MIN_BRATE_SWB_STEREO IVAS_13k2 /* min. stereo bitrate where SWB is supported */ #define MIN_BRATE_FB_STEREO IVAS_32k /* min. SCE and stereo bitrate where FB is supported */ #ifdef ISM_FB #define MIN_BRATE_FB_ISM 24000 /* min. SCE bitrate where FB is supported in ISM format */ #endif #define MIN_TDM_BRATE_WB_TBE_1k05 12000 /* min. per channel bitrate where WB TBE @1.05 kbps is supported (0.35kbs at lower bitrates) */ #define MIN_BRATE_WB_TBE_1k05 9650 /* min. per channel bitrate where WB TBE @1.05 kbps is supported (0.35kbs at lower bitrates) */ Loading Loading @@ -1420,6 +1426,9 @@ typedef enum #define PARAM_MC_MAX_BAND_ABS_COV_DEC 10 #define PARAM_MC_ENER_LIMIT_INTRAFRAME (1.5f) #define PARAM_MC_ENER_LIMIT_INTERFRAME (2.0f) #ifdef FIX_563_PARAMMC_LIMITER #define PARAM_MC_ENER_LIMIT_MAX_DELTA_FAC (15.0f) #endif #define PARAM_MC_LFE_ON_THRESH (8000.0f) #define PARAM_MC_BAND_TO_MDCT_BAND_RATIO 16 /* Ratio of resolution of CLDFB Bands to MDCT Bands */ #define PARAM_MC_SLOT_ENC_NS 2500000L Loading lib_com/ivas_ism_com.c +4 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,10 @@ void ivas_param_ism_config( hParamIsm->last_el_sgn[i] = 1; } #ifdef FIX_549_DMX_GAIN hParamIsm->last_dmx_gain = 1.0f; set_f( hParamIsm->last_cardioid_left, 1.0f, MAX_NUM_OBJECTS ); #endif return; } Loading Loading
.gitlab-ci.yml +13 −6 Original line number Diff line number Diff line Loading @@ -69,7 +69,9 @@ stages: # compare to last target branch commit before pipeline was created - target_commit=$(git log $CI_MERGE_REQUEST_TARGET_BRANCH_NAME -1 --oneline --before=${CI_PIPELINE_CREATED_AT} --format=%H) .check-for-testvectors: &check-for-testvectors # check if the testvector files specified in scripts/config/ci_linux*.json are present - python3 -m pytest ci/test_vectors_available.py .merge-request-comparison-setup-codec: &merge-request-comparison-setup-codec ### build test binaries, initial clean for paranoia reasons Loading Loading @@ -660,30 +662,35 @@ clang-format-check: expose_as: 'formatting patch' # check for crashes if first received frame on decoder side is an SID .check-first-frame-is-sid: check-first-frame-is-sid: extends: - .test-job-linux-needs-testv-dir - .rules-merge-request tags: - ivas-linux stage: test needs: ["build-codec-linux-cmake"] # needs: ["build-codec-linux-cmake"] script: - *print-common-info - *update-ltv-repo - *check-for-testvectors - cmake . - make -j # TODO: for some MASA modes, we currently do not have testvectors that actually trigger DTX - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep -v MASA) - echo $modes - scripts/runIvasCodec.py -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 500 # SBA is run separately to use shorter part of file - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep -v MASA | grep -v SBA) - scripts/runIvasCodec.py -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 500 -U 0:20 || exit_code_no_sba=$? - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep SBA) - scripts/runIvasCodec.py -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 500 -U 70:80 || exit_code_sba=$? - if [ $exit_code_no_sba != 0 || $exit_code_sba != 0]; then exit 1; fi artifacts: paths: - out/logs when: on_failure name: "$CI_JOB_NAME--$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--sidstart" expose_as: "logs-sidstart" expire_in: "5 days" # --------------------------------------------------------------- # Test jobs for main branch Loading
apps/decoder.c +20 −0 Original line number Diff line number Diff line Loading @@ -1605,7 +1605,11 @@ static ivas_error initOnFirstGoodFrame( /* Duplicate good first frame metadata to fill the beginning of stream. */ MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta = NULL; #ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); return error; Loading Loading @@ -1903,7 +1907,11 @@ static ivas_error decodeG192( else if ( bsFormat == IVAS_DEC_BS_MASA ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; #ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -2451,7 +2459,11 @@ static ivas_error decodeVoIP( else if ( bsFormat == IVAS_DEC_BS_MASA ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; #ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 1 ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -2863,7 +2875,11 @@ static ivas_error decodeVariableSpeed( else if ( bsFormat == IVAS_DEC_BS_MASA ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; #ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 1 ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading Loading @@ -3033,7 +3049,11 @@ static ivas_error decodeVariableSpeed( else if ( bsFormat == IVAS_DEC_BS_MASA ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; #ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) #else if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading
ci/test_vectors_available.py 0 → 100644 +19 −0 Original line number Diff line number Diff line import pytest import pathlib import json import itertools TEST_CONFIG_DIR = pathlib.Path(__file__).parent.parent.joinpath("scripts/config") TEST_CONFIGS = [f for f in TEST_CONFIG_DIR.iterdir() if f.name.startswith("ci_linux")] def get_testvectors_from_config(config) -> list: with open(config) as f: cfg = json.load(f) return list(cfg["inpaths"].values()) TESTVECTORS = sorted(set(itertools.chain(*[get_testvectors_from_config(cfg) for cfg in TEST_CONFIGS]))) @pytest.mark.parametrize("testvector", TESTVECTORS) def test_vectors_available(testvector): if not pathlib.Path(testvector).exists(): raise FileNotFoundError(f"Testvector {testvector} can not be found")
lib_com/ivas_cnst.h +9 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,9 @@ typedef enum #define MAX_JBM_L_FRAME_NS 40000000L #define MAX_SPAR_INTERNAL_CHANNELS IVAS_SPAR_MAX_CH #define MAX_CLDFB_DIGEST_CHANNELS 4 #ifdef FIX_470_MASA_JBM_EXT #define MASA_JBM_RINGBUFFER_FRAMES 3 #endif typedef enum { Loading Loading @@ -310,6 +313,9 @@ typedef enum #define MIN_BRATE_SWB_SCE ACELP_9k60 /* min. SCE bitrate where SWB is supported */ #define MIN_BRATE_SWB_STEREO IVAS_13k2 /* min. stereo bitrate where SWB is supported */ #define MIN_BRATE_FB_STEREO IVAS_32k /* min. SCE and stereo bitrate where FB is supported */ #ifdef ISM_FB #define MIN_BRATE_FB_ISM 24000 /* min. SCE bitrate where FB is supported in ISM format */ #endif #define MIN_TDM_BRATE_WB_TBE_1k05 12000 /* min. per channel bitrate where WB TBE @1.05 kbps is supported (0.35kbs at lower bitrates) */ #define MIN_BRATE_WB_TBE_1k05 9650 /* min. per channel bitrate where WB TBE @1.05 kbps is supported (0.35kbs at lower bitrates) */ Loading Loading @@ -1420,6 +1426,9 @@ typedef enum #define PARAM_MC_MAX_BAND_ABS_COV_DEC 10 #define PARAM_MC_ENER_LIMIT_INTRAFRAME (1.5f) #define PARAM_MC_ENER_LIMIT_INTERFRAME (2.0f) #ifdef FIX_563_PARAMMC_LIMITER #define PARAM_MC_ENER_LIMIT_MAX_DELTA_FAC (15.0f) #endif #define PARAM_MC_LFE_ON_THRESH (8000.0f) #define PARAM_MC_BAND_TO_MDCT_BAND_RATIO 16 /* Ratio of resolution of CLDFB Bands to MDCT Bands */ #define PARAM_MC_SLOT_ENC_NS 2500000L Loading
lib_com/ivas_ism_com.c +4 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,10 @@ void ivas_param_ism_config( hParamIsm->last_el_sgn[i] = 1; } #ifdef FIX_549_DMX_GAIN hParamIsm->last_dmx_gain = 1.0f; set_f( hParamIsm->last_cardioid_left, 1.0f, MAX_NUM_OBJECTS ); #endif return; } Loading