Files
platform-external-webrtc/video/encoder_key_frame_callback_unittest.cc
Niels Möller fa89d84698 Register callback for key frame request from media transport.
Bug: webrtc:9719
Change-Id: Ibeadadb8e477d6d712fd69427c95e1e4f1940854
Reviewed-on: https://webrtc-review.googlesource.com/c/120340
Commit-Queue: Niels Moller <nisse@webrtc.org>
Commit-Queue: Peter Slatala <psla@webrtc.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26473}
2019-01-30 16:26:31 +00:00

66 lines
2.1 KiB
C++

/*
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "video/encoder_key_frame_callback.h"
#include <memory>
#include "test/gmock.h"
#include "test/gtest.h"
#include "video/test/mock_video_stream_encoder.h"
using ::testing::NiceMock;
namespace webrtc {
class VieKeyRequestTest : public ::testing::Test {
public:
VieKeyRequestTest()
: simulated_clock_(123456789),
encoder_(),
encoder_key_frame_callback_(
&simulated_clock_,
std::vector<uint32_t>(1, VieKeyRequestTest::kSsrc),
&encoder_) {}
protected:
const uint32_t kSsrc = 1234;
SimulatedClock simulated_clock_;
testing::StrictMock<MockVideoStreamEncoder> encoder_;
EncoderKeyFrameCallback encoder_key_frame_callback_;
};
TEST_F(VieKeyRequestTest, CreateAndTriggerRequests) {
EXPECT_CALL(encoder_, SendKeyFrame()).Times(1);
encoder_key_frame_callback_.OnReceivedIntraFrameRequest(kSsrc);
}
TEST_F(VieKeyRequestTest, TooManyOnReceivedIntraFrameRequest) {
EXPECT_CALL(encoder_, SendKeyFrame()).Times(1);
encoder_key_frame_callback_.OnReceivedIntraFrameRequest(kSsrc);
encoder_key_frame_callback_.OnReceivedIntraFrameRequest(kSsrc);
simulated_clock_.AdvanceTimeMilliseconds(10);
encoder_key_frame_callback_.OnReceivedIntraFrameRequest(kSsrc);
EXPECT_CALL(encoder_, SendKeyFrame()).Times(1);
simulated_clock_.AdvanceTimeMilliseconds(300);
encoder_key_frame_callback_.OnReceivedIntraFrameRequest(kSsrc);
encoder_key_frame_callback_.OnReceivedIntraFrameRequest(kSsrc);
encoder_key_frame_callback_.OnReceivedIntraFrameRequest(kSsrc);
}
TEST_F(VieKeyRequestTest, TriggerRequestFromMediaTransport) {
EXPECT_CALL(encoder_, SendKeyFrame()).Times(1);
encoder_key_frame_callback_.OnKeyFrameRequested(kSsrc);
}
} // namespace webrtc