android adpcm,pcm转换封装

上一篇 / 下一篇  2013-01-29 10:46:40 / 个人分类:多媒体开发

  在开发过程中,在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文件的全称(包名+类名)



TAG:

引用 删除 gaoomei   /   2013-03-06 17:14:37
5
引用 删除 gaoomei   /   2013-03-06 17:14:32
这个东西怎么用啊?
Adpcm2Pcm(byte[] data, int size, int sample, int index, byte[] output);
每个参数都是什么意思呢,有个播放案例就完美啦。。。如果有更新,请email我:gaoomei@gmail.com
 

评分:0

我来说两句

Open Toolbar