summaryrefslogtreecommitdiffstats
path: root/chromium/content/renderer/pepper/pepper_platform_video_capture.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/renderer/pepper/pepper_platform_video_capture.h')
-rw-r--r--chromium/content/renderer/pepper/pepper_platform_video_capture.h72
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);
};