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
This commit is contained in:
parent
c2e471d8b3
commit
266c7b330a
@ -9,7 +9,9 @@
|
||||
*/
|
||||
#include "webrtc/common_video/test/frame_generator.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#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<int>(width),
|
||||
static_cast<int>(height),
|
||||
static_cast<int>(width),
|
||||
static_cast<int>((width + 1) / 2),
|
||||
static_cast<int>((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) {
|
||||
|
@ -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);
|
||||
|
@ -10,9 +10,6 @@
|
||||
|
||||
#include "webrtc/video_engine/test/common/frame_generator_capturer.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
#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<int>(width),
|
||||
static_cast<int>(height),
|
||||
static_cast<int>(width),
|
||||
static_cast<int>((width + 1) / 2),
|
||||
static_cast<int>((width + 1) / 2));
|
||||
memset(frame_.buffer(kYPlane), 0x80, frame_.allocated_size(kYPlane));
|
||||
}
|
||||
|
||||
virtual I420VideoFrame& NextFrame() OVERRIDE {
|
||||
double angle =
|
||||
static_cast<double>(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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user