Chromium Code Reviews| Index: webrtc/api/videocapturertracksource.h |
| diff --git a/webrtc/api/videocapturertracksource.h b/webrtc/api/videocapturertracksource.h |
| index 15f8bf137ed60734bb8474a60a23aab2eaeb81f1..f086d793e74be98f15151b111bf63726a93ffdf2 100644 |
| --- a/webrtc/api/videocapturertracksource.h |
| +++ b/webrtc/api/videocapturertracksource.h |
| @@ -11,7 +11,88 @@ |
| #ifndef WEBRTC_API_VIDEOCAPTURERTRACKSOURCE_H_ |
| #define WEBRTC_API_VIDEOCAPTURERTRACKSOURCE_H_ |
| -// TODO(perkj): This file is added to prepare for changing name of VideoSource |
| -// to VideoCapturerTrackSource. |
| +#include <list> |
| -#endif // WEBRTC_API_VIDEOCAPTURERTRACKSOURCE_H_ |
| +#include "webrtc/api/mediastreaminterface.h" |
| +#include "webrtc/api/notifier.h" |
| +#include "webrtc/api/videosourceinterface.h" |
| +#include "webrtc/api/videotrackrenderers.h" |
| +#include "webrtc/base/asyncinvoker.h" |
| +#include "webrtc/base/scoped_ptr.h" |
| +#include "webrtc/base/sigslot.h" |
| +#include "webrtc/media/base/videosinkinterface.h" |
| +#include "webrtc/media/base/videocapturer.h" |
| +#include "webrtc/media/base/videocommon.h" |
| + |
| +// VideoCapturerTrackSource implements VideoTrackSourceInterface. It owns a |
| +// cricket::VideoCapturer and make sure the camera is started at a resolution |
| +// that honors the constraints. |
|
pthatcher1
2016/03/09 20:47:14
make sure => make sure
|
| +// The state is set depending on the result of starting the capturer. |
| +// If the constraint can't be met or the capturer fails to start, the state |
| +// transition to kEnded, otherwise it transitions to kLive. |
| +namespace webrtc { |
| + |
| +class MediaConstraintsInterface; |
| + |
| +class VideoCapturerTrackSource : public Notifier<VideoTrackSourceInterface>, |
| + public sigslot::has_slots<> { |
| + public: |
| + // Creates an instance of VideoCapturerTrackSource. |
| + // VideoCapturerTrackSource take ownership of |capturer|. |
| + // |constraints| can be NULL and in that case the camera is opened using a |
| + // default resolution. |
| + static rtc::scoped_refptr<VideoTrackSourceInterface> Create( |
| + rtc::Thread* worker_thread, |
| + cricket::VideoCapturer* capturer, |
| + const webrtc::MediaConstraintsInterface* constraints, |
| + bool remote); |
| + |
| + static rtc::scoped_refptr<VideoTrackSourceInterface> Create( |
| + rtc::Thread* worker_thread, |
| + cricket::VideoCapturer* capturer, |
| + bool remote); |
| + |
| + SourceState state() const override { return state_; } |
| + bool remote() const override { return remote_; } |
| + |
| + virtual const cricket::VideoOptions* options() const { return &options_; } |
| + |
| + virtual cricket::VideoCapturer* GetVideoCapturer() { |
| + return video_capturer_.get(); |
| + } |
| + |
| + void Stop() override; |
| + void Restart() override; |
| + |
| + void AddOrUpdateSink(rtc::VideoSinkInterface<cricket::VideoFrame>* sink, |
| + const rtc::VideoSinkWants& wants) override; |
| + void RemoveSink(rtc::VideoSinkInterface<cricket::VideoFrame>* sink) override; |
| + |
| + protected: |
| + VideoCapturerTrackSource(rtc::Thread* worker_thread, |
| + cricket::VideoCapturer* capturer, |
| + bool remote); |
| + virtual ~VideoCapturerTrackSource(); |
| + void Initialize(const webrtc::MediaConstraintsInterface* constraints); |
| + |
| + private: |
| + void OnStateChange(cricket::VideoCapturer* capturer, |
| + cricket::CaptureState capture_state); |
| + void SetState(SourceState new_state); |
| + |
| + rtc::Thread* signaling_thread_; |
| + rtc::Thread* worker_thread_; |
| + rtc::AsyncInvoker invoker_; |
| + rtc::scoped_ptr<cricket::VideoCapturer> video_capturer_; |
| + bool started_; |
| + rtc::scoped_ptr<cricket::VideoRenderer> frame_input_; |
| + |
| + cricket::VideoFormat format_; |
| + cricket::VideoOptions options_; |
| + SourceState state_; |
| + const bool remote_; |
| +}; |
| + |
| +} // namespace webrtc |
| + |
| +#endif // WEBRTC_API_VIDEOCAPTURERTRACKSOURCE_H_ |