Chromium Code Reviews| 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)); |