/* G.729 with ANNEX D Version 1.2 Last modified: 11 May 1998 */
TITLE
-----
Explanation letter for the G.729 annex D software package
( Fixed-point description of Recommendation G.729 with ANNEX D)
(Recommendation G.729 + LOWER BIT RATE EXTENSION AT 6.4 KB/S)
Coding of Speech using Conjugate-Structure
Algebraic-Code-Excited Linear-Prediction (CS-ACELP)
at 8 kbit/s and 6.4 kb/s
SOFTWARE AND INTELLECTUAL PROPERTY
----------------------------------
This software package is provided as part of ITU-T Recommendation G.729D.
Original Copyright (c) 1995, AT&T, France Telecom, NTT,
Universite de Sherbrooke.
All rights reserved.
+
Copyright (c) 1998, Ericsson, NTT.
All rights reserved.
The copy of the source C code, version 1.2, is given under Copyright of the
authors, only for the purpose of establishing the specification of a codec.
For distribution of update software, please contact:
Sales Department
ITU
Place des Nations
CH-1211 Geneve 20
SUISSE
email: sales@itu.int
For reporting problems, please contact TSB helpdesk service at:
TSB Helpdesk service
ITU
Place des Nations
CH-1211 Geneve 20
SUISSE
fax: +41 22 730 5853
email: tsbedh@itu.int
VERSION
-------
This is version 1.2.
COMPILATION
-----------
Edit the file typedef.h to comply to your target platform
For UNIX systems the following makefiles are provided
coderd.mak
decoderd.mak
Edit the makefiles coderd.mak and decoderd.mak to set the proper options
for your system.
The command to compile and link all code on a UNIX system is
make -f coderd.mak
make -f decoderd.mak
For other platforms, the *.mak files can be used to work out the
compilation procedures.
This code has been successfully compiled and run on the following
platforms:
Platform Operating System Compiler
-----------------------------------------------------------------------------
SUN Solaris gcc
DESCRIPTION
-----------
This package includes the files needed to build the fixed point version
of the G.729 codec with the lower bit rate extensions 6.4 kbit/s as
described in ANNEX D.
It includes input files (testfile.raw), bitstream files (testmid.1,testmid.2, testmid.3) and decoder output files (testout.1, testout.2, testout.3) to verify the execution.
USAGE
-----
The following files are used or generated
inputfile 8 kHz sampled data file 16 bit PCM (binary)
outputfile 8 kHz sampled data file 16 bit PCM (binary)
bitstreamfile binary file containing bitstream
The following parameter is used for the encoder
rate_option = 1 : lower rate (6.4 kb/s)
= 2 : G729 (8.0 kb/s)
= 3 : toggle mode every frame
coderd rate_option inputfile bitstreamfile
decoderd rate_option bitstreamfile outputfile
BITSTREAM FORMAT
----------------
The bitstream file contains for each 10 ms speech frame,
for rate 8 kbit/s, 82 16-bit words or for rate 6.4 kbit/s, 66 16-bit words.
The first word is the synchronization word SYNC_WORD
The second word contains the value serial_size which is 80 for rate 8 kbit/s
and 64 for rate 6.4 kbit/s.
For the rate 8 kbit/s, the next 80 words contain the parameters as described
in G729. For the rate 6.4 kbit/s the next 64 words are described in
bitstrea.txt.
Bitstream information - all parameters start with msb
The bits are defined as follows:
#define SYNC_WORD (short)0x6b21
#define BIT_0 (short)0x007f /* definition of zero-bit in bit-stream */
#define BIT_1 (short)0x0081 /* definition of one-bit in bit-stream */
A bad frame is indicated by setting all "serial_size" bits to zero.
SOFTWARE ORGANIZATION
----------------------
the files can be classified into four groups:
1) files identical to G729 software files, part of ITU-T G729
recommendation.
2) files similar to G729 software files, some minor modifications have
been introduced to cope with annex D.
The modications introduced are :
moda: list of arguments
modb: static variables and arrays formerly local are now passed as
parameters
modc: some temporary variables are now passed to the calling routine
modd: former constants are now passed as variable parameters (LPC
order, weighting factors of postfiler)
Note that same type of modifications were used when developping annex A
of G723.1 and annex B of G729.
3) files adapted from G729 software files, some source code lines have
been introduced to existing G729 files to deal with annex D.
4) files specific to G729 annex D (new files)
For groups 2 and 3, the letter "d" has been added to the names of the
modified files and routines.
----------------------------------------------
group 1 (files identical to G729 software) :
----------------------------------------------
basic_op.h, ld8k.h, oper_32b.h, tab_ld8k.h, typedef.h,
basic_op.c, de_acelp.c, dec_gain.c, dspfunc.c, gainpred.c,
lpc.c, lpcfunc.c, lspdec.c, lspgetq.c, oper_32b.c, p_parity.c,
post_pro.c, pre_proc.c, pred_lt3.c, pst.c, pwf.c, qua_gain.c,
qua_lsp.c, tab_ld8k.c, util.c
----------------------------------------------
group 2 (files similar to G729 software) :
----------------------------------------------
----------------------------------------------
group 3 (files adapted from G729 software) :
----------------------------------------------
acelpcod.c (from acelp_co.c),
#ld8kd.h
#tabld8kd.h
ACELP_Codebook() -> ACELP_CodebookD()
Cor_h() -> Cor_h_D()
bitsd.c (from bits.c),
#ld8kd.h
#tabld8kd.h
bits2prm_ld8k() -> bits2prm_ld8kD()
prm2bits_ld8k() -> prm2bits_ld8kD()
codld8kd.c (from cod_ld8k.c),
#ld8kd.h
#tabld8kd.h
ACELP_Codebook() -> ACELP_CodebookD()
Enc_lag3() -> Enc_lag3D()
Coder_ld8k() -> Coder_ld8kD()
Pitch_fr3() -> Pitch_fr3D()
coderd.c (from coder.c),
#ld8kd.h
#tabld8kd.h
Coder_ld8k() -> Coder_ld8kD()
prm2bits_ld8k() -> prm2bits_ld8kD()
declag3d.c (from dec_lag3.c),
#ld8kd.h
#tabld8kd.h
Dec_lag3() -> Dec_lag3D()
decld8kd.c (from dec_ld8k.c),
#ld8kd.h
#tabld8kd.h
Dec_lag3() -> Dec_lag3D()
Decod_ld8k() -> Decod_ld8kD()
decoderd.c (from decoder.c),
#ld8kd.h
#tabld8kd.h
Decod_ld8k() -> Decod_ld8kD()
bits2prm_ld8k() -> bits2prm_ld8kD()
filterd.c (from filter.c),
#ld8kd.h
#tabld8kd.h
pitchd.c (from pitch.c),
#ld8kd.h
#tabld8kd.h
Enc_lag3() -> Enc_lag3D()
Pitch_fr3() -> Pitch_fr3D()
----------------------------------------------
group 4 (files specific to G729 annex D) :
----------------------------------------------
ld8kd.h, tabld8kd.h,
deacelpd.c, dec_g6k.c, qua_g6k.c, tabld8kd.c
ld8kd.h = ld8k.h(6.4k) - ld8k.h(G729)
tabld8kd.h = tab_ld8k.h(6.4k) - tab_ld8k.h(G729)
deacelpd.c = de_acelp.c(6.4k) - de_acelp.c(G729)
#ld8kd.h
tabld8kd.c = tab_ld8k.c(6.4k) - tab_ld8k.c(G729)
#ld8kd.h
#tabld8kd.h
dec_g6k.c = dec_g6k.c(6.4k)
qua_g6k.c = qua_g6k.c(6.4k)
ITU-T G.729 AnnexD C源码
需积分: 0 69 浏览量
更新于2008-07-09
收藏 98KB RAR 举报
**正文**
ITU-T G.729 Annex D 是一种高效且广泛应用的语音编码标准,它在数字通信领域占据了重要的地位,特别是在移动通信和网络电话(VoIP)中。该标准是G.729主规范的一个扩展,主要设计用于提供高质量、低带宽的语音压缩服务,通常用于实现20千比特每秒(kbps)的压缩率,以适应有限带宽的通信环境。
G.729 Annex D 的核心在于它的编码算法,它结合了多个关键技术来实现语音的高效编码。这些技术包括:
1. **连续自适应多速率(ACELP)编码**:这是G.729的核心,它使用线性预测编码(LPC)原理,通过分析语音信号的短期统计特性,将语音信号转换为一组参数。这些参数代表了声波的结构,而不是原始的声音样本,大大减少了数据量。
2. **矢量量化**:在ACELP过程中,语音的残差被分成多个子带,并使用矢量量化技术进行编码。这种技术将多个样本组合成一个向量,并寻找最接近的代码向量,以减少传输的数据量。
3. **自适应码书**:G.729 Annex D 使用自适应码书来存储预测误差的可能值。码书中的每个条目都对应一个可能的误差矢量,解码器根据接收到的索引选择最合适的误差矢量。
4. **上下文相关预测**:为了进一步提高编码效率,G.729 Annex D考虑了语音信号的上下文信息,即前一帧或几帧的编码结果,这有助于更准确地预测当前帧的语音特征。
5. **熵编码**:编码后的参数通过熵编码(如霍夫曼编码或算术编码)进行进一步压缩,以减少传输的数据量,同时保持解码时的信息完整性。
6. **增强丢包恢复**:Annex D 特别增加了对丢包的处理机制,通过使用冗余编码和错误检测/纠错码,当网络中出现丢包时,能够一定程度上恢复语音质量。
在压缩包文件"Software"中,很可能包含了实现G.729 Annex D 编码和解码功能的C语言源代码。这些源代码通常分为两个主要部分:编码器(encoder)和解码器(decoder)。编码器负责将原始语音信号转换为压缩的码流,而解码器则将码流还原为可听的语音信号。源代码可能还包括控制逻辑、初始化函数、输入输出接口以及用于测试和验证的示例程序。
开发者和研究者可以通过阅读和分析这些源代码来理解和实现G.729 Annex D标准,或者将其集成到自己的通信系统中。源代码的分析有助于深入理解语音编码的复杂过程,以及如何在实际应用中优化性能和资源利用。
ITU-T G.729 Annex D 是一项关键的语音编码技术,它通过采用一系列高级的信号处理和编码策略,能够在有限的带宽下提供高质量的语音通信。与压缩包文件中的C源代码相结合,这个标准为开发者提供了实现这一技术的直接途径,从而在各种通信场景中实现高效的数据传输。
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
yeaisheng
- 粉丝: 2
- 资源: 1
最新资源
- 基于Comsol的枝晶生长模拟:温度场、相场与溶质场的耦合关系研究,COMSOL枝晶生长模拟:三场耦合的温度场、相场与溶质场研究,comsol枝晶生长 温度场相场溶质场三场耦合 ,comsol;枝晶生
- northstar-Java资源
- PyQCISim-Python资源
- YKSwiftNetworking-Swift资源
- MATLAB Special Heatmap-Matlab资源
- 基于Html语言的Gitbook设计源码学习与优化实践
- 基于Powershell、Shell和Python的案例集锦设计源码
- 基于Vue、TypeScript的东南大学22级09组银行项目设计源码
- 基于Java技术的全品类电商B2C平台liuliu-mall设计源码
- 基于标记填充神经编码语言模型的VoiceCraft语音编辑和TTS开源工具设计源码
- 基于Java、HTML、JavaScript、CSS的家具电商系统设计源码
- 栅格环境下的多策略路径规划:精英蚁群与序列蚂蚁的协同优化算法运行结果展示,基于精英蚁群与序列蚂蚁的30x30与50x50栅格地图路径规划算法研究及其实验结果展示,精英蚁群和序列蚁群,栅格地图路径规划
- 水箱水位温度MCGS嵌入版7.7动画仿真脚本程序:实时数据与历史报表曲线综合展示系统动态与价格概况,**水箱水位与温度监控系统:MCGS嵌入版脚本程序动画仿真,历史与实时数据报表及曲线分析工具**,水
- 基于CAN通讯的rh850u2a16芯片Bootloader与OTA固件刷写系统,基于CAN通讯的rh850u2a16芯片Bootloader及OTA固件刷写系统,rh850 can uds刷写 bo
- 基于蚂蚁集团与清华大学合作的图数据库TuGraph设计源码
- 基于TypeScript的工地安全头盔与安全带监控系统的设计源码