From 859e199b8074a1fbc1702cb6a5de6b1102950351 Mon Sep 17 00:00:00 2001 From: Lauros Pajunen Date: Wed, 24 Apr 2024 12:54:37 +0300 Subject: [PATCH 1/2] Add modified smoke test run with complexity numbers. Add parsing script for the complexity tables. --- ci/smoke_test_complexity.sh | 190 +++++++ scripts/parse_complexity_tables.py | 780 +++++++++++++++++++++++++++++ 2 files changed, 970 insertions(+) create mode 100755 ci/smoke_test_complexity.sh create mode 100644 scripts/parse_complexity_tables.py diff --git a/ci/smoke_test_complexity.sh b/ci/smoke_test_complexity.sh new file mode 100755 index 0000000000..0032502d42 --- /dev/null +++ b/ci/smoke_test_complexity.sh @@ -0,0 +1,190 @@ +#! /usr/bin/bash + +# (C) 2022-2024 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, +# Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., +# Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, +# Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other +# contributors to this repository. All Rights Reserved. + +# This software is protected by copyright law and by international treaties. +# The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, +# Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., +# Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, +# Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other +# contributors to this repository retain full ownership rights in their respective contributions in +# the software. This notice grants no license of any kind, including but not limited to patent +# license, nor is any license granted by implication, estoppel or otherwise. + +# Contributors are required to enter into the IVAS codec Public Collaboration agreement before making +# contributions. + +# This software is provided "AS IS", without any express or implied warranties. The software is in the +# development stage. It is intended exclusively for experts who have experience with such software and +# solely for the purpose of inspection. All implied warranties of non-infringement, merchantability +# and fitness for a particular purpose are hereby disclaimed and excluded. + +# Any dispute, controversy or claim arising under or in relation to providing this software shall be +# submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in +# accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and +# the United Nations Convention on Contracts on the International Sales of Goods. + +function usage { + echo + echo "Usage:" + echo " smoke_test_complexity.sh [--max_cores nMaxCores]" + echo + echo " nMaxCores - the number of CPUs to use (default 42)" + exit +} + +if [ ! -d "lib_com" ]; then + echo "not in root directory! - please run in IVAS root" + exit 1 +fi + +if [[ -z "$1" ]]; then + MAX_CORES=42 +elif [[ "$1" == "--max_cores" ]]; then + if [[ -z "$2" ]]; then + echo "Need maximum number of cores" + exit 1 + else + MAX_CORES=$2 + fi +else + usage +fi + +cfg=./scripts/config/ci_linux_ltv.json +ism_md_cmd="--ism_metadata_files /usr/local/ltv/ltvISM1.csv /usr/local/ltv/ltvISM2.csv /usr/local/ltv/ltvISM3.csv /usr/local/ltv/ltvISM4.csv" +duration_arg="" +complexity_cmd="--checks COMPLEXITY --create_complexity_tables" +max_num_workers="--max_workers $MAX_CORES" + +# prepare combined format test signals +echo "\n======================= 0. preparing combined format test inputs =======================\n\n" +./scripts/prepare_combined_format_inputs.py + +# Modes +mono_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^mono) +FOA_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^FOA) +HOA2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^HOA2) +HOA3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^HOA3) +PlanarFOA_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^PlanarFOA) +PlanarHOA2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^PlanarHOA2) +PlanarHOA3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^PlanarHOA3) +MASA_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^MASA) +MC_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^MC) +stereo_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^stereo) +stereoDmx_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^StereoDmx) +OMASA_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^OMASA) +OSBA_ISM1_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^OSBA_ISM1) +OSBA_ISM2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^OSBA_ISM2) +OSBA_ISM3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^OSBA_ISM3) +OSBA_ISM4_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^OSBA_ISM4) +ISM1_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM1) +ISM2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM2) +ISM3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM3) +ISM4_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM4) +ISM_plus1_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+1) +ISM_plus2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+2) +ISM_plus3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+3) +ISM_plus4_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+4) + + +echo "\n======================= 1. Mono =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_mono_no_fec -m $mono_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_mono.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 2. FOA =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_FOA_no_fec -m $FOA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_FOA.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 3. HOA2 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_HOA2_no_fec -m $HOA2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_HOA2.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 4. HOA3 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_HOA3_no_fec -m $HOA3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_HOA3.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 5. PlanarFOA =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_PlanarFOA_no_fec -m $PlanarFOA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarFOA.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 6. PlanarHOA2 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_PlanarHOA2_no_fec -m $PlanarHOA2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarHOA2.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 7. PlanarHOA3 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_PlanarHOA3_no_fec -m $PlanarHOA3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarHOA3.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 8. MASA =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_MASA_no_fec -m $MASA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_MASA.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 9. MC =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_MC_no_fec -m $MC_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_MC.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 10. stereo =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_stereo_no_fec -m $stereo_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_stereo.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 11. stereoDmx =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_stereoDmx_no_fec -m $stereoDmx_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_stereoDmx.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 12. OMASA =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OMASA_no_fec -m $OMASA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OMASA.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 13. OSBA ISM1 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM1_no_fec -m $OSBA_ISM1_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM1.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 14. OSBA ISM2 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM2_no_fec -m $OSBA_ISM2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM2.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 15. OSBA ISM3 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM3_no_fec -m $OSBA_ISM3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM3.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 16. OSBA ISM4 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM4_no_fec -m $OSBA_ISM4_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM4.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 15. ISM1 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM1_no_fec -m $ISM1_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM1.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 16. ISM2 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM2_no_fec -m $ISM2_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM2.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 17. ISM3 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM3_no_fec -m $ISM3_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM3.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 18. ISM4 =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM4_no_fec -m $ISM4_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM4.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 19. ISM1 + extended metadata =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus1_no_fec -m $ISM_plus1_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus1.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 20. ISM2 + extended metadata =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus2_no_fec -m $ISM_plus2_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus2.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 21. ISM3 + extended metadata =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus3_no_fec -m $ISM_plus3_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus3.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ +echo "\n======================= 22. ISM4 + extended metadata =======================\n\n" +./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus4_no_fec -m $ISM_plus4_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus4.txt +rm -r ./COMPLEXITY/dec/ +rm -r ./COMPLEXITY/enc/ diff --git a/scripts/parse_complexity_tables.py b/scripts/parse_complexity_tables.py new file mode 100644 index 0000000000..e87e3b05fa --- /dev/null +++ b/scripts/parse_complexity_tables.py @@ -0,0 +1,780 @@ +#!/usr/bin/env python3 + +# (C) 2022-2024 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, +# Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., +# Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, +# Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other +# contributors to this repository. All Rights Reserved. + +# This software is protected by copyright law and by international treaties. +# The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, +# Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., +# Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, +# Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other +# contributors to this repository retain full ownership rights in their respective contributions in +# the software. This notice grants no license of any kind, including but not limited to patent +# license, nor is any license granted by implication, estoppel or otherwise. + +# Contributors are required to enter into the IVAS codec Public Collaboration agreement before making +# contributions. + +# This software is provided "AS IS", without any express or implied warranties. The software is in the +# development stage. It is intended exclusively for experts who have experience with such software and +# solely for the purpose of inspection. All implied warranties of non-infringement, merchantability +# and fitness for a particular purpose are hereby disclaimed and excluded. + +# Any dispute, controversy or claim arising under or in relation to providing this software shall be +# submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in +# accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and +# the United Nations Convention on Contracts on the International Sales of Goods. + +""" + parse_complexity_tables.py + + A script to parse complexity tables from smoke_test_complexity.sh run + and collecting the results into an Excel and csv files. + + Arguments: + -input_tables_base: Paths to input tables base csv files (before the WMOPS etc. tags), separated by ';'. E.g., path/to/file1.csv;path/to/file_xyz_ (where the actual files are file_xyz_WMOPS.csv or file_xyz_TROM.csv, for example) + Optional. If not present, use the default paths inside this script. + + -output_table: Path to output table csv file, a complementary .xlsx file is also created. E.g., path/to/output_file.csv + Optional. If not present, use the default output path inside this script (default output directory is complexity_tables/). + + -input_limiters: List of input format limiters, separated by ';'. Optional, accepted values: + mono + foa + hoa2 + hoa3 + planar foa + planar hoa2 + planar hoa3 + masa 1tc + masa 2tc + mc 5_1 + mc 5_1_2 + mc 5_1_4 + mc 7_1 + mc 7_1_4 + stereo + stereodmxevs + omasa ism1 1tc + omasa ism1 2tc + omasa ism2 1tc + omasa ism2 2tc + omasa ism3 1tc + omasa ism3 2tc + omasa ism4 1tc + omasa ism4 2tc + osba ism1 foa + osba ism1 hoa2 + osba ism1 hoa3 + osba ism2 foa + osba ism2 hoa2 + osba ism2 hoa3 + osba ism3 foa + osba ism3 hoa2 + osba ism3 hoa3 + osba ism4 foa + osba ism4 hoa2 + osba ism4 hoa3 + ism1 + ism2 + ism3 + ism4 + ism+1 + ism+2 + ism+3 + ism+4 + + -bitrate_limiters: List of bitrate limiters, separated by ';'. Optional, accepted values: + EVS only: + 5.9 + 6.6 + 7.2 + 8.0 + 8.8 + 9.6 + 12.6 + 14.2 + 15.8 + 18.2 + 19.8 + 23.0 + + IVAS (and some EVS): + 13.2 + 16.4 + 24.4 + 32 + 48 + 64 + 80 + 96 + 128 + 160 + 192 + 256 + 384 + 512 + + -codec_mode_limiters: List of codec mode limiters, separated by ';'. Optional, accepted values: + EVS only: + amr + rf lo2 + rf lo3 + rf lo5 + rf lo7 + rf hi2 + rf hi3 + rf hi5 + rf hi7 + + IVAS and EVS: + dtx + non-dtx + rs + + Note: if 'non-dtx' is selected, all the dtx modes are discarded. + + -bandwidth_limiters: List of bandwidth limiters, separated by ';'. Optional, accepted values: + nb (EVS only) + wb + swb + fb + + -output_limiters: List of output format limiters, separated by ';'. Optional, accepted values: + mono + stereo + binaural + binaural_room_ir + binaural_room_reverb + foa + hoa2 + hoa3 + 5_1 + 5_1_2 + 5_1_4 + 7_1 + 7_1_4 + ext + + -profiler_limiters: Limit the included profiler analysis (e.g. WMOPS), separated by ';'. Optional, accepted values: + HEAP_INTRA + HEAP + PROM + RAM + STACK + TROM + WMOPS + +Output (as per default output table names): + combined_table_PROFILE.xlsx / .csv - contains all data in one file (PROFILE indicates the used profiler_limiters or ALL for all profiles included) + combined_table_INPUT_FORMAT.xlsx / .csv - contains all data for a single input format + heatmap_table_OUTPUT_FORMAT.xlsx - contains heatmap data for a single output format + max_input_PROFILE.xlsx / .csv - contains maximum complexity (and the respective codec configurations) per input format + combined_table_PROFILE.json - contains all data in one json file + +Note: the limiter arguments are used to narrow down the output table. For example, <-input_limiters "mono;stereo"> +would include only table values with mono and stereo input formats in the output table. +""" + +import argparse +import csv +import os +import openpyxl +import json +import copy + +def parse_configuration(row, profile): + # Parse e.g. + split_at = row.split("@") + input_mode = split_at[0].strip() + split_kbps = split_at[1].split("kbps") + bitrate = split_kbps[0].strip() + split_to = split_kbps[1].split("to") + codec_mode_bandwidth = split_to[0].strip().split(" ") + bandwidth = codec_mode_bandwidth[-1].strip() + separator = " " + codec_mode_list = codec_mode_bandwidth[0:-1] + codec_mode = separator.join(codec_mode_list) + split_dots = split_to[1].split(";") + output_mode = split_dots[0].strip() + + # Profile specific values + if profile.upper() == "HEAP_INTRA": + encoder_heap_intra = split_dots[1].strip() + decoder_heap_intra = split_dots[2].strip() + total_heap_intra = split_dots[3].strip() + return [input_mode, bitrate, bandwidth, codec_mode, output_mode, encoder_heap_intra, decoder_heap_intra, total_heap_intra] + + elif profile.upper() == "HEAP": + encoder_heap = split_dots[1].strip() + decoder_heap = split_dots[2].strip() + total_heap = split_dots[3].strip() + return [input_mode, bitrate, bandwidth, codec_mode, output_mode, encoder_heap, decoder_heap, total_heap] + + elif profile.upper() == "PROM": + encoder_prom = split_dots[1].strip() + decoder_prom = split_dots[2].strip() + com_prom = split_dots[3].strip() + rend_prom = split_dots[4].strip() + total_prom = split_dots[5].strip() + return [input_mode, bitrate, bandwidth, codec_mode, output_mode, encoder_prom, decoder_prom, com_prom, rend_prom, total_prom] + + elif profile.upper() == "RAM": + encoder_ram = split_dots[1].strip() + decoder_ram = split_dots[2].strip() + total_ram = split_dots[3].strip() + return [input_mode, bitrate, bandwidth, codec_mode, output_mode, encoder_ram, decoder_ram, total_ram] + + elif profile.upper() == "STACK": + encoder_stack = split_dots[1].strip() + decoder_stack = split_dots[2].strip() + max_stack = split_dots[3].strip() + return [input_mode, bitrate, bandwidth, codec_mode, output_mode, encoder_stack, decoder_stack, max_stack] + + elif profile.upper() == "TROM": + encoder_trom = split_dots[1].strip() + decoder_trom = split_dots[2].strip() + com_trom = split_dots[3].strip() + rend_trom = split_dots[4].strip() + total_trom = split_dots[5].strip() + return [input_mode, bitrate, bandwidth, codec_mode, output_mode, encoder_trom, decoder_trom, com_trom, rend_trom, total_trom] + + elif profile.upper() == "WMOPS": + encoder_complexity = split_dots[1].strip() + decoder_complexity = split_dots[2].strip() + total_complexity = split_dots[3].strip() + return [input_mode, bitrate, bandwidth, codec_mode, output_mode, encoder_complexity, decoder_complexity, total_complexity] + + else: + return [] + +def sanity_check_configurations(input_mode, bitrate, bandwidth, codec_mode, output_mode, profile_row_values): + if input_mode != profile_row_values[0]: + print("Input mode mismatch: " + input_mode + " != " + profile_row_values[0]) + return -1 + if bitrate != profile_row_values[1]: + print("Bitrate mismatch: " + bitrate + " != " + profile_row_values[1]) + return -1 + if bandwidth != profile_row_values[2]: + print("Bandwidth mismatch: " + bandwidth + " != " + profile_row_values[2]) + return -1 + if codec_mode != profile_row_values[3]: + print("Codec mode mismatch: " + codec_mode + " != " + profile_row_values[3]) + return -1 + if output_mode != profile_row_values[4]: + print("Output mode mismatch: " + output_mode + " != " + profile_row_values[4]) + return -1 + + return 0 + + +if __name__ == "__main__": + + # Parse arguments + parser = argparse.ArgumentParser(description='Argument parser') + parser.add_argument('-input_tables_base',type=str,help='Paths to base input tables csv files, separated by ;') + parser.add_argument('-output_table',type=str,help='Path to output table csv file') + parser.add_argument('-combined_max_output_table',type=str,help='Path to output table which contains the max wmops entry for each input format csv file') + parser.add_argument('-input_limiters',type=str,help='Limit the output table based on input formats, separated by ;') + parser.add_argument('-bitrate_limiters',type=str,help='Limit the output table based on bitrates, separated by ;') + parser.add_argument('-codec_mode_limiters',type=str,help='Limit the output table based on codec modes, separated by ;') + parser.add_argument('-bandwidth_limiters',type=str,help='Limit the output table based on bandwidths, separated by ;') + parser.add_argument('-output_limiters',type=str,help='Limit the output table based on output formats, separated by ;') + parser.add_argument('-profiler_limiters',type=str,help='Limit the included profiler analysis (e.g. WMOPS), separated by ;') + args = parser.parse_args() + input_tables_base = args.input_tables_base + output_table = args.output_table + combined_max_output_table = args.combined_max_output_table + input_limiters = args.input_limiters + bitrate_limiters = args.bitrate_limiters + codec_mode_limiters = args.codec_mode_limiters + bandwidth_limiters = args.bandwidth_limiters + output_limiters = args.output_limiters + profiler_limiters = args.profiler_limiters + single_input_format_output_table_base = None + + # Complexity levels + clevel_base = 128.86 + clevel1 = 3 * clevel_base + clevel2 = 6 * clevel_base + clevel3 = 10 * clevel_base + + # Limit the output table values + limiters = { + "input": [], + "bitrate": [], + "codec_mode": [], + "bandwidth": [], + "output": [], + } + input_modes = [ + "mono" + ,"stereodmxevs" + ,"stereo" + ,"masa 1tc" + ,"masa 2tc" + ,"ism1" + ,"ism2" + ,"ism3" + ,"ism4" + ,"ism+1" + ,"ism+2" + ,"ism+3" + ,"ism+4" + ,"omasa ism1 1tc" + ,"omasa ism1 2tc" + ,"omasa ism2 1tc" + ,"omasa ism2 2tc" + ,"omasa ism3 1tc" + ,"omasa ism3 2tc" + ,"omasa ism4 1tc" + ,"omasa ism4 2tc" + ,"mc 5_1" + ,"mc 5_1_2" + ,"mc 5_1_4" + ,"mc 7_1" + ,"mc 7_1_4" + ,"foa" + ,"hoa2" + ,"hoa3" + ,"planar foa" + ,"planar hoa2" + ,"planar hoa3" + ,"osba ism1 foa" + ,"osba ism1 hoa2" + ,"osba ism1 hoa3" + ,"osba ism2 foa" + ,"osba ism2 hoa2" + ,"osba ism2 hoa3" + ,"osba ism3 foa" + ,"osba ism3 hoa2" + ,"osba ism3 hoa3" + ,"osba ism4 foa" + ,"osba ism4 hoa2" + ,"osba ism4 hoa3"] + if input_limiters is not None: + input_modes = [] + input_limiters_list = input_limiters.split(";") + for in_limiter in input_limiters_list: + limiters["input"].append(in_limiter.lower()) + input_modes.append(in_limiter.lower()) + + ivas_bitrates = ['13.2','16.4','24.4','32','48','64','80','96','128','160','192','256','384','512'] + if bitrate_limiters is not None: + ivas_bitrates = [] + bitrate_limiters_list = bitrate_limiters.split(";") + for br_limiter in bitrate_limiters_list: + limiters["bitrate"].append(br_limiter.lower()) + ivas_bitrates.append(br_limiter.lower()) + + if codec_mode_limiters is not None: + codec_mode_limiters_list = codec_mode_limiters.split(";") + for cm_limiter in codec_mode_limiters_list: + limiters["codec_mode"].append(cm_limiter.lower()) + + if bandwidth_limiters is not None: + bandwidth_limiters_list = bandwidth_limiters.split(";") + for bw_limiter in bandwidth_limiters_list: + limiters["bandwidth"].append(bw_limiter.lower()) + + output_modes = ["mono","stereo","binaural","binaural_room_ir","binaural_room_reverb","foa","hoa2","hoa3","5_1","5_1_2","5_1_4","7_1","7_1_4","ext"] + if output_limiters is not None: + output_modes = [] + output_limiters_list = output_limiters.split(";") + for out_limiter in output_limiters_list: + limiters["output"].append(out_limiter.lower()) + output_modes.append(out_limiter.lower()) + + # Read table file base paths from arguments or use default ones + if input_tables_base is None: + path_to_files_str = "./" + file_path = os.path.abspath(path_to_files_str) + input_tables_base_list = [ + os.path.join(file_path, "ltv_complexity_mono_no_fec_"), + os.path.join(file_path, "ltv_complexity_FOA_no_fec_"), + os.path.join(file_path, "ltv_complexity_HOA2_no_fec_"), + os.path.join(file_path, "ltv_complexity_HOA3_no_fec_"), + os.path.join(file_path, "ltv_complexity_PlanarFOA_no_fec_"), + os.path.join(file_path, "ltv_complexity_PlanarHOA2_no_fec_"), + os.path.join(file_path, "ltv_complexity_PlanarHOA3_no_fec_"), + os.path.join(file_path, "ltv_complexity_MASA_no_fec_"), + os.path.join(file_path, "ltv_complexity_MC_no_fec_"), + os.path.join(file_path, "ltv_complexity_stereo_no_fec_"), + os.path.join(file_path, "ltv_complexity_stereoDmx_no_fec_"), + os.path.join(file_path, "ltv_complexity_OMASA_no_fec_"), + os.path.join(file_path, "ltv_complexity_OSBA_ISM1_no_fec_"), + os.path.join(file_path, "ltv_complexity_OSBA_ISM2_no_fec_"), + os.path.join(file_path, "ltv_complexity_OSBA_ISM3_no_fec_"), + os.path.join(file_path, "ltv_complexity_OSBA_ISM4_no_fec_"), + os.path.join(file_path, "ltv_complexity_ISM1_no_fec_"), + os.path.join(file_path, "ltv_complexity_ISM2_no_fec_"), + os.path.join(file_path, "ltv_complexity_ISM3_no_fec_"), + os.path.join(file_path, "ltv_complexity_ISM4_no_fec_"), + os.path.join(file_path, "ltv_complexity_ISM_plus1_no_fec_"), + os.path.join(file_path, "ltv_complexity_ISM_plus2_no_fec_"), + os.path.join(file_path, "ltv_complexity_ISM_plus3_no_fec_"), + os.path.join(file_path, "ltv_complexity_ISM_plus4_no_fec_")] + else: + input_tables_base_list = input_tables_base.split(";") + + # Create input table paths from the base path and profiler limiters + profile_table_lists = {} + all_profiles_included = False + if profiler_limiters is None: + included_profiles = ["HEAP_INTRA", "HEAP", "PROM", "RAM", "STACK", "TROM", "WMOPS"] + all_profiles_included = True + else: + included_profiles = profiler_limiters.split(";") + for profile in included_profiles: + profile_table_lists[profile] = [] + for input_file in input_tables_base_list: + profile_table_lists[profile].append(input_file + profile + ".csv") + + # Output table paths + output_profile_suffix = "" + if all_profiles_included: + output_profile_suffix = "_ALL" + else: + for profile in included_profiles: + output_profile_suffix += "_" + profile + if output_table is None: + out_dir = "complexity_tables" + if not os.path.exists(out_dir): + os.makedirs(out_dir) + output_table = os.path.join(out_dir, "combined_table" + output_profile_suffix +".csv") + temp_output_path_parent = os.path.abspath(os.path.join(os.path.abspath(output_table), os.pardir)) + single_input_format_output_table_base = os.path.join(temp_output_path_parent, "combined_table_") + heatmap_table_base = os.path.join(temp_output_path_parent, "heatmap_table_") + if combined_max_output_table is None: + combined_max_output_table = os.path.join(temp_output_path_parent, "max_input" + output_profile_suffix +".csv") + + # JSON output + json_output = output_table.replace(".csv", ".json") + + # Header fields in the output table + fields = ['Input', 'Bitrate', 'Codec mode', 'Bandwidth', 'Output'] + for profile in included_profiles: + if "HEAP_INTRA" in profile.upper(): + fields.append('ENC HEAP INTRA') + fields.append('DEC HEAP INTRA') + fields.append('Total HEAP INTRA') + elif "HEAP" in profile.upper(): + fields.append('ENC HEAP') + fields.append('DEC HEAP') + fields.append('Total HEAP') + elif "PROM" in profile.upper(): + fields.append('ENC PROM') + fields.append('DEC PROM') + fields.append('COM PROM') + fields.append('REND PROM') + fields.append('Total PROM') + elif "RAM" in profile.upper(): + fields.append('ENC RAM') + fields.append('DEC RAM') + fields.append('Total RAM') + elif "STACK" in profile.upper(): + fields.append('ENC STACK') + fields.append('DEC STACK') + fields.append('MAX STACK') + elif "TROM" in profile.upper(): + fields.append('ENC TROM') + fields.append('DEC TROM') + fields.append('COM TROM') + fields.append('REND TROM') + fields.append('Total TROM') + elif "WMOPS" in profile.upper(): + fields.append('ENC WMOPS') + fields.append('DEC WMOPS') + fields.append('Total WMOPS') + + # Dict for input format specific data: 0: max WMOPS, 1: data row for max WMOPS, 2: all data rows + input_formats_maxWmops_maxRow_dataRows = { + "FOA" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "HOA2" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "HOA3" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "ISM+1" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "ISM+2" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "ISM+3" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "ISM+4" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "ISM1" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "ISM2" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "ISM3" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "ISM4" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "MASA 1TC" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "MASA 2TC" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "MC 5_1" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "MC 5_1_2" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "MC 5_1_4" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "MC 7_1" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "MC 7_1_4" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "MONO" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OMASA ISM1 1TC" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OMASA ISM1 2TC" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OMASA ISM2 1TC" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OMASA ISM2 2TC" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OMASA ISM3 1TC" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OMASA ISM3 2TC" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OMASA ISM4 1TC" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OMASA ISM4 2TC" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM1 FOA" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM1 HOA2" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM1 HOA3" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM2 FOA" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM2 HOA2" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM2 HOA3" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM3 FOA" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM3 HOA2" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM3 HOA3" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM4 FOA" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM4 HOA2" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "OSBA ISM4 HOA3" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "PLANAR FOA" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "PLANAR HOA2" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "PLANAR HOA3" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "STEREO" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + "STEREODMXEVS" : {"MaxWMOPS" : 0, "MaxDataRow" : {}, "DataRows" : []}, + } + + # Profile specific dicts (filled during run) + profile_table_files = {} + profile_csv_reader = {} + profile_row = {} + profile_row_values = {} + + # Excel stuff + output_table_xlsx = output_table.replace(".csv", ".xlsx") + combined_max_output_table_xlsx = combined_max_output_table.replace(".csv", ".xlsx") + wb_output_table = openpyxl.Workbook() + ws_output_table = wb_output_table.active + ws_output_table.append(fields) + wb_combined_max_output_table = openpyxl.Workbook() + ws_combined_max_output_table = wb_combined_max_output_table.active + ws_combined_max_output_table.append(fields) + os.makedirs(os.path.dirname(output_table), exist_ok=True) + whiteFill = openpyxl.styles.PatternFill(start_color='ffffff', end_color='ffffff', fill_type='solid') + blueFill = openpyxl.styles.PatternFill(start_color='00ffff', end_color='00ffff', fill_type='solid') + greenFill = openpyxl.styles.PatternFill(start_color='03fc73', end_color='03fc73', fill_type='solid') + redFill = openpyxl.styles.PatternFill(start_color='FFFF0000', end_color='FFFF0000', fill_type='solid') + + # Heatmap + fields_heatmap = ['Input','13.2','16.4','24.4','32','48','64','80','96','128','160','192','256','384','512'] + input_formats_heatmap = { + "MONO" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "FOA" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "HOA2" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "HOA3" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "ISM+1" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "ISM+2" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "ISM+3" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "ISM+4" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "ISM1" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "ISM2" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "ISM3" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "ISM4" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "MASA 1TC" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "MASA 2TC" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "MC 5_1" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "MC 5_1_2" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "MC 5_1_4" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "MC 7_1" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "MC 7_1_4" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OMASA ISM1 1TC" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OMASA ISM1 2TC" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OMASA ISM2 1TC" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OMASA ISM2 2TC" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OMASA ISM3 1TC" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OMASA ISM3 2TC" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OMASA ISM4 1TC" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OMASA ISM4 2TC" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM1 FOA" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM1 HOA2" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM1 HOA3" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM2 FOA" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM2 HOA2" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM2 HOA3" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM3 FOA" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM3 HOA2" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM3 HOA3" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM4 FOA" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM4 HOA2" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "OSBA ISM4 HOA3" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "PLANAR FOA" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "PLANAR HOA2" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "PLANAR HOA3" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "STEREO" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + "STEREODMXEVS" : {"13.2" : [0, whiteFill], "16.4" : [0, whiteFill], "24.4" : [0, whiteFill], "32" : [0, whiteFill], "48" : [0, whiteFill], "64" : [0, whiteFill], "80" : [0, whiteFill], "96" : [0, whiteFill], "128" : [0, whiteFill], "160" : [0, whiteFill], "192" : [0, whiteFill], "256" : [0, whiteFill], "384" : [0, whiteFill], "512" : [0, whiteFill]}, + } + heatmap_outputs = { + "mono" : copy.deepcopy(input_formats_heatmap), + "stereo" : copy.deepcopy(input_formats_heatmap), + "binaural" : copy.deepcopy(input_formats_heatmap), + "binaural_room_ir" : copy.deepcopy(input_formats_heatmap), + "binaural_room_reverb" : copy.deepcopy(input_formats_heatmap), + "foa" : copy.deepcopy(input_formats_heatmap), + "hoa2" : copy.deepcopy(input_formats_heatmap), + "hoa3" : copy.deepcopy(input_formats_heatmap), + "5_1" : copy.deepcopy(input_formats_heatmap), + "5_1_2" : copy.deepcopy(input_formats_heatmap), + "5_1_4" : copy.deepcopy(input_formats_heatmap), + "7_1" : copy.deepcopy(input_formats_heatmap), + "7_1_4" : copy.deepcopy(input_formats_heatmap), + "ext" : copy.deepcopy(input_formats_heatmap), + } + + with open(output_table, 'w') as output_file: + writer = csv.writer(output_file, delimiter=";") + writer.writerow(fields) + num_tables = len(profile_table_lists[next(iter(profile_table_lists))]) + for file_num in range(0, num_tables): + total_complexity = "0" + # Open files and create csv readers + for profile in included_profiles: + profile_table_files[profile] = open(profile_table_lists[profile][file_num], 'r') + profile_csv_reader[profile] = csv.reader(profile_table_files[profile]) + + # Loop over rows + row_count = sum(1 for row in profile_csv_reader[next(iter(profile_csv_reader))]) + profile_table_files[next(iter(profile_table_files))].seek(0) + for i in range(0, row_count): + # Get rows + for profile in included_profiles: + profile_row[profile] = next(profile_csv_reader[profile])[0] + if "kbps" in profile_row[next(iter(profile_row))]: + # Parse rows + for profile in included_profiles: + profile_row_values[profile] = parse_configuration(profile_row[profile], profile) + # Codec configuration from first profile and sanity check + input_mode = profile_row_values[next(iter(profile_row_values))][0] + bitrate = profile_row_values[next(iter(profile_row_values))][1] + bandwidth = profile_row_values[next(iter(profile_row_values))][2] + codec_mode = profile_row_values[next(iter(profile_row_values))][3] + output_mode = profile_row_values[next(iter(profile_row_values))][4] + for profile in included_profiles: + if sanity_check_configurations(input_mode, bitrate, bandwidth, codec_mode, output_mode, profile_row_values[profile]) < 0: + continue + # Check limiters + if limiters["input"] != [] and input_mode.lower() not in limiters["input"]: + continue + + if limiters["bitrate"] != [] and bitrate.lower() not in limiters["bitrate"]: + continue + + if limiters["codec_mode"] != []: + if "non-dtx" in limiters["codec_mode"]: + if "dtx" in codec_mode.lower(): + continue + else: + if len(limiters["codec_mode"]) > 1: + mode_included = False + for mode in limiters["codec_mode"]: + if mode.lower() in codec_mode.lower(): + mode_included = True + if not mode_included: + continue + else: + mode_included = False + for mode in limiters["codec_mode"]: + if mode.lower() in codec_mode.lower(): + mode_included = True + if not mode_included: + continue + + if limiters["bandwidth"] != [] and bandwidth.lower() not in limiters["bandwidth"]: + continue + + if limiters["output"] != [] and output_mode.lower() not in limiters["output"]: + continue + + # Form data row + data_row = [input_mode, bitrate, codec_mode, bandwidth, output_mode] + for profile in included_profiles: + for i in range (5, len(profile_row_values[profile])): + data_row.append(float(profile_row_values[profile][i])) + if "WMOPS" in profile.upper(): + total_complexity = profile_row_values[profile][7] + writer.writerow(data_row) + ws_output_table.append(data_row) + # Dict data + dict_data = {} + for fn in range(0, len(fields)): + dict_data[fields[fn]] = data_row[fn] + input_formats_maxWmops_maxRow_dataRows[input_mode.upper()]["DataRows"].append(dict_data) + # Save max complexity data row + if float(total_complexity) > input_formats_maxWmops_maxRow_dataRows[input_mode.upper()]["MaxWMOPS"]: + input_formats_maxWmops_maxRow_dataRows[input_mode.upper()]["MaxWMOPS"] = float(total_complexity) + input_formats_maxWmops_maxRow_dataRows[input_mode.upper()]["MaxDataRow"] = dict_data + # Heatmap + if codec_mode == "" and bitrate in ivas_bitrates: + if float(total_complexity) > heatmap_outputs[output_mode.lower()][input_mode.upper()][bitrate][0]: + heatmap_outputs[output_mode.lower()][input_mode.upper()][bitrate][0] = float(total_complexity) + if float(total_complexity) > clevel2: + heatmap_outputs[output_mode.lower()][input_mode.upper()][bitrate][1] = redFill + elif float(total_complexity) > clevel1: + heatmap_outputs[output_mode.lower()][input_mode.upper()][bitrate][1] = greenFill + else: + heatmap_outputs[output_mode.lower()][input_mode.upper()][bitrate][1] = blueFill + + # Close files + for profile in included_profiles: + profile_table_files[profile].close() + + # Write tables for individual input formats + if single_input_format_output_table_base != None: + for key in input_formats_maxWmops_maxRow_dataRows: + sinle_input_format_output = single_input_format_output_table_base + key.replace(" ", "_") + output_profile_suffix + ".csv" + sinle_input_format_output_xlsx = sinle_input_format_output.replace(".csv", ".xlsx") + wb_single_input_format_output_table = openpyxl.Workbook() + ws_single_input_format_output_table = wb_single_input_format_output_table.active + ws_single_input_format_output_table.append(fields) + with open(sinle_input_format_output, 'w') as single_input_format_output_file: + single_writer = csv.writer(single_input_format_output_file, delimiter=";") + single_writer.writerow(fields) + for row in input_formats_maxWmops_maxRow_dataRows[key]["DataRows"]: + data_row = [] + for data_key in row: + data_row.append(row[data_key]) + single_writer.writerow(data_row) + ws_single_input_format_output_table.append(data_row) + wb_single_input_format_output_table.save(sinle_input_format_output_xlsx) + # Dump to json + with open(json_output, "w") as json_file: + json.dump(input_formats_maxWmops_maxRow_dataRows, json_file) + + # Write the max wmops rows + with open(combined_max_output_table, 'w') as combine_max_output_file: + max_writer = csv.writer(combine_max_output_file, delimiter=";") + max_writer.writerow(fields) + for key in input_formats_maxWmops_maxRow_dataRows: + max_data_row = [] + for data_key in input_formats_maxWmops_maxRow_dataRows[key]["MaxDataRow"]: + max_data_row.append(input_formats_maxWmops_maxRow_dataRows[key]["MaxDataRow"][data_key]) + max_writer.writerow(max_data_row) + ws_combined_max_output_table.append(max_data_row) + + # Heatmap + if heatmap_table_base != None: + for output_mode in output_modes: + heatmap_output_table = heatmap_table_base + output_mode + ".xlsx" + wb_heatmap_table = openpyxl.Workbook() + ws_heatmap_table = wb_heatmap_table.active + ws_heatmap_table.append(fields_heatmap) + row = 1 + for input_mode in input_modes: + row += 1 + col = 1 + ws_heatmap_table.cell(row, col).value = input_mode + col +=1 + for bitrate in ivas_bitrates: + ws_heatmap_table.cell(row, col).value = heatmap_outputs[output_mode][input_mode.upper()][bitrate][0] + ws_heatmap_table.cell(row, col).fill = heatmap_outputs[output_mode][input_mode.upper()][bitrate][1] + col += 1 + wb_heatmap_table.save(heatmap_output_table) + + # Save Excel file + wb_output_table.save(output_table_xlsx) + wb_combined_max_output_table.save(combined_max_output_table_xlsx) + + -- GitLab From f574144b497550eb0437c93aeb2f36cabd8a406e Mon Sep 17 00:00:00 2001 From: Lauros Pajunen Date: Mon, 6 May 2024 17:02:10 +0300 Subject: [PATCH 2/2] Add removal for pcm/ folder --- ci/smoke_test_complexity.sh | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ci/smoke_test_complexity.sh b/ci/smoke_test_complexity.sh index 0032502d42..abd724c88f 100755 --- a/ci/smoke_test_complexity.sh +++ b/ci/smoke_test_complexity.sh @@ -96,95 +96,119 @@ echo "\n======================= 1. Mono =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_mono_no_fec -m $mono_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_mono.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 2. FOA =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_FOA_no_fec -m $FOA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_FOA.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 3. HOA2 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_HOA2_no_fec -m $HOA2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_HOA2.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 4. HOA3 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_HOA3_no_fec -m $HOA3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_HOA3.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 5. PlanarFOA =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_PlanarFOA_no_fec -m $PlanarFOA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarFOA.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 6. PlanarHOA2 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_PlanarHOA2_no_fec -m $PlanarHOA2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarHOA2.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 7. PlanarHOA3 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_PlanarHOA3_no_fec -m $PlanarHOA3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarHOA3.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 8. MASA =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_MASA_no_fec -m $MASA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_MASA.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 9. MC =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_MC_no_fec -m $MC_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_MC.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 10. stereo =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_stereo_no_fec -m $stereo_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_stereo.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 11. stereoDmx =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_stereoDmx_no_fec -m $stereoDmx_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_stereoDmx.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 12. OMASA =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OMASA_no_fec -m $OMASA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OMASA.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 13. OSBA ISM1 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM1_no_fec -m $OSBA_ISM1_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM1.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 14. OSBA ISM2 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM2_no_fec -m $OSBA_ISM2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM2.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 15. OSBA ISM3 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM3_no_fec -m $OSBA_ISM3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM3.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 16. OSBA ISM4 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM4_no_fec -m $OSBA_ISM4_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM4.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 15. ISM1 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM1_no_fec -m $ISM1_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM1.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 16. ISM2 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM2_no_fec -m $ISM2_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM2.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 17. ISM3 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM3_no_fec -m $ISM3_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM3.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 18. ISM4 =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM4_no_fec -m $ISM4_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM4.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 19. ISM1 + extended metadata =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus1_no_fec -m $ISM_plus1_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus1.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 20. ISM2 + extended metadata =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus2_no_fec -m $ISM_plus2_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus2.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 21. ISM3 + extended metadata =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus3_no_fec -m $ISM_plus3_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus3.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ echo "\n======================= 22. ISM4 + extended metadata =======================\n\n" ./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus4_no_fec -m $ISM_plus4_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus4.txt rm -r ./COMPLEXITY/dec/ rm -r ./COMPLEXITY/enc/ +rm -r ./COMPLEXITY/pcm/ -- GitLab