AudioRtpSender 是連接配接WebRtc Session 和 AudioTrack的紐帶. 如前文所言, AudioTrack 封裝了AudioSource, 但是WebRTC Session尚需要AudioRtpSender 來擷取資料.
在講述AudioRtpSender之前, 先來看這個類LocalAudioSinkAdapter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
類LocalAudioSinkAdapter, 它實質上是AudioTrack Sink, AudioTrack的Sink 其實是AudioSource Sink, 是以是可以接收來自Audio Srouce 的資料的. 然後, LocalAudioSinkAdaptor 又把自己僞裝成為AudioSource, 它對于WebRtc Session來說 是一個AudioSource, 把來自真正的AudioSource的資料傳遞給WebRtc Session.
來看AudioRtpSender的構造函數
構造AudioRtpSender的時候 就把LocalAudioSourceAdaptor 交給AudioTrack, 作為它的Sink. 然後看這段代碼:
在SetAudioSend 的時候, 把LocalAudioSourceAdaptor 交給了provider_, 注意, 這裡的provider_, 就是WebRtc Session. 用這種方式完成了Source 到 Session 資料通道的建立。