大致流程是,模拟数据通过 line in 输入到ALC5616,经过寄存器 MX-0Fh (INL & INR Volume Control) 调节音量以后输入给ADC,ADC内部还有一次调节音量的机会,可以通过设置寄存器 MX-1Ch (Stereo1 ADC Digital Volume Control) 来实现。
如果觉得ALSA出来的数据不对的话,可以将底层数据读取出来,具体位置如下:
services/audioflinger/Threads.cpp
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index bf85b51..59b7d78 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -4538,6 +4539,7 @@ bool AudioFlinger::RecordThread::threadLoop()
readInto = mRsmpInBuffer;
mRsmpInIndex = 0;
}
+ //tag for 读取alsa数据 , 以及再往下追read函数的实现。
mBytesRead = mInput->stream->read(mInput->stream, readInto,
mBufferSize);
if (mBytesRead <= 0) {