AudioRecord::getMinFrameCount

1. 介绍

这个函数是C++一侧使用的函数,在录音开始前获得最小FrameCount的大小。

status_t status = AudioRecord::getMinFrameCount(&minFrameCount, sampleRateHz, audioFormat, channelConfig)

 获得的minFrameCount会存到第一个参数中。后三个参数会被传递给AudioSystem::getInputBufferSize,比如我这边传下面三个具体数字:

sampleRateHz = 48000;
audioFormat = AUDIO_FORMAT_PCM_16_BIT;
channelConfig = AUDIO_CHANNEL_IN_STEREO; // 1或者2

 在AudioSystem.cpp中,AudioSystem::getInputBufferSize会去找:

const sp<AudioFlingerClient> afc = getAudioFlingerClient();
    return afc->getInputBufferSize(sampleRate, format, channelMask, buffSize);

AudioFlingerClient中对应的getInputBufferSize。

2. 遇到的问题

FORTIFY: pthread_mutex_lock called on a destroyed mutex

 在c++中写一个线程直接调用这个函数会报上面的错误。意思是:FORTIFY:对已销毁的互斥体调用pthread_mutex_lock 。
仔细追代码就会发现在AudioFlingerClient::getInputBufferSize中有锁的操作。

Mutex::Autolock _l(mLock)

 如果说在我们调用的时候这个锁处于一个已经被注销的状态。是一定拿不到的。

原文链接: https://www.cnblogs.com/hansenn/p/13262128.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    AudioRecord::getMinFrameCount

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/363734

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午3:10
下一篇 2023年3月2日 下午3:11

相关推荐