小编BTR*_*BTR的帖子

如何用lambda排序?

sort(mMyClassVector.begin(), mMyClassVector.end(), 
    [](const MyClass & a, const MyClass & b)
{ 
    return a.mProperty > b.mProperty; 
});
Run Code Online (Sandbox Code Playgroud)

我想使用lambda函数来排序自定义类来代替绑定实例方法.但是,上面的代码会产生错误:

错误C2564:'const char*':对内置类型的函数式转换只能接受一个参数

它工作得很好boost::bind(&MyApp::myMethod, this, _1, _2).

c++ sorting lambda const char

111
推荐指数
3
解决办法
13万
查看次数

AudioTrack lag:obtainBuffer超时

我通过加载文件并通过FileInputStream> BufferedInputStream> DataInputStream方法将字节输入AudioTrack.write()来在我的Android手机上播放WAV.音频播放效果很好,如果是,我可以轻松调整采样率,音量等,性能良好.然而,一首曲目开始播放大约需要两秒钟.我知道AudioTrack有一个不可避免的延迟,但这太荒谬了.我每次播放曲目都会得到:

03-13 14:55:57.100: WARN/AudioTrack(3454): obtainBuffer timed out (is the CPU pegged?) 0x2e9348 user=00000960,     server=00000000
03-13 14:55:57.340: WARN/AudioFlinger(72): write blocked for 233 msecs, 9 delayed writes, thread 0xba28
Run Code Online (Sandbox Code Playgroud)

我注意到,每次播放曲目时,延迟的写入次数会增加一次 - 即使是在多个会话中 - 从手机开机之时起.块时间始终为230 - 240ms,考虑到此设备上的最小缓冲区大小为9600(9600/44100),这是有意义的.我在互联网上的无数次搜索中看到了这个消息,但它通常似乎与不播放音频或跳过音频有关.就我而言,这只是一个延迟的开始.

我正在高优先级的线程中运行我的所有代码.这是我正在做的截断但功能正常的版本.这是我的播放类中的线程回调.再次,这是有效的(现在只播放16位,44.1kHz,立体声文件),它只需要永远启动并且每次都有获取缓冲/延迟写入消息.

public void run() {

    // Load file
    FileInputStream mFileInputStream;
    try {
        // mFile is instance of custom file class -- this is correct, 
        // so don't sweat this line
        mFileInputStream = new FileInputStream(mFile.path());
    } catch (FileNotFoundException e) {
        // log
    }

    BufferedInputStream mBufferedInputStream …
Run Code Online (Sandbox Code Playgroud)

audio android buffer delay lag

10
推荐指数
1
解决办法
8374
查看次数

Android:混合多个AudioTrack实例?

我需要同时运行两个AudioTrack实例.它们必须单独运行,因为我以不同的可变采样率播放它们.我发现如果我在同一个线程中运行它们,它们会"轮流".我在他们自己的线程中运行它们,但音频是口吃.

关于制作两个实例的任何想法都很好吗?如果没有,任何关于将两个短缓冲混合成一个的提示,即使我想以不同的采样率播放它们.

java android sample mixer rate

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×2

audio ×1

buffer ×1

c++ ×1

char ×1

const ×1

delay ×1

java ×1

lag ×1

lambda ×1

mixer ×1

rate ×1

sample ×1

sorting ×1