桂林景區(qū)網(wǎng)站建設(shè)策劃方案如何建立獨(dú)立網(wǎng)站
MixerThread 是 Android 音頻輸出的核心部分,主要負(fù)責(zé)將多個(gè)音頻流混合成一個(gè)輸出流,通常用于處理多個(gè)音頻源(如音樂播放器、語音通話、系統(tǒng)提示音等)的混音操作,混音后的音頻數(shù)據(jù)會被發(fā)送到音頻硬件(如揚(yáng)聲器或耳機(jī))進(jìn)行最終輸出。大多數(shù) Android 的音頻都需要經(jīng)過 MixerThread 進(jìn)行混音后再輸出到音頻設(shè)備。
一、混音線程創(chuàng)建
混音線程 MixerThread 繼承 PlaybackThread。在PlaybackThread中,重寫了 Thread 的 threadLoop、onFirstRef 等方法,因此在調(diào)用 MixerThread 這些方法時(shí),實(shí)際上就是調(diào)用了 PlaybackThread 的對應(yīng)方法。
1、onFirstRef
源碼位置:/frameworks/av/services/audioflinger/Threads.cpp
在 getOutput 的時(shí)候,我們創(chuàng)建了一個(gè) MixerThread 對象,由于這個(gè)對象繼承于 Thread,因此在創(chuàng)建對象時(shí),會調(diào)用它的 onFirstRef 函數(shù)。
void AudioFlinger::PlaybackThread::onFirstRef()
{……run(mName, ANDROID_PRIORITY_URGENT_AUDIO);
}