From b8806657cd78484c6e833092ad6c9d28445f2853 Mon Sep 17 00:00:00 2001 From: xiongguangjie Date: Sun, 5 Jun 2022 14:09:35 +0800 Subject: [PATCH] for srt lantency calculate when handshake --- srt/PacketQueue.cpp | 2 +- srt/SrtTransport.cpp | 7 ++++--- srt/SrtTransport.hpp | 3 +++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/srt/PacketQueue.cpp b/srt/PacketQueue.cpp index 340f94d0..7cfb4781 100644 --- a/srt/PacketQueue.cpp +++ b/srt/PacketQueue.cpp @@ -49,7 +49,7 @@ void PacketQueue::tryInsertPkt(DataPacket::Ptr pkt){ _pkt_map.emplace(pkt->packet_seq_number, pkt); TraceL<<" cycle packet "<<"expected seq=" << _pkt_expected_seq << " pkt seq=" << pkt->packet_seq_number; }else{ - TraceL << "drop packet too later "<< "expected seq=" << _pkt_expected_seq << " pkt seq=" << pkt->packet_seq_number; + //TraceL << "drop packet too later "<< "expected seq=" << _pkt_expected_seq << " pkt seq=" << pkt->packet_seq_number; } } } diff --git a/srt/SrtTransport.cpp b/srt/SrtTransport.cpp index a754a81e..5d460e91 100644 --- a/srt/SrtTransport.cpp +++ b/srt/SrtTransport.cpp @@ -117,7 +117,8 @@ void SrtTransport::handleHandshakeInduction(HandshakePacket &pkt, struct sockadd sendControlPacket(_handleshake_res, true); return; } - + _induction_ts = _now; + _start_timestamp = _now; _init_seq_number = pkt.initial_packet_sequence_number; _max_window_size = pkt.max_flow_window_size; _mtu = pkt.mtu; @@ -154,7 +155,7 @@ void SrtTransport::handleHandshakeConclusion(HandshakePacket &pkt, struct sockad HSExtMessage::Ptr req; HSExtStreamID::Ptr sid; uint32_t srt_flag = 0xbf; - uint16_t delay = 120; + uint16_t delay = DurationCountMicroseconds(_now - _induction_ts)*4/1000; for (auto ext : pkt.ext_list) { //TraceL << getIdentifier() << " ext " << ext->dump(); @@ -170,7 +171,7 @@ void SrtTransport::handleHandshakeConclusion(HandshakePacket &pkt, struct sockad } if(req){ srt_flag = req->srt_flag; - delay = req->recv_tsbpd_delay; + delay = delay <= req->recv_tsbpd_delay ? req->recv_tsbpd_delay : delay; } TraceL << getIdentifier() << " CONCLUSION Phase "; HandshakePacket::Ptr res = std::make_shared(); diff --git a/srt/SrtTransport.hpp b/srt/SrtTransport.hpp index b9aeca5b..4f9c20cd 100644 --- a/srt/SrtTransport.hpp +++ b/srt/SrtTransport.hpp @@ -102,6 +102,9 @@ private: TimePoint _now; TimePoint _start_timestamp; + // for calculate rtt for delay + TimePoint _induction_ts; + uint32_t _mtu = 1500; uint32_t _max_window_size = 8192; uint32_t _init_seq_number = 0;