Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(857)

Unified Diff: webrtc/video/rtp_stream_receiver.cc

Issue 2874933004: Request keyframe if the first received frame is not a keyframe. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/video/rtp_stream_receiver.h ('k') | webrtc/video/rtp_stream_receiver_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/rtp_stream_receiver.cc
diff --git a/webrtc/video/rtp_stream_receiver.cc b/webrtc/video/rtp_stream_receiver.cc
index 88d86ef986714df85332333ef5cff9d6849bd1e0..320d1bd0798035d2375886455945b0464c9da74a 100644
--- a/webrtc/video/rtp_stream_receiver.cc
+++ b/webrtc/video/rtp_stream_receiver.cc
@@ -111,7 +111,8 @@ RtpStreamReceiver::RtpStreamReceiver(
packet_router)),
complete_frame_callback_(complete_frame_callback),
keyframe_request_sender_(keyframe_request_sender),
- timing_(timing) {
+ timing_(timing),
+ has_received_frame_(false) {
packet_router_->AddReceiveRtpModule(rtp_rtcp_.get());
rtp_receive_statistics_->RegisterRtpStatisticsCallback(receive_stats_proxy);
rtp_receive_statistics_->RegisterRtcpStatisticsCallback(receive_stats_proxy);
@@ -380,6 +381,13 @@ int32_t RtpStreamReceiver::ResendPackets(const uint16_t* sequence_numbers,
void RtpStreamReceiver::OnReceivedFrame(
std::unique_ptr<video_coding::RtpFrameObject> frame) {
+
+ if (!has_received_frame_) {
+ has_received_frame_ = true;
mflodman 2017/05/11 13:11:36 What happens if: 1. The frame buffer is reset late
philipel 2017/05/11 13:38:58 If things are working as they should (the incoming
mflodman 2017/05/15 08:46:29 I was thinking about a jitter buffer flush, or the
stefan-webrtc 2017/05/15 11:01:27 Philip, I think the question is if the PacketBuffe
philipel 2017/05/15 11:43:22 This function is called when the packet buffer fin
stefan-webrtc 2017/05/15 14:43:38 Ah, I see.
philipel 2017/05/16 11:26:23 We might want to tweak how keyframe requests are s
+ if (frame->FrameType() != kVideoFrameKey)
+ keyframe_request_sender_->RequestKeyFrame();
brandtr 2017/05/11 12:37:39 Except for it being a heuristic, are there any dra
philipel 2017/05/11 13:38:58 The worst drawback I can think of is on really bad
stefan-webrtc 2017/05/15 11:01:27 Are these key frame requests throttled somewhere,
philipel 2017/05/15 11:43:22 Quickly looking through the code I can't find any
+ }
+
if (!frame->delayed_by_retransmission())
timing_->IncomingTimestamp(frame->timestamp, clock_->TimeInMilliseconds());
reference_finder_->ManageFrame(std::move(frame));
« no previous file with comments | « webrtc/video/rtp_stream_receiver.h ('k') | webrtc/video/rtp_stream_receiver_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698