1、 ETSI TS 126 073 V15.0.0 (2018-07) Digital cellular telecommunications system (Phase 2+) (GSM); Universal Mobile Telecommunications System (UMTS); LTE; ANSI-C code for the Adaptive Multi Rate (AMR) speech codec (3GPP TS 26.073 version 15.0.0 Release 15) TECHNICAL SPECIFICATION ETSI ETSI TS 126 073 V
2、15.0.0 (2018-07)13GPP TS 26.073 version 15.0.0 Release 15Reference RTS/TSGS-0426073vf00 Keywords GSM,LTE,UMTS ETSI 650 Route des Lucioles F-06921 Sophia Antipolis Cedex - FRANCE Tel.: +33 4 92 94 42 00 Fax: +33 4 93 65 47 16 Siret N 348 623 562 00017 - NAF 742 C Association but non lucratif enregist
3、re la Sous-Prfecture de Grasse (06) N 7803/88 Important notice The present document can be downloaded from: http:/www.etsi.org/standards-search The present document may be made available in electronic versions and/or in print. The content of any electronic and/or print versions of the present docume
4、nt shall not be modified without the prior written authorization of ETSI. In case of any existing or perceived difference in contents between such versions and/or in print, the only prevailing document is the print of the Portable Document Format (PDF) version kept on a specific network drive within
5、 ETSI Secretariat. Users of the present document should be aware that the document may be subject to revision or change of status. Information on the current status of this and other ETSI documents is available at https:/portal.etsi.org/TB/ETSIDeliverableStatus.aspx If you find errors in the present
6、 document, please send your comment to one of the following services: https:/portal.etsi.org/People/CommiteeSupportStaff.aspx Copyright Notification No part may be reproduced or utilized in any form or by any means, electronic or mechanical, including photocopying and microfilm except as authorized
7、by written permission of ETSI. The content of the PDF version shall not be modified without the written authorization of ETSI. The copyright and the foregoing restriction extend to reproduction in all media. ETSI 2018. All rights reserved. DECTTM, PLUGTESTSTM, UMTSTMand the ETSI logo are trademarks
8、of ETSI registered for the benefit of its Members. 3GPPTM and LTETMare trademarks of ETSI registered for the benefit of its Members and of the 3GPP Organizational Partners. oneM2M logo is protected for the benefit of its Members. GSMand the GSM logo are trademarks registered and owned by the GSM Ass
9、ociation. ETSI ETSI TS 126 073 V15.0.0 (2018-07)23GPP TS 26.073 version 15.0.0 Release 15Intellectual Property Rights Essential patents IPRs essential or potentially essential to normative deliverables may have been declared to ETSI. The information pertaining to these essential IPRs, if any, is pub
10、licly available for ETSI members and non-members, and can be found in ETSI SR 000 314: “Intellectual Property Rights (IPRs); Essential, or potentially Essential, IPRs notified to ETSI in respect of ETSI standards“, which is available from the ETSI Secretariat. Latest updates are available on the ETS
11、I Web server (https:/ipr.etsi.org/). Pursuant to the ETSI IPR Policy, no investigation, including IPR searches, has been carried out by ETSI. No guarantee can be given as to the existence of other IPRs not referenced in ETSI SR 000 314 (or the updates on the ETSI Web server) which are, or may be, or
12、 may become, essential to the present document. Trademarks The present document may include trademarks and/or tradenames which are asserted and/or registered by their owners. ETSI claims no ownership of these except for any which are indicated as being the property of ETSI, and conveys no right to u
13、se or reproduce any trademark and/or tradename. Mention of those trademarks in the present document does not constitute an endorsement by ETSI of products, services or organizations associated with those trademarks. Foreword This Technical Specification (TS) has been produced by ETSI 3rd Generation
14、Partnership Project (3GPP). The present document may refer to technical specifications or reports using their 3GPP identities, UMTS identities or GSM identities. These should be interpreted as being references to the corresponding ETSI deliverables. The cross reference between GSM, UMTS, 3GPP and ET
15、SI identities can be found under http:/webapp.etsi.org/key/queryform.asp. Modal verbs terminology In the present document “shall“, “shall not“, “should“, “should not“, “may“, “need not“, “will“, “will not“, “can“ and “cannot“ are to be interpreted as described in clause 3.2 of the ETSI Drafting Rule
16、s (Verbal forms for the expression of provisions). “must“ and “must not“ are NOT allowed in ETSI deliverables except when used in direct citation. ETSI ETSI TS 126 073 V15.0.0 (2018-07)33GPP TS 26.073 version 15.0.0 Release 15Contents Intellectual Property Rights 2g3Foreword . 2g3Modal verbs termino
17、logy 2g3Foreword . 4g31 Scope 5g32 References 5g33 Definitions and abbreviations . 5g33.1 Definitions 5g33.2 Abbreviations . 5g34 C code structure 6g34.1 Contents of the C source code 6g34.2 Program execution 6g34.3 Coding style 7g34.4 Code hierarchy . 7g34.5 Variables, constants and tables . 11g34.
18、5.1 Description of constants used in the C-code . 11g34.5.2 Description of fixed tables used in the C-code . 11g34.5.3 Static variables used in the C-code . 13g35 Homing procedure 18g36 File formats 24g36.1 Speech file (encoder input / decoder output) 24g36.2 Mode control file (encoder input) . 24g3
19、6.3 Parameter bitstream file (encoder output / decoder input) . 24g3Annex A (informative): Change History 25g3History 26g3ETSI ETSI TS 126 073 V15.0.0 (2018-07)43GPP TS 26.073 version 15.0.0 Release 15Foreword This Technical Specification (TS) has been produced by the 3rdGeneration Partnership Proje
20、ct (3GPP). The contents of the present document are subject to continuing work within the TSG and may change following formal TSG approval. Should the TSG modify the contents of the present document, it will be re-released by the TSG with an identifying change of release date and an increase in vers
21、ion number as follows: Version x.y.z where: x the first digit: 1 presented to TSG for information; 2 presented to TSG for approval; 3 or greater indicates TSG approved document under change control. y the second digit is incremented for all changes of substance, i.e. technical enhancements, correcti
22、ons, updates, etc. z the third digit is incremented when editorial only changes have been incorporated in the document. ETSI ETSI TS 126 073 V15.0.0 (2018-07)53GPP TS 26.073 version 15.0.0 Release 151 Scope The present document contains an electronic copy of the ANSI-C code for the Adaptive Multi-Ra
23、te codec. The ANSI-C code is necessary for a bit exact implementation of the Adaptive Multi Rate speech transcoder (TS 26.090 2), Voice Activity Detection (TS 26.094 6), comfort noise (TS 26.092 4), source controlled rate operation (TS 26.093 5) and example solutions for substituting and muting of l
24、ost frames (TS 26.091 3). 2 References The following documents contain provisions which, through reference in this text, constitute provisions of the present document. - References are either specific (identified by date of publication, edition number, version number, etc.) or non-specific. - For a
25、specific reference, subsequent revisions do not apply. - For a non-specific reference, the latest version applies. 1 3GPP TS 26.074: “AMR Speech Codec; Test sequences“. 2 3GPP TS 26.090: “AMR Speech Codec; Speech transcoding“. 3 3GPP TS 26.091: “AMR Speech Codec; Substitution and muting of lost fram
26、es“. 4 3GPP TS 26.092: “AMR Speech Codec; Comfort noise aspects“. 5 3GPP TS 26.093: “AMR Speech Codec; Source controlled rate operation“. 6 3GPP TS 26.094: “AMR Speech Codec; Voice Activity Detection“. 7 RFC 3267: “A Real-Time Transport Protocol (RTP) Payload Format and File Storage Format for Adapt
27、ive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband (AMR-WB) Audio Codecs“, June 2002. 3 Definitions and abbreviations 3.1 Definitions Definition of terms used in the present document, can be found in TS 06.090 2, TS 06.091 3, TS 06.092 4, TS 06.093 5 and TS 06.094 6. 3.2 Abbreviations For the pur
28、pose of the present document, the following abbreviations apply: ANSI American National Standards Institute ETS European Telecommunication Standard GSM Global System for Mobile communications I/O Input/OutputRAM Random Access Memory ROM Read Only Memory ETSI ETSI TS 126 073 V15.0.0 (2018-07)63GPP TS
29、 26.073 version 15.0.0 Release 154 C code structure This clause gives an overview of the structure of the bit-exact C code and provides an overview of the contents and organization of the C code attached to this document. The C code has been verified on the following systems: - Sun Microsystems work
30、stations and GNU gcc compiler; - DEC Alpha workstations and GNU gcc compiler; - IBM PC/AT compatible computers with Linux operating system and GNU gcc compiler. ANSI-C 9899 was selected as the programming language because portability was desirable. 4.1 Contents of the C source code The C code distri
31、bution has all files in the root level. The distributed files with suffix “c“ contain the source code and the files with suffix “h“ are the header files. The ROM data is contained mostly in files with suffix “tab“. The C code distribution also contains one speech coder installation verification data
32、 file, “spch_dos.inp“. The reference encoder output file is named “spch_dos.cod“, the reference decoder input file is named “spch_dos.dec“ and the reference decoder output file is named “spch_dos.out“. These four files are formatted such that they are correct for an IBM PC/AT compatible computer. Th
33、e same files with reversed byte order of the 16 bit words are named “spch_unx.inp“, “spch_unx.cod“, “spch_unx.dec“ and “spch_unx.out“, respectively. Final verification is to be performed using the GSM Adaptive Multi-Rate test sequences described in GSM 06.74 2. Makefiles are provided for the platfor
34、ms in which the C code has been verified (listed above). Once the software is installed, this directory will have a compiled version of encoder and decoder (the bit-exact C executables of the speech codec) and all the object files. 4.2 Program execution The GSM Adaptive Multi-Rate codec is implement
35、ed in two programs: - (encoder) speech encoder; - (decoder) speech decoder. The programs should be called like: - encoder encoder options ; - decoder decoder options . The speech files contain 16-bit linear encoded PCM speech samples and the parameter files contain encoded speech data and some addit
36、ional flags. The encoder and decoder options will be explained by running the applications with option h. See the file readme.txt for more information on how to run the encoder and decoder programs. ETSI ETSI TS 126 073 V15.0.0 (2018-07)73GPP TS 26.073 version 15.0.0 Release 154.3 Coding style The C
37、 code is written according to the following structuring conventions. Each function func() that needs static variables is considered a module. A module consists of: - a state structure (struct) combining the static variables of the module; - three auxiliary functions func_init(), func_reset(), and fu
38、nc_exit(); - the processing function func() itself. The initialization function func_init() allocates (from the heap) a new state structure, calls the func_reset() function, stores the pointer to the newly allocated structure in its first function parameter, and returns with a value of 0 if complete
39、d successful or a value of 1 otherwise. The reset function func_reset() takes a pointer to the state structure and resets all members of the structure to a predefined value (homing). The exit function func_exit() performs any necessary cleanup and frees the state structure memory. The processing fun
40、ction func() also takes a pointer to the state structure as well as all other necessary parameters and performs its task using (and possibly modifying) the values in the state structure. If a module calls other modules, the higher level state structure contains a pointer to the lower level state str
41、uctures, and the init, reset, and exit functions recursively call the corresponding lower level functions. By this convention, the code becomes “instantiable“ (more than one copy of a module can be used in the same program) and the static data hierarchy is clearly visible in the code. 4.4 Code hiera
42、rchy Figures 1 to 4 are call graphs that show the functions used in the speech codec, including the functions of VAD, DTX, and comfort noise generation. Each column represents a call level and each cell a function. The functions contain calls to the functions in rightwards neighbouring cells. The ti
43、me order in the call graphs is from the top downwards as the processing of a frame advances. All standard C functions: printf(), fwrite(), etc. have been omitted. Also, no basic operations (add(), L_add(), mac(), etc.) or double precision extended operations (e.g. L_Extract() appear in the graphs. T
44、he initialization of the static RAM (i.e. calling the _init functions) is also omitted. The basic operations are not counted as extending the depth, therefore the deepest level in this software is level 7. The encoder call graph is broken down into three separate call graphs, Table 1 to 3. ETSI ETSI
45、 TS 126 073 V15.0.0 (2018-07)83GPP TS 26.073 version 15.0.0 Release 15Table 1: Speech encoder call structure Speech_Encode_Frame Pre_Process cod_amr Copy Vad11filter_bank first_filter_stage filter5 filter3 level_calculationvad_decision complex_estimate_adapt complex_vad noise_estimate_update update_
46、cntrl hangover_additionVad21block_norm r_fft c_fft fn10Log10 Log2 Log2_norm Pow2tx_dtx_handler lpc Autocorr Lag_window Levinsonlsp Az_lsp Chebps Q_plsf_5 Lsp_lsf Lsf_wtVq_subvecVq_subvec_s Reorder_lsf Lsf_lspInt_lpc_1and3_2 Lsp_az Get_lsp_pol Int_lpc_1and3 Lsp_az Get_lsp_polQ_plsf_3 Lsp_lsf Lsf_wtCo
47、py Vq_subvec3Vq_subvec4 Reorder_lsfLsf_lspInt_lpc_1to3_2 Lsp_az Get_lsp_pol Int_lpc_1to3 Lsp_az Get_lsp_polCopy dtx_buffer Copy Log2 Log2_normdtx_enc Lsp_lsf Reorder_lsf Lsf_lspSet_zero lsp_reset Copy Q_plsf_reset cl_ltp_reset Pitch_fr_resetcheck_lsp pre_big Weight_Ai Residu Syn_filtol_ltp Pitch_ol
48、vad_tone_detection_update2Lag_max vad_tone_detection2Inv_sqrtcomp_corr2hp_max2vad_complex_detection_update2Pitch_ol_wgh comp_corr2Lag_max2vad_tone_detection_update2vad_tone_detection2gmed_n hp_max2vad_complex_detection_update2vad_pitch_detectionLTP_flag_update3subframePreProc Weight_AiSyn_filt Resid
49、u Copy cl_ltp Pitch_fr getRangeNorm_Corr ConvolveInv_sqrt searchFrac Interpol_3or6Enc_lag3Enc_lag6(continued) 1 Option to call one or the other VAD option 2 Specific to VAD option 1 3 Specific to VAD option 2 ETSI ETSI TS 126 073 V15.0.0 (2018-07)93GPP TS 26.073 version 15.0.0 Release 15Table 1 (concluded): Speech encoder call structure Pred_lt_3or6 ConvolveG_pitchcheck_gp_clippingq_gain_pitch cbsearch see Table 2gainQuant see Table 3update_gp_clipping Copy subframePostProc Syn_filt Pred_lt_3or6Convolve Prm2bits Int2binTabl