From 82077f6d591071384fc385eca8984e886aad0eee Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Fri, 17 Jun 2022 16:22:01 +0300 Subject: [PATCH 01/16] Initial commit of CI build scripts from IVAS PC wiki. Author of content in this commit is Jan Kiene. --- .gitlab_ci.yml | 155 +++++++++++++++++++++++++++ ci/build_all_linux.sh | 18 ++++ ci/build_codec_instrumented_linux.sh | 11 ++ ci/build_codec_sanitizers_linux.sh | 15 +++ ci/smoke_test.sh | 12 +++ scripts/config/docker_linux.json | 24 +++++ 6 files changed, 235 insertions(+) create mode 100644 .gitlab_ci.yml create mode 100755 ci/build_all_linux.sh create mode 100755 ci/build_codec_instrumented_linux.sh create mode 100755 ci/build_codec_sanitizers_linux.sh create mode 100755 ci/smoke_test.sh create mode 100644 scripts/config/docker_linux.json diff --git a/.gitlab_ci.yml b/.gitlab_ci.yml new file mode 100644 index 0000000000..4dffbd82ad --- /dev/null +++ b/.gitlab_ci.yml @@ -0,0 +1,155 @@ +variables: + TESTV_DIR: "/testv" + TOOLS_DIR: "/tools" + +# prevent running two pipelines on pushes to merge request branches +workflow: + rules: + # see https://docs.gitlab.com/ee/ci/yaml/workflow.html#switch-between-branch-pipelines-and-merge-request-pipelines + - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push" + when: never + - when: always + + +stages: + - maintenance + - build + - test + - compare + + +# template for all test jobs +.test-job: + rules: + - if: $MIRROR_ACCESS_TOKEN # Don't run in the mirror update pipeline (only then MIRROR_ACCESS_TOKEN is defined) + when: never + - when: on_success + +# template for using an ubuntu 22.04 image in docker +.test-job-ubuntu: + extends: .test-job + image: $CI_REGISTRY_IMAGE/ubuntu_22.04:latest + tags: + - exec::docker + +# build all components of the project, i.e. codec itself, the unittests, the prerenderer and the standalone version of the TD object renderer +build-all-linux: + extends: .test-job-ubuntu + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + stage: build + script: + - bash ci/build_all_linux.sh + +build-codec-instrumented-linux: + extends: .test-job-ubuntu + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + stage: build + script: + - bash ci/build_codec_instrumented.sh + +# make sure that the codec builds with msan, asan and usan +build-codec-sanitizers-linux: + extends: .test-job-ubuntu + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + stage: build + script: + # need to patch PATH so that `clang` is available + - PATH=$PATH:/usr/lib/llvm-13/bin + - bash ci/build_codec_sanitizers_linux.sh + +# test that runs all modes with 1s input signals +codec-smoke-test: + extends: .test-job-ubuntu + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + stage: test + tags: + - exec::docker + - res::ivas-testv + script: + - bash ci/smoke_test.sh + artifacts: + paths: + - summary.txt + +# compare bit exactness between target and source branch +self-test-on-merge-request: + extends: .test-job-ubuntu + stage: compare + tags: + - exec::docker + - res::ivas-testv + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + script: + ### build test binaries, clean for paranoia reasons + - make clean all + - mv IVAS_cod IVAS_cod_test + - mv IVAS_dec IVAS_dec_test + + ### checkout version to compare against + # first delete local target branch to avoid conflicts when branch is cached and there are merge conflicts during fetching + - git branch -D $CI_MERGE_REQUEST_TARGET_BRANCH_NAME + # needed when depth is lower than the number of commits in the branch + - git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME:$CI_MERGE_REQUEST_TARGET_BRANCH_NAME + + ## 1. variant: use target branch directly -> includes possible race condition + #- git checkout $CI_MERGE_REQUEST_TARGET_BRANCH_NAME + + ## 2. variant: compare to last common commit ("start" of branch after all possible merge-backs) + #- last_source_commit=$(git log -n 1 --pretty=format:"%H") + #- last_target_commit=$(git log -n 1 --pretty=format:"%H" $CI_MERGE_REQUEST_TARGET_BRANCH_NAME) + #- split_commit=$(git merge-base $last_source_commit $last_target_commit) + #- git checkout $split_commit + + ## 3. variant: compare to last master commit before pipeline was created + - target_commit=$(git log $CI_MERGE_REQUEST_TARGET_BRANCH_NAME -1 --oneline --before=${CI_PIPELINE_CREATED_AT} --format=%H) + - git checkout $target_commit + + ###build reference binaries + - make clean all + - mv IVAS_cod IVAS_cod_ref + - mv IVAS_dec IVAS_dec_ref + + ### copy testv dir to necessary place + - cp -r $TESTV_DIR ./scripts/testv + ### run selftest + - test_output=test_output.txt + - python3 ./scripts/self_test.py --encref IVAS_cod_ref --decref IVAS_dec_ref --enctest IVAS_cod_test --dectest IVAS_dec_test | tee $test_output + + ### analyse test output + # check for crashes during the test, if any happened, fail the test + - if cat $test_output | grep -c "Run errors were encountered for the following conditions:"; then echo "Codec had run errors"; exit 1; fi + # check for non bitexact output and fail test if the merge request does not have a non-BE tag + - if ! cat $test_output | grep -c "All [0-9]* tests are bitexact" && ! echo $CI_MERGE_REQUEST_TITLE | grep -c --ignore-case "\[non[ -]*be\]"; then echo "Non-bitexact cases without non-BE tag encountered"; exit 1; fi + + artifacts: + paths: + - ./scripts/ref/logs + - ./scripts/test/logs + - ./scripts/self_test_summary.txt + + +# Pull state of a branch on 3GPP repo, push to a mirror repo. +pull-from-3gpp-forge: + stage: maintenance + rules: + - if: $MIRROR_ACCESS_TOKEN # Only run in the mirror update pipeline (only then MIRROR_ACCESS_TOKEN is defined) + script: + # Set up git LFS for mirroring (see: https://github.com/git-lfs/git-lfs/issues/1762) + - git lfs install --skip-smudge + + # Check out mirror branch - by default the runner checks out by commit hash, which results in detached head state + - git checkout $CI_COMMIT_BRANCH + + # Pull commits from upstream + - git remote add upstream https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec.git + - git pull --ff-only --tags upstream $MIRROR_SOURCE_BRANCH + - git lfs pull upstream + + # Push to mirror, include tags. Option `-o ci.skip` tells GitLab to skip CI for the pushed commits (assumed already tested upstream) + - git push --tags -o ci.skip "https://${GITLAB_USER_LOGIN}:${MIRROR_ACCESS_TOKEN}@${CI_REPOSITORY_URL#*@}" "HEAD:${CI_COMMIT_BRANCH}" + diff --git a/ci/build_all_linux.sh b/ci/build_all_linux.sh new file mode 100755 index 0000000000..53f72ac1ee --- /dev/null +++ b/ci/build_all_linux.sh @@ -0,0 +1,18 @@ +#! /usr/bin/bash + +if [ ! -d "lib_com" ]; then + echo "not in root directory! - please run in IVAS root" + exit 1 +fi + +# first build codec, everything else needs this anyway +make clean all +# build unittests +make unittests +# build prerenderer +cd scripts/prerenderer +make +# build standalone TD object renderer +cd .. +cd td_object_renderer/object_renderer_standalone +make diff --git a/ci/build_codec_instrumented_linux.sh b/ci/build_codec_instrumented_linux.sh new file mode 100755 index 0000000000..37ac65c2c0 --- /dev/null +++ b/ci/build_codec_instrumented_linux.sh @@ -0,0 +1,11 @@ +#! /usr/bin/bash + +if [ ! -d "lib_com" ]; then + echo "not in root directory! - please run in IVAS root" + exit 1 +fi + +cd scripts +./prepare_instrumentation.sh +cd c-code_instrument +make diff --git a/ci/build_codec_sanitizers_linux.sh b/ci/build_codec_sanitizers_linux.sh new file mode 100755 index 0000000000..054127dab2 --- /dev/null +++ b/ci/build_codec_sanitizers_linux.sh @@ -0,0 +1,15 @@ +#! /usr/bin/bash + +if [ ! -d "lib_com" ]; then + echo "not in root directory! - please run in IVAS root" + exit 1 +fi + +# CI linux container would do this, can stay commented if clang (v13) is in your path +#PATH=$PATH:/usr/lib/llvm-13/bin +make clean +make CLANG=1 +make clean +make CLANG=2 +make clean +make CLANG=3 diff --git a/ci/smoke_test.sh b/ci/smoke_test.sh new file mode 100755 index 0000000000..bfd6e3108c --- /dev/null +++ b/ci/smoke_test.sh @@ -0,0 +1,12 @@ +#! /usr/bin/bash + +if [ ! -d "lib_com" ]; then + echo "not in root directory! - please run in IVAS root" + exit 1 +fi + +make clean all + +# get all modes except SBA rate switching (which is broken currently) +list=$(./scripts/runIvasCodec.py -l | grep -v -e "SBA" -e "_rs") +./scripts/runIvasCodec.py -p ./scripts/config/docker_linux.json -m $list -U 1 diff --git a/scripts/config/docker_linux.json b/scripts/config/docker_linux.json new file mode 100644 index 0000000000..1019055c47 --- /dev/null +++ b/scripts/config/docker_linux.json @@ -0,0 +1,24 @@ +{ + "afspPath": "/tools/Linux/", + "utilPath": "not_needed", + "inpaths": { + "MONO": "/testv/all_mono.wav", + "STEREO": "/testv/all_stereo_speech_ITU_concat.wav", + "FOA": "/testv/test_FOA_v3.wav", + "HOA3": "/testv/test_HOA3_v3.wav", + "SBA": "/testv/test_HOA3_v3.wav", + "MASA1TC1DIR": "/testv/test_HOA3_v3_1dir_MASA1TC.wav", + "MASA1TC2DIR": "/testv/test_HOA3_v3_2dir_MASA1TC.wav", + "MASA2TC1DIR": "/testv/test_HOA3_v3_1dir_MASA2TC.wav", + "MASA2TC2DIR": "/testv/test_HOA3_v3_2dir_MASA2TC.wav", + "5_1": "/testv/test_MC51.wav", + "5_1_2": "/testv/test_MC51p2.wav", + "5_1_4": "/testv/test_MC51p4.wav", + "7_1": "/testv/test_MC71.wav", + "7_1_4": "/testv/test_MC71p4.wav", + "ISM1": "/testv/test_ISM_1obj.wav", + "ISM2": "/testv/test_ISM_2obj.wav", + "ISM3": "/testv/test_ISM_3obj.wav", + "ISM4": "/testv/test_ISM_4obj.wav" + } +} -- GitLab From e3ea151ccd465b98f725b8554e2a145043f5d0ae Mon Sep 17 00:00:00 2001 From: knj Date: Tue, 21 Jun 2022 09:53:01 +0200 Subject: [PATCH 02/16] remove AFsP dependency in python scripts everythign done in python now, different resampling causes non-BE to before --- scripts/pyaudio3dtools/audiofile.py | 11 +- scripts/pyivastest/IvasModeRunner.py | 199 +++++---------------------- 2 files changed, 41 insertions(+), 169 deletions(-) mode change 100644 => 100755 scripts/pyaudio3dtools/audiofile.py mode change 100644 => 100755 scripts/pyivastest/IvasModeRunner.py diff --git a/scripts/pyaudio3dtools/audiofile.py b/scripts/pyaudio3dtools/audiofile.py old mode 100644 new mode 100755 index cd735dfe64..8a87ea7523 --- a/scripts/pyaudio3dtools/audiofile.py +++ b/scripts/pyaudio3dtools/audiofile.py @@ -124,6 +124,7 @@ def convertfile( out_nchans: Optional[int] = None, in_fs: Optional[int] = None, out_fs: Optional[int] = None, + out_len_samples: Optional[int] = None, verbose: bool = False, ) -> None: """Convert audio file, can convert wav from/to pcm, change nchannels and sampling rate @@ -142,6 +143,9 @@ def convertfile( Input sampling rate, required for .pcm input file out_fs: Optional[int] Output sampling rate, default out_fs = in_fs + out_len_samples: Optional[int] + Cut file to this length in samples. + Adds zeros at the end if bigger than file length. Returns ------- @@ -155,6 +159,7 @@ def convertfile( in_nchans = 1 x, in_fs = readfile(in_file, nchannels=in_nchans, fs=in_fs) in_nchans = x.shape[1] + in_len_samples = x.shape[0] # Configure output file y = x @@ -167,12 +172,16 @@ def convertfile( print(f"Input file: {in_file}, sampling rate {str(in_fs)} size {str(x.shape)}") # Process - if in_file == out_file and in_nchans == out_nchans and in_fs == out_fs: + if in_file == out_file and in_nchans == out_nchans and in_fs == out_fs and in_len_samples == out_len_samples: if verbose: print("Convert file: nothing to be done") else: y = audioarray.convert(x, out_nchans=out_nchans, in_fs=in_fs, out_fs=out_fs) + if out_len_samples is None: + out_len_samples = y.shape[0] + y = audioarray.cut(y, (0, out_len_samples)) + # write/convert wav format writefile(out_file, y, fs=out_fs) if verbose: diff --git a/scripts/pyivastest/IvasModeRunner.py b/scripts/pyivastest/IvasModeRunner.py old mode 100644 new mode 100755 index 3808eace50..172951c1aa --- a/scripts/pyivastest/IvasModeRunner.py +++ b/scripts/pyivastest/IvasModeRunner.py @@ -47,6 +47,7 @@ from pyivastest import IvasModeCollector from pyivastest import constants from pyaudio3dtools.spatialaudioformat import Format as spformat import pyaudio3dtools.audiofile as af +import pyaudio3dtools.audioarray as ar BW_TO_SR = {"nb": 8, "wb": 16, "swb": 32, "fb": 48} IN_CONFIG_TO_COPY_AUDIO = { "SBA": [], @@ -583,107 +584,13 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): pcm_name_res_tmp = pcm_name + ".res.wav" pcm_name_cpy_tmp = pcm_name + ".cpy.wav" in_file_name_transformed = self.transform_path(in_file_name) - pcm_name_res_transformed = self.transform_path(pcm_name_res_tmp) pcm_name_cpy_transformed = self.transform_path(pcm_name_cpy_tmp) - # check if the given length with -U is longer than the file itself and avoid cutting then - if do_limit_duration: - in_file_info = af.get_wav_file_info( - in_file_name_transformed - ) - cut_len_samples = int( - float(self.max_duration) * in_file_info["fs"] - ) - - get_in_len_cmd = [ - os.path.join(self.config["afspPath"], "InfoAudio"), - in_file_name_transformed, - ] - info_audio = subprocess.check_output(get_in_len_cmd).decode( - "utf8" - ) + resamp_in_path = in_file_name_transformed - # if there is a problem with parsing the length, stick with - # the old behaviour, hence the +1 - in_len = cut_len_samples + 1 - search_for = "No. frames: " - for line in info_audio.splitlines(): - if line.startswith(search_for): - try: - in_len = int( - line.strip().replace(search_for, "") - ) - except: - self.logger.console( - "Problem with parsing length from InfoAudio", - logging.ERROR, - ) - break - - do_limit_duration = cut_len_samples < in_len - - if do_limit_duration: - # TODO: is this + 8000 still needed? - out_len = int( - float(self.max_duration) - * float(int(in_file_info["fs"])) - + 8000 - ) - limit_cpy_cmd = [ - os.path.join(self.config["afspPath"], "CopyAudio"), - "-l", - "0:{}".format(out_len), - in_file_name_transformed, - pcm_name_cpy_transformed, - ] - pcm_log.write(" ".join(limit_cpy_cmd)) - limit_cpy_return_code = subprocess.run( - limit_cpy_cmd, capture_output=True, text=True - ) - if limit_cpy_return_code.returncode: - self.logger.console( - "Problem with time limiting copying {} before resampling!".format( - in_file_name - ), - logging.ERROR, - ) - pcm_log.write(limit_cpy_return_code.stderr) - pcm_log.write(limit_cpy_return_code.stdout) - resamp_cmd = [ - os.path.join(self.config["afspPath"], "ResampAudio"), - "--srate=" + str(int(sample_rate_in) * 1000), - pcm_name_cpy_transformed, - pcm_name_res_transformed, - ] - else: - resamp_cmd = [ - os.path.join(self.config["afspPath"], "ResampAudio"), - "--srate=" + str(int(sample_rate_in) * 1000), - in_file_name_transformed, - pcm_name_res_transformed, - ] - - pcm_log.write(" ".join(resamp_cmd)) - resamp_return_code = subprocess.run( - resamp_cmd, capture_output=True, text=True - ) - if resamp_return_code.returncode: - self.logger.console( - "Problem with resampling {} before encoding!".format( - in_file_name - ), - logging.ERROR, - ) - pcm_log.write(resamp_return_code.stderr) - pcm_log.write(resamp_return_code.stdout) - # get number of channels from ResampAudio output if config["cmd"]["in_config"] == "SBA": - nchannels = 0 - for line in resamp_return_code.stdout.split("\n"): - if re.findall("Number of channels", line): - nchannels = int(line.split()[3]) - in_format = spformat.detect_format(nchannels) - break + wav_info = af.get_wav_file_info(in_file_name_transformed) + in_format = spformat.detect_format(wav_info["channels"]) # save in config as json file in_format_dict = spformat.get_format_dict(in_format) @@ -692,56 +599,45 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): self.pcm_info.update({pcm_name: in_format_dict}) + # read signal and sampling rate from file + sig, fs = af.readfile(in_file_name_transformed) + + # check if the given length with -U is longer than the file itself and avoid cutting then + if do_limit_duration: + cut_len_samples = int(float(self.max_duration) * fs) + + in_len = sig.shape[0] + + # no need to cut anything if given length is bigger than signal length + if cut_len_samples < in_len: + out_len = int(float(self.max_duration) * fs) + sig = ar.cut(sig, (0, out_len)) + + pcm_log.write("Limit signal length to {} samples".format(out_len)) + af.writefile(pcm_name_cpy_transformed, sig, fs) + + resamp_in_path = pcm_name_cpy_transformed + + pcm_name_transformed = self.transform_path(pcm_name) + + out_fs = int(sample_rate_in) * 1000 + out_len = int(float(self.max_duration) * out_fs) + pcm_log.write("Resampling to {} with length: {}".format(out_fs, out_len)) + af.convertfile(resamp_in_path, pcm_name_transformed, out_fs=out_fs, out_len_samples=out_len) + in_config = config["cmd"]["in_config"].upper() chn_arg = [] if in_config in IN_CONFIG_TO_COPY_AUDIO: chn_arg = IN_CONFIG_TO_COPY_AUDIO[ config["cmd"]["in_config"].upper() ] - pcm_name_transformed = self.transform_path(pcm_name) - limit_cmd = [] - - if do_limit_duration: - # avoid padding with zeros at the end when given length is bigger than the initial file length - out_len = int( - float(self.max_duration) - * float(int(sample_rate_in) * 1000) - ) - limit_cmd = ["-l", "0:{}".format(out_len)] - - cpy_cmd = ( - [ - os.path.join(self.config["afspPath"], "CopyAudio"), - "-F", - "noheader", - "-D", - "integer16", - ] - + limit_cmd - + chn_arg - + [pcm_name_res_transformed, pcm_name_transformed] - ) - pcm_log.write(" ".join(cpy_cmd)) - cpy_return_code = subprocess.run( - list(filter(None, cpy_cmd)), capture_output=True, text=True - ) - if cpy_return_code.returncode: - self.logger.console( - "Problem with copying to PCM {} before encoding!".format( - pcm_name - ), - logging.ERROR, - ) - - pcm_log.write(cpy_return_code.stderr) - pcm_log.write(cpy_return_code.stdout) pcm_log.flush() pcm_log.close() # remove file lock self.lock.acquire() os.remove(pcm_name_lock) - os.remove(pcm_name_res_tmp) + # os.remove(pcm_name_res_tmp) if do_limit_duration: os.remove(pcm_name_cpy_tmp) self.logger.info( @@ -1550,39 +1446,6 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): "Binaries: Encoder {}, Decoder {}".format(self.encoder, self.decoder) ) - # check for AFSp binaries... - bin_ext = ".exe" if platform.system() == "Windows" else "" - if self.run_encoder: - if self.config["afspPath"] != "not_needed": - if not os.path.exists(self.config["afspPath"]): - self.logger.console( - "AFSp binaries path {} does not exist!".format( - self.config["afspPath"] - ), - logging.CRITICAL, - ) - raise BinaryNotFoundError( - "AFSp binaries path {} does not exist!".format( - self.config["afspPath"] - ) - ) - else: - - afsp_bin = "".join(["CopyAudio", bin_ext]) - if not os.path.exists( - os.path.join(self.config["afspPath"], afsp_bin) - ): - self.logger.console( - "AFSp binary {} in path {} does not exist!".format( - afsp_bin, self.config["afspPath"] - ), - logging.CRITICAL, - ) - raise BinaryNotFoundError( - "AFSp binary {} in path {} does not exist!".format( - afsp_bin, self.config["afspPath"] - ) - ) def check_and_create_out_dirs(self): if not os.path.exists(self.dir_name): -- GitLab From c446dee89826c2d1a1d3947b297bfaa11d6b32a2 Mon Sep 17 00:00:00 2001 From: knj Date: Tue, 21 Jun 2022 16:28:26 +0200 Subject: [PATCH 03/16] replace empty testvectors with pink noise ones --- scripts/testv/stv16c.pcm | 3 +++ scripts/testv/stv16n.pcm | 3 +++ scripts/testv/stv1ISM48s.pcm | 3 +++ scripts/testv/stv2ISM48s.pcm | 3 +++ scripts/testv/stv2OA32c.pcm | 3 +++ scripts/testv/stv2OA48c.pcm | 3 +++ scripts/testv/stv32c.pcm | 3 +++ scripts/testv/stv32n.pcm | 3 +++ scripts/testv/stv3ISM48s.pcm | 3 +++ scripts/testv/stv3OA32c.pcm | 3 +++ scripts/testv/stv3OA48c.pcm | 3 +++ scripts/testv/stv48c.pcm | 3 +++ scripts/testv/stv4ISM48s.pcm | 3 +++ scripts/testv/stv512MC48c.pcm | 3 +++ scripts/testv/stv51MC48c.pcm | 3 +++ scripts/testv/stv714MC48c.pcm | 3 +++ scripts/testv/stv8c.pcm | 3 +++ scripts/testv/stv8n.pcm | 3 +++ scripts/testv/stvFOA16c.pcm | 3 +++ scripts/testv/stvFOA32c.pcm | 3 +++ scripts/testv/stvFOA48c.pcm | 3 +++ scripts/testv/stvST16c.pcm | 3 +++ scripts/testv/stvST16n.pcm | 3 +++ scripts/testv/stvST32c.pcm | 3 +++ scripts/testv/stvST32n.pcm | 3 +++ scripts/testv/stvST48c.pcm | 3 +++ scripts/testv/stvST48n.pcm | 3 +++ scripts/testv/stv_IVASMASA_1dir1TC.pcm | 3 +++ scripts/testv/stv_IVASMASA_1dir1TC_DTX.pcm | 3 +++ scripts/testv/stv_IVASMASA_1dir2TC.pcm | 3 +++ scripts/testv/stv_IVASMASA_1dir2TC_DTX.pcm | 3 +++ scripts/testv/stv_IVASMASA_2dir1TC.pcm | 3 +++ scripts/testv/stv_IVASMASA_2dir2TC.pcm | 3 +++ 33 files changed, 99 insertions(+) diff --git a/scripts/testv/stv16c.pcm b/scripts/testv/stv16c.pcm index e69de29bb2..839243cd0c 100644 --- a/scripts/testv/stv16c.pcm +++ b/scripts/testv/stv16c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3f14b514bef292bdf598ef65f980a7f284a876691cbe2ea7ca43655bb713b57 +size 160000 diff --git a/scripts/testv/stv16n.pcm b/scripts/testv/stv16n.pcm index e69de29bb2..839243cd0c 100644 --- a/scripts/testv/stv16n.pcm +++ b/scripts/testv/stv16n.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3f14b514bef292bdf598ef65f980a7f284a876691cbe2ea7ca43655bb713b57 +size 160000 diff --git a/scripts/testv/stv1ISM48s.pcm b/scripts/testv/stv1ISM48s.pcm index e69de29bb2..22411c2d2d 100644 --- a/scripts/testv/stv1ISM48s.pcm +++ b/scripts/testv/stv1ISM48s.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9630145f38c90610ab0322c033626f7515bba30fb42e7c3f27bf51f612bef8d0 +size 480000 diff --git a/scripts/testv/stv2ISM48s.pcm b/scripts/testv/stv2ISM48s.pcm index e69de29bb2..ff0bad148c 100644 --- a/scripts/testv/stv2ISM48s.pcm +++ b/scripts/testv/stv2ISM48s.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5186f76ec8ce671e5959c8c1151ff33bc3c86b4da6b2b486ff5a65d893a87263 +size 960000 diff --git a/scripts/testv/stv2OA32c.pcm b/scripts/testv/stv2OA32c.pcm index e69de29bb2..10dc6e3570 100644 --- a/scripts/testv/stv2OA32c.pcm +++ b/scripts/testv/stv2OA32c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc2795943b31802e5edf404b68f362c197b6b53c8957e67d1582f45aa9a13de9 +size 2880000 diff --git a/scripts/testv/stv2OA48c.pcm b/scripts/testv/stv2OA48c.pcm index e69de29bb2..fb275c0611 100644 --- a/scripts/testv/stv2OA48c.pcm +++ b/scripts/testv/stv2OA48c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e70ef75ce58c552ccf5bb4c3b24f5729a7cee3a16c3df3d45069b82abf4e098 +size 4320000 diff --git a/scripts/testv/stv32c.pcm b/scripts/testv/stv32c.pcm index e69de29bb2..25249b36cc 100644 --- a/scripts/testv/stv32c.pcm +++ b/scripts/testv/stv32c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b01336f15536c5f3068853970371697860fb485fc370cc49977aed3aa5ca6a2 +size 320000 diff --git a/scripts/testv/stv32n.pcm b/scripts/testv/stv32n.pcm index e69de29bb2..25249b36cc 100644 --- a/scripts/testv/stv32n.pcm +++ b/scripts/testv/stv32n.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b01336f15536c5f3068853970371697860fb485fc370cc49977aed3aa5ca6a2 +size 320000 diff --git a/scripts/testv/stv3ISM48s.pcm b/scripts/testv/stv3ISM48s.pcm index e69de29bb2..adc2fd1ef7 100644 --- a/scripts/testv/stv3ISM48s.pcm +++ b/scripts/testv/stv3ISM48s.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b5ab072229b2f95112654a9d5cd45be085bd0274d5ff1df60831aee4419245b +size 1440000 diff --git a/scripts/testv/stv3OA32c.pcm b/scripts/testv/stv3OA32c.pcm index e69de29bb2..60140a4dac 100644 --- a/scripts/testv/stv3OA32c.pcm +++ b/scripts/testv/stv3OA32c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c4a93626acd8003b735ded9f5728b81a4efda6b37b66d062576779bfbe5dc94 +size 5120000 diff --git a/scripts/testv/stv3OA48c.pcm b/scripts/testv/stv3OA48c.pcm index e69de29bb2..0d7fd3e647 100644 --- a/scripts/testv/stv3OA48c.pcm +++ b/scripts/testv/stv3OA48c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5666947df6817a6187eec427fbe9e2f336044682dbae0126b9520bbc21b991e +size 7680000 diff --git a/scripts/testv/stv48c.pcm b/scripts/testv/stv48c.pcm index e69de29bb2..22411c2d2d 100644 --- a/scripts/testv/stv48c.pcm +++ b/scripts/testv/stv48c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9630145f38c90610ab0322c033626f7515bba30fb42e7c3f27bf51f612bef8d0 +size 480000 diff --git a/scripts/testv/stv4ISM48s.pcm b/scripts/testv/stv4ISM48s.pcm index e69de29bb2..9bd976190e 100644 --- a/scripts/testv/stv4ISM48s.pcm +++ b/scripts/testv/stv4ISM48s.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f9f6161e1339dcc8375c4b70f606ffa0da5fa8ed758efbfce3daf2bcd1c5e55 +size 1920000 diff --git a/scripts/testv/stv512MC48c.pcm b/scripts/testv/stv512MC48c.pcm index e69de29bb2..fbbfe2c35e 100644 --- a/scripts/testv/stv512MC48c.pcm +++ b/scripts/testv/stv512MC48c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05d716b7d59871c2ef21671e3779a7b7a058c2421a7d7b59dc54e5292f35d542 +size 3840000 diff --git a/scripts/testv/stv51MC48c.pcm b/scripts/testv/stv51MC48c.pcm index e69de29bb2..0fbbbcd12e 100644 --- a/scripts/testv/stv51MC48c.pcm +++ b/scripts/testv/stv51MC48c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2720100013e1db32edf5eb6cf36fb99dd9ac56acaa57a86d2fae88a2e5506559 +size 2880000 diff --git a/scripts/testv/stv714MC48c.pcm b/scripts/testv/stv714MC48c.pcm index e69de29bb2..ef24e8952a 100644 --- a/scripts/testv/stv714MC48c.pcm +++ b/scripts/testv/stv714MC48c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85cd443ef40853167311ae1be9df5c8ff703c518a73f486a72d88b095a25e639 +size 5760000 diff --git a/scripts/testv/stv8c.pcm b/scripts/testv/stv8c.pcm index e69de29bb2..1fbdd004aa 100644 --- a/scripts/testv/stv8c.pcm +++ b/scripts/testv/stv8c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1bf2eb609831c4d960fd7cb416ceae57d7034a5ef2fe2fefc21184ee85f9812 +size 80000 diff --git a/scripts/testv/stv8n.pcm b/scripts/testv/stv8n.pcm index e69de29bb2..1fbdd004aa 100644 --- a/scripts/testv/stv8n.pcm +++ b/scripts/testv/stv8n.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1bf2eb609831c4d960fd7cb416ceae57d7034a5ef2fe2fefc21184ee85f9812 +size 80000 diff --git a/scripts/testv/stvFOA16c.pcm b/scripts/testv/stvFOA16c.pcm index e69de29bb2..096a6fe4a3 100644 --- a/scripts/testv/stvFOA16c.pcm +++ b/scripts/testv/stvFOA16c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c3a8afd095a3b3e98f26100de8b90c56cad6c65610d141564830dec836fb8bc +size 640000 diff --git a/scripts/testv/stvFOA32c.pcm b/scripts/testv/stvFOA32c.pcm index e69de29bb2..571a284116 100644 --- a/scripts/testv/stvFOA32c.pcm +++ b/scripts/testv/stvFOA32c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:506c6a1c64215b0dff21f8533b07de648b651b214bf06d10e27e53365a0db731 +size 1280000 diff --git a/scripts/testv/stvFOA48c.pcm b/scripts/testv/stvFOA48c.pcm index e69de29bb2..9bd976190e 100644 --- a/scripts/testv/stvFOA48c.pcm +++ b/scripts/testv/stvFOA48c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f9f6161e1339dcc8375c4b70f606ffa0da5fa8ed758efbfce3daf2bcd1c5e55 +size 1920000 diff --git a/scripts/testv/stvST16c.pcm b/scripts/testv/stvST16c.pcm index e69de29bb2..361549755d 100644 --- a/scripts/testv/stvST16c.pcm +++ b/scripts/testv/stvST16c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b81318f00c26a4537352e8e6832a96f658e602aaaed1b340dd5f882c99029d2 +size 320000 diff --git a/scripts/testv/stvST16n.pcm b/scripts/testv/stvST16n.pcm index e69de29bb2..361549755d 100644 --- a/scripts/testv/stvST16n.pcm +++ b/scripts/testv/stvST16n.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b81318f00c26a4537352e8e6832a96f658e602aaaed1b340dd5f882c99029d2 +size 320000 diff --git a/scripts/testv/stvST32c.pcm b/scripts/testv/stvST32c.pcm index e69de29bb2..9cd62caac0 100644 --- a/scripts/testv/stvST32c.pcm +++ b/scripts/testv/stvST32c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cc1bc07d8c8b88f3d494b18afadc7d89b7eae6bc235684bd702fe4666a12d6f +size 640000 diff --git a/scripts/testv/stvST32n.pcm b/scripts/testv/stvST32n.pcm index e69de29bb2..9cd62caac0 100644 --- a/scripts/testv/stvST32n.pcm +++ b/scripts/testv/stvST32n.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cc1bc07d8c8b88f3d494b18afadc7d89b7eae6bc235684bd702fe4666a12d6f +size 640000 diff --git a/scripts/testv/stvST48c.pcm b/scripts/testv/stvST48c.pcm index e69de29bb2..ff0bad148c 100644 --- a/scripts/testv/stvST48c.pcm +++ b/scripts/testv/stvST48c.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5186f76ec8ce671e5959c8c1151ff33bc3c86b4da6b2b486ff5a65d893a87263 +size 960000 diff --git a/scripts/testv/stvST48n.pcm b/scripts/testv/stvST48n.pcm index e69de29bb2..ff0bad148c 100644 --- a/scripts/testv/stvST48n.pcm +++ b/scripts/testv/stvST48n.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5186f76ec8ce671e5959c8c1151ff33bc3c86b4da6b2b486ff5a65d893a87263 +size 960000 diff --git a/scripts/testv/stv_IVASMASA_1dir1TC.pcm b/scripts/testv/stv_IVASMASA_1dir1TC.pcm index e69de29bb2..22411c2d2d 100644 --- a/scripts/testv/stv_IVASMASA_1dir1TC.pcm +++ b/scripts/testv/stv_IVASMASA_1dir1TC.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9630145f38c90610ab0322c033626f7515bba30fb42e7c3f27bf51f612bef8d0 +size 480000 diff --git a/scripts/testv/stv_IVASMASA_1dir1TC_DTX.pcm b/scripts/testv/stv_IVASMASA_1dir1TC_DTX.pcm index e69de29bb2..22411c2d2d 100644 --- a/scripts/testv/stv_IVASMASA_1dir1TC_DTX.pcm +++ b/scripts/testv/stv_IVASMASA_1dir1TC_DTX.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9630145f38c90610ab0322c033626f7515bba30fb42e7c3f27bf51f612bef8d0 +size 480000 diff --git a/scripts/testv/stv_IVASMASA_1dir2TC.pcm b/scripts/testv/stv_IVASMASA_1dir2TC.pcm index e69de29bb2..ff0bad148c 100644 --- a/scripts/testv/stv_IVASMASA_1dir2TC.pcm +++ b/scripts/testv/stv_IVASMASA_1dir2TC.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5186f76ec8ce671e5959c8c1151ff33bc3c86b4da6b2b486ff5a65d893a87263 +size 960000 diff --git a/scripts/testv/stv_IVASMASA_1dir2TC_DTX.pcm b/scripts/testv/stv_IVASMASA_1dir2TC_DTX.pcm index e69de29bb2..ff0bad148c 100644 --- a/scripts/testv/stv_IVASMASA_1dir2TC_DTX.pcm +++ b/scripts/testv/stv_IVASMASA_1dir2TC_DTX.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5186f76ec8ce671e5959c8c1151ff33bc3c86b4da6b2b486ff5a65d893a87263 +size 960000 diff --git a/scripts/testv/stv_IVASMASA_2dir1TC.pcm b/scripts/testv/stv_IVASMASA_2dir1TC.pcm index e69de29bb2..22411c2d2d 100644 --- a/scripts/testv/stv_IVASMASA_2dir1TC.pcm +++ b/scripts/testv/stv_IVASMASA_2dir1TC.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9630145f38c90610ab0322c033626f7515bba30fb42e7c3f27bf51f612bef8d0 +size 480000 diff --git a/scripts/testv/stv_IVASMASA_2dir2TC.pcm b/scripts/testv/stv_IVASMASA_2dir2TC.pcm index e69de29bb2..ff0bad148c 100644 --- a/scripts/testv/stv_IVASMASA_2dir2TC.pcm +++ b/scripts/testv/stv_IVASMASA_2dir2TC.pcm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5186f76ec8ce671e5959c8c1151ff33bc3c86b4da6b2b486ff5a65d893a87263 +size 960000 -- GitLab From 95a0a21019057e5103eb0003ea16b05ef35f1764 Mon Sep 17 00:00:00 2001 From: knj Date: Tue, 21 Jun 2022 19:38:05 +0200 Subject: [PATCH 04/16] add new noise testvectors --- scripts/testv/all_mono.wav | 3 +++ scripts/testv/all_stereo_speech_ITU_concat.wav | 3 +++ scripts/testv/test_FOA_v3.wav | 3 +++ scripts/testv/test_HOA2_v3.wav | 3 +++ scripts/testv/test_HOA3_v3.wav | 3 +++ scripts/testv/test_HOA3_v3_1dir_MASA1TC.wav | 3 +++ scripts/testv/test_HOA3_v3_1dir_MASA2TC.wav | 3 +++ scripts/testv/test_HOA3_v3_2dir_MASA1TC.wav | 3 +++ scripts/testv/test_HOA3_v3_2dir_MASA2TC.wav | 3 +++ scripts/testv/test_ISM_1obj.wav | 3 +++ scripts/testv/test_ISM_2obj.wav | 3 +++ scripts/testv/test_ISM_3obj.wav | 3 +++ scripts/testv/test_ISM_4obj.wav | 3 +++ scripts/testv/test_MC51.wav | 3 +++ scripts/testv/test_MC51p2.wav | 3 +++ scripts/testv/test_MC51p4.wav | 3 +++ scripts/testv/test_MC71.wav | 3 +++ scripts/testv/test_MC71p4.wav | 3 +++ 18 files changed, 54 insertions(+) create mode 100644 scripts/testv/all_mono.wav create mode 100644 scripts/testv/all_stereo_speech_ITU_concat.wav create mode 100644 scripts/testv/test_FOA_v3.wav create mode 100644 scripts/testv/test_HOA2_v3.wav create mode 100644 scripts/testv/test_HOA3_v3.wav create mode 100644 scripts/testv/test_HOA3_v3_1dir_MASA1TC.wav create mode 100644 scripts/testv/test_HOA3_v3_1dir_MASA2TC.wav create mode 100644 scripts/testv/test_HOA3_v3_2dir_MASA1TC.wav create mode 100644 scripts/testv/test_HOA3_v3_2dir_MASA2TC.wav create mode 100644 scripts/testv/test_ISM_1obj.wav create mode 100644 scripts/testv/test_ISM_2obj.wav create mode 100644 scripts/testv/test_ISM_3obj.wav create mode 100644 scripts/testv/test_ISM_4obj.wav create mode 100644 scripts/testv/test_MC51.wav create mode 100644 scripts/testv/test_MC51p2.wav create mode 100644 scripts/testv/test_MC51p4.wav create mode 100644 scripts/testv/test_MC71.wav create mode 100644 scripts/testv/test_MC71p4.wav diff --git a/scripts/testv/all_mono.wav b/scripts/testv/all_mono.wav new file mode 100644 index 0000000000..8d08faa294 --- /dev/null +++ b/scripts/testv/all_mono.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a976b276c887ed6d75bee7c22010e749709ff9aae855a8479fcd121b37ea55c2 +size 480044 diff --git a/scripts/testv/all_stereo_speech_ITU_concat.wav b/scripts/testv/all_stereo_speech_ITU_concat.wav new file mode 100644 index 0000000000..6c2eabd979 --- /dev/null +++ b/scripts/testv/all_stereo_speech_ITU_concat.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8e497b907a9012719237e666dc4fc9c13cc2a70b4c7af888abd8c7c7a154409 +size 965544 diff --git a/scripts/testv/test_FOA_v3.wav b/scripts/testv/test_FOA_v3.wav new file mode 100644 index 0000000000..cdea336841 --- /dev/null +++ b/scripts/testv/test_FOA_v3.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbb5972bf721508dd027cbbfee9691b5e7a99b5f9859140fd21985a1016806f8 +size 1925544 diff --git a/scripts/testv/test_HOA2_v3.wav b/scripts/testv/test_HOA2_v3.wav new file mode 100644 index 0000000000..2d953b2259 --- /dev/null +++ b/scripts/testv/test_HOA2_v3.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc3ef82c6ffe538f0b54799fe1c6a643ea09140f41252ee58f34d777c5bfdf5b +size 4325544 diff --git a/scripts/testv/test_HOA3_v3.wav b/scripts/testv/test_HOA3_v3.wav new file mode 100644 index 0000000000..dce49eeb56 --- /dev/null +++ b/scripts/testv/test_HOA3_v3.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5978d922d9a5b327633f11d0caff3a3b70289fa4c9e2758dbb03a13a972df2c +size 7685544 diff --git a/scripts/testv/test_HOA3_v3_1dir_MASA1TC.wav b/scripts/testv/test_HOA3_v3_1dir_MASA1TC.wav new file mode 100644 index 0000000000..8d08faa294 --- /dev/null +++ b/scripts/testv/test_HOA3_v3_1dir_MASA1TC.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a976b276c887ed6d75bee7c22010e749709ff9aae855a8479fcd121b37ea55c2 +size 480044 diff --git a/scripts/testv/test_HOA3_v3_1dir_MASA2TC.wav b/scripts/testv/test_HOA3_v3_1dir_MASA2TC.wav new file mode 100644 index 0000000000..6c2eabd979 --- /dev/null +++ b/scripts/testv/test_HOA3_v3_1dir_MASA2TC.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8e497b907a9012719237e666dc4fc9c13cc2a70b4c7af888abd8c7c7a154409 +size 965544 diff --git a/scripts/testv/test_HOA3_v3_2dir_MASA1TC.wav b/scripts/testv/test_HOA3_v3_2dir_MASA1TC.wav new file mode 100644 index 0000000000..8d08faa294 --- /dev/null +++ b/scripts/testv/test_HOA3_v3_2dir_MASA1TC.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a976b276c887ed6d75bee7c22010e749709ff9aae855a8479fcd121b37ea55c2 +size 480044 diff --git a/scripts/testv/test_HOA3_v3_2dir_MASA2TC.wav b/scripts/testv/test_HOA3_v3_2dir_MASA2TC.wav new file mode 100644 index 0000000000..6c2eabd979 --- /dev/null +++ b/scripts/testv/test_HOA3_v3_2dir_MASA2TC.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8e497b907a9012719237e666dc4fc9c13cc2a70b4c7af888abd8c7c7a154409 +size 965544 diff --git a/scripts/testv/test_ISM_1obj.wav b/scripts/testv/test_ISM_1obj.wav new file mode 100644 index 0000000000..8d08faa294 --- /dev/null +++ b/scripts/testv/test_ISM_1obj.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a976b276c887ed6d75bee7c22010e749709ff9aae855a8479fcd121b37ea55c2 +size 480044 diff --git a/scripts/testv/test_ISM_2obj.wav b/scripts/testv/test_ISM_2obj.wav new file mode 100644 index 0000000000..6c2eabd979 --- /dev/null +++ b/scripts/testv/test_ISM_2obj.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8e497b907a9012719237e666dc4fc9c13cc2a70b4c7af888abd8c7c7a154409 +size 965544 diff --git a/scripts/testv/test_ISM_3obj.wav b/scripts/testv/test_ISM_3obj.wav new file mode 100644 index 0000000000..2d7e619cd9 --- /dev/null +++ b/scripts/testv/test_ISM_3obj.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76ab1b1d9a4aad69d32567ea2619c54f09fbd33b796a4499a99a27a4c6f66aaa +size 1445544 diff --git a/scripts/testv/test_ISM_4obj.wav b/scripts/testv/test_ISM_4obj.wav new file mode 100644 index 0000000000..cdea336841 --- /dev/null +++ b/scripts/testv/test_ISM_4obj.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbb5972bf721508dd027cbbfee9691b5e7a99b5f9859140fd21985a1016806f8 +size 1925544 diff --git a/scripts/testv/test_MC51.wav b/scripts/testv/test_MC51.wav new file mode 100644 index 0000000000..d320555b1a --- /dev/null +++ b/scripts/testv/test_MC51.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:620da9398ec1fb6f18ffc782070d592ce2f7d5170493686cbfef62406f1f1f4e +size 2885544 diff --git a/scripts/testv/test_MC51p2.wav b/scripts/testv/test_MC51p2.wav new file mode 100644 index 0000000000..c3a3eee232 --- /dev/null +++ b/scripts/testv/test_MC51p2.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b8f455b2f6eac513d69e53dbe2a32f773fc91672c7b6a1da70dbd8d49a49b6f +size 3845544 diff --git a/scripts/testv/test_MC51p4.wav b/scripts/testv/test_MC51p4.wav new file mode 100644 index 0000000000..54bcef364c --- /dev/null +++ b/scripts/testv/test_MC51p4.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0fee61f4545696e02d6aaa221eeba649e83692f32749dd307239d0bee2116bd +size 4805544 diff --git a/scripts/testv/test_MC71.wav b/scripts/testv/test_MC71.wav new file mode 100644 index 0000000000..c3a3eee232 --- /dev/null +++ b/scripts/testv/test_MC71.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b8f455b2f6eac513d69e53dbe2a32f773fc91672c7b6a1da70dbd8d49a49b6f +size 3845544 diff --git a/scripts/testv/test_MC71p4.wav b/scripts/testv/test_MC71p4.wav new file mode 100644 index 0000000000..511baceb9d --- /dev/null +++ b/scripts/testv/test_MC71p4.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95af38dce3c08766124c1991d9f49b5b1e06ace008e6e192aa00b3a4a03b49cb +size 5765544 -- GitLab From 89e501633b281e8067d6b567248e3cf25ce961b3 Mon Sep 17 00:00:00 2001 From: knj Date: Tue, 21 Jun 2022 19:40:38 +0200 Subject: [PATCH 05/16] adapt docker_linux.json config file --- scripts/config/docker_linux.json | 39 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/scripts/config/docker_linux.json b/scripts/config/docker_linux.json index 1019055c47..fdf7bb3d13 100644 --- a/scripts/config/docker_linux.json +++ b/scripts/config/docker_linux.json @@ -1,24 +1,25 @@ { - "afspPath": "/tools/Linux/", + "afspPath": "not_needed", "utilPath": "not_needed", "inpaths": { - "MONO": "/testv/all_mono.wav", - "STEREO": "/testv/all_stereo_speech_ITU_concat.wav", - "FOA": "/testv/test_FOA_v3.wav", - "HOA3": "/testv/test_HOA3_v3.wav", - "SBA": "/testv/test_HOA3_v3.wav", - "MASA1TC1DIR": "/testv/test_HOA3_v3_1dir_MASA1TC.wav", - "MASA1TC2DIR": "/testv/test_HOA3_v3_2dir_MASA1TC.wav", - "MASA2TC1DIR": "/testv/test_HOA3_v3_1dir_MASA2TC.wav", - "MASA2TC2DIR": "/testv/test_HOA3_v3_2dir_MASA2TC.wav", - "5_1": "/testv/test_MC51.wav", - "5_1_2": "/testv/test_MC51p2.wav", - "5_1_4": "/testv/test_MC51p4.wav", - "7_1": "/testv/test_MC71.wav", - "7_1_4": "/testv/test_MC71p4.wav", - "ISM1": "/testv/test_ISM_1obj.wav", - "ISM2": "/testv/test_ISM_2obj.wav", - "ISM3": "/testv/test_ISM_3obj.wav", - "ISM4": "/testv/test_ISM_4obj.wav" + "MONO": "scripts/testv/all_mono.wav", + "STEREO": "scripts/testv/all_stereo_speech_ITU_concat.wav", + "FOA": "scripts/testv/test_FOA_v3.wav", + "HOA2": "scripts/testv/test_HOA2_v3.wav", + "HOA3": "scripts/testv/test_HOA3_v3.wav", + "SBA": "scripts/testv/test_HOA3_v3.wav", + "MASA1TC1DIR": "scripts/testv/test_HOA3_v3_1dir_MASA1TC.wav", + "MASA1TC2DIR": "scripts/testv/test_HOA3_v3_2dir_MASA1TC.wav", + "MASA2TC1DIR": "scripts/testv/test_HOA3_v3_1dir_MASA2TC.wav", + "MASA2TC2DIR": "scripts/testv/test_HOA3_v3_2dir_MASA2TC.wav", + "5_1": "scripts/testv/test_MC51.wav", + "5_1_2": "scripts/testv/test_MC51p2.wav", + "5_1_4": "scripts/testv/test_MC51p4.wav", + "7_1": "scripts/testv/test_MC71.wav", + "7_1_4": "scripts/testv/test_MC71p4.wav", + "ISM1": "scripts/testv/test_ISM_1obj.wav", + "ISM2": "scripts/testv/test_ISM_2obj.wav", + "ISM3": "scripts/testv/test_ISM_3obj.wav", + "ISM4": "scripts/testv/test_ISM_4obj.wav" } } -- GitLab From 8b77b9f094bdcd15396586c3cce86b8ba336c7a1 Mon Sep 17 00:00:00 2001 From: knj Date: Thu, 23 Jun 2022 12:53:33 +0200 Subject: [PATCH 06/16] fix error in name of CI file --- .gitlab_ci.yml => .gitlab-ci.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .gitlab_ci.yml => .gitlab-ci.yml (100%) diff --git a/.gitlab_ci.yml b/.gitlab-ci.yml similarity index 100% rename from .gitlab_ci.yml rename to .gitlab-ci.yml -- GitLab From 4da046b1a3ab7ed72bf46d5e06c4c00a3b187b72 Mon Sep 17 00:00:00 2001 From: knj Date: Thu, 23 Jun 2022 12:58:09 +0200 Subject: [PATCH 07/16] hide all jobs for now and only test whether docker exec works --- .gitlab-ci.yml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4dffbd82ad..b53a9228d7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,6 +17,16 @@ stages: - test - compare +# temporary test job to see whether everything works with the docker runner +test-job-docker-runner: + stage: test + tags: + - docker + image: ubuntu + script: + - echo "This job tests something" + + # template for all test jobs .test-job: @@ -33,7 +43,7 @@ stages: - exec::docker # build all components of the project, i.e. codec itself, the unittests, the prerenderer and the standalone version of the TD object renderer -build-all-linux: +.build-all-linux: extends: .test-job-ubuntu rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' @@ -41,7 +51,7 @@ build-all-linux: script: - bash ci/build_all_linux.sh -build-codec-instrumented-linux: +.build-codec-instrumented-linux: extends: .test-job-ubuntu rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' @@ -50,7 +60,7 @@ build-codec-instrumented-linux: - bash ci/build_codec_instrumented.sh # make sure that the codec builds with msan, asan and usan -build-codec-sanitizers-linux: +.build-codec-sanitizers-linux: extends: .test-job-ubuntu rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' @@ -61,7 +71,7 @@ build-codec-sanitizers-linux: - bash ci/build_codec_sanitizers_linux.sh # test that runs all modes with 1s input signals -codec-smoke-test: +.codec-smoke-test: extends: .test-job-ubuntu rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' @@ -76,7 +86,7 @@ codec-smoke-test: - summary.txt # compare bit exactness between target and source branch -self-test-on-merge-request: +.self-test-on-merge-request: extends: .test-job-ubuntu stage: compare tags: -- GitLab From ad8d0cba2454f037698d5f703497198b2c2b304f Mon Sep 17 00:00:00 2001 From: knj Date: Thu, 23 Jun 2022 13:06:13 +0200 Subject: [PATCH 08/16] add dockerfile for running the initial tests --- ci/ubuntu_22.04.dockerfile | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 ci/ubuntu_22.04.dockerfile diff --git a/ci/ubuntu_22.04.dockerfile b/ci/ubuntu_22.04.dockerfile new file mode 100644 index 0000000000..00f1afcfab --- /dev/null +++ b/ci/ubuntu_22.04.dockerfile @@ -0,0 +1,23 @@ +FROM ubuntu:22.04 + +RUN ln -snf /bin/bash /bin/sh + +# To avoid problems with Dialog and curses wizards +ENV DEBIAN_FRONTEND noninteractive + +# install dependencies +RUN apt-get update && apt-get install -y \ + build-essential clang-13 lldb-13 lld-13 clang-format-13 \ + valgrind git cmake \ + python3 python3-pip \ + wine wine-binfmt zip + +# for the wmc tool +RUN dpkg --add-architecture i386 && apt-get update +RUN apt-get install -y wine32 + +# cleanup +RUN rm -rf /usr/share/doc /var/lib/apt/lists/* + +RUN pip3 install --upgrade pip +RUN pip3 install numpy scipy pytest pytest-xdist -- GitLab From 29ce339e4da791f0eb546f9af96b00da63b51f7b Mon Sep 17 00:00:00 2001 From: knj Date: Thu, 23 Jun 2022 13:37:17 +0200 Subject: [PATCH 09/16] add template for building docker images --- .gitlab-ci.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b53a9228d7..043b367095 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,6 +17,24 @@ stages: - test - compare +# template for job that builds docker images and pushes them to the container registry (once enabled) +.build-docker-image: + stage: maintenance + tags: + - shell + script: + - echo "test" + rules: + - if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH + when: manual + allow_failure: true + - if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "push" + changes: + - ci/*dockerfile + +ubuntu_22.04: + extends: .build-docker-image + # temporary test job to see whether everything works with the docker runner test-job-docker-runner: stage: test -- GitLab From 8fd97d0872dd6975637f3881feb130ac4e9963cf Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Thu, 23 Jun 2022 16:59:47 +0300 Subject: [PATCH 10/16] Adds missing metadata files for MASA format and changes all metadata files to be 6 seconds long. --- scripts/testv/test_HOA3_v3_1dir_MASA1TC.met | 3 +++ scripts/testv/test_HOA3_v3_1dir_MASA2TC.met | 3 +++ scripts/testv/test_HOA3_v3_2dir_MASA1TC.met | 3 +++ scripts/testv/test_HOA3_v3_2dir_MASA2TC.met | 3 +++ 4 files changed, 12 insertions(+) create mode 100644 scripts/testv/test_HOA3_v3_1dir_MASA1TC.met create mode 100644 scripts/testv/test_HOA3_v3_1dir_MASA2TC.met create mode 100644 scripts/testv/test_HOA3_v3_2dir_MASA1TC.met create mode 100644 scripts/testv/test_HOA3_v3_2dir_MASA2TC.met diff --git a/scripts/testv/test_HOA3_v3_1dir_MASA1TC.met b/scripts/testv/test_HOA3_v3_1dir_MASA1TC.met new file mode 100644 index 0000000000..d8ce50553e --- /dev/null +++ b/scripts/testv/test_HOA3_v3_1dir_MASA1TC.met @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51b739691ce2200ede35959545516ffc2903e9e0a385f364b7ca96d370bcfe7e +size 204600 diff --git a/scripts/testv/test_HOA3_v3_1dir_MASA2TC.met b/scripts/testv/test_HOA3_v3_1dir_MASA2TC.met new file mode 100644 index 0000000000..c6dddc5119 --- /dev/null +++ b/scripts/testv/test_HOA3_v3_1dir_MASA2TC.met @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b3068867aff95480921e4c0c24189acd750c2f01ee121d293eb56d03bb1d53c +size 204600 diff --git a/scripts/testv/test_HOA3_v3_2dir_MASA1TC.met b/scripts/testv/test_HOA3_v3_2dir_MASA1TC.met new file mode 100644 index 0000000000..6468877408 --- /dev/null +++ b/scripts/testv/test_HOA3_v3_2dir_MASA1TC.met @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d125a4c4e3989ac55f9c2617f464431feae4ede9b2e15d087d3271c0a4a56303 +size 319800 diff --git a/scripts/testv/test_HOA3_v3_2dir_MASA2TC.met b/scripts/testv/test_HOA3_v3_2dir_MASA2TC.met new file mode 100644 index 0000000000..1540ff8412 --- /dev/null +++ b/scripts/testv/test_HOA3_v3_2dir_MASA2TC.met @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdede8c947adc2a370ceeb3c0a824d3631c9e091dd5f55587e85804e69f3bde5 +size 319800 -- GitLab From cf30a6f269614f19e16cb2e8e24e52941736c3a9 Mon Sep 17 00:00:00 2001 From: knj Date: Thu, 23 Jun 2022 17:23:59 +0200 Subject: [PATCH 11/16] add docker commands to image-building job template --- .gitlab-ci.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 043b367095..3f6424c9dd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,12 +18,19 @@ stages: - compare # template for job that builds docker images and pushes them to the container registry (once enabled) +# name of child job determines name of image and name of dockerfile in ci/ +# NOTE: this will only work once the container registry is activated in the project .build-docker-image: stage: maintenance tags: - shell script: - - echo "test" + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - IMAGE_LATEST=CI_REGISTRY_IMAGE/$CI_BUILD_NAME:latest + - IMAGE_TAG=CI_REGISTRY_IMAGE/$CI_BUILD_NAME:$CI_COMMIT_SHORT_SHA + - echo "Build $IMAGE_TAG" + - docker build -t $IMAGE_TAG -t $IMAGE_LATEST -f ci/$CI_BUILD_NAME.dockerfile + - docker push $IMAGE_LATEST rules: - if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH when: manual -- GitLab From b401138f2b64abd744979b9e950739c9fa7f1e64 Mon Sep 17 00:00:00 2001 From: knj Date: Thu, 23 Jun 2022 17:41:06 +0200 Subject: [PATCH 12/16] simplify grep command in smoke_test.sh --- ci/smoke_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/smoke_test.sh b/ci/smoke_test.sh index bfd6e3108c..108e68585b 100755 --- a/ci/smoke_test.sh +++ b/ci/smoke_test.sh @@ -8,5 +8,5 @@ fi make clean all # get all modes except SBA rate switching (which is broken currently) -list=$(./scripts/runIvasCodec.py -l | grep -v -e "SBA" -e "_rs") +list=$(./scripts/runIvasCodec.py -l | grep -v "SBA.*rs") ./scripts/runIvasCodec.py -p ./scripts/config/docker_linux.json -m $list -U 1 -- GitLab From b5c2eca31ca1267b9d76afddabea63fdc7cf9fe7 Mon Sep 17 00:00:00 2001 From: Kacper Sagnowski Date: Mon, 27 Jun 2022 14:07:46 +0200 Subject: [PATCH 13/16] Add --local flag to git lfs install in mirroring job This ensures git config is only changed for the checked out repository and not globally --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3f6424c9dd..f6f589d88e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -175,7 +175,7 @@ pull-from-3gpp-forge: - if: $MIRROR_ACCESS_TOKEN # Only run in the mirror update pipeline (only then MIRROR_ACCESS_TOKEN is defined) script: # Set up git LFS for mirroring (see: https://github.com/git-lfs/git-lfs/issues/1762) - - git lfs install --skip-smudge + - git lfs install --skip-smudge --local # Check out mirror branch - by default the runner checks out by commit hash, which results in detached head state - git checkout $CI_COMMIT_BRANCH -- GitLab From 7cc8250223e2f9b29f57c5bb9b8c55eee4ffc423 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Tue, 28 Jun 2022 12:14:18 +0300 Subject: [PATCH 14/16] Modify some the test MASA metadata files to be 6 seconds long. --- scripts/testv/stv_IVASMASA_1dir1TC.met | 4 ++-- scripts/testv/stv_IVASMASA_1dir1TC_DTX.met | 4 ++-- scripts/testv/stv_IVASMASA_1dir2TC_DTX.met | 4 ++-- scripts/testv/stv_IVASMASA_2dir2TC.met | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/testv/stv_IVASMASA_1dir1TC.met b/scripts/testv/stv_IVASMASA_1dir1TC.met index f2ce23bd20..51b9d92c2a 100644 --- a/scripts/testv/stv_IVASMASA_1dir1TC.met +++ b/scripts/testv/stv_IVASMASA_1dir1TC.met @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6349efe3448d28979b80744bcdc29d57f1c025704939b42d7b913d7fc3f23ccc -size 102300 +oid sha256:c7a56db07d55b554f57b5890ca676d058355da811adca7cf73057c6d4570a7ea +size 204600 diff --git a/scripts/testv/stv_IVASMASA_1dir1TC_DTX.met b/scripts/testv/stv_IVASMASA_1dir1TC_DTX.met index 945a81f0b4..d8ce50553e 100644 --- a/scripts/testv/stv_IVASMASA_1dir1TC_DTX.met +++ b/scripts/testv/stv_IVASMASA_1dir1TC_DTX.met @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64b974b376ef0ca29da837d33173c621499d753800ebf5e5587019ee5db481bd -size 684728 +oid sha256:51b739691ce2200ede35959545516ffc2903e9e0a385f364b7ca96d370bcfe7e +size 204600 diff --git a/scripts/testv/stv_IVASMASA_1dir2TC_DTX.met b/scripts/testv/stv_IVASMASA_1dir2TC_DTX.met index f6e0e439a0..c6dddc5119 100644 --- a/scripts/testv/stv_IVASMASA_1dir2TC_DTX.met +++ b/scripts/testv/stv_IVASMASA_1dir2TC_DTX.met @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ec41c82c305f075c67b51e1f0a6e97dfc272bafcfca64e38c902c9f0d2c4500 -size 684728 +oid sha256:6b3068867aff95480921e4c0c24189acd750c2f01ee121d293eb56d03bb1d53c +size 204600 diff --git a/scripts/testv/stv_IVASMASA_2dir2TC.met b/scripts/testv/stv_IVASMASA_2dir2TC.met index 1b62022af5..c96e6a59b9 100644 --- a/scripts/testv/stv_IVASMASA_2dir2TC.met +++ b/scripts/testv/stv_IVASMASA_2dir2TC.met @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2eb412d646d7a32c77413dea54dc44cf45dc49e6d8c2de19abe4f4b93a91fa4a -size 159900 +oid sha256:3883502a39cfa06c7ab112d85c85fc6f9c9fa2efeec8647fa9f4016504329647 +size 319800 -- GitLab From 5df494088a1fd9f6118253e4560b5c73d1691566 Mon Sep 17 00:00:00 2001 From: Kacper Sagnowski Date: Thu, 30 Jun 2022 11:35:27 +0200 Subject: [PATCH 15/16] Remove `git remote add` from mirroring job Trying to add a remote that already exists causes an error. This would be a problem when the job is run multiple times on a runner with caching or persistent state. Better to avoid using remote aliases and instead specify the url directly. --- .gitlab-ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f6f589d88e..502dbd5cae 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -181,9 +181,8 @@ pull-from-3gpp-forge: - git checkout $CI_COMMIT_BRANCH # Pull commits from upstream - - git remote add upstream https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec.git - - git pull --ff-only --tags upstream $MIRROR_SOURCE_BRANCH - - git lfs pull upstream + - git pull --ff-only --tags https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec.git $MIRROR_SOURCE_BRANCH + - git lfs pull https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec.git # Push to mirror, include tags. Option `-o ci.skip` tells GitLab to skip CI for the pushed commits (assumed already tested upstream) - git push --tags -o ci.skip "https://${GITLAB_USER_LOGIN}:${MIRROR_ACCESS_TOKEN}@${CI_REPOSITORY_URL#*@}" "HEAD:${CI_COMMIT_BRANCH}" -- GitLab From bbdf87085aded102216327f1df83bddf2f10ac16 Mon Sep 17 00:00:00 2001 From: knj Date: Fri, 1 Jul 2022 09:15:20 +0200 Subject: [PATCH 16/16] update ci file to initial MR pipeline --- .gitlab-ci.yml | 164 ++++++++++++++++++++++--------------------------- 1 file changed, 72 insertions(+), 92 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 502dbd5cae..187703e147 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - TESTV_DIR: "/testv" - TOOLS_DIR: "/tools" + TESTV_DIR: "/usr/local/testv" + # prevent running two pipelines on pushes to merge request branches workflow: @@ -17,41 +17,6 @@ stages: - test - compare -# template for job that builds docker images and pushes them to the container registry (once enabled) -# name of child job determines name of image and name of dockerfile in ci/ -# NOTE: this will only work once the container registry is activated in the project -.build-docker-image: - stage: maintenance - tags: - - shell - script: - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - IMAGE_LATEST=CI_REGISTRY_IMAGE/$CI_BUILD_NAME:latest - - IMAGE_TAG=CI_REGISTRY_IMAGE/$CI_BUILD_NAME:$CI_COMMIT_SHORT_SHA - - echo "Build $IMAGE_TAG" - - docker build -t $IMAGE_TAG -t $IMAGE_LATEST -f ci/$CI_BUILD_NAME.dockerfile - - docker push $IMAGE_LATEST - rules: - - if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH - when: manual - allow_failure: true - - if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "push" - changes: - - ci/*dockerfile - -ubuntu_22.04: - extends: .build-docker-image - -# temporary test job to see whether everything works with the docker runner -test-job-docker-runner: - stage: test - tags: - - docker - image: ubuntu - script: - - echo "This job tests something" - - # template for all test jobs .test-job: @@ -60,112 +25,126 @@ test-job-docker-runner: when: never - when: on_success -# template for using an ubuntu 22.04 image in docker -.test-job-ubuntu: +# template test job on linux +.test-job-linux: extends: .test-job - image: $CI_REGISTRY_IMAGE/ubuntu_22.04:latest tags: - - exec::docker + - ivas-linux + before_script: + - if [ ! -d "$TESTV_DIR" ]; then mkdir -p $TESTV_DIR; fi + - cp -r scripts/testv/* $TESTV_DIR/ + # build all components of the project, i.e. codec itself, the unittests, the prerenderer and the standalone version of the TD object renderer -.build-all-linux: - extends: .test-job-ubuntu +build-all-linux-make: + extends: .test-job-linux rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' stage: build script: - bash ci/build_all_linux.sh -.build-codec-instrumented-linux: - extends: .test-job-ubuntu +build-codec-linux-cmake: + extends: .test-job-linux + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + stage: build + script: + - mkdir build + - cd build + - cmake .. + - make -j + +build-codec-instrumented-linux: + extends: .test-job-linux rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' stage: build script: - - bash ci/build_codec_instrumented.sh + - bash ci/build_codec_instrumented_linux.sh # make sure that the codec builds with msan, asan and usan -.build-codec-sanitizers-linux: - extends: .test-job-ubuntu +build-codec-sanitizers-linux: + extends: .test-job-linux rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' stage: build script: - # need to patch PATH so that `clang` is available - - PATH=$PATH:/usr/lib/llvm-13/bin - bash ci/build_codec_sanitizers_linux.sh + # test that runs all modes with 1s input signals -.codec-smoke-test: - extends: .test-job-ubuntu +codec-smoke-test: + extends: .test-job-linux rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' stage: test - tags: - - exec::docker - - res::ivas-testv script: - bash ci/smoke_test.sh artifacts: paths: - - summary.txt + - out/logs + # compare bit exactness between target and source branch -.self-test-on-merge-request: - extends: .test-job-ubuntu +self-test-on-merge-request: + extends: .test-job-linux stage: compare - tags: - - exec::docker - - res::ivas-testv rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' script: - ### build test binaries, clean for paranoia reasons - - make clean all - - mv IVAS_cod IVAS_cod_test - - mv IVAS_dec IVAS_dec_test + ### build test binaries, initial clean for paranoia reasons + - make clean + - mkdir build + - cd build + - cmake .. + - make -j + - mv IVAS_cod ../IVAS_cod_test + - mv IVAS_dec ../IVAS_dec_test + - cd .. + - rm -rf build/* + + ### backup testvectors from source branch before switching to arget branch -> makes sure that up-to-date testv folder is used in case the branch makes changes to it + - cp -r scripts/testv scripts/testv.bak ### checkout version to compare against # first delete local target branch to avoid conflicts when branch is cached and there are merge conflicts during fetching - - git branch -D $CI_MERGE_REQUEST_TARGET_BRANCH_NAME + # depending on chaching, the branch may not be there, so prevent failure of this command -> should maybe be done smarter later + - git branch -D $CI_MERGE_REQUEST_TARGET_BRANCH_NAME || true # needed when depth is lower than the number of commits in the branch - git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME:$CI_MERGE_REQUEST_TARGET_BRANCH_NAME - ## 1. variant: use target branch directly -> includes possible race condition - #- git checkout $CI_MERGE_REQUEST_TARGET_BRANCH_NAME - - ## 2. variant: compare to last common commit ("start" of branch after all possible merge-backs) - #- last_source_commit=$(git log -n 1 --pretty=format:"%H") - #- last_target_commit=$(git log -n 1 --pretty=format:"%H" $CI_MERGE_REQUEST_TARGET_BRANCH_NAME) - #- split_commit=$(git merge-base $last_source_commit $last_target_commit) - #- git checkout $split_commit - - ## 3. variant: compare to last master commit before pipeline was created + ### 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) - git checkout $target_commit - ###build reference binaries - - make clean all - - mv IVAS_cod IVAS_cod_ref - - mv IVAS_dec IVAS_dec_ref + ### build reference binaries + - cd build + - cmake .. + - make -j + - mv IVAS_cod ../IVAS_cod_ref + - mv IVAS_dec ../IVAS_dec_ref + - cd .. + + # TODO: instead check out the source commit again + ### restore testv folder from branch + - rm -rf scripts/testv + - cp -r scripts/testv.bak scripts/testv - ### copy testv dir to necessary place - - cp -r $TESTV_DIR ./scripts/testv ### run selftest - - test_output=test_output.txt - - python3 ./scripts/self_test.py --encref IVAS_cod_ref --decref IVAS_dec_ref --enctest IVAS_cod_test --dectest IVAS_dec_test | tee $test_output + - ls -altr scripts/testv + - python3 ./scripts/self_test.py --encref IVAS_cod_ref --decref IVAS_dec_ref --enctest IVAS_cod_test --dectest IVAS_dec_test | tee test_output.txt ### analyse test output # check for crashes during the test, if any happened, fail the test - - if cat $test_output | grep -c "Run errors were encountered for the following conditions:"; then echo "Codec had run errors"; exit 1; fi + - if cat test_output.txt | grep -c "Run errors were encountered for the following conditions:"; then echo "Codec had run errors"; exit 1; fi # check for non bitexact output and fail test if the merge request does not have a non-BE tag - - if ! cat $test_output | grep -c "All [0-9]* tests are bitexact" && ! echo $CI_MERGE_REQUEST_TITLE | grep -c --ignore-case "\[non[ -]*be\]"; then echo "Non-bitexact cases without non-BE tag encountered"; exit 1; fi - + - if ! cat test_output.txt | grep -c "All [0-9]* tests are bitexact" && ! echo $CI_MERGE_REQUEST_TITLE | grep -c --ignore-case "\[non[ -]*be\]"; then echo "Non-bitexact cases without non-BE tag encountered"; exit 1; fi artifacts: paths: - - ./scripts/ref/logs - - ./scripts/test/logs - - ./scripts/self_test_summary.txt + - test_output.txt + - scripts/test/logs + - scripts/ref/logs # Pull state of a branch on 3GPP repo, push to a mirror repo. @@ -181,8 +160,9 @@ pull-from-3gpp-forge: - git checkout $CI_COMMIT_BRANCH # Pull commits from upstream - - git pull --ff-only --tags https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec.git $MIRROR_SOURCE_BRANCH - - git lfs pull https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec.git + - git remote add upstream https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec.git + - git pull --ff-only --tags upstream $MIRROR_SOURCE_BRANCH + - git lfs pull upstream # Push to mirror, include tags. Option `-o ci.skip` tells GitLab to skip CI for the pushed commits (assumed already tested upstream) - git push --tags -o ci.skip "https://${GITLAB_USER_LOGIN}:${MIRROR_ACCESS_TOKEN}@${CI_REPOSITORY_URL#*@}" "HEAD:${CI_COMMIT_BRANCH}" -- GitLab