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

這個圖展示了webrtc中的transport-CC解析后的第二個操作,就是將接收的包數(shù)據(jù)整理,計算
通過transport-CC的解析,關(guān)鍵信息已經(jīng)保存在ReceivedPacket中,這里有三個關(guān)鍵信息,sequence_number,delta和received。其中delta的數(shù)據(jù),還是原始的解析出的數(shù)據(jù),即和上一包相比的相對時間。接下來需要將這些數(shù)據(jù)轉(zhuǎn)換為絕對時間。這些信息是trendline的核心輸入,所以這一步非常重要
完成這個轉(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反饋后,才可以填充
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
最后,構(gòu)建了PacketResult,包含了每個包的到達絕對時間receive_time,以及發(fā)送的信息sent_packet,這為后面的Trendline預(yù)測打好基礎(chǔ)!