转自: http://blog.csdn.net/nogodoss/article/details/10399403

前一博客介绍了adpcm的原理。这篇是具体实现。看了网上的资料,大部分都是没有提供具体实现。这里免费提供(暂时先提供解码部分)

static int index_adjust[16] = {-1,-1,-1,-1,2,4,6,8,-1,-1,-1,-1,2,4,6,8};

static int step_table[89] = {

7,8,9,10,11,12,13,14,16,17,19,21,23,25,28,31,34,37,41,45,

50,55,60,66,73,80,88,97,107,118,130,143,157,173,190,209,230,253,279,307,337,371,

408,449,494,544,598,658,724,796,876,963,1060,1166,1282,1411,1552,1707,1878,2066,

2272,2499,2749,3024,3327,3660,4026,4428,4871,5358,5894,6484,7132,7845,8630,9493,

10442,11487,12635,13899,15289,16818,18500,20350,22385,24623,27086,29794,32767

};

pre_sample = 0;

index = 0; 从0开始

void adpcmDecode(unsigned char * src, int len, unsigned char * des, int * pre_sample, int * index) {

int i;

int code;

int sb;

int diff;

short * tempDes = (short *)des;

for (i = 0;i < 2*len;i ++){

code = src[i >> 1] & 0x0f;

if ((code & 8) != 0)

sb = 1;

else

sb = 0;

code &= 7;

diff = (step_table[* index] * code) / 4 + step_table[* index] / 8;

if (sb)

diff = -diff;

* pre_sample += diff;

if (* pre_sample > 32767)

* pre_sample = 32767;

else if (* pre_sample < -32768)

* pre_sample = -32768;

tempDes[i] = * pre_sample;

* index += index_adjust[code];

if (* index < 0)

* index = 0;

if (* index > 88)

* index = 88;

}

}

adpcm的压缩和解压缩实现相关推荐

  1. 【毕业设计/matlab系列】基于ADPCM压缩标准的音频压缩和解压缩实现【含Matlab源码】

    Date:2022.6.2 文章目录 代码获取方式 1.前言 2.算法原理 3.实现效果 4.核心matlab代码 代码获取方式 方式一:订阅付费专栏 <毕业设计代码进阶版>,可获取该付费 ...

  2. 【毕业设计系列】045:基于ADPCM压缩标准的音频压缩和解压缩实现

    Date:2022.6.2 文章目录 前言 1.算法原理 2.实现效果 3.核心matlab代码 前言 在大学毕业设计的时候,在毕业设计中实现了<基于ADPCM压缩标准的音频压缩和解压缩实现&g ...

  3. asp在线压缩和解压缩文件(文件夹)

    asp在线压缩和解压缩文件(文件夹) <% '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ '\\ '\\ 1. c:\ ...

  4. java 解压与压缩代码_Java实现多文件压缩和解压缩代码详解

    Java实现多文件压缩和解压缩代码 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStre ...

  5. Java 的zip压缩和解压缩

    Java 的zip压缩和解压缩 好久没有来这写东西了,今天中秋节,有个东西想拿出来分享,一来是工作中遇到的问题,一来是和csdn问候一下,下面就分享一个Java中的zip压缩技术,代码实现比较简单,代 ...

  6. Linux之压缩和解压缩命令

    Linux之压缩和解压缩命令 1. 压缩格式的介绍 Linux默认支持的压缩格式: .gz .bz2 .zip 说明: .gz和.bz2的压缩包需要使用tar命令来压缩和解压缩 .zip的压缩包需要使 ...

  7. asp.net在线压缩和解压缩的实现

    我们经常会遇到批量上传的问题,也会遇到将某个目录下所有文件都上传到服务器上的问题.那么,如何解决此类问题呢?以前的技术一般采用ActiveX等方式,这里我采用SharpZlib来实现,听说VS2005 ...

  8. linux下文件的压缩和解压缩

    linux下文件的压缩和解压缩 目录 1.压缩 2.解压缩 3.归档工具 一. 压缩 compress: -d:解压缩,相当于uncompres-c:结果输出至标准输出,不删除原文件-v:显示详情 - ...

  9. Qt中用QuaZip来压缩和解压缩文件

    1.简介 QuaZIP是使用Qt,C++对ZLIB进行简单封装的用于压缩ZIP以及解压缩ZIP的开源库.如果你的Qt项目当中用到了压缩以及解压缩ZIP的话你可以考虑选择使用它. 官方主页:http:/ ...

  10. Centos之压缩和解压缩命令

    常用压缩格式:.zip .gz .bz2 常用压缩格式:.tar.gz  .tar.bz2 1.zip格式压缩 zip压缩文件名 源文件 压缩文件 zip -r 压缩文件名 源目录 压缩目录 [roo ...

最新文章

  1. Hadoop–Task 相关
  2. 如何把springboot项目部署到tomcat上
  3. html引用本地图片不能是桌面的,Img标签与本地文件:/// URL不显示在Microsoft Edge Web浏览器...
  4. vb.net 读写文件
  5. 使用urllib2库实现有道翻译
  6. byte数组添加数据_C#基于S7协议实现对PLC中DB块字节数据的获取及自定义textbox实现数据解析...
  7. 充满男性荤段子的开源软件 DICSS 引发争议
  8. 使用Quartus进行功能仿真时出现“testbench_vector_input_file option does not exist”的解决方法
  9. Unity Animation 的使用
  10. mac 删除文件夹里所有的.svn文件
  11. python毕业设计作品基于django框架 景区购票系统毕设成品(6)开题答辩PPT
  12. 一周信创舆情观察(2.1~2.7)
  13. Nginx报错failed (13: Permission denied)
  14. android 魔力锁屏源码,打造最炫手机锁屏桌面 10款安卓魔力锁屏主题推荐
  15. 初识c语言加操作系统
  16. mong 的 安装 和测试
  17. 天翼云服务器共享文件夹,天翼云Windows操作解答
  18. windows 记得pin码 忘记登录密码
  19. Linux mysql5.7安装-超级详细
  20. DD-WRT 客户端模式设置 暨添加无线连接功能

热门文章

  1. python 银行数据分析_银行业务概述_Python数据分析行业案例课程--信用评分方法_数据挖掘与分析视频-51CTO学院...
  2. 排产易!APS系统如何选型?(上)
  3. Newstart HA常见使用场景
  4. 亚商投资顾问 早餐FM/1130物流需求延续逐步恢复态势
  5. 在pycharm中%matplotlib inline报错!!!
  6. Angelababy 首攻好莱坞 获封最闪亮新星
  7. IC617工艺库安装问题
  8. python 之Entry
  9. 利用python处理Excel表格中的销售数据
  10. 【kafka】三、kafka命令行操作