+
IVAS FORMAT - Worst Case WMOPS Performance (Float, native SR)
+
+
+
+
+
+ - Worst case encoder + decoder performance: Encoder and decoder mode might be different.
+ - Worst case encoder + decoder performance (rateswitching): Encoder and decoder mode might be different.
+ - Worst case codec performance: Encoder and decoder modes are identical.
+ - Worst case codec performance (rateswitching): Encoder and decoder modes are identical.
+ - Worst case encoder performance
+ - Worst case encoder performance (rateswitching)
+ - Worst case decoder performance
+ - Worst case decoder performance (rateswitching)
+
+
+
+
+
+
IVAS FORMAT - Worst Case WMOPS Performance
+ per Operating Point (Float, native SR)
+
+
+
+
+
+
+
+
+
IVAS FORMAT - Worst Case WMOPS Performance (Float, 48 kHz)
+
+
+
+
+
+ - Worst case encoder + decoder performance: Encoder and decoder mode might be different.
+ - Worst case encoder + decoder performance (rateswitching): Encoder and decoder mode might be different.
+ - Worst case codec performance: Encoder and decoder modes are identical.
+ - Worst case codec performance (rateswitching): Encoder and decoder modes are identical.
+ - Worst case encoder performance
+ - Worst case encoder performance (rateswitching)
+ - Worst case decoder performance
+ - Worst case decoder performance (rateswitching)
+
+
+
+
+
+
IVAS FORMAT - Worst Case WMOPS Performance
+ per Operating Point (Float, 48 kHz)
+
+
+
+
+
+
+
+
+
+
+
+
IVAS FORMAT - Worst Case RAM Demand (Float)
+
+
+
+
+
+ - Max. total RAM Codec:
+ Dynamic + Static RAM, 32 bit words, Encoder + Decoder
+ - Max. total RAM
+ Encoder: Dynamic + Static RAM, 32 bit words, Encoder only
+ - Max. total RAM
+ Decoder: Dynamic + Static RAM, 32 bit words, Decoder only
+
+ - Max. static RAM Codec:
+ Static RAM, 32 bit words, Encoder + Decoder
+ - Max. static RAM
+ Encoder: Static RAM, 32 bit words,, Encoder only
+ - Max. static RAM
+ Decoder: Static RAM, 32 bit words, Decoder only
+
+ - Max. dynamic RAM
+ Codec: Dynamic RAM, 32 bit words, Encoder + Decoder
+ - Max. dynamic RAM
+ Encoder: Dynamic RAM, 32 bit words, Encoder only
+ - Max. dynamic RAM
+ Decoder: Dynamic RAM, 32 bit words, Decoder only
+
+
+
+
+
+
+
+
IVAS FORMAT - Worst Case ROM Demand (Float)
+
+
+
+
+
+ - Measured ROM table size, 32
+ bit words (Float)
+
+
+
+
+
+
IVAS FORMAT - Worst Case PROM Demand
+
+
+
+
+
+ - Measured PROM (Float,
+ trunk)
+
+
+
+
+
+
+
FAQ
+
+ - Q:
- What does "native SR" mean? What is the difference between the graphs titled "native SR" and "48 kHz"?
+ - A:
- The graphs titled "native SR" run encoder/decoder at the native input/output sampling-rate per operating point. This is 16 kHz for WB, 32 kHz for SWB etc. The graphs titled "48 kHz" use 48 kHz input/output sampling rate, independent of the supported bandwidth, which is set by using the "-max_band" commandline switch.
+ - Q:
- What is the meaning of these funny symbols in the navigation box, in the left upper corner of this page?
+ - A:
-
+ 1) Traffic light ●●●, ●●● or ●●●: !!!CURRENTLY NOT WORKING CORRECTLY AS NO REQUIREMENTS DEFINED YET!!! The traffic light symbols show, whether the last datapoint matches the requirement (green) or not (red). A yellow traffic light means that the requirement is matched, but the score is very close (within a 3% margin) to the requirement.
+ 2) Arrow ↑, ↓, →: The arrow indicates the trend of the last datapoint, compared to the last but one. An upwards arrow means that the score got higher (i.e. worse), downwards arrow arrow means that the score got lower (i.e. better), and a rightwards arrow means that the score was kept constant (within a 1% margin).
+
+ - Q:
- Which input files are used for audio-input? What error pattern is used?
+ - A:
- The input files can be found here. The error pattern is here.
+
+
+
+
+
Legal notice
+
+ This webpage uses jQuery and Flot.js libraries for which the following licenses apply:
+
+ - jQuery:
+ -
+ Copyright OpenJS Foundation and other contributors, https://openjsf.org/
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ - Flot.js:
+ -
+ Copyright (c) 2007-2014 IOLA and Ole Laursen
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+
+
+
+
+
diff --git a/ci/complexity_measurements/mergeNewsletterRam.py b/ci/complexity_measurements/mergeNewsletterRam.py
new file mode 100755
index 0000000000000000000000000000000000000000..c5e61a98548b481cd6712f7c4263ae2bcd81603b
--- /dev/null
+++ b/ci/complexity_measurements/mergeNewsletterRam.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python3
+# coding: utf-8
+
+# (C) 2022 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.
+import csv
+import sys
+import re
+
+newsletterFilename = ""
+newsletterFilenameLast = ""
+revision = ""
+shortDate = ""
+fullDate = ""
+
+if __name__ == "__main__":
+ newsletterFilenameSram = sys.argv[1]
+ newsletterFilenameDram = sys.argv[2]
+
+ram_table = {}
+
+with open(newsletterFilenameSram, "r") as csvfile:
+ SRAM = csv.reader(csvfile, delimiter=";")
+ for row in SRAM:
+ if row[0] == "conf":
+ continue
+ key = row[0]
+ lst = row[1:]
+ ram_table[key] = lst
+
+with open(newsletterFilenameDram, "r") as csvfile:
+ DRAM = csv.reader(csvfile, delimiter=";")
+ for row in DRAM:
+ if row[0] == "conf":
+ continue
+ key = row[0]
+ lst = row[1:]
+ ram_table[key] += lst
+
+# now we have the following format
+# SRAM enc, SRAM dec, SRAM total, DRAM enc, DRAM dec, DRAM max(enc, dec)
+
+print("conf;sram enc;sram dec;sram total;dram enc;dram dec;dram max;total")
+
+for key in ram_table:
+ ram = ram_table[key]
+ total = int(ram[1]) + int(ram[2]) + int(ram[5])
+ print(
+ key,
+ ";",
+ ram[0],
+ ";",
+ ram[1],
+ ";",
+ ram[2],
+ ";",
+ ram[3],
+ ";",
+ ram[4],
+ ";",
+ ram[5],
+ ";",
+ total,
+ sep="",
+ )
diff --git a/ci/complexity_measurements/parseNewsletterProm.py b/ci/complexity_measurements/parseNewsletterProm.py
new file mode 100755
index 0000000000000000000000000000000000000000..072cb03c21a7b022819ab63350d313f62e7c8182
--- /dev/null
+++ b/ci/complexity_measurements/parseNewsletterProm.py
@@ -0,0 +1,73 @@
+#!/usr/bin/env python3
+# coding: utf-8
+"""
+ (C) 2022 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.
+"""
+
+import csv
+import sys
+import re
+
+newsletterFilename = ""
+newsletterFilenameLast = ""
+revision = ""
+shortDate = ""
+fullDate = ""
+maxPromOpsBasop = ""
+logfileBasop = ""
+
+if __name__ == "__main__":
+ newsletterFilename = sys.argv[1]
+ newsletterFilenameLast = sys.argv[2]
+ revision = sys.argv[3]
+ shortDate = sys.argv[4]
+ fullDate = sys.argv[5]
+ maxPromOpsBasop = sys.argv[6]
+ logfileBasop = sys.argv[7]
+
+max_total = ["", 0]
+
+with open(newsletterFilename, "r") as csvfile:
+ prom = csv.reader(csvfile, delimiter=";")
+ for row in prom:
+ if row[0] == "conf":
+ continue
+ if int(row[4]) > max_total[1]:
+ max_total[0] = re.sub(" ", "_", row[0])
+ max_total[1] = int(row[4])
+
+print(
+ revision,
+ shortDate,
+ fullDate,
+ max_total[1],
+ newsletterFilenameLast,
+ maxPromOpsBasop,
+ logfileBasop,
+)
diff --git a/ci/complexity_measurements/parseNewsletterRam.py b/ci/complexity_measurements/parseNewsletterRam.py
new file mode 100755
index 0000000000000000000000000000000000000000..b099fb450f955bccb69bb683ddcdc025192f633a
--- /dev/null
+++ b/ci/complexity_measurements/parseNewsletterRam.py
@@ -0,0 +1,156 @@
+#!/usr/bin/env python3
+# coding: utf-8
+"""
+ (C) 2022 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.
+"""
+
+import csv
+import sys
+import re
+
+newsletterFilename = ""
+newsletterFilenameLast = ""
+revision = ""
+shortDate = ""
+fullDate = ""
+
+if __name__ == "__main__":
+ newsletterFilenameSram = sys.argv[1]
+ newsletterFilenameDram = sys.argv[2]
+ newsletterFilenameLast = sys.argv[3]
+ revision = sys.argv[4]
+ shortDate = sys.argv[5]
+ fullDate = sys.argv[6]
+
+max_total_enc = ["", 0]
+max_total_dec = ["", 0]
+max_total_encdec = ["", 0]
+
+max_dynamic_enc = ["", 0]
+max_dynamic_dec = ["", 0]
+max_dynamic_encdec = ["", 0]
+
+max_static_enc = ["", 0]
+max_static_dec = ["", 0]
+max_static_encdec = ["", 0]
+
+ram_table = {}
+
+with open(newsletterFilenameSram, "r") as csvfile:
+ SRAM = csv.reader(csvfile, delimiter=";")
+ for row in SRAM:
+ if row[0] == "conf":
+ continue
+ key = row[0]
+ lst = row[1:]
+ ram_table[key] = lst
+
+with open(newsletterFilenameDram, "r") as csvfile:
+ DRAM = csv.reader(csvfile, delimiter=";")
+ for row in DRAM:
+ if row[0] == "conf":
+ continue
+ key = row[0]
+ lst = row[1:]
+ ram_table[key] += lst
+
+# now we have the following format
+# SRAM enc, SRAM dec, SRAM total, DRAM enc, DRAM dec, DRAM max(enc, dec)
+
+for key in ram_table:
+ ram = ram_table[key]
+ static_enc = int(ram[0])
+ static_dec = int(ram[1])
+ static_encdec = static_enc + static_dec
+
+ dynamic_enc = int(ram[3])
+ dynamic_dec = int(ram[4])
+ dynamic_encdec = int(ram[5])
+
+ total_enc = static_enc + dynamic_enc
+ total_dec = static_dec + dynamic_dec
+ total_encdec = static_encdec + dynamic_encdec
+
+ if static_enc > max_static_enc[1]:
+ max_static_enc[0] = re.sub(" ", "_", key)
+ max_static_enc[1] = static_enc
+
+ if static_dec > max_static_dec[1]:
+ max_static_dec[0] = re.sub(" ", "_", key)
+ max_static_dec[1] = static_dec
+
+ if static_encdec > max_static_encdec[1]:
+ max_static_encdec[0] = re.sub(" ", "_", key)
+ max_static_encdec[1] = static_encdec
+
+ if dynamic_enc > max_dynamic_enc[1]:
+ max_dynamic_enc[0] = re.sub(" ", "_", key)
+ max_dynamic_enc[1] = dynamic_enc
+
+ if dynamic_dec > max_dynamic_dec[1]:
+ max_dynamic_dec[0] = re.sub(" ", "_", key)
+ max_dynamic_dec[1] = dynamic_dec
+
+ if dynamic_encdec > max_dynamic_encdec[1]:
+ max_dynamic_encdec[0] = re.sub(" ", "_", key)
+ max_dynamic_encdec[1] = dynamic_encdec
+
+ if total_enc > max_total_enc[1]:
+ max_total_enc[0] = re.sub(" ", "_", key)
+ max_total_enc[1] = total_enc
+
+ if total_dec > max_static_dec[1]:
+ max_total_dec[0] = re.sub(" ", "_", key)
+ max_total_dec[1] = total_dec
+
+ if total_encdec > max_static_encdec[1]:
+ max_total_encdec[0] = re.sub(" ", "_", key)
+ max_total_encdec[1] = total_encdec
+
+print(
+ revision,
+ shortDate,
+ fullDate,
+ max_total_encdec[1],
+ max_total_enc[0],
+ max_total_enc[1],
+ max_total_dec[0],
+ max_total_dec[1],
+ max_dynamic_encdec[1],
+ max_dynamic_encdec[0],
+ max_dynamic_enc[1],
+ max_dynamic_dec[0],
+ max_dynamic_dec[1],
+ max_static_enc[1] + max_static_dec[1],
+ max_static_enc[0],
+ max_static_enc[1],
+ max_static_dec[0],
+ max_static_dec[1],
+ newsletterFilenameLast,
+)
diff --git a/ci/complexity_measurements/parseNewsletterRom.py b/ci/complexity_measurements/parseNewsletterRom.py
new file mode 100755
index 0000000000000000000000000000000000000000..aeb7ee26507afecf3c2f5f3b54add17e2a61fd5a
--- /dev/null
+++ b/ci/complexity_measurements/parseNewsletterRom.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python3
+# coding: utf-8
+
+"""
+ (C) 2022 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.
+"""
+
+import csv
+import sys
+import re
+
+newsletterFilename = ""
+newsletterFilenameLast = ""
+revision = ""
+shortDate = ""
+fullDate = ""
+
+if __name__ == "__main__":
+ newsletterFilename = sys.argv[1]
+ newsletterFilenameLast = sys.argv[2]
+ revision = sys.argv[3]
+ shortDate = sys.argv[4]
+ fullDate = sys.argv[5]
+
+max_total = ["", 0]
+
+with open(newsletterFilename, "r") as csvfile:
+ rom = csv.reader(csvfile, delimiter=";")
+ for row in rom:
+ if row[0] == "conf":
+ continue
+ if int(row[4]) > max_total[1]:
+ max_total[0] = re.sub(" ", "_", row[0])
+ max_total[1] = int(row[4])
+
+print(revision, shortDate, fullDate, max_total[1], newsletterFilenameLast)
diff --git a/ci/complexity_measurements/parseNewsletterWmops.py b/ci/complexity_measurements/parseNewsletterWmops.py
new file mode 100755
index 0000000000000000000000000000000000000000..06943726a00bd40115bec901a2aa101098be7dfc
--- /dev/null
+++ b/ci/complexity_measurements/parseNewsletterWmops.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python3
+# coding: utf-8
+"""
+ (C) 2022 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.
+"""
+
+import csv
+import sys
+import re
+
+newsletterFilename = ""
+newsletterFilenameLast = ""
+revision = ""
+shortDate = ""
+fullDate = ""
+
+if __name__ == "__main__":
+ newsletterFilename = sys.argv[1]
+ newsletterFilenameLast = sys.argv[2]
+ revision = sys.argv[3]
+ shortDate = sys.argv[4]
+ fullDate = sys.argv[5]
+
+max_enc = ["", 0]
+max_dec = ["", 0]
+max_total = ["", 0]
+fixedpointScalingFac = 1.0
+
+with open(newsletterFilename, "r") as csvfile:
+ wmops = csv.reader(csvfile, delimiter=";")
+ for row in wmops:
+ if row[0] == "conf":
+ continue
+ if float(row[1]) > max_enc[1]:
+ max_enc[0] = re.sub(" ", "_", row[0])
+ max_enc[1] = float(row[1])
+ if float(row[2]) > max_dec[1]:
+ max_dec[0] = re.sub(" ", "_", row[0])
+ max_dec[1] = float(row[2])
+ if float(row[3]) > max_total[1]:
+ max_total[0] = re.sub(" ", "_", row[0])
+ max_total[1] = float(row[3])
+
+print(
+ revision,
+ shortDate,
+ fullDate,
+ max_enc[1] + max_dec[1],
+ max_enc[0],
+ max_enc[1],
+ max_dec[0],
+ max_dec[1],
+ max_total[0],
+ max_total[1],
+ fixedpointScalingFac,
+ max_enc[1] + max_dec[1],
+ max_enc[0],
+ max_enc[1],
+ max_dec[0],
+ max_dec[1],
+ max_total[0],
+ max_total[1],
+ newsletterFilenameLast,
+)
diff --git a/ci/complexity_measurements/style.css b/ci/complexity_measurements/style.css
new file mode 100755
index 0000000000000000000000000000000000000000..44fb55de46125fbad0e32bceb11b3395f355fbd1
--- /dev/null
+++ b/ci/complexity_measurements/style.css
@@ -0,0 +1,220 @@
+body {
+ background-color:#FFF;
+ font:.6875em Verdana, Arial, Helvetica, sans-serif;
+ color:#000;
+}
+a {
+ color:#000;
+ text-decoration:underline;
+}
+a:hover {
+ text-decoration:none;
+}
+h1 {
+ font-size:2.265em;
+ font-weight:700;
+ text-align: center;
+}
+em {
+ font-style: normal;
+ font-weight: bold;
+}
+hr {
+ margin-top: 30px;
+ margin-bottom: 30px;
+ margin-left: 150px;
+ margin-right:150px;
+ height: 0px;
+ border-top-width: 2px;
+ border-bottom-width: 0px;
+ border-left-width: 0px;
+ border-right-width: 0px;
+ border-top-style: solid;
+ color: #606060;
+}
+.graph {
+ width: 800px;
+ height: 350px;
+}
+.graph-container {
+ margin: 0 auto;
+ width:800px;
+}
+.message-box {
+ margin-top: 2em;
+ padding: 1em;
+ background-color: #FF8000;
+ border-radius: 20px;
+}
+#wmops-graph {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#wmops_per_op-graph {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#wmops-48kHz-graph {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#wmops_per_op-48kHz-graph {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#wmops_basop_per_op-graph {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#wmops-graph-basop {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#conversion_factors_basop_flc {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#ram-graph {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#ram-graph-basop {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#rom-graph {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#rom-graph-basop{
+ height:500px;
+ width:800px;
+ float:left;
+}
+#prom-graph {
+ height:500px;
+ width:800px;
+ float:left;
+}
+#tooltip {
+ border-radius:.35em;
+ border-radius:.35em;
+ background-color:#000;
+ color:#FFF;
+ display:none;
+ opacity:0.8;
+ padding:.25em;
+ position:absolute;
+ box-shadow: 6px 6px 6px #666;
+}
+#tooltip a:link, #tooltip a:active, #tooltip a:visited {
+ color:#FFF;
+ text-decoration: underline;
+}
+#tooltip a:hover {
+ color:#FFF;
+ text-decoration: none;
+}
+.legend {
+ display: inline;
+}
+.legend li {
+ border-left: 1.2em solid #FFF;
+ margin-right: 2em;
+ padding-left: .3em;
+ margin-bottom: .2em;
+ list-style-type: none;
+}
+
+#menu {
+ color: #FFFFFF;
+}
+
+#menu ul {
+ color: #FFFFFF;
+ list-style: none;
+ margin-left: -1em;
+ position: relative;
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+}
+
+#menu li {
+ margin-left: -1em;
+ margin-bottom: 1.0em;
+ margin-top: 1.0em;
+}
+
+#menu a {
+ color: #FFFFFF;
+}
+
+dt {
+ font-weight: bold;
+}
+
+dd hr {
+ margin-top: 0.1em;
+ margin-bottom: 0.1em;
+ margin-left: 48%;
+ margin-right: 48%;
+}
+
+#menu {
+ float: left;
+ margin-left: 1em;
+ margin-top: 1em;
+ width: 22em;
+ border-radius: 1em;
+ position: fixed;
+ background-color: #000000;
+ opacity: 0.8;
+ box-shadow: 6px 6px 6px #666;
+}
+
+#content {
+ margin-left: 17em;
+}
+
+.symbols {
+ float: right;
+ font-weight: bolder;
+ font-size: 2em;
+ margin-top: -0.4em;
+}
+
+.trafficlight {
+ margin-right: 0px;
+ margin-left: 0px;
+ position: absolute;
+ right: 2em;
+ color: #202020;
+}
+
+.trend {
+ margin-right: 0.5em;
+ margin-left: 0.2em;
+}
+
+th, td {
+ padding: 0.5em 2em;
+ border: 1px solid #606060;
+}
+
+th {
+ text-align: left;
+}
+
+td#number {
+ text-align: right;
+}
diff --git a/ci/get_id_of_last_job_occurence.py b/ci/get_id_of_last_job_occurence.py
new file mode 100755
index 0000000000000000000000000000000000000000..f6223d998063d6d92db1e0ea9e376607a1767658
--- /dev/null
+++ b/ci/get_id_of_last_job_occurence.py
@@ -0,0 +1,81 @@
+#!/usr/bin/env python3
+
+"""
+ (C) 2022 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.
+"""
+
+import argparse
+import requests
+
+PER_PAGE_SUFFIX = "?per_page=50"
+PAGE_SUFFIX = "&page={}"
+API_BASE_URL = "https://forge.3gpp.org/rep/api/v4/projects/49"
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument("branch_name")
+parser.add_argument("job_name")
+
+args = parser.parse_args()
+
+branch_name = args.branch_name
+job_name = args.job_name
+
+
+job_id = -1
+# check last 500 pipelines max
+for page in range(100):
+ url_pls = API_BASE_URL + "/pipelines"
+
+ # need both suffixes here to descend through the pages and get also older pipelines
+ suffix = PER_PAGE_SUFFIX + PAGE_SUFFIX.format(page)
+ resp_pls = requests.get(url_pls + suffix)
+ for pl in resp_pls.json():
+ if pl["ref"] == branch_name:
+ url_jobs = url_pls + f"/{pl['id']}/jobs"
+
+ # only one of the suffixes here - this assumes only max of 50 jobs per pipeline
+ # so only one page needed
+ resp_jobs = requests.get(url_jobs + PER_PAGE_SUFFIX)
+
+ if job_name not in resp_jobs.text:
+ continue
+
+ # find actual job by name
+ for job in resp_jobs.json():
+ if job["name"] == job_name and job["status"] == "success":
+ job_id = job["id"]
+ break
+ if job_id >= 0:
+ break
+
+ if job_id >= 0:
+ break
+
+print(job_id)
diff --git a/ci/index-pages.html b/ci/index-pages.html
new file mode 100644
index 0000000000000000000000000000000000000000..f8b0709b03a6e8f0af817cfe294d171339bbd0ba
--- /dev/null
+++ b/ci/index-pages.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+