Skip to content

Commit 054411e

Browse files
authored
Merge pull request #155 from openitu/ITUsubmission_2022_noP50MNU
Package proposed for Consent (Friday June 17, 2022) - STL2022
2 parents e92d7c2 + 8d3c8d3 commit 054411e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+2638
-467
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ add_custom_target(test-verbose COMMAND ${CMAKE_CTEST_COMMAND} --verbose)
1818
#Source folders
1919
add_subdirectory(src/basop/test_framework)
2020
add_subdirectory(src/basop/flc)
21+
add_subdirectory(src/bs1770demo)
2122
add_subdirectory(src/eid)
23+
add_subdirectory(src/esdru)
2224
add_subdirectory(src/fir)
2325
add_subdirectory(src/freqresp)
2426
add_subdirectory(src/g711)

doc/g191.md

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
11

22
**IMPORTANT NOTE:**
3-
This markdown document provides the main text of Recommendation ITU-T G.191, the Software Tool Library, but it does not reflect the entire text of the Recommendation. Please refer to the official Recommendation ITU-T G.191 for the complete text: [https://www.itu.int/rec/T-REC-G.191](https://www.itu.int/rec/T-REC-G.191)
3+
4+
This markdown document provides the main text of Recommendation ITU-T G.191, the Software Tool Library, but it does not reflect the entire text of the Recommendation.
5+
Please refer to the official Recommendation ITU-T G.191 for the complete text: [https://www.itu.int/rec/T-REC-G.191](https://www.itu.int/rec/T-REC-G.191)
6+
7+
-=Pagebreak=-
48

59
# Recommendation ITU-T G.191 - Software tools for speech and audio coding standardization
610

711
## Summary
812

913
Recommendation ITU-T G.191 provides source code for speech and audio processing modules for narrowband, wideband and super-wideband telephony applications. The set includes codecs, filters, noise generators.
1014

11-
This edition introduces changes to Annex A, which describes the ITU-T Software Tools (STL) containing a high-quality, portable C code library for speech processing applications. This release of the STL, also known as STL2019, incorporates new basic operators to accommodate state-of-the-art processor architectures which supports wide accumulators, SIMD (Single Instruction Multiple Data) and VLIW (Very Long Instruction Word). Thus, the new operators provides support for 64-bit accumulator, complex numbers, enhanced 32-bit operations and additional control code operators.
15+
This edition introduces changes to Annex A, which describes the ITU-T Software Tools (STL) containing a high-quality, portable C code library for speech processing applications. This release of the STL, also known as STL2022, incorporates:
1216

13-
The software package was reworked to make it available as a truly open-source project and is therefore hosted on an open-source collaboration platform. The build toolchain uses CMake to generate platform-dependent and tool-dependent build scripts as well as to execute regression tests for each module in the STL.
17+
* An implementation of ESDRU (energy-based spatial distortion reference unit) as described in ITU-T P.811.
1418

15-
Recommendation ITU-T G.191 includes an electronic attachment containing STL2019 and manual.
19+
* An implementation of the loudness measurement algorithm as in ITU-R Rec. BS.1770-4.
20+
21+
Recommendation ITU-T G.191 includes an electronic attachment containing STL2022 and manual.
1622

1723
## Keywords
1824

19-
DSP operators, filters, MNRU, open source, reverb, STL2019, G.711, G.722, G.726, G.728, sv56.
25+
DSP operators, filters, MNRU, open source, reverb, STL2022, G.711, G.722, G.726, G.728, sv56, BS.1770, ESDRU
2026

2127
## 1. Scope
2228

@@ -35,22 +41,24 @@ This Recommendation provides a set of common, coherent and portable signal proce
3541

3642
The following ITU-T Recommendations and other references contain provisions which, through reference in this text, constitute provisions of this Recommendation. At the time of publication, the editions indicated were valid. All Recommendations and other references are subject to revision; users of this Recommendation are therefore encouraged to investigate the possibility of applying the most recent edition of the Recommendations and other references listed below. A list of the currently valid ITU-T Recommendations is regularly published. The reference to a document within this Recommendation does not give it, as a stand-alone document, the status of a Recommendation.
3743

38-
|||
39-
|--------------|-------------------------------------------|
40-
| [ITU-T G.192] | Recommendation ITU-T G.192 (1996), *A common digital parallel interface for speech standardization activities* |
41-
| [ITU-T G.711] | Recommendation ITU-T G.711 (1988), *Pulse code modulation (PCM) of voice frequencies* |
42-
| [ITU-T G.712] | Recommendation ITU-T G.712 (2001), *Transmission performance characteristics of pulse code modulation channels* |
43-
| [ITU-T G.718] | Recommendation ITU-T G.718 (2008), *Frame error robust narrow-band and wideband embedded variable bit-rate coding of speech and audio from 8-32 kbit/s* |
44-
| [ITU-T G.722] | Recommendation ITU-T G.722 (2012), *7 kHz audio-coding within 64 kbit/s* |
45-
| [ITU-T G.726] | Recommendation ITU-T G.722 (1990), *40, 32, 24, 16 kbit/s Adaptive Differential Pulse Code Modulation (ADPCM)* |
46-
| [ITU-T G.727] | Recommendation ITU-T G.727 (1990), *5-, 4-, 3- and 2-bit/sample embedded adaptive differential pulse code modulation (ADPCM)* |
47-
| [ITU-T G.728] | Recommendation ITU-T G.728 (2012), *Coding of speech at 16 kbit/s using low-delay code excited linear prediction* |
48-
| [ITU-T G.729.1] | Recommendation ITU-T G.729.1 (2006), *G.729-based embedded variable bit-rate coder: An 8-32 kbit/s scalable wideband coder bitstream interoperable with G.729* |
49-
| [ITU-T O.41] | Recommendation ITU-T O.41 (1994), *Psophometer for use on telephone-type circuits* |
50-
| [ITU-T P.48] | Recommendation ITU-T P.48 (1988), *Specification for an intermediate reference system* |
51-
| [ITU-T P.56] | Recommendation ITU-T P.56 (2011), *Objective measurement of active speech level* |
52-
| [ITU-T P.341] | Recommendation ITU-T P.341 (2011), *Transmission characteristics for wideband digital loudspeaking and hands-free telephony terminals* |
53-
| [ITU-T P.810] | Recommendation ITU-T P.810 (1996), *Modulated noise reference unit (MNRU)* |
44+
--------------- ------------------------------
45+
[ITU-T G.192] Recommendation ITU-T G.192 (1996), *A common digital parallel interface for speech standardization activities*
46+
[ITU-T G.711] Recommendation ITU-T G.711 (1988), *Pulse code modulation (PCM) of voice frequencies*
47+
[ITU-T G.712] Recommendation ITU-T G.712 (2001), *Transmission performance characteristics of pulse code modulation channels*
48+
[ITU-T G.718] Recommendation ITU-T G.718 (2008), *Frame error robust narrow-band and wideband embedded variable bit-rate coding of speech and audio from 8-32 kbit/s*
49+
[ITU-T G.722] Recommendation ITU-T G.722 (2012), *7 kHz audio-coding within 64 kbit/s*
50+
[ITU-T G.726] Recommendation ITU-T G.722 (1990), *40, 32, 24, 16 kbit/s Adaptive Differential Pulse Code Modulation (ADPCM)*
51+
[ITU-T G.727] Recommendation ITU-T G.727 (1990), *5-, 4-, 3- and 2-bit/sample embedded adaptive differential pulse code modulation (ADPCM)*
52+
[ITU-T G.728] Recommendation ITU-T G.728 (2012), *Coding of speech at 16 kbit/s using low-delay code excited linear prediction*
53+
[ITU-T G.729.1] Recommendation ITU-T G.729.1 (2006), *G.729-based embedded variable bit-rate coder: An 8-32 kbit/s scalable wideband coder bitstream interoperable with G.729*
54+
[ITU-T O.41] Recommendation ITU-T O.41 (1994), *Psophometer for use on telephone-type circuits*
55+
[ITU-T P.48] Recommendation ITU-T P.48 (1988), *Specification for an intermediate reference system*
56+
[ITU-T P.56] Recommendation ITU-T P.56 (2011), *Objective measurement of active speech level*
57+
[ITU-T P.341] Recommendation ITU-T P.341 (2011), *Transmission characteristics for wideband digital loudspeaking and hands-free telephony terminals*
58+
[ITU-T P.810] Recommendation ITU-T P.810 (1996), *Modulated noise reference unit (MNRU)*
59+
[ITU-T P.811] Recommendation ITU-T P.811 (2019), *Subjective test methodology for evaluating Speech oriented stereo communication systems over headphones*
60+
[ITU-R BS.1770] Recommendation ITU-R BS.1770-4 (2015), *Algorithms to measure audio programme loudness and true-peak audio level*
61+
-----------------------------------------------
5462

5563
## 3. Definitions
5664

@@ -70,10 +78,10 @@ This Recommendation uses the following abbreviations and acronyms:
7078
| ROM | Read Only Memory |
7179
| RPE-LTP | Regular Pulse Excitation-Long Term Prediction |
7280
| STL | Software Tool Library |
73-
| STL | Software Tool Library |
7481
| SIMD | Single Instruction Multiple Data |
7582
| VLIW | Very Long Instruction Word |
7683

84+
7785
## 5. Conventions
7886

7987
None.
@@ -82,6 +90,7 @@ None.
8290

8391
To clarify the use of the set of software tools, arranged as a software tool library (STL), ITU-T makes the following recommendations:
8492

93+
1) The software tools specified in Annex A should be used as building modules of signal processing blocks to be used in the process of generation of ITU-T Recommendations, particularly those concerned with speech and audio coding algorithms.
8594
1) The software tools specified in Annex A should be used as building modules of signal processing blocks to be used in the process of generation of ITU-T Recommendations, particularly those concerned with speech and audio coding algorithms.
8695

8796
2) Some of the tools shall be used in procedures for the verification of interoperability of ITU‑T standards, mainly of speech and audio coding algorithms whose description is in terms of non-bitexact specifications.
@@ -97,11 +106,5 @@ The modules in the ITU-T STL are free software; they can be redistributed or mod
97106
The STL has been carefully tested and it is believed that both the modules and the example programs on their usage conform to their description documents. Nevertheless, the ITU-T STL is provided "as is", in the hope that it will be useful, but without any warranty.
98107

99108
The STL is intended to help the scientific community to achieve new standards in telecommunications more efficiently, and for such must not be sold, entirely or in parts. The original developers, except where otherwise noted, retain ownership of their copyright, and allow their use under the terms and conditions of Annex B.
100-
101-
## Bibliography
102109

103-
|||
104-
|--------------|-------------------------------------------|
105-
| [b-CMake] | Kitware (2018), CMake, https://cmake.org/. |
106-
| [b-GSM 06.10] | ETSI Recommendation GSM 06.10 (1992), GSM full-rate speech transcoding. |
107-
| [b-STLgit] | ITU (2018), ITU-T Software Tool Library, GitHub repository, https://github.com/openitu/STL. |
110+
-=Pagebreak=-

doc/g191_Annex_A.md

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
(This annex forms an integral part of this Recommendation)
44

5-
This annex contains a list with a short description of the software tools available in the ITU‑T Software Tool Library (STL). The 2019 release is referred to in the associated documentation as STL2019. All the routines in the modules are written in C.
5+
This annex contains a list with a short description of the software tools available in the ITU‑T Software Tool Library (STL). All the routines in the modules are written in C.
66

77
## a) Example programs available
88

@@ -24,18 +24,19 @@ The following programs are examples of the use of the modules:
2424
| `sv56demo.c` | on the use of the speech voltmeter module, and also the gain/loss routine. |
2525
| `eiddemo.c` | on the use of the error insertion device for bit error insertion and frame erasure. |
2626
| `eid-ev.c` | on the use of the error insertion device for bit error insertion for layered bitstreams, which can be used to apply errors to individual layers in layered bitstreams, such as [ITU‑T G.718] or [ITU‑T G.729.1]. |
27-
| `gen-patt.c` | on the use of generating bit error pattern files for error insertion in serial bitstreams encoded files that comply with [ITU‑T G.192]. |
28-
| `gen_rate_profile.c` | on the use of the fast switching rate profile generation tool. |
29-
| `firdemo.c` | on the use of the finite impulse response (FIR) high-quality low-pass and band-pass filters and of the FIR-IRS filters, associated with the rate change module. |
30-
| `pcmdemo.c` | on the use of the ITU‑T G.712 (standard PCM) IIR (infinite impulse response) filters, associated with the rate change module. |
31-
| `filter.c` | on the use of both the IIR and the FIR filters available in the rate change module. |
32-
| `mnrudemo.c` | on the use of the narrow-band and wideband modulated noise reference unity (ITU‑T P.810) module. |
33-
| `spdemo.c` | on the use of the serialization and parallelization routines of the utility module. |
34-
| `g711iplc.c` | on the use of the packet loss concealment module of Appendix I of [G.711]. |
35-
| `reverb.c` | on the use of the reverberation module. |
36-
| `truncate.c` | on the use of the bitstream truncation module. |
37-
| `freqresp.c` | on the use of the frequency response computation tool. |
38-
| `stereoop.c` | on the use of stereo file operations. |
27+
| `gen-patt.c` | on the use of generating bit error pattern files for error insertion in serial bitstreams encoded files that comply with [ITU‑T G.192]. |
28+
| `gen_rate_profile.c` | on the use of the fast switching rate profile generation tool. |
29+
| `firdemo.c` | on the use of the finite impulse response (FIR) high-quality low-pass and band-pass filters and of the FIR-IRS filters, associated with the rate change module. |
30+
| `pcmdemo.c` | on the use of the ITU‑T G.712 (standard PCM) IIR (infinite impulse response) filters, associated with the rate change module. |
31+
| `filter.c` | on the use of both the IIR and the FIR filters available in the rate change module. |
32+
| `mnrudemo.c` | on the use of the narrow-band and wideband modulated noise reference unity (ITU‑T P.810) module. |
33+
| `spdemo.c` | on the use of the serialization and parallelization routines of the utility module. |
34+
| `g711iplc.c` | on the use of the packet loss concealment module of Appendix I of [G.711]. |
35+
| `reverb.c` | on the use of the reverberation module. |
36+
| `truncate.c` | on the use of the bitstream truncation module. |
37+
| `freqresp.c` | on the use of the frequency response computation tool. |
38+
| `stereoop.c` | on the use of stereo file operations. |
39+
| `esdru.c` | on the use of energy-based spatial distortion reference unit [ITU-T P.811]. | ||
3940

4041
NOTE - The module for the basic operators does not have a demo program but it is supplemented by two tools: one to evaluate program read only memory (ROM) complexity for fixed-point code (`basop_cnt.c`), and another to evaluate complexity (including program ROM) of floating-point implementations (`flc_example.c`). Both reside in the basic operators module.
4142

@@ -664,3 +665,28 @@ The functions included are as follows.
664665
| `rdft` | Discrete Fourier transform for real signals. |
665666
| `genHanning` | Hanning window generation routine. |
666667
| `powSpect` | Power spectrum computation routine. |
668+
669+
## r) Energy-based Spatial Distortion Reference Unit
670+
671+
Name: `esdru.c`
672+
673+
The functions included are as follows.
674+
675+
-------------------- -------------------------------------
676+
`g_mod_nrg` Generate the modulation coefficients.
677+
`apply_spatial_dist` Apply spatial modulation routine.
678+
-----------------------------------------------------------
679+
680+
## s) BS.1770-4 demo
681+
682+
Name: `bs1770demo.c`
683+
684+
The functions included are as follows.
685+
686+
-------------------- --------------------------------------------------------------------
687+
`gated_loudness` Calculate loudness according to gating threshold and scaling factor.
688+
`iir2` Perform filtering for sub-block energy calculation.
689+
`find_scaling_factor` Iterative process to derive the most appropriate scaling factor.
690+
------------------------------------------------------------------------------------------
691+
692+
-=Pagebreak=-

doc/g191_Annex_B.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,5 @@ Each version is given a distinguishing version number. If the Module specifies a
5353
**B.10** Because the Module is licenced free of charge, there is no warranty for the Module, to the extent permitted by applicable law. Except when otherwise stated in writing, the copyright holders and/or other parties provide the Module "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the Module is with you. Should the Module prove defective, you assume the cost of all necessary servicing, repair or correction.
5454

5555
**B.11** In no event, unless required by applicable law or agreed to in writing, will any copyright holder, or any other party who may modify and/or redistribute the Module as permitted above, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the Module (including, but not limited to, loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the Module to operate with any other modules), even if such holder or other party has been advised of the possibility of such damages.
56+
57+
-=Pagebreak=-

doc/g191_Bibliography.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
# Bibliography
22

3-
4-
|||
5-
|---------------------|-----------------------------------------------------------|
6-
| [b-CMake] | Kitware (2018), CMake. https://cmake.org/. |
7-
| [b-GSM 06.10] | ETSI Recommendation GSM 06.10 (1992), _GSM full-rate speech transcoding_. |
8-
| [b-STLgit | ITU (2019), _ITU-T software tool library (G.191)_, GitHub repository. https://github.com/openitu/STL. |
3+
-------------- --------------
4+
[b-CMake] Kitware (2018), CMake. https://cmake.org/.
5+
[b-GSM 06.10] ETSI Recommendation GSM 06.10 (1992), _GSM full-rate speech transcoding_.
6+
[b-STLgit] ITU (2022), _ITU-T software tool library (G.191)_, GitHub repository. https://github.com/openitu/STL.
7+
----------------------------------------

0 commit comments

Comments
 (0)