Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
This section applies only to Windows 7 and later, and Windows Server 2008 R2 and later versions of Windows operating system.
When you implement the DXVA-HD DDI in your user-mode display driver, you should consider the following programming tips:
The driver must set the D3DCAPS3_DXVAHD (0x00000400L) bit in the Caps3 member of D3DCAPS9 structure to indicate that it supports the DXVA-HD DDI, otherwise the Direct3D runtime fails to call the CreateVideoProcessor function to create a DXVA-HD device. The D3DCAPS9 structure is described in the DirectX 9.0 SDK documentation. The driver sets the D3DCAPS3_DXVAHD bit in response to a call to its GetCaps function in which the D3DDDICAPS_GETD3D9CAPS value is set in the Type member of the D3DDDIARG_GETCAPS structure that the pData parameter points to.
The DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE value of the application-level DXVAHD_SURFACE_TYPE enumeration has no corresponding DDI value. An application sets the DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE value for an off-screen plain surface that is allocated in different format type for the CPU or a shader-base video processor plug-in.
The DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT value of the application-level DXVAHD_SURFACE_TYPE enumeration corresponds to the VideoProcessRenderTarget bit-field flag of the D3DDDI_RESOURCEFLAGS structure. The Direct3D runtime sets VideoProcessRenderTarget in the Flags member of the D3DDDIARG_CREATERESOURCE structure when the runtime calls the driver's CreateResource function to create a video processing render target.
The Direct3D runtime maintains both bit-block transfer (bitblt) and stream states. The runtime returns to the application when the runtime is queried.
The application-level IDXVAHD_VideoProcessor::GetVideoProcessBltState method has no corresponding DDI function. However, when an application calls IDXVAHD_VideoProcessor::GetVideoProcessBltState to retrieve the private bitblt state data for a video processor, the Direct3D runtime calls the driver's GetVideoProcessBltStatePrivate function.
The application-level IDXVAHD_VideoProcessor::GetVideoProcessStreamState method has no corresponding DDI function. However, when an application calls IDXVAHD_VideoProcessor::GetVideoProcessBltState to retrieve the private stream state data for a video processor, the Direct3D runtime calls the driver's GetVideoProcessStreamStatePrivate function.
The DXVAHD_STREAM_STATE_D3DFORMAT value of the application-level DXVAHD_STREAM_STATE enumeration has no corresponding DDI value in the DXVAHDDDI_STREAM_STATE enumeration. The video processor plug-in uses the DXVAHD_STREAM_STATE_D3DFORMAT value for a surface that is allocated with the DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE value of the application-level DXVAHD_SURFACE_TYPE enumeration.
The DXVAHD_DEVICE_TYPE enumeration has no corresponding DDI enumeration (for example, no DXVAHDDDI_DEVICE_TYPE). The first member of the DXVAHDDDI_VPDEVCAPS structure is reserved whereas the first member of the application-level DXVAHD_VPDEVCAPS structure is set to a DXVAHD_DEVICE_TYPE value in the DeviceType member. The DeviceType member is set by the runtime or the video processor plug-in, which always reports the driver as DXVAHD_DEVICE_TYPE_HARDWARE.
The Multiplier member of the DXVAHDDDI_FILTER_RANGE_DATA structure is a floating-point value. The driver should use a value that can be represented exactly as a base 2 fraction. For example, 0.25 can be represented exactly as a base 2 fraction but 0.1 cannot.
Any DXVA-HD DDI function should return S_OK, E_INVALIDARG or E_OUTOFMEMORY.