Commit 2748f9cb authored by vaclav's avatar vaclav
Browse files

Merge branch 'mullerfa/fixes' of...

Merge branch 'mullerfa/fixes' of https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec into mullerfa/fixes
parents 2ef8b7cb 6a3f1700
Loading
Loading
Loading
Loading
+37 −50
Original line number Diff line number Diff line
variables:
  # note: GitLab cannot reference variables defined by users in the include ref:, we need to use a YAML anchor for this
  # see https://docs.gitlab.com/ci/yaml/includes/#use-variables-with-include for more information
  IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF a31272de16bd1b556269a50bc179321a60f2a500
  IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF main

include:
  - local: .gitlab-ci/variables.yml
@@ -544,81 +544,68 @@ renderer-smoke-test:
      junit:
        - report-junit.xml

# test renderer executable with cmake + asan
renderer-asan:
.renderer-sanitizer-job:
  extends:
    - .test-job-linux
    - .rules-merge-request-to-main
  needs: ["build-codec-linux-cmake"]
  stage: test
  script:
    - cmake -B cmake-build -G "Unix Makefiles" -DCLANG=asan -DCOPY_EXECUTABLES_FROM_BUILD_DIR=true
    - cmake --build cmake-build -- -j
    - testcase_timeout=180
    - python3 -m pytest -q -n auto -rA --junit-xml=report-junit.xml tests/renderer/test_renderer.py --testcase_timeout=$testcase_timeout

  timeout: "30 minutes"
  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
    expose_as: "renderer asan pytest results"
      - report.html
    reports:
      junit:
        - report-junit.xml
  before_script:
    - cmake -B cmake-build -G "Unix Makefiles" -DCLANG=$SANITIZER_BUILD_STRING -DCOPY_EXECUTABLES_FROM_BUILD_DIR=true
    - cmake --build cmake-build -- -j
    # rename files to fit naming convention
    # en- and decoder needed because of split rendering testcases
    - mv IVAS_cod IVAS_cod_ref
    - mv IVAS_dec IVAS_dec_ref
    - mv IVAS_rend IVAS_rend_ref
    - testcase_timeout=180

# test renderer executable with cmake + asan
renderer-asan:
  extends:
    - .renderer-sanitizer-job
  variables:
    SANITIZER_BUILD_STRING: "asan"
  script:
    - python3 -m pytest -q --tb=no -n auto --html=report.html --self-contained-html --junit-xml=report-junit.xml tests/renderer/test_renderer.py tests/split_rendering/test_split_rendering.py --create_ref --testcase_timeout=$testcase_timeout
  artifacts:
    expose_as: "renderer asan result"


# test renderer executable with cmake + msan
renderer-msan:
  extends:
    - .test-job-linux
    - .rules-merge-request-to-main
  needs: ["build-codec-linux-cmake"]
  stage: test
    - .renderer-sanitizer-job
  variables:
    SANITIZER_BUILD_STRING: "msan"
  script:
    - cmake -B cmake-build -G "Unix Makefiles" -DCLANG=msan  -DCOPY_EXECUTABLES_FROM_BUILD_DIR=true
    - cmake --build cmake-build -- -j
    - testcase_timeout=180
    - python3 -m pytest -q -n auto -rA --junit-xml=report-junit.xml tests/renderer/test_renderer.py --testcase_timeout=$testcase_timeout

    - python3 -m pytest -q --tb=no -n auto --html=report.html --self-contained-html --junit-xml=report-junit.xml tests/renderer/test_renderer.py tests/split_rendering/test_split_rendering.py --create_ref --testcase_timeout=$testcase_timeout
  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
    expose_as: "renderer msan pytest results"
    reports:
      junit:
        - report-junit.xml
    expose_as: "renderer msan result"


# test renderer executable with cmake + usan
renderer-usan:
  extends:
    - .test-job-linux
    - .rules-merge-request-to-main
  needs: ["build-codec-linux-cmake"]
  stage: test
    - .renderer-sanitizer-job
  variables:
    SANITIZER_BUILD_STRING: "usan"
  script:
    - cmake -B cmake-build -G "Unix Makefiles" -DCLANG=usan  -DCOPY_EXECUTABLES_FROM_BUILD_DIR=true
    - cmake --build cmake-build -- -j
    - testcase_timeout=180
    - UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1,log_path=usan_log_catchall python3 -m pytest -q -n auto -rA --junit-xml=report-junit.xml tests/renderer/test_renderer.py --testcase_timeout=$testcase_timeout
    - grep_exit_code=0
    - touch usan_log_empty # Creates an empty file, this is to avoid "grep: usan_log_*: No such file or directory" in case no USAN failures are reported from pytest
    - grep UndefinedBehaviorSanitizer usan_log_* || grep_exit_code=$?
    - if [ $grep_exit_code != 1 ] ; then echo "Run errors in test_renderer.py with Clang undefined-behavior-sanitizer"; exit 1; fi

    - UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1 python3 -m pytest -q --tb=no -n auto --html=report.html --self-contained-html --junit-xml=report-junit.xml tests/renderer/test_renderer.py tests/split_rendering/test_split_rendering.py --create_ref --testcase_timeout=$testcase_timeout
  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
    expose_as: "renderer usan pytest results"
    reports:
      junit:
        - report-junit.xml
    expose_as: "renderer usan result"


# compare renderer bitexactness between target and source branch
renderer-pytest-on-merge-request:
+0 −8
Original line number Diff line number Diff line
@@ -681,9 +681,7 @@ int main(
    int argc,
    char **argv )
{
#ifdef FIX_1335_EXTREND_RETCODE
    bool mainFailed = true; /* Assume main failed until cleanup is reached without errors */
#endif
    ISAR_POST_REND_HANDLE hIsarPostRend = NULL;
    RotFileReader *headRotReader = NULL;
    RotFileReader *externalOrientationFileReader = NULL;
@@ -1225,10 +1223,8 @@ int main(
     * Close files and deallocate resources
     *------------------------------------------------------------------------------------------*/

#ifdef FIX_1335_EXTREND_RETCODE
    mainFailed = false; /* This will stay set to true if cleanup is reached via a goto due to an error */

#endif
cleanup:

    free( inpInt16Buffer );
@@ -1259,11 +1255,7 @@ cleanup:
    print_mem( NULL );
#endif

#ifdef FIX_1335_EXTREND_RETCODE
    return mainFailed ? -1 : 0;
#else
    return 0;
#endif
}


+0 −8
Original line number Diff line number Diff line
@@ -659,9 +659,7 @@ int main(
    int argc,
    char **argv )
{
#ifdef FIX_1335_EXTREND_RETCODE
    bool mainFailed = true; /* Assume main failed until cleanup is reached without errors */
#endif
    IVAS_REND_HANDLE hIvasRend = NULL;
    RotFileReader *headRotReader = NULL;
    RotFileReader *externalOrientationFileReader = NULL;
@@ -1979,10 +1977,8 @@ int main(
     * Close files and deallocate resources
     *------------------------------------------------------------------------------------------*/

#ifdef FIX_1335_EXTREND_RETCODE
    mainFailed = false; /* This will stay set to true if cleanup is reached via a goto due to an error */

#endif
cleanup:

    free( inpInt16Buffer );
@@ -2039,11 +2035,7 @@ cleanup:
    print_mem( NULL );
#endif

#ifdef FIX_1335_EXTREND_RETCODE
    return mainFailed ? -1 : 0;
#else
    return 0;
#endif
}


+9 −7
Original line number Diff line number Diff line
@@ -77,7 +77,8 @@
#endif

#ifdef DEBUG_MODE_MDCT
/*#define DEBUG_PLOT_BITS*/
#define DEBUG_PLOT_BITS
#define DEBUG_OSBA_MD_BITS
#endif

#ifdef DEBUG_MODE_DFT
@@ -161,8 +162,9 @@

/*#define FIX_I4_OL_PITCH*/                             /* fix open-loop pitch used for EVS core switching */
#define TMP_FIX_1119_SPLIT_RENDERING_VOIP               /* FhG: Add error check for unsupported config: split rendering with VoIP mode */
#define FIX_1335_EXTREND_RETCODE                        /* FhG: Add modification of returncode for external renderer when an error occurs */
#define CODE_IMPROVEMENTS                               /* FhG: Small code improvements that do not change the functionality */
#define FIX_938_COMPILER_WARNING                        /* FhG: Fix compiler warning in ivas_mdct_core_reconstruct() */
#define FIX_1288_SPLIT_REND_XSAN                        /* Dlb: Fix asan, msan and usan issues in split rendering mode*/


/* #################### End BE switches ################################## */
@@ -174,10 +176,10 @@

#define NONBE_1244_FIX_SWB_BWE_MEMORY                   /* VA: issue 1244: fix to SWB BWE memory in case of switching from FB coding - pending a review by Huawei */ 
#define NONBE_1122_KEEP_EVS_MODE_UNCHANGED              /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR.  */
#define NONBE_1250_MCMASA_LS_OUTPUT                     /* VA: issue 1250: fix crash in McMASA to custom LS output decoding */
#define NONBE_1302_FIX_OMASA_JBM_FLUSH                  /* VA: issue 1302: fix OMASA JBM bitrate switching flush in binaural output */
#define NONBE_1324_TC_BUFFER_MEMOERY_KEEP               /* VA: issue 1324: do not reset TSM memory in JBM bitrate switching */
#define NONBE_FIX_1337_MISSING_DIRECTIVITY_DISTATT_EXTREND /* Eri: issue 1337: Missing directivity setting and distance attenuation in external renderer IVAS_rend */
#define NONBE_1329_FIX_OSBA_CRASH                       /* FhG: issue 1329: prevent assert when bit budget is low*/
#define NONBE_FIX_TCX5_INTERLEAVING_FOR_FS_IN_UNEQUAL_FS_OUT /* FhG: apply correct TCX5 grouping/interleaving when input_fs != output_fs */
#define NONBE_1339_FIXOSBA_EXT_LOUDNESS                 /* FhG: issue 1339: apply scaling with EXT output in OSBA high-BR mode */

/* ##################### End NON-BE switches ########################### */

+6 −0
Original line number Diff line number Diff line
@@ -1742,6 +1742,11 @@ double anint(
int16_t is_numeric_float(
    float x )
{
#ifdef CODE_IMPROVEMENTS
#define WMC_TOOL_SKIP
    return (int16_t) ( !isnan( x ) && !isinf( x ) );
#undef WMC_TOOL_SKIP
#else
#ifndef BASOP_NOGLOB
    union float_int
#else  /* BASOP_NOGLOB */
@@ -1755,6 +1760,7 @@ int16_t is_numeric_float(
    float_int.float_val = x;

    return ( ( float_int.int_val & 0x7f800000 ) != 0x7f800000 );
#endif
}

/*-------------------------------------------------------------------*
Loading