diff options
author | Artem Titarenko <artit@webrtc.org> | 2022-04-28 15:20:09 +0200 |
---|---|---|
committer | WebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-05-05 09:58:28 +0000 |
commit | 658dfb74e563295b7ed4961d06c68afbd566ef8d (patch) | |
tree | bd2450b3f146631368e38eda9fc0503747bb07f1 | |
parent | 26d12fcc712123842162ac417b5117b297f79a4d (diff) | |
download | webrtc-658dfb74e563295b7ed4961d06c68afbd566ef8d.tar.gz |
RTP video stream receivers: By default consider frames decryptable.
Looks like the original code [0] that should limit the amount of keyframe requests behaves a bit strange in a situation when the first keyframe is missed. Effectively in the encrypted session the receiver can't enforce getting the keyframe until it receives at least one frame which is decryptable [1]. And with dependency descriptors it can't do that until it receives a keyframe which contains proper DD header [2]. This leads to unnecessary delays until the sender sends a keyframe itself.
In this CL we "trust" that the stream is decryptable from the beginning unless proven the opposite [3].
[0]: https://webrtc-review.googlesource.com/c/src/+/123414/
[1]: https://webrtc.googlesource.com/src/+/9432768024b0397f2dccfec0cab30f33dde87b93/video/video_receive_stream2.cc#950
[2]: https://webrtc.googlesource.com/src/+/9432768024b0397f2dccfec0cab30f33dde87b93/video/rtp_video_stream_receiver2.cc#415
[3]: https://webrtc.googlesource.com/src/+/9432768024b0397f2dccfec0cab30f33dde87b93/video/rtp_video_stream_receiver2.cc#882
Bug: webrtc:10330
Change-Id: I167d728ddc7cde74a5c5e3327bce7364ed97b7ea
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260326
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Artem Titarenko <artit@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36775}
-rw-r--r-- | video/rtp_video_stream_receiver.cc | 2 | ||||
-rw-r--r-- | video/rtp_video_stream_receiver2.cc | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/video/rtp_video_stream_receiver.cc b/video/rtp_video_stream_receiver.cc index 04484b91cc..e142c5797d 100644 --- a/video/rtp_video_stream_receiver.cc +++ b/video/rtp_video_stream_receiver.cc @@ -278,7 +278,7 @@ RtpVideoStreamReceiver::RtpVideoStreamReceiver( PacketBufferMaxSize(field_trials_)), reference_finder_(std::make_unique<RtpFrameReferenceFinder>()), has_received_frame_(false), - frames_decryptable_(false), + frames_decryptable_(true), absolute_capture_time_interpolator_(clock) { constexpr bool remb_candidate = true; if (packet_router_) diff --git a/video/rtp_video_stream_receiver2.cc b/video/rtp_video_stream_receiver2.cc index 9956760c3b..0568f80702 100644 --- a/video/rtp_video_stream_receiver2.cc +++ b/video/rtp_video_stream_receiver2.cc @@ -259,7 +259,7 @@ RtpVideoStreamReceiver2::RtpVideoStreamReceiver2( PacketBufferMaxSize(field_trials_)), reference_finder_(std::make_unique<RtpFrameReferenceFinder>()), has_received_frame_(false), - frames_decryptable_(false), + frames_decryptable_(true), absolute_capture_time_interpolator_(clock) { packet_sequence_checker_.Detach(); constexpr bool remb_candidate = true; |