java pcm转adpcm_android adpcm,pcm转换封装

这篇博客介绍了如何在Java层将PCM数据转换为ADPCM,以及将ADPCM转换回PCM,以提高转换效率。作者通过将算法移植到C层并使用NDK创建了一个库。提供了Adpcm2PcmInterface.java的代码示例,并分享了生成库文件的过程,包括NDK基础知识和javah命令的参数说明。
摘要由CSDN通过智能技术生成

在开发过程中,在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();

}

}

}

生成的库文件:

90cdfe38025b3ecb8edf5829ca1464a0.giflibadpcm2pcm.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文件的全称(包名+类名)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值