Skip to content

Commit

Permalink
Merge pull request #158 from openitu/itu_submission_january_2023
Browse files Browse the repository at this point in the history
Received Consent at ITU-T SG12 meeting - January 2023
  • Loading branch information
ludomal authored Mar 29, 2023
2 parents 054411e + 54a9d82 commit e2a74c7
Show file tree
Hide file tree
Showing 81 changed files with 28,403 additions and 503 deletions.
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
cmake_minimum_required(VERSION 3.1)
project(ITU-T_STL2009)
project(STL2023 VERSION 2023)
add_definitions( -DVERSION_STL="${CMAKE_PROJECT_NAME}" )

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

Expand Down Expand Up @@ -41,3 +42,4 @@ add_subdirectory(src/truncate)
add_subdirectory(src/unsup)
add_subdirectory(src/unsup/g728-vt)
add_subdirectory(src/utl)
add_subdirectory(src/wmc_tool)
12 changes: 6 additions & 6 deletions doc/g191.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ Please refer to the official Recommendation ITU-T G.191 for the complete text: [

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.

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:
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 STL2023, incorporates:

* An implementation of ESDRU (energy-based spatial distortion reference unit) as described in ITU-T P.811.
* An implementation of P.50 fullband MNRU as described in ITU-T P.810.

* An implementation of the loudness measurement algorithm as in ITU-R Rec. BS.1770-4.
* A tool for automatic instrumentation of speech and audio codecs to measure their computational complexity and memory.

Recommendation ITU-T G.191 includes an electronic attachment containing STL2022 and manual.
Recommendation ITU-T G.191 includes an electronic attachment containing STL2023 and manual.

## Keywords

DSP operators, filters, MNRU, open source, reverb, STL2022, G.711, G.722, G.726, G.728, sv56, BS.1770, ESDRU
DSP operators, filters, MNRU, P.50 FB MNRU, open source, reverb, STL2022, G.711, G.722, G.726, G.728, sv56, BS.1770, ESDRU, WMC Tool

## 1. Scope

Expand Down Expand Up @@ -55,7 +55,7 @@ The following ITU-T Recommendations and other references contain provisions whic
[ITU-T P.48] Recommendation ITU-T P.48 (1988), *Specification for an intermediate reference system*
[ITU-T P.56] Recommendation ITU-T P.56 (2011), *Objective measurement of active speech level*
[ITU-T P.341] Recommendation ITU-T P.341 (2011), *Transmission characteristics for wideband digital loudspeaking and hands-free telephony terminals*
[ITU-T P.810] Recommendation ITU-T P.810 (1996), *Modulated noise reference unit (MNRU)*
[ITU-T P.810] Recommendation ITU-T P.810 (2023), *Modulated noise reference unit (MNRU)*
[ITU-T P.811] Recommendation ITU-T P.811 (2019), *Subjective test methodology for evaluating Speech oriented stereo communication systems over headphones*
[ITU-R BS.1770] Recommendation ITU-R BS.1770-4 (2015), *Algorithms to measure audio programme loudness and true-peak audio level*
-----------------------------------------------
Expand Down
71 changes: 46 additions & 25 deletions doc/g191_Annex_A.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,32 +11,37 @@ Associated header file: `ugstdemo.h`
The following programs are examples of the use of the modules:

|||
|-------|-----------------------------------------------------------|
| `g711demo.c` | on the use of the ITU‑T G.711 module. |
| `g726demo.c` | on the use of the ITU‑T G.726 module. |
| `g727demo.c` | on the use of the ITU‑T G.727 module |
| `g722demo.c` | on the use of the ITU‑T G.722 module. |
| `g728enc.c` | on the use of the ITU‑T G.728 floating-point encoder. |
| `g728dec.c` | on the use of the ITU‑T G.728 floating-point decoder. |
| `g728fpenc.c` | on the use of the ITU‑T G.728 fixed-point encoder. |
| `g728fpdec.c` | on the use of the ITU‑T G.728 fixed-point decoder. |
| `rpedemo.c` | on the use of the full-rate GSM 06.10 speech codec module. |
| `sv56demo.c` | on the use of the speech voltmeter module, and also the gain/loss routine. |
| `eiddemo.c` | on the use of the error insertion device for bit error insertion and frame erasure. |
| `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]. |
| `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]. |
|----------------------|-----------------------------------------------|
| `g711demo.c` | on the use of the ITU‑T G.711 module. |
| `g726demo.c` | on the use of the ITU‑T G.726 module. |
| `g727demo.c` | on the use of the ITU‑T G.727 module |
| `g722demo.c` | on the use of the ITU‑T G.722 module. |
| `g728enc.c` | on the use of the ITU‑T G.728 floating-point encoder. |
| `g728dec.c` | on the use of the ITU‑T G.728 floating-point decoder. |
| `g728fpenc.c` | on the use of the ITU‑T G.728 fixed-point encoder. |
| `g728fpdec.c` | on the use of the ITU‑T G.728 fixed-point decoder. |
| `rpedemo.c` | on the use of the full-rate GSM 06.10 speech codec module. |
| `sv56demo.c` | on the use of the speech voltmeter module, and also the gain/loss routine. |
| `eiddemo.c` | on the use of the error insertion device for bit error insertion and frame erasure. |
| `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]. |
| `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]. |
| `gen_rate_profile.c` | on the use of the fast switching rate profile generation tool. |
| `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. |
| `pcmdemo.c` | on the use of the ITU‑T G.712 (standard PCM) IIR (infinite impulse response) filters, associated with the rate change module. |
| `filter.c` | on the use of both the IIR and the FIR filters available in the rate change module. |
| `mnrudemo.c` | on the use of the narrow-band and wideband modulated noise reference unity (ITU‑T P.810) module. |
| `spdemo.c` | on the use of the serialization and parallelization routines of the utility module. |
| `g711iplc.c` | on the use of the packet loss concealment module of Appendix I of [G.711]. |
| `reverb.c` | on the use of the reverberation module. |
| `truncate.c` | on the use of the bitstream truncation module. |
| `freqresp.c` | on the use of the frequency response computation tool. |
| `stereoop.c` | on the use of stereo file operations. |
| `esdru.c` | on the use of energy-based spatial distortion reference unit [ITU-T P.811]. | ||
| `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. |
| `pcmdemo.c` | on the use of the ITU‑T G.712 (standard PCM) IIR (infinite impulse response) filters, associated with the rate change module. |
| `filter.c` | on the use of both the IIR and the FIR filters available in the rate change module. |
| `mnrudemo.c` | on the use of the narrow-band and wideband modulated noise reference unity (ITU‑T P.810) module. |
| `p50fbmnru.c` | on the use of the P.50 fullband MNRU.
|
| `spdemo.c` | on the use of the serialization and parallelization routines of the utility module. |
| `g711iplc.c` | on the use of the packet loss concealment module of Appendix I of [G.711]. |
| `reverb.c` | on the use of the reverberation module. |
| `truncate.c` | on the use of the bitstream truncation module. |
| `freqresp.c` | on the use of the frequency response computation tool. |
| `stereoop.c` | on the use of stereo file operations. |
| `esdru.c` | on the use of energy-based spatial distortion reference unit [ITU-T P.811]. |
| `wmc_tool.cpp` | on the use of WMC tool for speech and audio codecs complexity and memory measurement. |
||


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.

Expand Down Expand Up @@ -185,6 +190,7 @@ The functions included are as follows.
|||
|---------------------|-----------------------------------------------------------|
| `MNRU_process` | module for addition of modulated noise to a vector of samples, according to [ITU-T P.810], for both the narrow-band and the wideband models. |
| `P50_MNRU_process` | module for addition of modulated noise to a vector of samples, according to [ITU-T P.810], for P.50 full band model. |

## i) Speech voltmeter module

Expand Down Expand Up @@ -689,4 +695,19 @@ The functions included are as follows.
`find_scaling_factor` Iterative process to derive the most appropriate scaling factor.
------------------------------------------------------------------------------------------


## t) WMC Tool

Name: `wmc_tool.cpp`

The main program for WMC Tool. Depends on:

-------------------- --------------------------------------------------------------------
`c_parser.cpp` Routines for parsing C functions.
`text_utils.cpp` Text and string processing functions.
`output.cpp` Warning and error messages.
`wmc_auto_h.txt` Auto-generated header file for inclusion in projects.
`wmc_auto_c.txt` Auto-generated C source file for inclusion in projects.
------------------------------------------------------------------------------------------

-=Pagebreak=-
2 changes: 1 addition & 1 deletion doc/manual/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
BIBTEX = bibtex
PDFLATEX = pdflatex

PARTS = STLmanual.tex intro.tex g711.tex g711iplc.tex g726.tex g727.tex g728.tex g722.tex rpe.tex rate.tex eid.tex mnru.tex sv56.tex reverb.tex truncate.tex freqresp.tex stereoop.tex esdru.tex bs1770demo.tex basop.tex utl.tex
PARTS = STLmanual.tex intro.tex g711.tex g711iplc.tex g726.tex g727.tex g728.tex g722.tex rpe.tex rate.tex eid.tex mnru.tex sv56.tex reverb.tex truncate.tex freqresp.tex stereoop.tex esdru.tex bs1770demo.tex basop.tex utl.tex wmc_tool.tex

STLmanual.pdf : $(PARTS) bibliography.bib
$(PDFLATEX) $(PARTS)
Expand Down
14 changes: 11 additions & 3 deletions doc/manual/STLmanual.tex
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
\addtolength{\itemsep}{-20pt}

% Define headers
\def\ugst_title{ ITU-T Software Tool Library, release 2022}
\def\ugst_title{ ITU-T Software Tool Library, release 2023}
\def\us{$\mu$s}
\markboth{ \hspace{1cm} \hfill \ugst_title }%
{ Version: \today \hfill \hspace{1cm} }
Expand All @@ -41,6 +41,8 @@
\usepackage{framed}
\graphicspath{{graphics/}}
\usepackage{microtype}
\usepackage{fancyvrb}
\usepackage{booktabs}

%==============================================================================
\begin{document}
Expand All @@ -59,7 +61,7 @@
\pagenumbering{roman}

%==============================================================================
\title{ITU-T Software Tool Library 2022 User's Manual}
\title{ITU-T Software Tool Library 2023 User's Manual}
\author{ITU-T Users' Group on Software Tools}

%------------------------------------------------------------------------------
Expand All @@ -69,7 +71,7 @@

\ruley{100mm}

Copyright \copyright~ 2005, 2006, 2009, 2019 and 2022 by the International
Copyright \copyright~ 2005, 2006, 2009, 2019, 2022 and 2023 by the International
Telecommunication Union (ITU)

\ruley{15mm}
Expand Down Expand Up @@ -200,6 +202,12 @@
%=============================================================================
\include{esdru}

%=============================================================================
% chapter WMC Tool: Automatic instrumentation of floating-point speech and
% audio codecs for complexity and memory measurements
%=============================================================================
\include{wmc_tool}

%=============================================================================
% chapter UTILITIES: UGST utilities
%=============================================================================
Expand Down
3 changes: 3 additions & 0 deletions doc/manual/basop.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2667,6 +2667,7 @@ \subsection{Example}

%----------------------------------------------------------------------
\section{Complexity evaluation tool for floating-point C Code}
\label{ch:cmplx_eval_tool}
%----------------------------------------------------------------------

\subsection{Introduction}
Expand Down Expand Up @@ -3403,3 +3404,5 @@ \subsection{Example code}
EQ\_64 & - & - & - & 1 \\
NE\_64 & - & - & - & 1 \\
\end{longtable}


37 changes: 37 additions & 0 deletions doc/manual/bibliography.bib
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,25 @@ @book(P.830
month= "February"
)

@book(P.863,
title= "{Recommendation ITU-T P.863, Perceptual objective listening quality prediction}",
author= ITUT,
publisher= "ITU",
address= "Geneva, Switzerland",
year= 2018,
month= "March"
)

@book(EVS,
title= "{3GPP TS 26.441 - Enhanced Voice Services}",
author= "3GPP",
publisher= "3GPP",
year= 2014,
month= "December"
)



@book(Hndbk-tel,
title= "{Handbook on Telephonometry}",
author= ITUT,
Expand Down Expand Up @@ -370,6 +389,17 @@ @book(BS1770
year = 2015
)

@Book{ANSI:1989:PLC,
title = "Programming language, {C}: {ANSI X3.159-1989}",
author = "{American National Standards Institute}",
number = "160",
publisher = "ISO",
pages = "119",
year = "1989",
bibdate = "Mon Feb 24 15:49:20 MST 1997",
bibsource = "http://www.math.utah.edu/pub/tex/bib/ansistd.bib",
}

@techreport(AC-1004-Q10-15,
title= "{Software tool to compute dynamic RAM}",
author="{France Telecom Orange}",
Expand Down Expand Up @@ -1061,3 +1091,10 @@ @techreport(AC-0801-Q10-04
year = 2008,
date = "28 January - 1 February"
)

@book{C90,
author = {ISO},
title = "{ANSI/ISO 9899-1990, Programming languages - C}",
year = {1990},
url = {https://www.iso.org/standard/17782.html}
}
Binary file added doc/manual/graphics/mnru-p50NoiseShape.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/manual/graphics/mnru-p50fb.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions doc/manual/graphics/mnru.drawio

Large diffs are not rendered by default.

Binary file added doc/manual/graphics/wmc_tool_general.pdf
Binary file not shown.
Binary file added doc/manual/graphics/wmc_tool_max_ram.pdf
Binary file not shown.
Binary file added doc/manual/graphics/wmc_tool_ram_memory_types.pdf
Binary file not shown.
Loading

0 comments on commit e2a74c7

Please sign in to comment.