Bugfix: FlexFEC causes retransmit bitrate increase.
When FlexFEC is enabled, sometimes media packet will be recovered by FEC before the actual media packet's arrival. In current implementation this will be considered as packet out of order and nack will be sent, thus cause large increase in retransmit bitrate. This fix: 1. Avoid sending nack for packet out of order caused by "early" recovered media packets. 2. Save recovered media packet in a set, and do not send nack for these packets. Bug: None Change-Id: I008ef4e33668bce6d2cb9ff52b4b5c8e3f349965 Reviewed-on: https://webrtc-review.googlesource.com/c/108090 Commit-Queue: Ying Wang <yinwa@webrtc.org> Reviewed-by: Philip Eliasson <philipel@webrtc.org> Reviewed-by: Stefan Holmer <stefan@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25444}
This commit is contained in:
@ -32,6 +32,8 @@ class NackModule : public Module {
|
||||
KeyFrameRequestSender* keyframe_request_sender);
|
||||
|
||||
int OnReceivedPacket(uint16_t seq_num, bool is_keyframe);
|
||||
int OnReceivedPacket(uint16_t seq_num, bool is_keyframe, bool is_recovered);
|
||||
|
||||
void ClearUpTo(uint16_t seq_num);
|
||||
void UpdateRtt(int64_t rtt_ms);
|
||||
void Clear();
|
||||
@ -87,6 +89,8 @@ class NackModule : public Module {
|
||||
RTC_GUARDED_BY(crit_);
|
||||
std::set<uint16_t, DescendingSeqNumComp<uint16_t>> keyframe_list_
|
||||
RTC_GUARDED_BY(crit_);
|
||||
std::set<uint16_t, DescendingSeqNumComp<uint16_t>> recovered_list_
|
||||
RTC_GUARDED_BY(crit_);
|
||||
video_coding::Histogram reordering_histogram_ RTC_GUARDED_BY(crit_);
|
||||
bool initialized_ RTC_GUARDED_BY(crit_);
|
||||
int64_t rtt_ms_ RTC_GUARDED_BY(crit_);
|
||||
|
||||
Reference in New Issue
Block a user