Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1519)

Unified Diff: webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc

Issue 2995513002: Minor improvements to VideoProcessor and corresponding test. (Closed)
Patch Set: Fix compile. Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc
diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc b/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc
index 2a54358e0d6abb4c8ff6970e9bcd2b88c14b2490..9dd75473733e014d6d7cb3118fed6a03d4a4541b 100644
--- a/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc
+++ b/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc
@@ -8,11 +8,14 @@
* be found in the AUTHORS file in the root of the source tree.
*/
+#include <memory>
+
#include "webrtc/api/video/i420_buffer.h"
#include "webrtc/modules/video_coding/codecs/test/mock/mock_packet_manipulator.h"
#include "webrtc/modules/video_coding/codecs/test/videoprocessor.h"
#include "webrtc/modules/video_coding/include/mock/mock_video_codec_interface.h"
#include "webrtc/modules/video_coding/include/video_coding.h"
+#include "webrtc/rtc_base/ptr_util.h"
#include "webrtc/test/gmock.h"
#include "webrtc/test/gtest.h"
#include "webrtc/test/testsupport/mock/mock_frame_reader.h"
@@ -28,30 +31,37 @@ using ::testing::Return;
namespace webrtc {
namespace test {
-// Very basic testing for VideoProcessor. It's mostly tested by running the
-// video_quality_measurement program.
+namespace {
+
+const int kWidth = 352;
+const int kHeight = 288;
+const int kFrameSize = kWidth * kHeight * 3 / 2; // I420.
+const int kFramerate = 30;
+const int kNumFrames = 2;
+
+} // namespace
+
class VideoProcessorTest : public testing::Test {
protected:
- MockVideoEncoder encoder_mock_;
- MockVideoDecoder decoder_mock_;
- MockFrameReader frame_reader_mock_;
- MockFrameWriter frame_writer_mock_;
- MockPacketManipulator packet_manipulator_mock_;
- Stats stats_;
- TestConfig config_;
- VideoCodec codec_settings_;
-
- VideoProcessorTest() {}
- virtual ~VideoProcessorTest() {}
- void SetUp() {
+ VideoProcessorTest() {
// Get a codec configuration struct and configure it.
VideoCodingModule::Codec(kVideoCodecVP8, &codec_settings_);
config_.codec_settings = &codec_settings_;
config_.codec_settings->startBitrate = 100;
- config_.codec_settings->width = 352;
- config_.codec_settings->height = 288;
+ config_.codec_settings->width = kWidth;
+ config_.codec_settings->height = kHeight;
+ config_.codec_settings->maxFramerate = kFramerate;
+
+ EXPECT_CALL(frame_reader_mock_, NumberOfFrames())
+ .WillRepeatedly(Return(kNumFrames));
+ EXPECT_CALL(frame_reader_mock_, FrameLength())
+ .WillRepeatedly(Return(kFrameSize));
+ video_processor_ = rtc::MakeUnique<VideoProcessorImpl>(
+ &encoder_mock_, &decoder_mock_, &frame_reader_mock_,
+ &frame_writer_mock_, &packet_manipulator_mock_, config_, &stats_,
+ nullptr /* source_frame_writer */, nullptr /* encoded_frame_writer */,
+ nullptr /* decoded_frame_writer */);
}
- void TearDown() {}
void ExpectInit() {
EXPECT_CALL(encoder_mock_, InitEncode(_, _, _)).Times(1);
@@ -60,35 +70,41 @@ class VideoProcessorTest : public testing::Test {
EXPECT_CALL(decoder_mock_, InitDecode(_, _)).Times(1);
EXPECT_CALL(decoder_mock_, RegisterDecodeCompleteCallback(_))
.Times(AtLeast(1));
- EXPECT_CALL(frame_reader_mock_, NumberOfFrames()).WillRepeatedly(Return(1));
- EXPECT_CALL(frame_reader_mock_, FrameLength()).WillOnce(Return(152064));
}
+
+ MockVideoEncoder encoder_mock_;
+ MockVideoDecoder decoder_mock_;
+ MockFrameReader frame_reader_mock_;
+ MockFrameWriter frame_writer_mock_;
+ MockPacketManipulator packet_manipulator_mock_;
+ VideoCodec codec_settings_;
+ TestConfig config_;
+ Stats stats_;
+ std::unique_ptr<VideoProcessorImpl> video_processor_;
};
TEST_F(VideoProcessorTest, Init) {
ExpectInit();
- VideoProcessorImpl video_processor(
- &encoder_mock_, &decoder_mock_, &frame_reader_mock_, &frame_writer_mock_,
- &packet_manipulator_mock_, config_, &stats_,
- nullptr /* source_frame_writer */, nullptr /* encoded_frame_writer */,
- nullptr /* decoded_frame_writer */);
- video_processor.Init();
+ video_processor_->Init();
}
-TEST_F(VideoProcessorTest, ProcessFrame) {
+TEST_F(VideoProcessorTest, ProcessFrames) {
ExpectInit();
- EXPECT_CALL(encoder_mock_, Encode(_, _, _)).Times(1);
+ video_processor_->Init();
+
EXPECT_CALL(frame_reader_mock_, ReadFrame())
- .WillOnce(Return(I420Buffer::Create(50, 50)));
- // Since we don't return any callback from the mock, the decoder will not
- // be more than initialized...
- VideoProcessorImpl video_processor(
- &encoder_mock_, &decoder_mock_, &frame_reader_mock_, &frame_writer_mock_,
- &packet_manipulator_mock_, config_, &stats_,
- nullptr /* source_frame_writer */, nullptr /* encoded_frame_writer */,
- nullptr /* decoded_frame_writer */);
- video_processor.Init();
- video_processor.ProcessFrame(0);
+ .WillRepeatedly(Return(I420Buffer::Create(kWidth, kHeight)));
+ EXPECT_CALL(encoder_mock_, Encode(testing::Property(&VideoFrame::timestamp,
+ 1 * 90000 / kFramerate),
+ _, _))
+ .Times(1);
+ video_processor_->ProcessFrame(0);
+
+ EXPECT_CALL(encoder_mock_, Encode(testing::Property(&VideoFrame::timestamp,
+ 2 * 90000 / kFramerate),
+ _, _))
+ .Times(1);
+ video_processor_->ProcessFrame(1);
}
} // namespace test
« no previous file with comments | « webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698