首页 > 解决方案 > AudioRecord::processAudioBuffer() 音频缓冲区来自哪里?

问题描述

我查看了录制语音程序并在 AudioRecord::processAudioBuffer() 中被阻止,这是代码

nsecs_t AudioRecord::processAudioBuffer() {
   ...
   status_t err = gainBuffer(&audioBuffer, 请求, NULL, &nonContig);
   ...
}

status_t AudioRecord::obtainBuffer(Buffer* audioBuffer, const struct timespec *requested,
        结构 timespec *elapsed, size_t *nonContig) {
   ...
   status = proxy->obtainBuffer(&buffer, 请求, elapsed);
   ...
   audioBuffer->raw = buffer.mRaw;
   ...
}

__attribute__((no_sanitize("integer")))
status_t ClientProxy::obtainBuffer(Buffer* buffer, const struct timespec *requested,
        结构时间规格*经过){
    ...
    缓冲区->mRaw = part1 > 0 ?
                    &((char *) mBuffers)[(mIsOut ? 后: 前) * mFrameSize]: NULL;
    ...
}

我试图找出 ClientProxy.mBuffers 数据的填充位置以及 audioflinger 如何将解码后的语音数据传递给 ClientProxy.mBuffers,但我迷失在 audioclient 代码中。

有人可以带我出去吗?谢谢!

标签: androidaudiorecordaudioflinger

解决方案


推荐阅读