Commit c6c86f9f authored by vaclav's avatar vaclav
Browse files

Merge remote-tracking branch 'remotes/origin/main' into 325-encoder-input-format-switching

parents adaca99d 8b3000a3
Loading
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ scripts/td_object_renderer/object_renderer_standalone/renderer_standalone.exe
.cache
*.log
*.bak
.\#*
scripts/c-code_instrument/
scripts/ifdef_instrument.list
scripts/ref/
+101 −13
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ variables:
  LTV_DIR: "/usr/local/ltv"
  BUILD_OUTPUT: "build_output.txt"
  EVS_BE_TEST_DIR: "/usr/local/be_2_evs_test"
  EVS_BE_WIN_TEST_DIR: "C:/Users/gitlab-runner/testvec"
  SANITIZER_TESTS: "CLANG1 CLANG2"
  OUT_FORMATS_CHANNEL_BASED: "stereo mono 5_1 5_1_2 5_1_4 7_1 7_1_4"
  OUT_FORMATS_SCENE_BASED: "FOA HOA2 HOA3"
@@ -19,7 +20,7 @@ workflow:
    # 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
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # Runs for merge requests
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Pushes to main
    - if: $CI_PIPELINE_SOURCE == 'schedule' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Scheduled in main
    - if: $CI_PIPELINE_SOURCE == 'web' # for testing
@@ -47,6 +48,13 @@ stages:
    echo "Commit time was $CI_COMMIT_TIMESTAMP"
    date | xargs echo "System time is"

.print-common-info-windows: &print-common-info-windows
  - |
    echo "Printing common information for build job."
    echo "Current job is run on commit $CI_COMMIT_SHA"
    echo "Commit time was $CI_COMMIT_TIMESTAMP"
    ("echo 'System time is'", "Get-Date -Format 'dddd dd/MM/yyyy HH:mm K'") | Invoke-Expression

.get-previous-merge-commit-sha: &get-previous-merge-commit-sha
  - previous_merge_commit=$(git --no-pager log --merges HEAD~1 -n 1 --pretty=format:%H)

@@ -128,7 +136,7 @@ stages:
.rules-merge-request:
  extends: .rules-basis
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main
    - if: $CI_PIPELINE_SOURCE == 'push'
      when: never

@@ -154,6 +162,11 @@ stages:
  tags:
    - ivas-linux

.build-job-windows:
  stage: build
  timeout: "4 minutes"
  tags:
    - ivas-windows

# template for test jobs on linux that need the TESTV_DIR
.test-job-linux-needs-testv-dir:
@@ -170,6 +183,12 @@ stages:
    exit_codes:
      - 123

.build-job-windows-with-check-for-warnings:
  extends: .build-job-windows
  stage: build
  allow_failure:
    exit_codes:
      - 123


# ---------------------------------------------------------------
@@ -260,6 +279,31 @@ build-codec-sanitizers-linux:
    - *print-common-info
    - bash ci/build_codec_sanitizers_linux.sh

build-codec-windows-cmake:
  extends:
    - .build-job-windows-with-check-for-warnings
    - .rules-basis
  script:
    - *print-common-info-windows
    - $winoutdata = $null
    - cmake -G "Visual Studio 15 2017" . -Bbuild
    - cmake --build build -j | tee -variable winoutdata
    - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8
    - ("& python ci/check_for_warnings.py '$BUILD_OUTPUT'") | Invoke-Expression
    - ("exit $LASTEXITCODE") | Invoke-Expression

build-codec-windows-msbuild:
  extends:
    - .build-job-windows-with-check-for-warnings
    - .rules-basis
  script:
    - *print-common-info-windows
    - $winoutdata = $null
    - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug | tee -variable winoutdata
    - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8
    - ("& python ci/check_for_warnings.py '$BUILD_OUTPUT'") | Invoke-Expression
    - ("exit $LASTEXITCODE") | Invoke-Expression

# ---------------------------------------------------------------
# Test jobs for merge requests
# ---------------------------------------------------------------
@@ -269,7 +313,7 @@ codec-smoke-test:
  extends:
    - .test-job-linux-needs-testv-dir
    - .rules-merge-request
  timeout: "5 minutes"
  timeout: "10 minutes"
  stage: test
  needs: ["build-codec-linux-cmake"]
  script:
@@ -282,8 +326,8 @@ codec-smoke-test:
    - if cat smoke_test_output_hrtf.txt | grep -c "failed"; then echo "Smoke test with external hrtf files failed"; exit 1; fi
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    expire_in: 1 week
    paths:
      - out/logs/
      - smoke_test_output.txt
      - smoke_test_output_plc.txt
      - smoke_test_output_jbm_noEXT.txt
@@ -307,6 +351,7 @@ codec-msan:
    - if [ $run_errors != 0 ] ; then echo "Run errors in self_test.py with Clang memory-sanitizer"; exit 1; fi
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    expire_in: 1 week
    paths:
      - scripts/ref/logs/
      - test_output.txt
@@ -329,6 +374,7 @@ codec-asan:
    - if [ $run_errors != 0 ] ; then echo "Run errors in self_test.py with Clang address-sanitizer"; exit 1; fi
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    expire_in: 1 week
    paths:
      - scripts/ref/logs/
      - test_output.txt
@@ -346,6 +392,7 @@ renderer-smoke-test:
    - python3 -m pytest -q -n auto -rA --junit-xml=report-junit.xml tests/renderer/test_renderer.py
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results"
    expire_in: 1 week
    when: always
    paths:
      - report-junit.xml
@@ -369,6 +416,7 @@ renderer-asan:
    
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results"
    expire_in: 1 week
    when: always
    paths:
      - report-junit.xml
@@ -392,6 +440,7 @@ renderer-msan:
  
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results"
    expire_in: 1 week
    when: always
    paths:
      - report-junit.xml
@@ -445,6 +494,7 @@ renderer-pytest-on-merge-request:
      - 123
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results"
    expire_in: 2 week
    when: always
    paths:
      - report-junit.xml
@@ -495,6 +545,7 @@ ivas-pytest-on-merge-request:
      - 123
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    expire_in: 2 week
    when: always
    paths:
      - report-junit.xml
@@ -541,6 +592,7 @@ evs-pytest-on-merge-request:
      - 123
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    expire_in: 2 week
    when: always
    paths:
      - report-junit-evs.xml
@@ -599,6 +651,7 @@ clang-format-check:

    - exit $format_problems
  artifacts:
    expire_in: 2 days
    paths:
      - tmp-formatting-fix/
    when: on_failure
@@ -609,6 +662,30 @@ clang-format-check:
# Test jobs for main branch
# ---------------------------------------------------------------

# check bitexactness to EVS windows binaries
be-2-evs-windows:
  extends:
    - .rules-main-push
  tags:
    - ivas-windows
  stage: test
  needs: ["build-codec-windows-msbuild"]
  timeout: "20 minutes" # To be revisited
  script:
    - *print-common-info-windows

    - $winoutdata = $null
    - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Release | tee -variable winoutdata
    - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8

    # copy over to never change the testvector dir
    - cp -r $EVS_BE_WIN_TEST_DIR ./evs_be_win_test
    - cp IVAS_cod.exe ./evs_be_win_test/bin/IVAS_cod.exe
    - cp IVAS_dec.exe ./evs_be_win_test/bin/IVAS_dec.exe

    - cd evs_be_win_test
    - python ../ci/run_evs_be_win_test.py

# check bitexactness to EVS
be-2-evs-linux:
  extends:
@@ -707,6 +784,7 @@ codec-comparison-on-main-push:
      - 123
  artifacts:
    name: "main-push--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    expire_in: 2 week
    when: always
    paths:
      - report-junit.xml
@@ -728,6 +806,7 @@ codec-comparison-on-main-push:
    - sanitizer_test_main
  artifacts:
    name: "$CI_JOB_NAME--main--sha-$CI_COMMIT_SHORT_SHA"
    expire_in: 1 week
    when: always
    paths:
      - ep_015.g192
@@ -739,13 +818,13 @@ codec-comparison-on-main-push:
.sanitizer-test-schedule-A:
  extends:
    - .sanitizer-test-template
  timeout: 2 hours 30 minutes


sanitizer-test-mono:
  extends: .sanitizer-test-schedule-A
  rules:
    - if: $SANITIZER_SCHEDULE_A
  timeout: 2 hour
  script:
    - *update-ltv-repo
    - python3 ci/run_scheduled_sanitizer_test.py mono mono --tests $SANITIZER_TESTS
@@ -755,7 +834,8 @@ sanitizer-test-stereo:
  rules:
    - if: $SANITIZER_SCHEDULE_A
      when: delayed
      start_in: 2 hours 30 minutes
      start_in: 2 hour
  timeout: 2 hour
  script:
    - *update-ltv-repo
    - python3 ci/run_scheduled_sanitizer_test.py stereo $OUT_FORMATS_CHANNEL_BASED --tests $SANITIZER_TESTS
@@ -765,7 +845,8 @@ sanitizer-test-stereodmxevs:
  rules:
    - if: $SANITIZER_SCHEDULE_A
      when: delayed
      start_in: 5 hours
      start_in: 4 hours
  timeout: 2 hour
  script:
    - *update-ltv-repo
    - python3 ci/run_scheduled_sanitizer_test.py StereoDmxEVS mono --tests $SANITIZER_TESTS
@@ -775,7 +856,8 @@ sanitizer-test-ism1:
  rules:
    - if: $SANITIZER_SCHEDULE_A
      when: delayed
      start_in: 7 hours 30 minutes
      start_in: 6 hours
  timeout: 2 hours
  script:
    - *update-ltv-repo
    - python3 ci/run_scheduled_sanitizer_test.py ISM1 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS
@@ -785,7 +867,8 @@ sanitizer-test-ism2:
  rules:
    - if: $SANITIZER_SCHEDULE_A
      when: delayed
      start_in: 10 hours
      start_in: 8 hours
  timeout: 3 hours
  script:
    - *update-ltv-repo
    - python3 ci/run_scheduled_sanitizer_test.py ISM2 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS
@@ -795,7 +878,8 @@ sanitizer-test-ism3:
  rules:
    - if: $SANITIZER_SCHEDULE_A
      when: delayed
      start_in: 12 hours 30 minutes
      start_in: 11 hours
  timeout: 3 hour
  script:
    - *update-ltv-repo
    - python3 ci/run_scheduled_sanitizer_test.py ISM3 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS
@@ -805,7 +889,8 @@ sanitizer-test-ism4:
  rules:
    - if: $SANITIZER_SCHEDULE_A
      when: delayed
      start_in: 15 hours
      start_in: 14 hours
  timeout: 4 hours
  script:
    - *update-ltv-repo
    - python3 ci/run_scheduled_sanitizer_test.py ISM4 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS
@@ -815,7 +900,8 @@ sanitizer-test-masa:
  rules:
    - if: $SANITIZER_SCHEDULE_A
      when: delayed
      start_in: 17 hours 30 minutes
      start_in: 18 hours
  timeout: 3 hours
  script:
    - *update-ltv-repo
    - python3 ci/run_scheduled_sanitizer_test.py MASA $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS
@@ -928,6 +1014,7 @@ coverage-test-on-main-scheduled:
  artifacts:
    name: "main-coverage-sha-$CI_COMMIT_SHORT_SHA"
    when: always
    expire_in: 1 week
    paths:
      - coverage.info
      - coverage
@@ -983,6 +1070,7 @@ coverage-test-on-main-scheduled:
  stage: test
  artifacts:
    name: "$CI_JOB_NAME--$CI_COMMIT_REF_NAME--sha-$CI_COMMIT_SHA"
    expire_in: 1 week
    paths:
      - $CI_JOB_NAME-public

@@ -1013,7 +1101,7 @@ complexity-ism-in-binaural-out:
    - *complexity-measurements-setup
    - in_format=ISM
    - out_format=BINAURAL
    - bash ci/complexity_measurements/getWmops.sh "ISM1 ISM2 ISM3 ISM4" "$out_format"
    - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format"
    - *complexity-measurements-prepare-artifacts

complexity-sba-hoa3-in-hoa3-out:
+39 −0
Original line number Diff line number Diff line
### Basic info

- Commit SHA: 

### Bug description

Clang (msan/asan?) sanitizer test in pipeline found an error:

<!--- Copy sanitizer traceback from command line here -->
```

```

<!--- Copy test job URL here -->
Link to test pipeline: XXX

### Ways to reproduce

Using the [scripts](https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/wikis/Software-development/pyivastest-howto#how-to-reproduce-tests):
<!--- check correct sanitizer type -->
<!--- add error pattern if needed -->
```
python3 scripts/IvasBuildAndRunChecks.py --checks CLANGX -m MODE -p /path/to/my/local/ci_linux_ltv_local.json
```
or directly:

```
make clean
make -j CLANG=X
./IVAS_cod ...
eid-xor -vbr -fer bit ep_015.g192 bit_fer
./IVAS_dec ...
```

<!--- Below are labels that will be added but are not shown in description. This is a template to help fill them.
      Add further information to the first row and remove and add labels as necessary.  -->

/label ~"Priority::Critical" ~Company: ~Subpart:
/label ~Type:Bug ~Status::ToDo
+7 −9
Original line number Diff line number Diff line
@@ -112,45 +112,42 @@ project(stereo-evs)
set_property(GLOBAL PROPERTY USE_FOLDERS ON) # make Visual Studio projects look nicer
include(CTest)

include_directories(
  lib_com
  lib_debug
  lib_dec
  lib_enc
  lib_rend
  lib_util
)

file(GLOB libComSrcs "lib_com/*.c")
file(GLOB libComHeaders "lib_com/*.h")
add_library(lib_com ${libComSrcs} ${libComHeaders})
if(UNIX)
  target_link_libraries(lib_com m)
endif()
target_include_directories(lib_com PUBLIC lib_com PRIVATE lib_enc lib_dec lib_rend lib_debug)

file(GLOB libDebugSrcs "lib_debug/*.c")
file(GLOB libDebugHeaders "lib_debug/*.h")
add_library(lib_debug ${libDebugSrcs} ${libDebugHeaders})
target_link_libraries(lib_debug lib_com)
target_include_directories(lib_debug PUBLIC lib_debug PRIVATE lib_enc lib_dec lib_rend)

file(GLOB libEncSrcs "lib_enc/*.c")
file(GLOB libEncHeaders "lib_enc/*.h")
add_library(lib_enc ${libEncSrcs} ${libEncHeaders})
target_link_libraries(lib_enc lib_com lib_debug)
target_include_directories(lib_enc PUBLIC lib_enc PRIVATE lib_dec lib_rend)

file(GLOB libRendSrcs "lib_rend/*.c")
file(GLOB libRendHeaders "lib_rend/*.h")
add_library(lib_rend ${libRendSrcs} ${libRendHeaders})
target_link_libraries(lib_rend lib_dec lib_com lib_debug) # Todo refactor: This dependency on lib_dec should be removed.
target_include_directories(lib_rend PUBLIC lib_rend PRIVATE lib_enc)

file(GLOB libDecSrcs "lib_dec/*.c")
file(GLOB libDecHeaders "lib_dec/*.h")
add_library(lib_dec ${libDecSrcs} ${libDecHeaders})
target_link_libraries(lib_dec lib_com lib_rend lib_debug)
target_include_directories(lib_dec PUBLIC lib_dec lib_rend PRIVATE lib_enc)

file(GLOB libUtilSrcs "lib_util/*.c")
file(GLOB libUtilHeaders "lib_util/*.h")
add_library(lib_util ${libUtilSrcs} ${libUtilHeaders})
target_include_directories(lib_util PUBLIC lib_util PRIVATE lib_com lib_enc lib_dec lib_rend lib_debug)

add_executable(IVAS_cod apps/encoder.c)
target_link_libraries(IVAS_cod lib_enc lib_util)
@@ -166,6 +163,7 @@ endif()

add_executable(IVAS_rend apps/renderer.c)
target_link_libraries(IVAS_rend lib_rend lib_util)
target_include_directories(IVAS_rend PRIVATE lib_enc)

if(COPY_EXECUTABLES_FROM_BUILD_DIR)
  # Optionally copy executables to the same place where Make puts them (useful for tests that expect executables in specific places)
Loading