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 "webrtc/common_video/test/frame_generator.h"
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
|
#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
|
||||||
|
|
||||||
@ -17,6 +19,34 @@ namespace webrtc {
|
|||||||
namespace test {
|
namespace test {
|
||||||
namespace {
|
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 {
|
class YuvFileGenerator : public FrameGenerator {
|
||||||
public:
|
public:
|
||||||
YuvFileGenerator(FILE* file, size_t width, size_t height)
|
YuvFileGenerator(FILE* file, size_t width, size_t height)
|
||||||
@ -68,6 +98,10 @@ class YuvFileGenerator : public FrameGenerator {
|
|||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
FrameGenerator* FrameGenerator::Create(size_t width, size_t height) {
|
||||||
|
return new ChromaGenerator(width, height);
|
||||||
|
}
|
||||||
|
|
||||||
FrameGenerator* FrameGenerator::CreateFromYuvFile(const char* file,
|
FrameGenerator* FrameGenerator::CreateFromYuvFile(const char* file,
|
||||||
size_t width,
|
size_t width,
|
||||||
size_t height) {
|
size_t height) {
|
||||||
|
@ -24,6 +24,7 @@ class FrameGenerator {
|
|||||||
// Returns video frame that remains valid until next call.
|
// Returns video frame that remains valid until next call.
|
||||||
virtual I420VideoFrame& NextFrame() = 0;
|
virtual I420VideoFrame& NextFrame() = 0;
|
||||||
|
|
||||||
|
static FrameGenerator* Create(size_t width, size_t height);
|
||||||
static FrameGenerator* CreateFromYuvFile(const char* file,
|
static FrameGenerator* CreateFromYuvFile(const char* file,
|
||||||
size_t width,
|
size_t width,
|
||||||
size_t height);
|
size_t height);
|
||||||
|
@ -10,9 +10,6 @@
|
|||||||
|
|
||||||
#include "webrtc/video_engine/test/common/frame_generator_capturer.h"
|
#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/common_video/test/frame_generator.h"
|
||||||
#include "webrtc/system_wrappers/interface/clock.h"
|
#include "webrtc/system_wrappers/interface/clock.h"
|
||||||
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
|
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
|
||||||
@ -23,36 +20,6 @@
|
|||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
namespace test {
|
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(
|
FrameGeneratorCapturer* FrameGeneratorCapturer::Create(
|
||||||
VideoSendStreamInput* input,
|
VideoSendStreamInput* input,
|
||||||
@ -61,7 +28,7 @@ FrameGeneratorCapturer* FrameGeneratorCapturer::Create(
|
|||||||
int target_fps,
|
int target_fps,
|
||||||
Clock* clock) {
|
Clock* clock) {
|
||||||
FrameGeneratorCapturer* capturer = new FrameGeneratorCapturer(
|
FrameGeneratorCapturer* capturer = new FrameGeneratorCapturer(
|
||||||
clock, input, new ChromaGenerator(width, height, clock), target_fps);
|
clock, input, FrameGenerator::Create(width, height), target_fps);
|
||||||
if (!capturer->Init()) {
|
if (!capturer->Init()) {
|
||||||
delete capturer;
|
delete capturer;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user