diff options
Diffstat (limited to 'chromium/content/renderer/pepper/pepper_platform_video_capture.h')
-rw-r--r-- | chromium/content/renderer/pepper/pepper_platform_video_capture.h | 72 |
1 files changed, 24 insertions, 48 deletions
diff --git a/chromium/content/renderer/pepper/pepper_platform_video_capture.h b/chromium/content/renderer/pepper/pepper_platform_video_capture.h index 609eaa34e11..e31b8c7d6a9 100644 --- a/chromium/content/renderer/pepper/pepper_platform_video_capture.h +++ b/chromium/content/renderer/pepper/pepper_platform_video_capture.h @@ -8,65 +8,43 @@ #include <string> #include "base/basictypes.h" +#include "base/callback.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" -#include "media/video/capture/video_capture.h" +#include "base/threading/thread_checker.h" +#include "base/time/time.h" +#include "content/common/media/video_capture.h" #include "media/video/capture/video_capture_types.h" class GURL; -namespace media { -class VideoCaptureHandlerProxy; -} - namespace content { class PepperMediaDeviceManager; class PepperVideoCaptureHost; class RenderViewImpl; -class PepperPlatformVideoCapture - : public media::VideoCapture, - public base::RefCounted<PepperPlatformVideoCapture>, - public media::VideoCapture::EventHandler { +// This object must only be used on the thread it's constructed on. +class PepperPlatformVideoCapture { public: - PepperPlatformVideoCapture( - const base::WeakPtr<RenderViewImpl>& render_view, - const std::string& device_id, - const GURL& document_url, - PepperVideoCaptureHost* handler); + PepperPlatformVideoCapture(const base::WeakPtr<RenderViewImpl>& render_view, + const std::string& device_id, + const GURL& document_url, + PepperVideoCaptureHost* handler); + virtual ~PepperPlatformVideoCapture(); // Detaches the event handler and stops sending notifications to it. void DetachEventHandler(); - // media::VideoCapture implementation. - virtual void StartCapture( - media::VideoCapture::EventHandler* handler, - const media::VideoCaptureParams& params) OVERRIDE; - virtual void StopCapture(media::VideoCapture::EventHandler* handler) OVERRIDE; - virtual bool CaptureStarted() OVERRIDE; - virtual int CaptureFrameRate() OVERRIDE; - - // media::VideoCapture::EventHandler implementation - virtual void OnStarted(VideoCapture* capture) OVERRIDE; - virtual void OnStopped(VideoCapture* capture) OVERRIDE; - virtual void OnPaused(VideoCapture* capture) OVERRIDE; - virtual void OnError(VideoCapture* capture, int error_code) OVERRIDE; - virtual void OnRemoved(VideoCapture* capture) OVERRIDE; - virtual void OnFrameReady( - VideoCapture* capture, - const scoped_refptr<media::VideoFrame>& frame) OVERRIDE; - - protected: - friend class base::RefCounted<PepperPlatformVideoCapture>; - virtual ~PepperPlatformVideoCapture(); + void StartCapture(const media::VideoCaptureParams& params); + void StopCapture(); private: - void Initialize(); - - void OnDeviceOpened(int request_id, - bool succeeded, - const std::string& label); + void OnDeviceOpened(int request_id, bool succeeded, const std::string& label); + void OnStateUpdate(VideoCaptureState state); + void OnFrameReady(const scoped_refptr<media::VideoFrame>& frame, + const media::VideoCaptureFormat& format, + const base::TimeTicks& estimated_capture_time); PepperMediaDeviceManager* GetMediaDeviceManager(); @@ -75,22 +53,20 @@ class PepperPlatformVideoCapture std::string device_id_; std::string label_; int session_id_; - - scoped_ptr<media::VideoCaptureHandlerProxy> handler_proxy_; + base::Closure release_device_cb_; + base::Closure stop_capture_cb_; PepperVideoCaptureHost* handler_; - media::VideoCapture* video_capture_; - - // StartCapture() must be balanced by StopCapture(), otherwise this object - // will leak. - bool unbalanced_start_; - // Whether we have a pending request to open a device. We have to make sure // there isn't any pending request before this object goes away. bool pending_open_device_; int pending_open_device_id_; + base::ThreadChecker thread_checker_; + + base::WeakPtrFactory<PepperPlatformVideoCapture> weak_factory_; + DISALLOW_COPY_AND_ASSIGN(PepperPlatformVideoCapture); }; |