Chromium Code Reviews| Index: webrtc/test/frame_generator_capturer.cc |
| diff --git a/webrtc/test/frame_generator_capturer.cc b/webrtc/test/frame_generator_capturer.cc |
| index 95ac624c42188e567f6b3fd863ad1b9bb54379db..a7a67605eb3d6de3f86c9219019fd7f87bb5c966 100644 |
| --- a/webrtc/test/frame_generator_capturer.cc |
| +++ b/webrtc/test/frame_generator_capturer.cc |
| @@ -21,14 +21,12 @@ |
| namespace webrtc { |
| namespace test { |
| -FrameGeneratorCapturer* FrameGeneratorCapturer::Create(VideoCaptureInput* input, |
| - size_t width, |
| +FrameGeneratorCapturer* FrameGeneratorCapturer::Create(size_t width, |
| size_t height, |
| int target_fps, |
| Clock* clock) { |
| FrameGeneratorCapturer* capturer = new FrameGeneratorCapturer( |
| - clock, input, FrameGenerator::CreateChromaGenerator(width, height), |
| - target_fps); |
| + clock, FrameGenerator::CreateChromaGenerator(width, height), target_fps); |
| if (!capturer->Init()) { |
| delete capturer; |
| return NULL; |
| @@ -38,16 +36,14 @@ FrameGeneratorCapturer* FrameGeneratorCapturer::Create(VideoCaptureInput* input, |
| } |
| FrameGeneratorCapturer* FrameGeneratorCapturer::CreateFromYuvFile( |
| - VideoCaptureInput* input, |
| const std::string& file_name, |
| size_t width, |
| size_t height, |
| int target_fps, |
| Clock* clock) { |
| FrameGeneratorCapturer* capturer = new FrameGeneratorCapturer( |
| - clock, input, |
| - FrameGenerator::CreateFromYuvFile(std::vector<std::string>(1, file_name), |
| - width, height, 1), |
| + clock, FrameGenerator::CreateFromYuvFile( |
| + std::vector<std::string>(1, file_name), width, height, 1), |
| target_fps); |
| if (!capturer->Init()) { |
| delete capturer; |
| @@ -58,20 +54,18 @@ FrameGeneratorCapturer* FrameGeneratorCapturer::CreateFromYuvFile( |
| } |
| FrameGeneratorCapturer::FrameGeneratorCapturer(Clock* clock, |
| - VideoCaptureInput* input, |
| FrameGenerator* frame_generator, |
| int target_fps) |
| - : VideoCapturer(input), |
| - clock_(clock), |
| + : clock_(clock), |
| sending_(false), |
| + sink_(nullptr), |
| tick_(EventTimerWrapper::Create()), |
| thread_(FrameGeneratorCapturer::Run, this, "FrameGeneratorCapturer"), |
| frame_generator_(frame_generator), |
| target_fps_(target_fps), |
| first_frame_capture_time_(-1) { |
| - assert(input != NULL); |
| - assert(frame_generator != NULL); |
| - assert(target_fps > 0); |
| + RTC_DCHECK(frame_generator); |
| + RTC_DCHECK(target_fps > 0); |
|
sprang_webrtc
2016/09/02 07:19:31
RTC_DCHECK_GT
|
| } |
| FrameGeneratorCapturer::~FrameGeneratorCapturer() { |
| @@ -113,7 +107,8 @@ void FrameGeneratorCapturer::InsertFrame() { |
| if (first_frame_capture_time_ == -1) { |
| first_frame_capture_time_ = frame->ntp_time_ms(); |
| } |
| - input_->IncomingCapturedFrame(*frame); |
| + if (sink_) |
| + sink_->OnFrame(*frame); |
| } |
| } |
| tick_->Wait(WEBRTC_EVENT_INFINITE); |
| @@ -129,6 +124,21 @@ void FrameGeneratorCapturer::Stop() { |
| sending_ = false; |
| } |
| +void FrameGeneratorCapturer::AddOrUpdateSink( |
| + rtc::VideoSinkInterface<VideoFrame>* sink, |
| + const rtc::VideoSinkWants& wants) { |
| + rtc::CritScope cs(&lock_); |
| + RTC_CHECK(!sink_); |
| + sink_ = sink; |
| +} |
| + |
| +void FrameGeneratorCapturer::RemoveSink( |
| + rtc::VideoSinkInterface<VideoFrame>* sink) { |
| + rtc::CritScope cs(&lock_); |
| + RTC_CHECK(sink_); |
|
sprang_webrtc
2016/09/02 07:19:31
nit: for consistency, check sink_ == sink?
perkj_webrtc
2016/09/02 12:18:21
Done.
|
| + sink_ = nullptr; |
| +} |
| + |
| void FrameGeneratorCapturer::ForceFrame() { |
| tick_->Set(); |
| } |