资源简介
C代码
代码片段和文件信息
/* libst.c - portable sound tools library
*/
#include “libst.h“
#ifndef FAST_ULAW_CONVERSION
#undef ZEROTRAP /* turn off the trap as per the MIL-STD */
#define uBIAS 0x84 /* define the add-in bias for 16 bit samples */
#define uCLIP 32635
#define ACLIP 31744
unsigned char
st_linear_to_ulaw( sample )
int sample;
{
static int exp_lut[256] = {0011222233333333
4444444444444444
5555555555555555
5555555555555555
6666666666666666
6666666666666666
6666666666666666
6666666666666666
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777};
int sign exponent mantissa;
unsigned char ulawbyte;
/* Get the sample into sign-magnitude. */
sign = (sample >> 8) & 0x80; /* set aside the sign */
if ( sign != 0 ) sample = -sample; /* get magnitude */
if ( sample > uCLIP ) sample = uCLIP; /* clip the magnitude */
/* Convert from 16 bit linear to ulaw. */
sample = sample + uBIAS;
exponent = exp_lut[( sample >> 7 ) & 0xFF];
mantissa = ( sample >> ( exponent + 3 ) ) & 0x0F;
ulawbyte = ~ ( sign | ( exponent << 4 ) | mantissa );
#ifdef ZEROTRAP
if ( ulawbyte == 0 ) ulawbyte = 0x02; /* optional CCITT trap */
#endif
return ulawbyte;
}
/*
** This routine converts from ulaw to 16 bit linear.
**
** Craig Reese: IDA/Supercomputing Research Center
** 29 September 1989
**
** References:
** 1) CCITT Recommendation G.711 (very difficult to follow)
** 2) MIL-STD-188-113“Interoperability and Performance Standards
** for Analog-to_Digital Conversion Techniques“
** 17 February 1987
**
** Input: 8 bit ulaw sample
** Output: signed 16 bit linear sample
*/
int
st_ulaw_to_linear( ulawbyte )
unsigned char ulawbyte;
{
static int exp_lut[8] = { 0 132 396 924 1980 4092 8316 16764 };
int sign exponent mantissa sample;
ulawbyte = ~ ulawbyte;
sign = ( ulawbyte & 0x80 );
exponent = ( ulawbyte >> 4 ) & 0x07;
mantissa = ulawbyte & 0x0F;
sample = exp_lut[exponent] + ( mantissa << ( exponent + 3 ) );
if ( sign != 0 ) sample = -sample;
return sample;
}
#else
unsigned char ulaw_comp_t
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 187472 2000-09-25 19:29 A律u律_实现\libst.c
文件 1331 2000-09-25 19:29 A律u律_实现\libst.h
目录 0 2020-11-10 20:45 A律u律_实现
----------- --------- ---------- ----- ----
188803 3
- 上一篇:人工蜂群算法.docx
- 下一篇:SVM算法实现(源码+文档)
相关资源
- SVM算法实现(源码+文档)
- 人工蜂群算法.docx
- C++ STL实现
- C语言实现 设备信息管理系统
- 基于VSCode和CMake实现C++开发
- BlowFish加密算法
- C语言常用算法源代码
- c++数组快排算法
- stm8l四按键状态机实现
- stm32 实现Fatfs对U盘文件操作(main.c)
- 算法表达式求值.cpp
- PID算法.c
- QR二维码C++源码 算法实现
- 基于opencv漫水填充算法综合
- 链表实现学生管理系统(main.c)
- 信息学奥赛一本通——算法部分
- 银行家算法分配资源的模拟实现(m
- C语言程序设计50例.docx
- 常见排序算法比较.cpp
- 烟花优化算法(c语言版)
- C语言编译器的设计与实现.doc
- c++常用游戏算法及数据结构设计
- 深度学习算法地图
- 2048小游戏c语言实现
- 转 VC++ 实现电子邮件(Email)发送
- 使用 IBM Rational Systems Developer 和 Rati
- 23种设计模式(C++实现版本
- 扫描线多边形填充算法实现
- 基于改进的fcm算法的图像分割vc++
- 可靠性试验数据处理方法与工程实现
评论
共有 条评论