From 1d29c86cbf1e4cd658e44b769c914c9d35ede3ac Mon Sep 17 00:00:00 2001 From: asapersson Date: Thu, 22 Jun 2017 02:18:50 -0700 Subject: [PATCH] Make VideoProcessor::Init void (always returning true). BUG=none Review-Url: https://codereview.webrtc.org/2946263002 Cr-Commit-Position: refs/heads/master@{#18711} --- .../codecs/test/videoprocessor.cc | 23 ++++++++----------- .../video_coding/codecs/test/videoprocessor.h | 11 +++------ .../test/videoprocessor_integrationtest.h | 2 +- .../codecs/test/videoprocessor_unittest.cc | 6 ++--- 4 files changed, 16 insertions(+), 26 deletions(-) diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor.cc b/webrtc/modules/video_coding/codecs/test/videoprocessor.cc index b6f4b9d90f..21fd67fbee 100644 --- a/webrtc/modules/video_coding/codecs/test/videoprocessor.cc +++ b/webrtc/modules/video_coding/codecs/test/videoprocessor.cc @@ -135,11 +135,9 @@ VideoProcessorImpl::VideoProcessorImpl(webrtc::VideoEncoder* encoder, config_(config), analysis_frame_reader_(analysis_frame_reader), analysis_frame_writer_(analysis_frame_writer), - num_frames_(analysis_frame_reader->NumberOfFrames()), source_frame_writer_(source_frame_writer), encoded_frame_writer_(encoded_frame_writer), decoded_frame_writer_(decoded_frame_writer), - bit_rate_factor_(config.codec_settings->maxFramerate * 0.001 * 8), initialized_(false), last_encoded_frame_num_(-1), last_decoded_frame_num_(-1), @@ -154,13 +152,12 @@ VideoProcessorImpl::VideoProcessorImpl(webrtc::VideoEncoder* encoder, RTC_DCHECK(analysis_frame_reader); RTC_DCHECK(analysis_frame_writer); RTC_DCHECK(stats); - - frame_infos_.reserve(num_frames_); + frame_infos_.reserve(analysis_frame_reader->NumberOfFrames()); } -bool VideoProcessorImpl::Init() { - RTC_DCHECK(!initialized_) - << "This VideoProcessor has already been initialized."; +void VideoProcessorImpl::Init() { + RTC_DCHECK(!initialized_) << "VideoProcessor already initialized."; + initialized_ = true; // Setup required callbacks for the encoder/decoder. RTC_CHECK_EQ(encoder_->RegisterEncodeCompleteCallback(encode_callback_.get()), @@ -186,7 +183,8 @@ bool VideoProcessorImpl::Init() { if (config_.verbose) { printf("Video Processor:\n"); printf(" #CPU cores used : %d\n", num_cores); - printf(" Total # of frames: %d\n", num_frames_); + printf(" Total # of frames: %d\n", + analysis_frame_reader_->NumberOfFrames()); printf(" Codec settings:\n"); printf(" Encoder implementation name: %s\n", encoder_->ImplementationName()); @@ -201,10 +199,6 @@ bool VideoProcessorImpl::Init() { } PrintCodecSettings(config_.codec_settings); } - - initialized_ = true; - - return true; } VideoProcessorImpl::~VideoProcessorImpl() { @@ -254,7 +248,7 @@ bool VideoProcessorImpl::ProcessFrame(int frame_number) { RTC_DCHECK_GE(frame_number, 0); RTC_DCHECK_LE(frame_number, frame_infos_.size()) << "Must process frames without gaps."; - RTC_DCHECK(initialized_) << "Attempting to use uninitialized VideoProcessor"; + RTC_DCHECK(initialized_) << "VideoProcessor not initialized."; rtc::scoped_refptr buffer( analysis_frame_reader_->ReadFrame()); @@ -373,7 +367,8 @@ void VideoProcessorImpl::FrameEncoded( frame_stat->frame_number = frame_number; frame_stat->frame_type = encoded_image._frameType; frame_stat->qp = encoded_image.qp_; - frame_stat->bit_rate_in_kbps = encoded_image._length * bit_rate_factor_; + frame_stat->bit_rate_in_kbps = static_cast( + encoded_image._length * config_.codec_settings->maxFramerate * 8 / 1000); frame_stat->total_packets = encoded_image._length / config_.networking_config.packet_size_in_bytes + 1; diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor.h b/webrtc/modules/video_coding/codecs/test/videoprocessor.h index c97e9cb144..1177772dd3 100644 --- a/webrtc/modules/video_coding/codecs/test/videoprocessor.h +++ b/webrtc/modules/video_coding/codecs/test/videoprocessor.h @@ -136,9 +136,8 @@ class VideoProcessor { public: virtual ~VideoProcessor() {} - // Performs initial calculations about frame size, sets up callbacks etc. - // Returns false if an error has occurred, in addition to printing to stderr. - virtual bool Init() = 0; + // Sets up callbacks and initializes the encoder and decoder. + virtual void Init() = 0; // Processes a single frame. Returns true as long as there's more frames // available in the source clip. @@ -181,7 +180,7 @@ class VideoProcessorImpl : public VideoProcessor { IvfFileWriter* encoded_frame_writer, FrameWriter* decoded_frame_writer); virtual ~VideoProcessorImpl(); - bool Init() override; + void Init() override; bool ProcessFrame(int frame_number) override; private: @@ -304,7 +303,6 @@ class VideoProcessorImpl : public VideoProcessor { // SSIM calculations at the end of a test run. FrameReader* const analysis_frame_reader_; FrameWriter* const analysis_frame_writer_; - const int num_frames_; // These (optional) file writers are used for persistently storing the output // of the coding pipeline at different stages: pre encode (source), post @@ -316,9 +314,6 @@ class VideoProcessorImpl : public VideoProcessor { IvfFileWriter* const encoded_frame_writer_; FrameWriter* const decoded_frame_writer_; - // Multiply frame length with this to get bit rate. - const double bit_rate_factor_; - bool initialized_; // Frame metadata for all frames that have been added through a call to diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h b/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h index d978b6508d..5c275aa949 100644 --- a/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h +++ b/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h @@ -349,7 +349,7 @@ class VideoProcessorIntegrationTest : public testing::Test { analysis_frame_writer_.get(), packet_manipulator_.get(), config_, &stats_, source_frame_writer_.get(), encoded_frame_writer_.get(), decoded_frame_writer_.get())); - RTC_CHECK(processor_->Init()); + processor_->Init(); } // Reset quantities after each encoder update, update the target diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc b/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc index efc60c10d7..2a54358e0d 100644 --- a/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc +++ b/webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc @@ -60,7 +60,7 @@ 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()).WillOnce(Return(1)); + EXPECT_CALL(frame_reader_mock_, NumberOfFrames()).WillRepeatedly(Return(1)); EXPECT_CALL(frame_reader_mock_, FrameLength()).WillOnce(Return(152064)); } }; @@ -72,7 +72,7 @@ TEST_F(VideoProcessorTest, Init) { &packet_manipulator_mock_, config_, &stats_, nullptr /* source_frame_writer */, nullptr /* encoded_frame_writer */, nullptr /* decoded_frame_writer */); - ASSERT_TRUE(video_processor.Init()); + video_processor.Init(); } TEST_F(VideoProcessorTest, ProcessFrame) { @@ -87,7 +87,7 @@ TEST_F(VideoProcessorTest, ProcessFrame) { &packet_manipulator_mock_, config_, &stats_, nullptr /* source_frame_writer */, nullptr /* encoded_frame_writer */, nullptr /* decoded_frame_writer */); - ASSERT_TRUE(video_processor.Init()); + video_processor.Init(); video_processor.ProcessFrame(0); }