diff --git a/modules/video_coding/frame_buffer2.cc b/modules/video_coding/frame_buffer2.cc index 9b2b9079fa..000152fda0 100644 --- a/modules/video_coding/frame_buffer2.cc +++ b/modules/video_coding/frame_buffer2.cc @@ -153,7 +153,8 @@ FrameBuffer::ReturnReason FrameBuffer::NextFrame( // means that the frame buffer was cleared as the thread in this function // was waiting to acquire |crit_| in order to return. Wait for the // remaining time and then return. - return NextFrame(latest_return_time_ms - now_ms, frame_out); + return NextFrame(latest_return_time_ms - now_ms, frame_out, + keyframe_required); } return kTimeout; } diff --git a/modules/video_coding/frame_buffer2.h b/modules/video_coding/frame_buffer2.h index cffdf3e5cc..835079c980 100644 --- a/modules/video_coding/frame_buffer2.h +++ b/modules/video_coding/frame_buffer2.h @@ -65,7 +65,7 @@ class FrameBuffer { // - If the FrameBuffer is stopped then it will return kStopped. ReturnReason NextFrame(int64_t max_wait_time_ms, std::unique_ptr* frame_out, - bool keyframe_required = false); + bool keyframe_required); void NextFrame( int64_t max_wait_time_ms, bool keyframe_required, diff --git a/modules/video_coding/frame_buffer2_unittest.cc b/modules/video_coding/frame_buffer2_unittest.cc index d36707b48c..f1308aca40 100644 --- a/modules/video_coding/frame_buffer2_unittest.cc +++ b/modules/video_coding/frame_buffer2_unittest.cc @@ -251,7 +251,7 @@ class TestFrameBuffer2 : public ::testing::Test { std::unique_ptr frame; FrameBuffer::ReturnReason res = - tfb->buffer_->NextFrame(tfb->max_wait_time_, &frame); + tfb->buffer_->NextFrame(tfb->max_wait_time_, &frame, false); if (res != FrameBuffer::ReturnReason::kStopped) tfb->frames_.emplace_back(std::move(frame)); } diff --git a/video/video_receive_stream.cc b/video/video_receive_stream.cc index 3a73ba878f..b7ddfb6bf4 100644 --- a/video/video_receive_stream.cc +++ b/video/video_receive_stream.cc @@ -618,10 +618,8 @@ void VideoReceiveStream::StartNextDecode() { std::unique_ptr frame; }; - // TODO(philipel): Call NextFrame with |keyframe_required| argument set when - // downstream project has been fixed. frame_buffer_->NextFrame( - GetWaitMs(), /*keyframe_required*/ false, &decode_queue_, + GetWaitMs(), keyframe_required_, &decode_queue_, [this](std::unique_ptr frame, ReturnReason res) { RTC_DCHECK_EQ(frame == nullptr, res == ReturnReason::kTimeout); RTC_DCHECK_EQ(frame != nullptr, res == ReturnReason::kFrameFound); @@ -640,10 +638,9 @@ bool VideoReceiveStream::Decode() { TRACE_EVENT0("webrtc", "VideoReceiveStream::Decode"); std::unique_ptr frame; - // TODO(philipel): Call NextFrame with |keyframe_required| argument when - // downstream project has been fixed. video_coding::FrameBuffer::ReturnReason res = - frame_buffer_->NextFrame(GetWaitMs(), &frame); + frame_buffer_->NextFrame(GetWaitMs(), &frame, keyframe_required_); + if (res == ReturnReason::kStopped) { return false; }