From 21a5d449b7d8f2ef447daaba20f90a0aa90f6113 Mon Sep 17 00:00:00 2001 From: "wu@webrtc.org" Date: Thu, 29 May 2014 19:43:26 +0000 Subject: [PATCH] Increase VPMVideoDecimator's initial max_frame_rate_ to 60, which allow us potentially do 60fps. BUG= R=stefan@webrtc.org Review URL: https://webrtc-codereview.appspot.com/21499006 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6274 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../main/test/quality_modes_test.cc | 1 - .../main/interface/video_processing.h | 8 ----- .../main/source/frame_preprocessor.cc | 11 +------ .../main/source/frame_preprocessor.h | 4 --- .../main/source/video_decimator.cc | 31 ++----------------- .../main/source/video_decimator.h | 4 +-- .../main/source/video_processing_impl.cc | 5 --- .../main/source/video_processing_impl.h | 3 -- .../unit_test/video_processing_unittest.cc | 2 -- 9 files changed, 5 insertions(+), 64 deletions(-) diff --git a/webrtc/modules/video_coding/main/test/quality_modes_test.cc b/webrtc/modules/video_coding/main/test/quality_modes_test.cc index 385f197246..d488fa92bf 100644 --- a/webrtc/modules/video_coding/main/test/quality_modes_test.cc +++ b/webrtc/modules/video_coding/main/test/quality_modes_test.cc @@ -249,7 +249,6 @@ QualityModesTest::Perform(const CmdArgs& args) VideoContentMetrics* contentMetrics = NULL; // setting user frame rate - _vpm->SetMaxFramerate((uint32_t)(_nativeFrameRate+ 0.5f)); // for starters: keeping native values: _vpm->SetTargetResolution(_width, _height, (uint32_t)(_frameRate+ 0.5f)); diff --git a/webrtc/modules/video_processing/main/interface/video_processing.h b/webrtc/modules/video_processing/main/interface/video_processing.h index b3e0483d06..817d43d9bd 100644 --- a/webrtc/modules/video_processing/main/interface/video_processing.h +++ b/webrtc/modules/video_processing/main/interface/video_processing.h @@ -235,14 +235,6 @@ class VideoProcessingModule : public Module { uint32_t height, uint32_t frame_rate) = 0; - /** - Set max frame rate - \param[in] max_frame_rate: maximum frame rate (limited to native frame rate) - - \return VPM_OK on success, a negative value on error (see error codes) - */ - virtual int32_t SetMaxFramerate(uint32_t max_frame_rate) = 0; - /** Get decimated(target) frame rate */ diff --git a/webrtc/modules/video_processing/main/source/frame_preprocessor.cc b/webrtc/modules/video_processing/main/source/frame_preprocessor.cc index 8050f7049f..e1cd04ff71 100644 --- a/webrtc/modules/video_processing/main/source/frame_preprocessor.cc +++ b/webrtc/modules/video_processing/main/source/frame_preprocessor.cc @@ -15,7 +15,6 @@ namespace webrtc { VPMFramePreprocessor::VPMFramePreprocessor() : id_(0), content_metrics_(NULL), - max_frame_rate_(0), resampled_frame_(), enable_ca_(false), frame_cnt_(0) { @@ -59,14 +58,6 @@ void VPMFramePreprocessor::SetInputFrameResampleMode( spatial_resampler_->SetInputFrameResampleMode(resampling_mode); } -int32_t VPMFramePreprocessor::SetMaxFramerate(uint32_t max_frame_rate) { - if (max_frame_rate == 0) return VPM_PARAMETER_ERROR; - - // Max allowed frame_rate. - max_frame_rate_ = max_frame_rate; - return vd_->SetMaxFramerate(max_frame_rate); -} - int32_t VPMFramePreprocessor::SetTargetResolution( uint32_t width, uint32_t height, uint32_t frame_rate) { if ( (width == 0) || (height == 0) || (frame_rate == 0)) { @@ -77,7 +68,7 @@ int32_t VPMFramePreprocessor::SetTargetResolution( if (ret_val < 0) return ret_val; - ret_val = vd_->SetTargetframe_rate(frame_rate); + ret_val = vd_->SetTargetFramerate(frame_rate); if (ret_val < 0) return ret_val; return VPM_OK; diff --git a/webrtc/modules/video_processing/main/source/frame_preprocessor.h b/webrtc/modules/video_processing/main/source/frame_preprocessor.h index ca62d38fc6..64a5797b9b 100644 --- a/webrtc/modules/video_processing/main/source/frame_preprocessor.h +++ b/webrtc/modules/video_processing/main/source/frame_preprocessor.h @@ -39,9 +39,6 @@ class VPMFramePreprocessor { // Enable content analysis. void EnableContentAnalysis(bool enable); - // Set max frame rate. - int32_t SetMaxFramerate(uint32_t max_frame_rate); - // Set target resolution: frame rate and dimension. int32_t SetTargetResolution(uint32_t width, uint32_t height, uint32_t frame_rate); @@ -68,7 +65,6 @@ class VPMFramePreprocessor { int32_t id_; VideoContentMetrics* content_metrics_; - uint32_t max_frame_rate_; I420VideoFrame resampled_frame_; VPMSpatialResampler* spatial_resampler_; VPMContentAnalysis* ca_; diff --git a/webrtc/modules/video_processing/main/source/video_decimator.cc b/webrtc/modules/video_processing/main/source/video_decimator.cc index 8fd3d03691..bf05bd7154 100644 --- a/webrtc/modules/video_processing/main/source/video_decimator.cc +++ b/webrtc/modules/video_processing/main/source/video_decimator.cc @@ -16,15 +16,7 @@ namespace webrtc { -VPMVideoDecimator::VPMVideoDecimator() - : overshoot_modifier_(0), - drop_count_(0), - keep_count_(0), - target_frame_rate_(30), - incoming_frame_rate_(0.0f), - max_frame_rate_(30), - incoming_frame_times_(), - enable_temporal_decimation_(true) { +VPMVideoDecimator::VPMVideoDecimator() { Reset(); } @@ -36,7 +28,6 @@ void VPMVideoDecimator::Reset() { keep_count_ = 0; target_frame_rate_ = 30; incoming_frame_rate_ = 0.0f; - max_frame_rate_ = 30; memset(incoming_frame_times_, 0, sizeof(incoming_frame_times_)); enable_temporal_decimation_ = true; } @@ -45,26 +36,10 @@ void VPMVideoDecimator::EnableTemporalDecimation(bool enable) { enable_temporal_decimation_ = enable; } -int32_t VPMVideoDecimator::SetMaxFramerate(uint32_t max_frame_rate) { - if (max_frame_rate == 0) return VPM_PARAMETER_ERROR; - - max_frame_rate_ = max_frame_rate; - - if (target_frame_rate_ > max_frame_rate_) - target_frame_rate_ = max_frame_rate_; - - return VPM_OK; -} - -int32_t VPMVideoDecimator::SetTargetframe_rate(uint32_t frame_rate) { +int32_t VPMVideoDecimator::SetTargetFramerate(uint32_t frame_rate) { if (frame_rate == 0) return VPM_PARAMETER_ERROR; - if (frame_rate > max_frame_rate_) { - // Override. - target_frame_rate_ = max_frame_rate_; - } else { - target_frame_rate_ = frame_rate; - } + target_frame_rate_ = frame_rate; return VPM_OK; } diff --git a/webrtc/modules/video_processing/main/source/video_decimator.h b/webrtc/modules/video_processing/main/source/video_decimator.h index d17da61880..fca74aeae1 100644 --- a/webrtc/modules/video_processing/main/source/video_decimator.h +++ b/webrtc/modules/video_processing/main/source/video_decimator.h @@ -25,8 +25,7 @@ class VPMVideoDecimator { void EnableTemporalDecimation(bool enable); - int32_t SetMaxFramerate(uint32_t max_frame_rate); - int32_t SetTargetframe_rate(uint32_t frame_rate); + int32_t SetTargetFramerate(uint32_t frame_rate); bool DropFrame(); @@ -50,7 +49,6 @@ class VPMVideoDecimator { uint32_t keep_count_; uint32_t target_frame_rate_; float incoming_frame_rate_; - uint32_t max_frame_rate_; int64_t incoming_frame_times_[kFrameCountHistory_size]; bool enable_temporal_decimation_; }; diff --git a/webrtc/modules/video_processing/main/source/video_processing_impl.cc b/webrtc/modules/video_processing/main/source/video_processing_impl.cc index 999227ea23..3560030c86 100644 --- a/webrtc/modules/video_processing/main/source/video_processing_impl.cc +++ b/webrtc/modules/video_processing/main/source/video_processing_impl.cc @@ -171,11 +171,6 @@ void VideoProcessingModuleImpl::SetInputFrameResampleMode(VideoFrameResampling frame_pre_processor_.SetInputFrameResampleMode(resampling_mode); } -int32_t VideoProcessingModuleImpl::SetMaxFramerate(uint32_t max_frame_rate) { - CriticalSectionScoped cs(&mutex_); - return frame_pre_processor_.SetMaxFramerate(max_frame_rate); -} - int32_t VideoProcessingModuleImpl::SetTargetResolution(uint32_t width, uint32_t height, uint32_t frame_rate) { diff --git a/webrtc/modules/video_processing/main/source/video_processing_impl.h b/webrtc/modules/video_processing/main/source/video_processing_impl.h index 913bb64836..deae6ff657 100644 --- a/webrtc/modules/video_processing/main/source/video_processing_impl.h +++ b/webrtc/modules/video_processing/main/source/video_processing_impl.h @@ -51,9 +51,6 @@ class VideoProcessingModuleImpl : public VideoProcessingModule { // Enable content analysis virtual void EnableContentAnalysis(bool enable); - // Set max frame rate - virtual int32_t SetMaxFramerate(uint32_t max_frame_rate); - // Set Target Resolution: frame rate and dimension virtual int32_t SetTargetResolution(uint32_t width, uint32_t height, diff --git a/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc b/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc index 9d70e67a12..973552c805 100644 --- a/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc +++ b/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc @@ -118,7 +118,6 @@ TEST_F(VideoProcessingModuleTest, HandleBadSize) { EXPECT_EQ(-3, vpm_->BrightnessDetection(video_frame_, stats)); EXPECT_EQ(VPM_PARAMETER_ERROR, vpm_->SetTargetResolution(0,0,0)); - EXPECT_EQ(VPM_PARAMETER_ERROR, vpm_->SetMaxFramerate(0)); I420VideoFrame *out_frame = NULL; EXPECT_EQ(VPM_PARAMETER_ERROR, vpm_->PreprocessFrame(video_frame_, @@ -200,7 +199,6 @@ TEST_F(VideoProcessingModuleTest, PreprocessorLogic) { // Disable temporal sampling (frame dropping). vpm_->EnableTemporalDecimation(false); int resolution = 100; - EXPECT_EQ(VPM_OK, vpm_->SetMaxFramerate(30)); EXPECT_EQ(VPM_OK, vpm_->SetTargetResolution(resolution, resolution, 15)); EXPECT_EQ(VPM_OK, vpm_->SetTargetResolution(resolution, resolution, 30)); // Disable spatial sampling.