資源簡介
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算法實現(源碼+文檔)
評論
共有 條評論