大家好,我最近在閱讀 Android Framework 的程式碼
主要著重於音訊的部分 /framework/av/
但現在爬 code 的過程中遇到一些問題
1. 在 PlaybackThread::threadLoop_write() 內,每次都會花 20 ms
經過推敲後發現是 mNormalSink->write() 耗時間,我猜測這個是因為
軟體處理資料的速度,遠快於硬體釋放訊號的速度(數個微秒就可以處
理完 20 ms 長的音訊)為了等待硬體將訊號播放完才有一些等待的邏輯
在裡面。但我往下翻了一下就看到 driver 層的部分了,程式碼落在
/platform/hardware/qcom/audio_hw.c。但現在的問題就是,我不知道
我找到的程式碼是否正確,以及不知道該怎麼讀,不曉得有無人可以提供
建議?
2. 在 AudioTrack 給訂 buffersize 的時候,會叫到 getMinBufferSize()
之類的 API,其中計算跟 latency 相關。想請問這個 latency 的部分
要在哪找到呢?
3. FastMixer 跟 Effect 的部分,坊間的書好像很少著墨,不曉得有沒有
推薦的網站呢?
謝謝大家!