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

Unified Diff: content/browser/renderer_host/media/video_capture_device_client.h

Issue 1016773002: MJPEG acceleration for video capture using VAAPI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address most comments Created 5 years, 8 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/browser/renderer_host/media/video_capture_device_client.h
diff --git a/content/browser/renderer_host/media/video_capture_device_client.h b/content/browser/renderer_host/media/video_capture_device_client.h
index 7da95da8e75174d4440a68122547119bed32c8d0..2201fe1d7fef2022b06ca6df766b18a914764cec 100644
--- a/content/browser/renderer_host/media/video_capture_device_client.h
+++ b/content/browser/renderer_host/media/video_capture_device_client.h
@@ -10,8 +10,11 @@
#include "base/memory/weak_ptr.h"
#include "content/common/content_export.h"
#include "media/video/capture/video_capture_device.h"
+#include "media/video/jpeg_decode_accelerator.h"
namespace content {
+class CapturedData;
+class JpegDecodeData;
class VideoCaptureBufferPool;
class VideoCaptureController;
@@ -20,12 +23,13 @@ class VideoCaptureController;
// VideoCaptureController. This is a shallow class meant to convert incoming
// frames and holds no significant state.
//
-// Methods of this class may be called from any thread, and in practice will
-// often be called on some auxiliary thread depending on the platform and the
-// device type; including, for example, the DirectShow thread on Windows, the
-// v4l2_thread on Linux, and the UI thread for tab capture.
+// Methods of this class may be called from any thread if not specified, and in
+// practice will often be called on some auxiliary thread depending on the
+// platform and the device type; including, for example, the DirectShow thread
+// on Windows, the v4l2_thread on Linux, and the UI thread for tab capture.
class CONTENT_EXPORT VideoCaptureDeviceClient
- : public media::VideoCaptureDevice::Client {
+ : public media::VideoCaptureDevice::Client,
+ public media::JpegDecodeAccelerator::Client {
public:
VideoCaptureDeviceClient(
const base::WeakPtr<VideoCaptureController>& controller,
@@ -57,10 +61,24 @@ class CONTENT_EXPORT VideoCaptureDeviceClient
void OnError(const std::string& reason) override;
void OnLog(const std::string& message) override;
+ // JpegDecodeAccelerator::Client implementation.
+ // These will be called in IO thread.
+ virtual void VideoFrameReady(int32_t buffer_id) override;
+ virtual void NotifyError(int32_t buffer_id,
+ media::JpegDecodeAccelerator::Error error) override;
+
private:
+ bool InitializeJpegDecoder();
+ // TODO(kcwu): better name
+ void OnIncomingCapturedData2(const CapturedData& captured_data);
+
// The controller to which we post events.
const base::WeakPtr<VideoCaptureController> controller_;
+ bool jpeg_failed_;
+ scoped_ptr<media::JpegDecodeAccelerator> jpeg_decoder_;
+ scoped_ptr<JpegDecodeData> jpeg_decode_data_;
+
// The pool of shared-memory buffers used for capturing.
const scoped_refptr<VideoCaptureBufferPool> buffer_pool_;

Powered by Google App Engine
This is Rietveld 408576698