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

Unified Diff: content/common/gpu/media/dxva_video_decode_accelerator.h

Issue 1427213002: Lock the decoder device (Angle) device from the decoder thread before copying the decoded frame to … (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix member order Created 5 years, 1 month 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/common/gpu/media/dxva_video_decode_accelerator.h
diff --git a/content/common/gpu/media/dxva_video_decode_accelerator.h b/content/common/gpu/media/dxva_video_decode_accelerator.h
index 706e2dc92d05abfdfedb9fd2c45b983137b6ddea..8cc02268b0e774bcaba5ff4b5edfa9c52d1ab91f 100644
--- a/content/common/gpu/media/dxva_video_decode_accelerator.h
+++ b/content/common/gpu/media/dxva_video_decode_accelerator.h
@@ -19,6 +19,7 @@
#include <vector>
#include "base/compiler_specific.h"
+#include "base/macros.h"
#include "base/memory/linked_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/synchronization/lock.h"
@@ -241,6 +242,9 @@ class CONTENT_EXPORT DXVAVideoDecodeAccelerator
// Returns true on success.
bool GetVideoFrameDimensions(IMFSample* sample, int* width, int* height);
+ // Performs any cleanup on the decoder thread and stops it.
+ void StopDecoderThread();
+
// To expose client callbacks from VideoDecodeAccelerator.
media::VideoDecodeAccelerator::Client* client_;
@@ -256,6 +260,7 @@ class CONTENT_EXPORT DXVAVideoDecodeAccelerator
base::win::ScopedComPtr<ID3D11Device > d3d11_device_;
base::win::ScopedComPtr<IMFDXGIDeviceManager> d3d11_device_manager_;
base::win::ScopedComPtr<ID3D11Query> d3d11_query_;
+ base::win::ScopedComPtr<ID3D10Multithread> multi_threaded_;
// Ideally the reset token would be a stack variable which is used while
// creating the device manager. However it seems that the device manager
@@ -363,11 +368,17 @@ class CONTENT_EXPORT DXVAVideoDecodeAccelerator
// The GLContext to be used by the decoder.
scoped_refptr<gfx::GLContext> gl_context_;
+ // Set to true if the DX11 device has been locked. This member is only
+ // accessed on the decoder thread.
+ bool dx11_device_locked_;
+
// WeakPtrFactory for posting tasks back to |this|.
base::WeakPtrFactory<DXVAVideoDecodeAccelerator> weak_this_factory_;
// Function pointer for the MFCreateDXGIDeviceManager API.
static CreateDXGIDeviceManager create_dxgi_device_manager_;
+
+ DISALLOW_COPY_AND_ASSIGN(DXVAVideoDecodeAccelerator);
};
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698