diff --git a/scripts/ivas_conformance/README.md b/scripts/ivas_conformance/README.md index f8e2428506f0f3a441fec4a8f08ce5b6590636e4..2caca4838b2ef1d555cad065a0683655b72491b0 100644 --- a/scripts/ivas_conformance/README.md +++ b/scripts/ivas_conformance/README.md @@ -4,7 +4,7 @@ This folder contains scripts for running IVAS conformance tests. ## Setup Used for Conformance package generation Platform - Reference platform is Ubuntu 24.04 +Reference platform is Ubuntu 24.04 - Verify the Ubuntu Linux release is 24.04 @@ -12,7 +12,7 @@ This folder contains scripts for running IVAS conformance tests. lsb_release -d | grep Ubuntu ``` - # It might be similar to Ubuntu 24.04.3 LTS +It might be similar to Ubuntu 24.04.3 LTS - Install Clang 18 compiler @@ -21,7 +21,7 @@ This folder contains scripts for running IVAS conformance tests. clang-18 --version ``` - Example version observed on Ubuntu 24.04.3 LTS +Example version observed on Ubuntu 24.04.3 LTS ```text Ubuntu clang version 18.1.3 (1ubuntu1) @@ -30,7 +30,7 @@ This folder contains scripts for running IVAS conformance tests. InstalledDir: /usr/bin ``` - It might be required to set Clang-18 as the default clang on the machine +It might be required to set Clang-18 as the default clang on the machine ```shell sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 100 @@ -53,19 +53,19 @@ This folder contains scripts for running IVAS conformance tests. ## Run CUT tests on Target platform - To run CUT binaries on the targeted platform, it is necessary to replicate the initial setup for python and dependency packages. The CUT build of the IVAS binaries should be made available in a selected folder and needed for the next step +To run CUT binaries on the targeted platform, it is necessary to replicate the initial setup for python and dependency packages. The CUT build of the IVAS binaries should be made available in a selected folder and needed for the next step - To run IVAS DUT commands on the TARGET platform (may be different from ubuntu/linux) +To run IVAS DUT commands on the TARGET platform (may be different from ubuntu/linux) - ```shell - PYTHONPATH=scripts python scripts/ivas_conformance/runConformance.py --testvecDir $PWD/testvec --cut_build_path=CUT_BIN_DIR - ``` +```shell +PYTHONPATH=scripts python scripts/ivas_conformance/runConformance.py --testvecDir $PWD/testvec --cut_build_path=CUT_BIN_DIR +```
Example Output of CUT execution

 Accumulating commands from Readme_IVAS_dec.txt
-Accumulating commands from Readme_IVAS_rend.txt
+Accumulating commands from Readme_IVAS_rend.txt   
 Accumulating commands from Readme_IVAS_enc.txt
 Accumulating commands from Readme_IVAS_ISAR_post_rend.txt
 Accumulating commands from Readme_IVAS_ISAR_dec.txt
@@ -84,103 +84,165 @@ Executing tests for ISAR   (1032 tests)
 
- This should generate outputs in scripts/CUT_OUTPUTS folder which looks like below:- +This should generate outputs in scripts/CUT_OUTPUTS folder which looks like below:- - ```shell - CUT_OUTPUTS - +- runlog.txt : Dump of all the commands run and the outputs (mostly jumbled up due to multiprocessing) - +- failedCmds.txt : Log of all the shell commands that failed execution - +- dec/ : Folder containing all decoder tests CUT outputs - +- enc/ : Folder containing all encoder tests CUT outputs - +- renderer_short/ : Folder containing all renderer tests CUT outputs - +- split_rendering/ : Folder containing all split rendering enc/dec tests - ``` +```shell +CUT_OUTPUTS + +- runlog.txt : Dump of all the commands run and the outputs (mostly jumbled up due to multiprocessing) + +- failedCmds.txt : Log of all the shell commands that failed execution + +- dec/ : Folder containing all decoder tests CUT outputs + +- enc/ : Folder containing all encoder tests CUT outputs + +- renderer_short/ : Folder containing all renderer tests CUT outputs + +- split_rendering/ : Folder containing all split rendering enc/dec tests +``` -## Perform the MLD based analysis on the CUT outputs on reference platform (Ubuntu 24.04) +## Perform analysis on the reference platform (Ubuntu 24.04) - If CUT test execution is done on a different platform, the scripts/CUT_OUTPUTS must be copied and provided in the reference platform's scripts/CUT_OUTPUTS. Then the following command is used to perform MLD based analysis on the same, encoded outputs will be implicitly decoded using reference decoder executables and MLD analysis performed on the reference decoded outputs. +If CUT test execution is done on a different platform, the scripts/CUT_OUTPUTS must be copied and provided in the reference platform's scripts/CUT_OUTPUTS. Then the BE analysis or non-BE analysis procedure below should be followed. It is recommended to perform first analysis with BE comparison and then analysis with non-BE comparison if non-BE outputs were found. Note, non-BE conformance applies currently only if metadata file output is BE and there are non-BE results only in wave-file output. - ```shell - PYTHONPATH=scripts python scripts/ivas_conformance/runConformance.py --testvecDir $PWD/testvec --ref_build_path=testvec/bin --analyse - ``` +### Perform the BE comparison on the CUT outputs on reference platform + +The BE comparison is performed to the CUT outputs using the command below. Encoded outputs will be decoded using the reference decoder executables as part of the process. The BE comparison is then performed between the CUT and reference decoded outputs. This includes comparison of ".wav"-files, and ".csv" and ".met" metadata files. If any non-BE results are observed, this is reported on the command-line and link to an analysis ".csv" file is given. The analysis file shows which exact files were non-BE. An example passing output is shown below. If all test sets print `PASSED BE TEST`, then CUT outputs are BE-conformant. + +```shell +PYTHONPATH=scripts python scripts/ivas_conformance/runConformance.py --testvecDir $PWD/testvec --ref_build_path=testvec/bin --analyse --be-test +```
-Example Output of CUT Analysis +Example Output of BE comparison

 Accumulating commands from Readme_IVAS_dec.txt
-Accumulating commands from Readme_IVAS_rend.txt
 Accumulating commands from Readme_IVAS_enc.txt
-Accumulating commands from Readme_IVAS_ISAR_post_rend.txt
+Accumulating commands from Readme_IVAS_rend.txt
+Accumulating commands from Readme_IVAS_JBM_dec.txt
 Accumulating commands from Readme_IVAS_ISAR_dec.txt
+Accumulating commands from Readme_IVAS_ISAR_post_rend.txt
+No of tests :
+    ENC : 374
+    DEC : 638
+    REND : 911
+    ISAR_ENC : 1032
+    ISAR : 1252
+Analysing tests for ENC   (374 tests)
+<ENC> PASSED BE TEST
+Analysing tests for DEC   (638 tests)
+<DEC> PASSED BE TEST
+Analysing tests for REND   (911 tests)
+<REND> PASSED BE TEST
+Analysing tests for ISAR_ENC   (1032 tests)
+<ISAR_ENC> PASSED BE TEST
+Analysing tests for ISAR   (1252 tests)
+<ISAR> PASSED BE TEST
+
+
+ + +### Perform the MLD based non-BE analysis on the CUT outputs on reference platform (Ubuntu 24.04) + +The MLD-based non-BE analysis is performed to the CUT outputs with the command below. Encoded outputs will be decoded using the reference decoder executables as part of the process. The MLD analysis is then performed between the CUT and reference decoded outputs (only ".wav" files are compared). Comparison to MLD corridor is also done as part of this process. An example passing output is shown below. If all test sets print `MLD Corridor passed for...` and there were no non-BE metadata comparisons in BE-test, then CUT outputs are Non-BE conformant. + +```shell +PYTHONPATH=scripts python scripts/ivas_conformance/runConformance.py --testvecDir $PWD/testvec --ref_build_path=testvec/bin --analyse +``` + +
+Example Output of non-BE analysis +

+Accumulating commands from Readme_IVAS_dec.txt
+Accumulating commands from Readme_IVAS_enc.txt
+Accumulating commands from Readme_IVAS_rend.txt
 Accumulating commands from Readme_IVAS_JBM_dec.txt
+Accumulating commands from Readme_IVAS_ISAR_dec.txt
+Accumulating commands from Readme_IVAS_ISAR_post_rend.txt
 No of tests :
-    ENC : 381
-    DEC : 637
-    REND : 666
+    ENC : 374
+    DEC : 638
+    REND : 911
     ISAR_ENC : 1032
-    ISAR : 1032
-Analysing tests for ENC   (381 tests)
+    ISAR : 1252
+Analysing tests for ENC   (374 tests)
+
 ##########################################################
-<ENC> Total Frames: 2635800
+<ENC> Total Frames: 3074220
 <ENC> MAX MLD across all frames : 0.0
-<ENC> Frames with MLD == 0 : 2635800 frames (100.0%)
-<ENC> Frames with MLD <= 1 : 2635800 frames (100.0%)
-<ENC> Frames with MLD <= 2 : 2635800 frames (100.0%)
-<ENC> Frames with MLD <= 5 : 2635800 frames (100.0%)
-<ENC> BE frames percentage = 100.0
+<ENC> Frames with MLD == 0 : 3074220 frames (100.0%)
+<ENC> Frames with MLD <= 0.5 : 3074220 frames (100.0%)
+<ENC> Frames with MLD <= 1 : 3074220 frames (100.0%)
+<ENC> Frames with MLD <= 2 : 3074220 frames (100.0%)
+<ENC> Frames with MLD <= 5 : 3074220 frames (100.0%)
+<ENC> BE samples percentage = 100.0
 <ENC> max absolute diff = 0.0, sample range (-32768, 32767)
 ##########################################################
-Analysing tests for DEC   (637 tests)
+
+MLD Corridor passed for ENC with max MLD diff of 0.0
+Analysing tests for DEC   (638 tests)
+
 ##########################################################
-<DEC> Total Frames: 4342140
+<DEC> Total Frames: 5079252
 <DEC> MAX MLD across all frames : 0.0
-<DEC> Frames with MLD == 0 : 4342140 frames (100.0%)
-<DEC> Frames with MLD <= 1 : 4342140 frames (100.0%)
-<DEC> Frames with MLD <= 2 : 4342140 frames (100.0%)
-<DEC> Frames with MLD <= 5 : 4342140 frames (100.0%)
-<DEC> BE frames percentage = 100.0
+<DEC> Frames with MLD == 0 : 5079252 frames (100.0%)
+<DEC> Frames with MLD <= 0.5 : 5079252 frames (100.0%)
+<DEC> Frames with MLD <= 1 : 5079252 frames (100.0%)
+<DEC> Frames with MLD <= 2 : 5079252 frames (100.0%)
+<DEC> Frames with MLD <= 5 : 5079252 frames (100.0%)
+<DEC> BE samples percentage = 100.0
 <DEC> max absolute diff = 0.0, sample range (-32768, 32767)
 ##########################################################
-Analysing tests for REND   (666 tests)
+
+MLD Corridor passed for DEC with max MLD diff of 0.0
+Analysing tests for REND   (911 tests)
+
 ##########################################################
-<REND> Total Frames: 4799952
+<REND> Total Frames: 5576907
 <REND> MAX MLD across all frames : 0.0
-<REND> Frames with MLD == 0 : 4799952 frames (100.0%)
-<REND> Frames with MLD <= 1 : 4799952 frames (100.0%)
-<REND> Frames with MLD <= 2 : 4799952 frames (100.0%)
-<REND> Frames with MLD <= 5 : 4799952 frames (100.0%)
-<REND> BE frames percentage = 100.0
+<REND> Frames with MLD == 0 : 5576907 frames (100.0%)
+<REND> Frames with MLD <= 0.5 : 5576907 frames (100.0%)
+<REND> Frames with MLD <= 1 : 5576907 frames (100.0%)
+<REND> Frames with MLD <= 2 : 5576907 frames (100.0%)
+<REND> Frames with MLD <= 5 : 5576907 frames (100.0%)
+<REND> BE samples percentage = 100.0
 <REND> max absolute diff = 0.0, sample range (-32768, 32767)
 ##########################################################
+
+MLD Corridor passed for REND with max MLD diff of 0.0
 Analysing tests for ISAR_ENC   (1032 tests)
+
 ##########################################################
 <ISAR_ENC> Total Frames: 2125956
 <ISAR_ENC> MAX MLD across all frames : 0.0
 <ISAR_ENC> Frames with MLD == 0 : 2125956 frames (100.0%)
+<ISAR_ENC> Frames with MLD <= 0.5 : 2125956 frames (100.0%)
 <ISAR_ENC> Frames with MLD <= 1 : 2125956 frames (100.0%)
 <ISAR_ENC> Frames with MLD <= 2 : 2125956 frames (100.0%)
 <ISAR_ENC> Frames with MLD <= 5 : 2125956 frames (100.0%)
-<ISAR_ENC> BE frames percentage = 100.0
-<ISAR_ENC> max absolute diff = 0.0, sample range (-32768,32767)
+<ISAR_ENC> BE samples percentage = 100.0
+<ISAR_ENC> max absolute diff = 0.0, sample range (-32768, 32767)
 ##########################################################
-Analysing tests for ISAR   (1032 tests)
+
+MLD Corridor passed for ISAR_ENC with max MLD diff of 0.0
+Analysing tests for ISAR   (1252 tests)
+
 ##########################################################
-<ISAR> Total Frames: 2125956
+<ISAR> Total Frames: 2590956
 <ISAR> MAX MLD across all frames : 0.0
-<ISAR> Frames with MLD == 0 : 2125956 frames (100.0%)
-<ISAR> Frames with MLD <= 1 : 2125956 frames (100.0%)
-<ISAR> Frames with MLD <= 2 : 2125956 frames (100.0%)
-<ISAR> Frames with MLD <= 5 : 2125956 frames (100.0%)
-<ISAR> BE frames percentage = 100.0
+<ISAR> Frames with MLD == 0 : 2590956 frames (100.0%)
+<ISAR> Frames with MLD <= 0.5 : 2590956 frames (100.0%)
+<ISAR> Frames with MLD <= 1 : 2590956 frames (100.0%)
+<ISAR> Frames with MLD <= 2 : 2590956 frames (100.0%)
+<ISAR> Frames with MLD <= 5 : 2590956 frames (100.0%)
+<ISAR> BE samples percentage = 100.0
 <ISAR> max absolute diff = 0.0, sample range (-32768, 32767)
 ##########################################################
+
+MLD Corridor passed for ISAR with max MLD diff of 0.0
 
+ ## Executing specific tests only -All CUT tests can be run specifically for IVAS Encoder,IVAS Decoder,IVAS Renderer, ISAR Encoder and ISAR Decoder only. The commandline allows for ```-test-mode=``` for this functionality, examples : - +All CUT tests can be run specifically for IVAS Encoder,IVAS Decoder,IVAS Renderer, ISAR Encoder and ISAR Decoder only. The commandline allows for ```-test-mode=``` for this functionality, examples: - Run DUT IVAS Encoder Tests Only (on Target Platform)