Revert "Remove PlayoutDelayOracle and make RtpSenderVideo guarantee delivery"
This reverts commit 4f68f5398d7fa3d47c449e99893c9bea07bf7ca2. Reason for revert: Breaks downstream project Original change's description: > 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} TBR=sprang@webrtc.org,stefan@webrtc.org,srte@webrtc.org Change-Id: Ide922e680ae36bb69b95e58002482cf5ed57e254 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:11340 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168304 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30475}
This commit is contained in:
@ -392,6 +392,19 @@ 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