github:https://github.com/bigonelby/webrtcUml/tree/master/latest
这个图展示了webrtc中的transport-CC解析后的第二个操作,就是将接收的包数据整理,计算
通过transport-CC的解析,关键信息已经保存在ReceivedPacket中,这里有三个关键信息,sequence_number,delta和received。其中delta的数据,还是原始的解析出的数据,即和上一包相比的相对时间。接下来需要将这些数据转换为绝对时间。这些信息是trendline的核心输入,所以这一步非常重要
完成这个转换关系的,就是TransportFeedbackAdapter。这个模块保存了包发送时的相关信息,保存在其history_中,结构体为PacketFeedback,这个结构体有creation_time,receive_time和network_route,以及成员sent,类型为SentPacket。这里大部分信息在发送的时候就可以填充,但是如receive_time这样的信息,需要得到transport-cc反馈后,才可以填充
TransportFeedbackAdapter首先会在入参feedback中,查找所有的包,即GetAllPackets,这里包括了接收的和未接收的。并计算绝对时间,绝对时间通过其成员current_offset_来计算,通过TransportFeedback的GetBaseDelta方法,找到和last_timestamp_的delta,并累积到current_offset_中。如果packet是received,则可以通过current_offset_和每个包的delta,计算出接收到的绝对时间,并更新到器history_中相应的PacketFeedback中的receive_time
最后,构建了PacketResult,包含了每个包的到达绝对时间receive_time,以及发送的信息sent_packet,这为后面的Trendline预测打好基础!