Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2818)

Unified Diff: content/renderer/pepper/pepper_platform_video_capture.h

Issue 263323003: Revert of Refactor video capturing code in the render process (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/pepper/pepper_platform_video_capture.h
diff --git a/content/renderer/pepper/pepper_platform_video_capture.h b/content/renderer/pepper/pepper_platform_video_capture.h
index 14d1ee681f98433e62588734942ed7163e984739..1d0b47c68ae554ad73c552358af0aa57938f77b5 100644
--- a/content/renderer/pepper/pepper_platform_video_capture.h
+++ b/content/renderer/pepper/pepper_platform_video_capture.h
@@ -8,41 +8,66 @@
#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 "base/threading/thread_checker.h"
-#include "content/common/media/video_capture.h"
+#include "media/video/capture/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 VideoCaptureHandle;
-// This object must only be used on the thread it's constructed on.
-class PepperPlatformVideoCapture {
+class PepperPlatformVideoCapture
+ : public media::VideoCapture,
+ public base::RefCounted<PepperPlatformVideoCapture>,
+ public media::VideoCapture::EventHandler {
public:
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();
- void StartCapture(const media::VideoCaptureParams& params);
- void StopCapture();
+ // 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;
+ virtual void GetDeviceSupportedFormats(const DeviceFormatsCallback& callback)
+ OVERRIDE;
+ virtual void GetDeviceFormatsInUse(const DeviceFormatsInUseCallback& callback)
+ 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();
private:
+ void Initialize();
+
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);
PepperMediaDeviceManager* GetMediaDeviceManager();
@@ -51,19 +76,21 @@
std::string device_id_;
std::string label_;
int session_id_;
- base::Closure release_device_cb_;
- base::Closure stop_capture_cb_;
+
+ scoped_ptr<media::VideoCaptureHandlerProxy> handler_proxy_;
PepperVideoCaptureHost* handler_;
+
+ scoped_ptr<VideoCaptureHandle> 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);
};
« no previous file with comments | « content/renderer/media/webrtc/video_destination_handler.cc ('k') | content/renderer/pepper/pepper_platform_video_capture.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698