Remove PlayoutDelayOracle and make RtpSenderVideo guarantee delivery
The PlayoutDelayOracle was responsible for making sure the PlayoutDelay header extension was successfully propagated to the receiving side. Once it was determined that the receiver had received a frame with the new delay tag, it's no longer necessary to propagate. The issue with this implementation is that it is based on max extended sequence number reported via RTCP, which makes it often slow to react, could theoretically fail to produce desired outcome (max received > X does not guarantee X was fully received and decoded), and added a lot of code complexity. The guarantee of delivery can in fact be accomplished more reliably and with less code by making sure to tag each frame until an undiscardable frame is sent. This allows containing the logic fully within RTPSenderVideo. Bug: webrtc:11340 Change-Id: I2d1d2b6b67f4f07b8b33336f8fcfcde724243eef Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168221 Reviewed-by: Stefan Holmer <stefan@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30473}
This commit is contained in:
@ -392,19 +392,6 @@ struct RtpReceiveStats {
|
||||
RtpPacketCounter packet_counter;
|
||||
};
|
||||
|
||||
class RtcpAckObserver {
|
||||
public:
|
||||
// This method is called on received report blocks matching the sender ssrc.
|
||||
// TODO(nisse): Use of "extended" sequence number is a bit brittle, since the
|
||||
// observer for this callback typically has its own sequence number unwrapper,
|
||||
// and there's no guarantee that they are in sync. Change to pass raw sequence
|
||||
// number, possibly augmented with timestamp (if available) to aid
|
||||
// disambiguation.
|
||||
virtual void OnReceivedAck(int64_t extended_highest_sequence_number) = 0;
|
||||
|
||||
virtual ~RtcpAckObserver() = default;
|
||||
};
|
||||
|
||||
// Callback, used to notify an observer whenever new rates have been estimated.
|
||||
class BitrateStatisticsObserver {
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user