Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(876)

Unified Diff: webrtc/modules/video_capture/test/video_capture_unittest.cc

Issue 2534553002: Replace VideoCaptureDataCallback by VideoSinkInterface. (Closed)
Patch Set: Break overlong lines. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/video_capture/objc/video_capture.mm ('k') | webrtc/modules/video_capture/video_capture.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/video_capture/test/video_capture_unittest.cc
diff --git a/webrtc/modules/video_capture/test/video_capture_unittest.cc b/webrtc/modules/video_capture/test/video_capture_unittest.cc
index 0f9f0aea41604c04578890a78b99aa7285f889d7..169848867fcc187c21cfff2c7bd07ae4f838a580 100644
--- a/webrtc/modules/video_capture/test/video_capture_unittest.cc
+++ b/webrtc/modules/video_capture/test/video_capture_unittest.cc
@@ -29,11 +29,8 @@
using webrtc::CriticalSectionWrapper;
using webrtc::CriticalSectionScoped;
using webrtc::SleepMs;
-using webrtc::VideoCaptureAlarm;
using webrtc::VideoCaptureCapability;
-using webrtc::VideoCaptureDataCallback;
using webrtc::VideoCaptureFactory;
-using webrtc::VideoCaptureFeedBack;
using webrtc::VideoCaptureModule;
@@ -60,11 +57,11 @@ static const int kTestHeight = 288;
static const int kTestWidth = 352;
static const int kTestFramerate = 30;
-class TestVideoCaptureCallback : public VideoCaptureDataCallback {
+class TestVideoCaptureCallback
+ : public rtc::VideoSinkInterface<webrtc::VideoFrame> {
public:
TestVideoCaptureCallback()
: capture_cs_(CriticalSectionWrapper::CreateCriticalSection()),
- capture_delay_(-1),
last_render_time_ms_(0),
incoming_frames_(0),
timing_warnings_(0),
@@ -75,8 +72,7 @@ class TestVideoCaptureCallback : public VideoCaptureDataCallback {
printf("No of timing warnings %d\n", timing_warnings_);
}
- virtual void OnIncomingCapturedFrame(const int32_t id,
- const webrtc::VideoFrame& videoFrame) {
+ void OnFrame(const webrtc::VideoFrame& videoFrame) override {
CriticalSectionScoped cs(capture_cs_.get());
int height = videoFrame.height();
int width = videoFrame.width();
@@ -109,28 +105,17 @@ class TestVideoCaptureCallback : public VideoCaptureDataCallback {
last_frame_ = videoFrame.video_frame_buffer();
}
- virtual void OnCaptureDelayChanged(const int32_t id,
- const int32_t delay) {
- CriticalSectionScoped cs(capture_cs_.get());
- capture_delay_ = delay;
- }
-
void SetExpectedCapability(VideoCaptureCapability capability) {
CriticalSectionScoped cs(capture_cs_.get());
capability_= capability;
incoming_frames_ = 0;
last_render_time_ms_ = 0;
- capture_delay_ = -1;
}
int incoming_frames() {
CriticalSectionScoped cs(capture_cs_.get());
return incoming_frames_;
}
- int capture_delay() {
- CriticalSectionScoped cs(capture_cs_.get());
- return capture_delay_;
- }
int timing_warnings() {
CriticalSectionScoped cs(capture_cs_.get());
return timing_warnings_;
@@ -154,7 +139,6 @@ class TestVideoCaptureCallback : public VideoCaptureDataCallback {
private:
std::unique_ptr<CriticalSectionWrapper> capture_cs_;
VideoCaptureCapability capability_;
- int capture_delay_;
int64_t last_render_time_ms_;
int incoming_frames_;
int timing_warnings_;
@@ -162,47 +146,12 @@ class TestVideoCaptureCallback : public VideoCaptureDataCallback {
webrtc::VideoRotation rotate_frame_;
};
-class TestVideoCaptureFeedBack : public VideoCaptureFeedBack {
- public:
- TestVideoCaptureFeedBack() :
- capture_cs_(CriticalSectionWrapper::CreateCriticalSection()),
- frame_rate_(0),
- alarm_(webrtc::Cleared) {
- }
-
- virtual void OnCaptureFrameRate(const int32_t id,
- const uint32_t frameRate) {
- CriticalSectionScoped cs(capture_cs_.get());
- frame_rate_ = frameRate;
- }
-
- virtual void OnNoPictureAlarm(const int32_t id,
- const VideoCaptureAlarm reported_alarm) {
- CriticalSectionScoped cs(capture_cs_.get());
- alarm_ = reported_alarm;
- }
- int frame_rate() {
- CriticalSectionScoped cs(capture_cs_.get());
- return frame_rate_;
-
- }
- VideoCaptureAlarm alarm() {
- CriticalSectionScoped cs(capture_cs_.get());
- return alarm_;
- }
-
- private:
- std::unique_ptr<CriticalSectionWrapper> capture_cs_;
- unsigned int frame_rate_;
- VideoCaptureAlarm alarm_;
-};
-
class VideoCaptureTest : public testing::Test {
public:
VideoCaptureTest() : number_of_devices_(0) {}
void SetUp() {
- device_info_.reset(VideoCaptureFactory::CreateDeviceInfo(0));
+ device_info_.reset(VideoCaptureFactory::CreateDeviceInfo());
assert(device_info_.get());
number_of_devices_ = device_info_->NumberOfDevices();
ASSERT_GT(number_of_devices_, 0u);
@@ -210,7 +159,7 @@ class VideoCaptureTest : public testing::Test {
rtc::scoped_refptr<VideoCaptureModule> OpenVideoCaptureDevice(
unsigned int device,
- VideoCaptureDataCallback* callback) {
+ rtc::VideoSinkInterface<webrtc::VideoFrame>* callback) {
char device_name[256];
char unique_name[256];
@@ -218,13 +167,13 @@ class VideoCaptureTest : public testing::Test {
device, device_name, 256, unique_name, 256));
rtc::scoped_refptr<VideoCaptureModule> module(
- VideoCaptureFactory::Create(device, unique_name));
+ VideoCaptureFactory::Create(unique_name));
if (module.get() == NULL)
return NULL;
EXPECT_FALSE(module->CaptureStarted());
- module->RegisterCaptureDataCallback(*callback);
+ module->RegisterCaptureDataCallback(callback);
return module;
}
@@ -276,8 +225,6 @@ TEST_F(VideoCaptureTest, MAYBE_CreateDelete) {
// Make sure 5 frames are captured.
EXPECT_TRUE_WAIT(capture_observer.incoming_frames() >= 5, kTimeOut);
- EXPECT_GE(capture_observer.capture_delay(), 0);
-
int64_t stop_time = rtc::TimeMillis();
EXPECT_EQ(0, module->StopCapture());
EXPECT_FALSE(module->CaptureStarted());
@@ -408,10 +355,7 @@ TEST_F(VideoCaptureTest, DISABLED_TestTwoCameras) {
class VideoCaptureExternalTest : public testing::Test {
public:
void SetUp() {
- capture_module_ = VideoCaptureFactory::Create(0, capture_input_interface_);
- process_module_ = webrtc::ProcessThread::Create("ProcessThread");
- process_module_->Start();
- process_module_->RegisterModule(capture_module_);
+ capture_module_ = VideoCaptureFactory::Create(capture_input_interface_);
VideoCaptureCapability capability;
capability.width = kTestWidth;
@@ -434,22 +378,16 @@ class VideoCaptureExternalTest : public testing::Test {
SleepMs(1); // Wait 1ms so that two tests can't have the same timestamp.
- capture_module_->RegisterCaptureDataCallback(capture_callback_);
- capture_module_->RegisterCaptureCallback(capture_feedback_);
- capture_module_->EnableFrameRateCallback(true);
- capture_module_->EnableNoPictureAlarm(true);
+ capture_module_->RegisterCaptureDataCallback(&capture_callback_);
}
void TearDown() {
- process_module_->Stop();
}
webrtc::VideoCaptureExternal* capture_input_interface_;
rtc::scoped_refptr<VideoCaptureModule> capture_module_;
- std::unique_ptr<webrtc::ProcessThread> process_module_;
std::unique_ptr<webrtc::VideoFrame> test_frame_;
TestVideoCaptureCallback capture_callback_;
- TestVideoCaptureFeedBack capture_feedback_;
};
// Test input of external video frames.
@@ -464,51 +402,6 @@ TEST_F(VideoCaptureExternalTest, TestExternalCapture) {
EXPECT_TRUE(capture_callback_.CompareLastFrame(*test_frame_));
}
-// Test frame rate and no picture alarm.
-// Flaky on Win32, see webrtc:3270.
-#if defined(WEBRTC_WIN) || defined(WEBRTC_MAC)
-#define MAYBE_FrameRate DISABLED_FrameRate
-#else
-#define MAYBE_FrameRate FrameRate
-#endif
-TEST_F(VideoCaptureExternalTest, MAYBE_FrameRate) {
- int64_t testTime = 3 * rtc::kNumNanosecsPerSec;
- int64_t startTime = rtc::TimeNanos();
-
- while ((rtc::TimeNanos() - startTime) < testTime) {
- size_t length = webrtc::CalcBufferSize(webrtc::kI420,
- test_frame_->width(),
- test_frame_->height());
- std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]);
- webrtc::ExtractBuffer(*test_frame_, length, test_buffer.get());
- EXPECT_EQ(
- 0, capture_input_interface_->IncomingFrame(
- test_buffer.get(), length, capture_callback_.capability(), 0));
- SleepMs(100);
- }
- EXPECT_TRUE(capture_feedback_.frame_rate() >= 8 &&
- capture_feedback_.frame_rate() <= 10);
- SleepMs(500);
- EXPECT_EQ(webrtc::Raised, capture_feedback_.alarm());
-
- startTime = rtc::TimeNanos();
- while ((rtc::TimeNanos() - startTime) < testTime) {
- size_t length = webrtc::CalcBufferSize(webrtc::kI420,
- test_frame_->width(),
- test_frame_->height());
- std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]);
- webrtc::ExtractBuffer(*test_frame_, length, test_buffer.get());
- EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
- length, capture_callback_.capability(), 0));
- SleepMs(1000 / 30);
- }
- EXPECT_EQ(webrtc::Cleared, capture_feedback_.alarm());
- // Frame rate might be less than 33 since we have paused providing
- // frames for a while.
- EXPECT_TRUE(capture_feedback_.frame_rate() >= 25 &&
- capture_feedback_.frame_rate() <= 33);
-}
-
TEST_F(VideoCaptureExternalTest, Rotation) {
EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_0));
size_t length = webrtc::CalcBufferSize(webrtc::kI420,
« no previous file with comments | « webrtc/modules/video_capture/objc/video_capture.mm ('k') | webrtc/modules/video_capture/video_capture.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698