1、 ETSI TS 126 073 V14.0.0 (2017-04) 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 14.0.0 Release 14) floppy3TECHNICAL SPECIFICATION ETSI ETSI TS 12
2、6 073 V14.0.0 (2017-04)13GPP TS 26.073 version 14.0.0 Release 14Reference RTS/TSGS-0426073ve00 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 e
3、nregistre 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
4、 document 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
5、 within 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
6、present 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 auth
7、orized 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. European Telecommunications Standards Institute 2017. All rights reserved. DECTTM, PL
8、UGTESTSTM, UMTSTMand the ETSI logo are Trade Marks of ETSI registered for the benefit of its Members. 3GPPTM and LTE are Trade Marks of ETSI registered for the benefit of its Members and of the 3GPP Organizational Partners. GSM and the GSM logo are Trade Marks registered and owned by the GSM Associa
9、tion. ETSI ETSI TS 126 073 V14.0.0 (2017-04)23GPP TS 26.073 version 14.0.0 Release 14Intellectual Property Rights IPRs essential or potentially essential to the present document may have been declared to ETSI. The information pertaining to these essential IPRs, if any, is publicly available for ETSI
10、 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 ETSI Web server (https:/ipr
11、.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 may become, essential t
12、o the present document. Foreword This Technical Specification (TS) has been produced by ETSI 3rd Generation 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
13、 being references to the corresponding ETSI deliverables. The cross reference between GSM, UMTS, 3GPP and ETSI 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
14、“, “will not“, “can“ and “cannot“ are to be interpreted as described in clause 3.2 of the ETSI Drafting Rules (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 V14.0.0 (2017-04)33GPP T
15、S 26.073 version 14.0.0 Release 14Contents Intellectual Property Rights 2g3Foreword . 2g3Modal verbs terminology 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 P
16、rogram execution 6g34.3 Coding style 7g34.4 Code hierarchy . 7g34.5 Variables, constants and tables . 11g34.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 f
17、ormats 24g36.1 Speech file (encoder input / decoder output) 24g36.2 Mode control file (encoder input) . 24g36.3 Parameter bitstream file (encoder output / decoder input) . 24g3Annex A (informative): Change History 26g3History 27g3ETSI ETSI TS 126 073 V14.0.0 (2017-04)43GPP TS 26.073 version 14.0.0 R
18、elease 14Foreword This Technical Specification (TS) has been produced by the 3rdGeneration Partnership Project (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 do
19、cument, it will be re-released by the TSG with an identifying change of release date and an increase in version 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 co
20、ntrol. y the second digit is incremented for all changes of substance, i.e. technical enhancements, corrections, updates, etc. z the third digit is incremented when editorial only changes have been incorporated in the document. ETSI ETSI TS 126 073 V14.0.0 (2017-04)53GPP TS 26.073 version 14.0.0 Rel
21、ease 141 Scope The present document contains an electronic copy of the ANSI-C code for the Adaptive Multi-Rate 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.0
22、92 4), source controlled rate operation (TS 26.093 5) and example solutions for substituting and muting of lost 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 sp
23、ecific (identified by date of publication, edition number, version number, etc.) or non-specific. For a 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
24、 Codec; Speech transcoding“. 3 3GPP TS 26.091: “AMR Speech Codec; Substitution and muting of lost frames“. 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 Detectio
25、n“. 7 RFC 3267: “A Real-Time Transport Protocol (RTP) Payload Format and File Storage Format for Adaptive 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 foun
26、d 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 purpose 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 In
27、put/OutputRAM Random Access Memory ROM Read Only Memory ETSI ETSI TS 126 073 V14.0.0 (2017-04)63GPP TS 26.073 version 14.0.0 Release 144 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 att
28、ached to this document. The C code has been verified on the following systems: - Sun Microsystems workstations 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 progr
29、amming language because portability was desirable. 4.1 Contents of the C source code The C code distribution 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 wi
30、th suffix “tab“. The C code distribution also contains one speech coder installation verification data 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.ou
31、t“. These four files are formatted such that they are correct for an IBM PC/AT compatible computer. The 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 G
32、SM Adaptive Multi-Rate test sequences described in GSM 06.74 2. Makefiles are provided for the platforms 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
33、 codec) and all the object files. 4.2 Program execution The GSM Adaptive Multi-Rate codec is implemented 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-bi
34、t linear encoded PCM speech samples and the parameter files contain encoded speech data and some additional 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.
35、 ETSI ETSI TS 126 073 V14.0.0 (2017-04)73GPP TS 26.073 version 14.0.0 Release 144.3 Coding style The C 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) combi
36、ning the static variables of the module; - three auxiliary functions func_init(), func_reset(), and func_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 th
37、e newly allocated structure in its first function parameter, and returns with a value of 0 if completed 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 functi
38、on func_exit() performs any necessary cleanup and frees the state structure memory. The processing function 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
39、 calls other modules, the higher level state structure contains a pointer to the lower level state structures, 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
40、used in the same program) and the static data hierarchy is clearly visible in the code. 4.4 Code hierarchy 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
41、cell a function. The functions contain calls to the functions in rightwards neighbouring cells. The time 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
42、_add(), mac(), etc.) or double precision extended operations (e.g. L_Extract() appear in the graphs. The 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 l
43、evel 7. The encoder call graph is broken down into three separate call graphs, Table 1 to 3. ETSI ETSI TS 126 073 V14.0.0 (2017-04)83GPP TS 26.073 version 14.0.0 Release 14Table 1: Speech encoder call structure Speech_Encode_Frame Pre_Process cod_amr Copy Vad11filter_bank first_filter_stage filter5
44、filter3 level_calculationvad_decision complex_estimate_adapt complex_vad noise_estimate_update update_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_l
45、sf Lsf_lspInt_lpc_1and3_2 Lsp_az Get_lsp_pol Int_lpc_1and3 Lsp_az Get_lsp_polQ_plsf_3 Lsp_lsf Lsf_wtCopy 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 Co
46、py Q_plsf_reset cl_ltp_reset Pitch_fr_resetcheck_lsp pre_big Weight_Ai Residu Syn_filtol_ltp Pitch_ol 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_max2v
47、ad_complex_detection_update2vad_pitch_detectionLTP_flag_update3subframePreProc Weight_AiSyn_filt Residu 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 VA
48、D option 2 ETSI ETSI TS 126 073 V14.0.0 (2017-04)93GPP TS 26.073 version 14.0.0 Release 14Table 1 (concluded): Speech encoder call structure Pred_lt_3or6 ConvolveG_pitchcheck_gp_clippingq_gain_pitch cbsearch see Table 2 gainQuant see Table 3 update_gp_clipping Copy subframePostProc Syn_filtPred_lt_3
49、or6 Convolve Prm2bits Int2binTable 2: cbsearch call structure cbsearch code_2i40_9bits cor_h_x set_signcor_h Inv_sqrt search_2i40build_code code_2i40_11bits cor_h_xset_sign cor_h Inv_sqrtsearch_2i40 build_codecode_3i40_14bits cor_h_x set_signcor_h Inv_sqrt search_3i40build_code code_4i40_17bits cor_h_xset_sign cor_h Inv_sqrtsearch_4i40 build_codecode_8i40_31bits cor_h_x set_sign12k2 Inv_sqrtcor_h Inv_sqrt search_10and8i40 build_code compress_code compress10 code_10i40_35bits cor_h_x set_sign12k2 Inv_sqrt cor_h I