Index: media/gpu/dxva_video_decode_accelerator_win.h |
diff --git a/media/gpu/dxva_video_decode_accelerator_win.h b/media/gpu/dxva_video_decode_accelerator_win.h |
index a1962307c6e62debf8b08613ece38560792f519a..dc02f98c95c6a2bcda2f9aaf2126ce3437f6fa6c 100644 |
--- a/media/gpu/dxva_video_decode_accelerator_win.h |
+++ b/media/gpu/dxva_video_decode_accelerator_win.h |
@@ -144,6 +144,7 @@ class MEDIA_GPU_EXPORT DXVAVideoDecodeAccelerator |
private: |
friend class DXVAPictureBuffer; |
+ friend class EGLStreamDelayedCopyPictureBuffer; |
friend class EGLStreamCopyPictureBuffer; |
friend class EGLStreamPictureBuffer; |
friend class PbufferPictureBuffer; |
@@ -151,6 +152,22 @@ class MEDIA_GPU_EXPORT DXVAVideoDecodeAccelerator |
typedef void* EGLSurface; |
typedef std::list<base::win::ScopedComPtr<IMFSample>> PendingInputs; |
+ enum class PictureBufferMechanism { |
+ // Copy to either a BGRA8 or FP16 texture using the video processor. |
+ COPY_TO_RGB, |
+ |
+ // Copy to another NV12 texture that can be used in ANGLE. |
+ COPY_TO_NV12, |
+ |
+ // Bind the resulting GLImage to the NV12 texture. If the texture's used |
+ // in a an overlay than use it directly, otherwise copy it to another NV12 |
+ // texture when necessary. |
+ DELAYED_COPY_TO_NV12, |
+ |
+ // Bind the NV12 decoder texture directly to the texture used in ANGLE. |
+ BIND |
+ }; |
+ |
// Returns the minimum resolution for the |profile| passed in. |
static std::pair<int, int> GetMinResolution(const VideoCodecProfile profile); |
@@ -375,6 +392,8 @@ class MEDIA_GPU_EXPORT DXVAVideoDecodeAccelerator |
uint32_t GetTextureTarget() const; |
+ PictureBufferMechanism GetPictureBufferMechanism() const; |
+ bool ShouldUseANGLEDevice() const; |
ID3D11Device* D3D11Device() const; |
// To expose client callbacks from VideoDecodeAccelerator. |
@@ -517,10 +536,12 @@ class MEDIA_GPU_EXPORT DXVAVideoDecodeAccelerator |
// Use CODECAPI_AVLowLatencyMode. |
bool enable_low_latency_; |
- bool share_nv12_textures_; |
+ // Supports sharing the decoded NV12 textures with ANGLE |
+ bool support_share_nv12_textures_; |
- // Copy NV12 texture to another NV12 texture. |
- bool copy_nv12_textures_; |
+ // Supports copying the NV12 texture to another NV12 texture to use in |
+ // ANGLE. |
+ bool support_copy_nv12_textures_; |
// Copy video to FP16 scRGB textures. |
bool use_fp16_ = false; |