webrtc發(fā)送端-transportfeeback之a(chǎn)dapter

github:https://github.com/bigonelby/webrtcUml/tree/master/latest

webrtc-發(fā)送端-transportfeedback-adapter.drawio.png
  1. 這個圖展示了webrtc中的transport-CC解析后的第二個操作,就是將接收的包數(shù)據(jù)整理,計算

  2. 通過transport-CC的解析,關(guān)鍵信息已經(jīng)保存在ReceivedPacket中,這里有三個關(guān)鍵信息,sequence_number,delta和received。其中delta的數(shù)據(jù),還是原始的解析出的數(shù)據(jù),即和上一包相比的相對時間。接下來需要將這些數(shù)據(jù)轉(zhuǎn)換為絕對時間。這些信息是trendline的核心輸入,所以這一步非常重要

  3. 完成這個轉(zhuǎn)換關(guān)系的,就是TransportFeedbackAdapter。這個模塊保存了包發(fā)送時的相關(guān)信息,保存在其history_中,結(jié)構(gòu)體為PacketFeedback,這個結(jié)構(gòu)體有creation_time,receive_time和network_route,以及成員sent,類型為SentPacket。這里大部分信息在發(fā)送的時候就可以填充,但是如receive_time這樣的信息,需要得到transport-cc反饋后,才可以填充

  4. TransportFeedbackAdapter首先會在入?yún)eedback中,查找所有的包,即GetAllPackets,這里包括了接收的和未接收的。并計算絕對時間,絕對時間通過其成員current_offset_來計算,通過TransportFeedback的GetBaseDelta方法,找到和last_timestamp_的delta,并累積到current_offset_中。如果packet是received,則可以通過current_offset_和每個包的delta,計算出接收到的絕對時間,并更新到器history_中相應(yīng)的PacketFeedback中的receive_time

  5. 最后,構(gòu)建了PacketResult,包含了每個包的到達絕對時間receive_time,以及發(fā)送的信息sent_packet,這為后面的Trendline預(yù)測打好基礎(chǔ)!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容