在开发过程中,在java层将pcm转换为adpcm以及将adpcm转换为pcm,其中算法里面有位移动相对于在c层来说需要大量的时间,所以就将java层的算法移植到c层,使用NDK进行封装成库使用。

Adpcm2PcmInterface.java

package com.adpcm2pcm;

public class Adpcm2PcmInterface {

public static native void Adpcm2Pcm(byte[] data, int size, int sample, int index, byte[] output);

public static native void Pcm2Adpcm(byte[] data, int size, int sample, int index, byte[] output);

static {

try {

System.loadLibrary("adpcm2pcm");

} catch (Exception e) {

e.printStackTrace();

}

}

}

生成的库文件:

libadpcm2pcm.rar(5.63 KB)

我只测试过Adpcm2Pcm这个接口,从远程获取的adpcm数据然后转换为pcm数据播放声音正常的。

NDK基础知识:

javah -classpath classes  -d ../jni -jni com.myproject.MyActivity

root@ubuntu:/home/administrator/workspace/OpenGLJni/src# javah -classpath /home/administrator/workspace/OpenGLJni/src -d ../jni/ -jni com.jayce.eopengljni.OpenGLJniLib

参数介绍:

-classpath 指定需要生成.h文件的class文件路径所在,多个路径可用“:”隔开,有时提示Activity没有找到

-d 指定生成的头文件存放目录,这里指定的是项目根目录中的jni目录

-jni 这个选项是可选项,具体可查看man javah

最后一项就是class文件的全称(包名+类名)

java pcm转adpcm_android adpcm,pcm转换封装相关推荐

  1. android中调用fft函数,J使用PCM数据在Android中转换FFT(JTransforms FFT in Android from PCM data)...

    J使用PCM数据在Android中转换FFT(JTransforms FFT in Android from PCM data) 我一直在玩这个游戏已经有一段时间了,我无法弄清楚我在这里要做的事情. ...

  2. PCM音频单声道立体声转换C代码实现

    目录 一.PCM介绍 二.PCM参数 三.单声道.立体声转换 一.PCM介绍 PCM(Pulse Code Modulation),脉冲编码调制.人耳听到的是模拟信号,PCM是把声音从模拟信号转化为数 ...

  3. fwPlayer 支持最新浏览器在线播放adpcm pcm 编码的wav

    ​ fwPlayer 支持最新浏览器在线播放adpcm pcm 编码的wav 可以使用 fwPlayer 使用webassembly技术,在线转码avi flv为mp4 或者ogg等来播放 fwPla ...

  4. pcm 32bit float 双声道转换16bit单声道

    pcm 32bit float 双声道转换16bit单声道 多通道音频转单通道 音频多通道是按照采样点进行交叉排列,比如双声道的16bit音频,16bit为一个采样点,那就是按照 通道1(16bit) ...

  5. java 中文域名转码_转换java方法

    java date String 类型相互转换 这种转换要用到java.text.SimpleDateFormat类 字符串转换成日期类型: 方法1: 也是最简单的方法 Date date=new D ...

  6. Android音视频开发,详说PCM音频重采样、PCM编码

    直播伴音,两种数据能否合在一起?不能叠加在一起 会有噪音 合并以后 再去编码推流 直播的例子 客户端播放器,可以开启多个播放器 对于我们重采样 很多时候就是为了统一格式,就是为了要合并这个流,去推送, ...

  7. 【音视频数据数据处理 10】【PCM篇】将PCM转为WAV格式音频

    [音视频数据数据处理 10][PCM篇]将PCM转为WAV格式音频 一.WAV头信息 1.1 RIFF区块 1.2 FORMAT区块 1.3 DATA区块 二.PCM 转 WAV 代码实现 PCM转为 ...

  8. Java中long和int互相转换,不改变原有数据

    Java中long和int互相转换,不改变原有数据 文章目录 Java中long和int互相转换,不改变原有数据 测试方法,及封装好的方法 封装好之后的方法 测试方法,及封装好的方法 @Test pu ...

  9. Java中的原始类型与原始封装类型

    在写Java代码的过程中,一直对Java提供的一些类参数又疑问,今天查了一下,进行了解学习. type argument cannot be of primitive type 问题: Java中什么 ...

最新文章

  1. 趣解面试高频算法难题:数组中的第K个最大元素
  2. centos vscode安装到指定目录_win10 WSL构建vscode+centos开发环境
  3. springboot 前缀_SpringBoot配置文件的注入
  4. python中import问题
  5. 大数据之-Hadoop之HDFS的API操作_文件IO流_上传_案例---大数据之hadoop工作笔记0063
  6. java.util.concurrent包(6)——CyclicBarrier使用
  7. java第七章第九题_Java2程序设计基础第七章课后习题
  8. mysql配置和管理(转载)
  9. SpringMVC学习(三)RestFul风格
  10. java分布式日志组件
  11. 解决仙剑奇侠传“应用程序无法正常启动(0xc000000d)”的问题【转载】
  12. C语言算法训练学做菜,Java实现 蓝桥杯VIP 算法训练 学做菜
  13. java代码实现kafka消费端consumer的from-beginning功能
  14. python方括号和圆括号_python方括号和圆括号
  15. 【教程】怎样在PC查看动漫之家(DMZJ)不能观看漫画
  16. 编译安装Gearman
  17. ImageColorizer:在线黑白照片免费上色
  18. puzzle(0914)方块识途、拾穗方块
  19. Python爬虫实战(四) :下载煎蛋网所有妹子照片
  20. android 截屏函数_android截屏功能实现代码

热门文章

  1. apache poi斜边框线_Apache POI Word - 边框
  2. 计算机应用专业买笔记本还是平板,选择笔记本还是平板?二合一电脑给你更自由轻便使用状态...
  3. 沐风晓月个人博客折腾记: 从零开始加上漂亮的前端模板,轻松提升博客品味
  4. 【007】 二分查找算法(Binary Search)
  5. 华为Mate20RS HL2LAYAM原理图纸
  6. 8.14 Python Web前端 Css学习2
  7. 【算法基础15】如何求约数?约数个数?约数之和?最大公约数?
  8. iMovie画面定格教程
  9. [转]电磁兼容之辐射发射测试与整改攻略
  10. 系统设计与分析作业5