zoukankan      html  css  js  c++  java
  • 音频播放(二)

    按(一)中所述,内存拷贝等很浪费空间,而且传递时容易出错。换种思路:在JNI层播放,将AudioTrack拿到底层来。

    尝试:先不管效率问题,解一帧播一帧,OK。效果:播放有些文件很卡,有些不是那么卡。

    思考卡的原因:解码慢?都是用这个解码,暂时排除;

                       解一帧播一帧中的间隙?修改,在JNI层开两个线程,一个解码,一个播放。

    实践:开播放线程时候遇到问题,JNIenv不能直接传递,子线程中不能直接使用,要新建JAVAVM再取,此处一直报错E:\myspace\videoActivity/jni/

    native.c:515: undefined reference to `JNI_CreateJavaVM'    ,查询JNI的英文手册,找不到解决办法 ,故放弃 。

          换种思路:在JAVA层开线程,并进行线程的一系列控制维护操作等,但线程里的事还是有JNI层做,以此避开上个线程报错问题。

    一、对JAVA多线程的学习java.lang.Thread

        Java多线程程序中经常用到的方法有以下几个:run(),start(),wait(),sleep(),notify(),notifyAll(),yield()线程的让步,join(),还有一个重要的关键字 synchronized。

        1、run()和start()  

        这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由Java的内存机制规定的。并且run()方法必须是

    public访问权限,返回值类型为void。

        1、 关键字Synchronized

        这个关键字用于保护共享数据,当然前提是要分清哪些数据是共享数据。每个对象都有一个锁标志,当一个线程访问该对象时,被Synchronized修饰的数据将被“上锁”,

    阻止其他线程访问。当前线程访问完这部分数据后释放锁标志,其他线程就可以访问了。

  • 相关阅读:
    Jenkins服务器磁盘空间爆满问题解决
    U3D GPU蒙皮
    关于STRUCT优化的一个点
    UNITY优化资料收集
    U3D的结构体堆分配栈分配
    【转】UGUI研究院之缓存策略让UI打开更快(三十)
    关于U3D场景烘焙的一个想法
    【摘】如果医生给你的孩子开这些药,请主动说不!
    【转】投影矩阵的推导
    Optimizing graphics performance
  • 原文地址:https://www.cnblogs.com/wyqfighting/p/2827652.html
Copyright © 2011-2022 走看看