| Index: webrtc/modules/video_coding/video_sender_unittest.cc
|
| diff --git a/webrtc/modules/video_coding/video_sender_unittest.cc b/webrtc/modules/video_coding/video_sender_unittest.cc
|
| index 741c7b7a607071c9e224db713a2da8bf2cce2650..f766b862eb2a9ef2989ba5083bbd1e74f73c1aca 100644
|
| --- a/webrtc/modules/video_coding/video_sender_unittest.cc
|
| +++ b/webrtc/modules/video_coding/video_sender_unittest.cc
|
| @@ -40,7 +40,12 @@ using webrtc::test::FrameGenerator;
|
| namespace webrtc {
|
| namespace vcm {
|
| namespace {
|
| -enum { kMaxNumberOfTemporalLayers = 3 };
|
| +static const int kDefaultHeight = 720;
|
| +static const int kDefaultWidth = 1280;
|
| +static const int kMaxNumberOfTemporalLayers = 3;
|
| +static const int kNumberOfLayers = 3;
|
| +static const int kNumberOfStreams = 3;
|
| +static const int kUnusedPayloadType = 10;
|
|
|
| struct Vp8StreamInfo {
|
| float framerate_fps[kMaxNumberOfTemporalLayers];
|
| @@ -196,12 +201,6 @@ class TestVideoSender : public ::testing::Test {
|
|
|
| class TestVideoSenderWithMockEncoder : public TestVideoSender {
|
| protected:
|
| - static const int kDefaultWidth = 1280;
|
| - static const int kDefaultHeight = 720;
|
| - static const int kNumberOfStreams = 3;
|
| - static const int kNumberOfLayers = 3;
|
| - static const int kUnusedPayloadType = 10;
|
| -
|
| void SetUp() override {
|
| TestVideoSender::SetUp();
|
| sender_->RegisterExternalEncoder(&encoder_, kUnusedPayloadType, false);
|
| @@ -222,20 +221,29 @@ class TestVideoSenderWithMockEncoder : public TestVideoSender {
|
| void TearDown() override { sender_.reset(); }
|
|
|
| void ExpectIntraRequest(int stream) {
|
| - if (stream == -1) {
|
| - // No intra request expected.
|
| - EXPECT_CALL(
|
| - encoder_,
|
| - Encode(_, _, Pointee(ElementsAre(kVideoFrameDelta, kVideoFrameDelta,
|
| - kVideoFrameDelta))))
|
| + ExpectEncodeWithFrameTypes(stream, false);
|
| + }
|
| +
|
| + void ExpectInitialKeyFrames() {
|
| + ExpectEncodeWithFrameTypes(-1, true);
|
| + }
|
| +
|
| + void ExpectEncodeWithFrameTypes(int intra_request_stream, bool first_frame) {
|
| + if (intra_request_stream == -1) {
|
| + // No intra request expected, keyframes on first frame.
|
| + FrameType frame_type = first_frame ? kVideoFrameKey : kVideoFrameDelta;
|
| + EXPECT_CALL(encoder_,
|
| + Encode(_, _, Pointee(ElementsAre(frame_type, frame_type,
|
| + frame_type))))
|
| .Times(1)
|
| .WillRepeatedly(Return(0));
|
| return;
|
| }
|
| - assert(stream >= 0);
|
| - assert(stream < kNumberOfStreams);
|
| + ASSERT_FALSE(first_frame);
|
| + ASSERT_GE(intra_request_stream, 0);
|
| + ASSERT_LT(intra_request_stream, kNumberOfStreams);
|
| std::vector<FrameType> frame_types(kNumberOfStreams, kVideoFrameDelta);
|
| - frame_types[stream] = kVideoFrameKey;
|
| + frame_types[intra_request_stream] = kVideoFrameKey;
|
| EXPECT_CALL(encoder_,
|
| Encode(_, _, Pointee(ElementsAreArray(&frame_types[0],
|
| frame_types.size()))))
|
| @@ -260,6 +268,9 @@ class TestVideoSenderWithMockEncoder : public TestVideoSender {
|
| };
|
|
|
| TEST_F(TestVideoSenderWithMockEncoder, TestIntraRequests) {
|
| + // Initial request should be all keyframes.
|
| + ExpectInitialKeyFrames();
|
| + AddFrame();
|
| EXPECT_EQ(0, sender_->IntraFrameRequest(0));
|
| ExpectIntraRequest(0);
|
| AddFrame();
|
| @@ -293,6 +304,9 @@ TEST_F(TestVideoSenderWithMockEncoder, TestIntraRequestsInternalCapture) {
|
| // Register encoder with internal capture.
|
| sender_->RegisterExternalEncoder(&encoder_, kUnusedPayloadType, true);
|
| EXPECT_EQ(0, sender_->RegisterSendCodec(&settings_, 1, 1200));
|
| + // Initial request should be all keyframes.
|
| + ExpectInitialKeyFrames();
|
| + AddFrame();
|
| ExpectIntraRequest(0);
|
| EXPECT_EQ(0, sender_->IntraFrameRequest(0));
|
| ExpectIntraRequest(1);
|
|
|