Revert of quest keyframes more frequently on stream start/decoding error. (patchset #2 id:170001 of https://codereview.webrtc.org/2996823002/ )
Reason for revert:
Causes iOS H264 calls received in the background to have increased delay before being able to decode stream from sender due to not having a keyframe.
Original issue's description:
> Reland of quest keyframes more frequently on stream start/decoding error. (patchset #1 id:1 of https://codereview.chromium.org/2994043002/ )
>
> Reason for revert:
> Create fix CL.
>
> Original issue's description:
> > Revert of Request keyframes more frequently on stream start/decoding error. (patchset #1 id:1 of https://codereview.webrtc.org/2993793002/ )
> >
> > Reason for revert:
> > Broke downstream test that was waiting for 5 keyframes to be received within 10 seconds. Maybe the issue is that "stats_callback_->OnCompleteFrame(frame->num_references == 0, ..." was changed to "frame->is_keyframe()"?
> >
> > Original issue's description:
> > > Request keyframes more frequently on stream start/decoding error.
> > >
> > > In this CL:
> > > - Added FrameObject::is_keyframe() convinience function.
> > > - Moved logic to request keyframes on decoding error from VideoReceived to
> > > VideoReceiveStream.
> > > - Added keyframe_required as a parameter to FrameBuffer::NextFrame.
> > >
> > > BUG=webrtc:8074
> > >
> > > Review-Url: https://codereview.webrtc.org/2993793002
> > > Cr-Commit-Position: refs/heads/master@{#19280}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/26b48043581735eed6e36b95fae6f5b1bcf8cfb5
> >
> > TBR=terelius@webrtc.org,stefan@webrtc.org,noahric@chromium.org,philipel@webrtc.org
> > # Skipping CQ checks because original CL landed less than 1 days ago.
> > NOPRESUBMIT=true
> > NOTREECHECKS=true
> > NOTRY=true
> > BUG=webrtc:8074
> >
> > Review-Url: https://codereview.webrtc.org/2994043002
> > Cr-Commit-Position: refs/heads/master@{#19295}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/77a983185f57628cd5955bd2c0a1bf71c30439bb
>
> TBR=terelius@webrtc.org,stefan@webrtc.org,noahric@chromium.org,deadbeef@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> BUG=webrtc:8074
>
> Review-Url: https://codereview.webrtc.org/2996823002
> Cr-Commit-Position: refs/heads/master@{#19324}
> Committed: https://chromium.googlesource.com/external/webrtc/+/628ac5964e32e66083a6ab14dceac6cb2cabe345
TBR=terelius@webrtc.org,stefan@webrtc.org,noahric@chromium.org,deadbeef@webrtc.org,philipel@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:8074
Review-Url: https://codereview.webrtc.org/2995153002
Cr-Commit-Position: refs/heads/master@{#19392}
diff --git a/webrtc/modules/video_coding/frame_buffer2_unittest.cc b/webrtc/modules/video_coding/frame_buffer2_unittest.cc
index 88f8410..122dd3d 100644
--- a/webrtc/modules/video_coding/frame_buffer2_unittest.cc
+++ b/webrtc/modules/video_coding/frame_buffer2_unittest.cc
@@ -168,12 +168,11 @@
return buffer_.InsertFrame(std::move(frame));
}
- void ExtractFrame(int64_t max_wait_time = 0, bool keyframe_required = false) {
+ void ExtractFrame(int64_t max_wait_time = 0) {
crit_.Enter();
if (max_wait_time == 0) {
std::unique_ptr<FrameObject> frame;
- FrameBuffer::ReturnReason res =
- buffer_.NextFrame(0, &frame, keyframe_required);
+ FrameBuffer::ReturnReason res = buffer_.NextFrame(0, &frame);
if (res != FrameBuffer::ReturnReason::kStopped)
frames_.emplace_back(std::move(frame));
crit_.Leave();
@@ -542,18 +541,5 @@
EXPECT_EQ(2, InsertFrame(2, 0, 3000, false, 1));
}
-TEST_F(TestFrameBuffer2, KeyframeRequired) {
- EXPECT_EQ(1, InsertFrame(1, 0, 1000, false));
- EXPECT_EQ(2, InsertFrame(2, 0, 2000, false, 1));
- EXPECT_EQ(3, InsertFrame(3, 0, 3000, false));
- ExtractFrame();
- ExtractFrame(0, true);
- ExtractFrame();
-
- CheckFrame(0, 1, 0);
- CheckFrame(1, 3, 0);
- CheckNoFrame(2);
-}
-
} // namespace video_coding
} // namespace webrtc