Index: webrtc/api/videocapturertracksource.cc |
diff --git a/webrtc/api/videocapturertracksource.cc b/webrtc/api/videocapturertracksource.cc |
index c505e86bd5207481b18b892cc6496efa21cfdf4d..e292c7a065ce2dcb828d101df67a0188be5e7f3e 100644 |
--- a/webrtc/api/videocapturertracksource.cc |
+++ b/webrtc/api/videocapturertracksource.cc |
@@ -242,31 +242,16 @@ const cricket::VideoFormat& GetBestCaptureFormat( |
// Return false if the key is mandatory, and the value is invalid. |
bool ExtractOption(const MediaConstraintsInterface* all_constraints, |
const std::string& key, |
- rtc::Optional<bool>* option) { |
+ bool* option) { |
size_t mandatory = 0; |
- bool value; |
- if (FindConstraint(all_constraints, key, &value, &mandatory)) { |
- *option = rtc::Optional<bool>(value); |
+ *option = false; |
+ if (FindConstraint(all_constraints, key, option, &mandatory)) { |
return true; |
} |
return mandatory == 0; |
} |
-// Search |all_constraints| for known video options. Apply all options that are |
-// found with valid values, and return false if any mandatory video option was |
-// found with an invalid value. |
-bool ExtractVideoOptions(const MediaConstraintsInterface* all_constraints, |
- cricket::VideoOptions* options) { |
- bool all_valid = true; |
- |
- all_valid &= |
- ExtractOption(all_constraints, MediaConstraintsInterface::kNoiseReduction, |
- &(options->video_noise_reduction)); |
- |
- return all_valid; |
-} |
- |
} // anonymous namespace |
namespace webrtc { |
@@ -302,12 +287,11 @@ VideoCapturerTrackSource::VideoCapturerTrackSource( |
rtc::Thread* worker_thread, |
cricket::VideoCapturer* capturer, |
bool remote) |
- : signaling_thread_(rtc::Thread::Current()), |
- worker_thread_(worker_thread), |
+ : VideoTrackSource(capturer, worker_thread, remote), |
+ signaling_thread_(rtc::Thread::Current()), |
video_capturer_(capturer), |
started_(false), |
- state_(kInitializing), |
- remote_(remote) { |
+ needs_denoising_(false) { |
video_capturer_->SignalStateChange.connect( |
this, &VideoCapturerTrackSource::OnStateChange); |
} |
@@ -358,22 +342,17 @@ void VideoCapturerTrackSource::Initialize( |
return; |
} |
- cricket::VideoOptions options; |
- if (!ExtractVideoOptions(constraints, &options)) { |
- LOG(LS_WARNING) << "Could not satisfy mandatory options."; |
+ if (!ExtractOption(constraints, MediaConstraintsInterface::kNoiseReduction, |
+ &needs_denoising_)) { |
+ LOG(LS_WARNING) << "Invalid mandatory value for" |
+ << MediaConstraintsInterface::kNoiseReduction; |
SetState(kEnded); |
return; |
} |
- options_.SetAll(options); |
- options_.is_screencast = rtc::Optional<bool>(video_capturer_->IsScreencast()); |
format_ = GetBestCaptureFormat(formats); |
// Start the camera with our best guess. |
- // TODO(perkj): Should we try again with another format it it turns out that |
- // the camera doesn't produce frames with the correct format? Or will |
- // cricket::VideCapturer be able to re-scale / crop to the requested |
- // resolution? |
- if (!worker_thread_->Invoke<bool>( |
+ if (!worker_thread()->Invoke<bool>( |
rtc::Bind(&cricket::VideoCapturer::StartCapturing, |
video_capturer_.get(), format_))) { |
SetState(kEnded); |
@@ -388,7 +367,7 @@ void VideoCapturerTrackSource::Stop() { |
return; |
} |
started_ = false; |
- worker_thread_->Invoke<void>( |
+ worker_thread()->Invoke<void>( |
rtc::Bind(&cricket::VideoCapturer::Stop, video_capturer_.get())); |
} |
@@ -396,7 +375,7 @@ void VideoCapturerTrackSource::Restart() { |
if (started_) { |
return; |
} |
- if (!worker_thread_->Invoke<bool>( |
+ if (!worker_thread()->Invoke<bool>( |
rtc::Bind(&cricket::VideoCapturer::StartCapturing, |
video_capturer_.get(), format_))) { |
SetState(kEnded); |
@@ -405,20 +384,6 @@ void VideoCapturerTrackSource::Restart() { |
started_ = true; |
} |
-void VideoCapturerTrackSource::AddOrUpdateSink( |
- rtc::VideoSinkInterface<cricket::VideoFrame>* sink, |
- const rtc::VideoSinkWants& wants) { |
- worker_thread_->Invoke<void>( |
- rtc::Bind(&cricket::VideoCapturer::AddOrUpdateSink, video_capturer_.get(), |
- sink, wants)); |
-} |
- |
-void VideoCapturerTrackSource::RemoveSink( |
- rtc::VideoSinkInterface<cricket::VideoFrame>* output) { |
- worker_thread_->Invoke<void>(rtc::Bind(&cricket::VideoCapturer::RemoveSink, |
- video_capturer_.get(), output)); |
-} |
- |
// OnStateChange listens to the cricket::VideoCapturer::SignalStateChange. |
void VideoCapturerTrackSource::OnStateChange( |
cricket::VideoCapturer* capturer, |
@@ -435,11 +400,4 @@ void VideoCapturerTrackSource::OnStateChange( |
} |
} |
-void VideoCapturerTrackSource::SetState(SourceState new_state) { |
- if (state_ != new_state) { |
- state_ = new_state; |
- FireOnChanged(); |
- } |
-} |
- |
} // namespace webrtc |