Add VP9 Hardware Decoding with DXVA (Non-MFT), Vista+

Thanks to Maggie (imjustsomeoneiguess) on discord for helping with a lot of this VP9 media code.
This is the first browser so far to support VP9 Non MFT
This commit is contained in:
EAZYBLACK 2026-09-15 18:34:43 +03:00
commit 1414824320
18 changed files with 1747 additions and 34 deletions

View file

@ -23,7 +23,7 @@ public:
// Creates and initializes a DXVA2Manager. We can use DXVA2 via either
// D3D9Ex or D3D11.
static DXVA2Manager* CreateD3D9DXVA(layers::KnowsCompositor* aKnowsCompositor, nsACString& aFailureReason);
static DXVA2Manager* CreateD3D9DXVA(layers::KnowsCompositor* aKnowsCompositor, nsACString& aFailureReason, const GUID* aDecoderGUID = nullptr);
static DXVA2Manager* CreateD3D11DXVA(layers::KnowsCompositor* aKnowsCompositor, nsACString& aFailureReason);
// Returns a pointer to the D3D device manager responsible for managing the
@ -37,6 +37,10 @@ public:
const nsIntRect& aRegion,
layers::Image** aOutImage) = 0;
virtual HRESULT CopySurfaceToImage(IDirect3DSurface9* aSurface,
const nsIntRect& aRegion,
layers::Image** aOutImage) { return E_NOTIMPL; }
virtual HRESULT ConfigureForSize(uint32_t aWidth, uint32_t aHeight) { return S_OK; }
virtual bool IsD3D11() { return false; }