From 266c7b330a62b4e5d5c3242beb68113b01bd5fb3 Mon Sep 17 00:00:00 2001 From: "pbos@webrtc.org" Date: Tue, 15 Oct 2013 09:15:47 +0000 Subject: [PATCH] Move ChromaGenerator to common_video/. BUG= R=stefan@webrtc.org Review URL: https://webrtc-codereview.appspot.com/2394004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@4964 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/common_video/test/frame_generator.cc | 34 ++++++++++++++++++ webrtc/common_video/test/frame_generator.h | 1 + .../test/common/frame_generator_capturer.cc | 35 +------------------ 3 files changed, 36 insertions(+), 34 deletions(-) diff --git a/webrtc/common_video/test/frame_generator.cc b/webrtc/common_video/test/frame_generator.cc index 2f93d7ab6..3b09b30eb 100644 --- a/webrtc/common_video/test/frame_generator.cc +++ b/webrtc/common_video/test/frame_generator.cc @@ -9,7 +9,9 @@ */ #include "webrtc/common_video/test/frame_generator.h" +#include #include +#include #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" @@ -17,6 +19,34 @@ namespace webrtc { namespace test { namespace { +class ChromaGenerator : public FrameGenerator { + public: + ChromaGenerator(size_t width, size_t height) : angle_(0.0) { + assert(width > 0); + assert(height > 0); + frame_.CreateEmptyFrame(static_cast(width), + static_cast(height), + static_cast(width), + static_cast((width + 1) / 2), + static_cast((width + 1) / 2)); + memset(frame_.buffer(kYPlane), 0x80, frame_.allocated_size(kYPlane)); + } + + virtual I420VideoFrame& NextFrame() OVERRIDE { + angle_ += 30.0; + uint8_t u = fabs(sin(angle_)) * 0xFF; + uint8_t v = fabs(cos(angle_)) * 0xFF; + + memset(frame_.buffer(kUPlane), u, frame_.allocated_size(kUPlane)); + memset(frame_.buffer(kVPlane), v, frame_.allocated_size(kVPlane)); + return frame_; + } + + private: + double angle_; + I420VideoFrame frame_; +}; + class YuvFileGenerator : public FrameGenerator { public: YuvFileGenerator(FILE* file, size_t width, size_t height) @@ -68,6 +98,10 @@ class YuvFileGenerator : public FrameGenerator { }; } // namespace +FrameGenerator* FrameGenerator::Create(size_t width, size_t height) { + return new ChromaGenerator(width, height); +} + FrameGenerator* FrameGenerator::CreateFromYuvFile(const char* file, size_t width, size_t height) { diff --git a/webrtc/common_video/test/frame_generator.h b/webrtc/common_video/test/frame_generator.h index 193ad480f..823370091 100644 --- a/webrtc/common_video/test/frame_generator.h +++ b/webrtc/common_video/test/frame_generator.h @@ -24,6 +24,7 @@ class FrameGenerator { // Returns video frame that remains valid until next call. virtual I420VideoFrame& NextFrame() = 0; + static FrameGenerator* Create(size_t width, size_t height); static FrameGenerator* CreateFromYuvFile(const char* file, size_t width, size_t height); diff --git a/webrtc/video_engine/test/common/frame_generator_capturer.cc b/webrtc/video_engine/test/common/frame_generator_capturer.cc index 96a7af86a..3482afe1b 100644 --- a/webrtc/video_engine/test/common/frame_generator_capturer.cc +++ b/webrtc/video_engine/test/common/frame_generator_capturer.cc @@ -10,9 +10,6 @@ #include "webrtc/video_engine/test/common/frame_generator_capturer.h" -#include -#include - #include "webrtc/common_video/test/frame_generator.h" #include "webrtc/system_wrappers/interface/clock.h" #include "webrtc/system_wrappers/interface/critical_section_wrapper.h" @@ -23,36 +20,6 @@ namespace webrtc { namespace test { -namespace { -class ChromaGenerator : public FrameGenerator { - public: - ChromaGenerator(size_t width, size_t height, Clock* clock) : clock_(clock) { - assert(width > 0); - assert(height > 0); - frame_.CreateEmptyFrame(static_cast(width), - static_cast(height), - static_cast(width), - static_cast((width + 1) / 2), - static_cast((width + 1) / 2)); - memset(frame_.buffer(kYPlane), 0x80, frame_.allocated_size(kYPlane)); - } - - virtual I420VideoFrame& NextFrame() OVERRIDE { - double angle = - static_cast(clock_->CurrentNtpInMilliseconds()) / 1000.0; - uint8_t u = fabs(sin(angle)) * 0xFF; - uint8_t v = fabs(cos(angle)) * 0xFF; - - memset(frame_.buffer(kUPlane), u, frame_.allocated_size(kUPlane)); - memset(frame_.buffer(kVPlane), v, frame_.allocated_size(kVPlane)); - return frame_; - } - - private: - Clock* clock_; - I420VideoFrame frame_; -}; -} // namespace FrameGeneratorCapturer* FrameGeneratorCapturer::Create( VideoSendStreamInput* input, @@ -61,7 +28,7 @@ FrameGeneratorCapturer* FrameGeneratorCapturer::Create( int target_fps, Clock* clock) { FrameGeneratorCapturer* capturer = new FrameGeneratorCapturer( - clock, input, new ChromaGenerator(width, height, clock), target_fps); + clock, input, FrameGenerator::Create(width, height), target_fps); if (!capturer->Init()) { delete capturer; return NULL;