DXVA_DeinterlaceBobDeviceClass::DeinterlaceBlt method
The sample DeinterlaceBlt function performs deinterlace or frame-rate conversion by writing the output to a destination surface.
Syntax
HRESULT DeinterlaceBlt(
[in] REFERENCE_TIME rtTargetFrame,
[in] LPRECT lprcDstRect,
[in] LPDDSURFACE lpDDSDstSurface,
[in] LPRECT lprcSrcRect,
[in] LPDXVA_VideoSample lpDDSrcSurfaces,
[in] DWORD dwNumSurfaces,
[in] FLOAT fAlpha
);
Parameters
rtTargetFrame [in] Identifies the location of the output frame within the sequence of input frames. If only deinterlacing is performed, the target time should coincide with either the starting display time of a reference sample, as defined in the DXVA_VideoSample structure, or the midpoint between the starting display time and the ending display time. For more information, see the DXVA_DeinterlaceBlt structure.
If a frame rate conversion is requested, the rtTarget time can be different from any of the rtStart times of the reference samples.
lprcDstRect [in] Supplies a pointer to a RECT structure that describes the upper left and lower right points of a rectangle on the destination surface. These points define the area in which the bit-block transfer should occur and its position on the destination surface.
lpDDSDstSurface [in] Supplies a pointer to the destination surface. The destination surface can be a D3D render target, a D3D texture, or a D3D texture that is also a render target. The destination surface is always allocated in local video memory.
The pixel format of the destination surface is the one indicated in the DXVA_DeinterlaceCaps structure unless a YUV-to-RGB color space conversion is being performed as part of the deinterlace procedure. In this case, the destination surface format is an RGB format with at least 8 bits of precision for each color component.
lprcSrcRect [in] Supplies a pointer to a RECT structure that describes the upper left and lower right points of a rectangle on the source surface. These points define the area of the source data for the bit-block transfer and its position on the source surface.
lpDDSrcSurfaces [in] Supplies a pointer to an array of video source samples.
dwNumSurfaces [in] Indicates the number of surfaces in the lpDDSrcSurfaces array.
fAlpha [in] Indicates the alpha value for the surface. A value of 0.0F indicates a transparent surface. A value of 1.0F indicates an opaque surface.
Return value
Returns zero (S_OK or DD_OK) if successful; otherwise, returns an error code. Refer to ddraw.h for a complete list of error codes.
Remarks
The DeinterlaceBlt function maps directly to a call to the RenderMoComp member of the DD_MOTIONCOMPCALLBACKS structure. The RenderMoComp member points to a display driver-supplied function that references the DD_RENDERMOCOMPDATA structure. The DD_RENDERMOCOMPDATA structure is filled as follows.
Member | Value |
---|---|
dwNumBuffers |
Indicates the number of entries in the array pointed to by lpBufferInfo. |
lpBufferInfo |
Points to an array of DDMOCOMPBUFFERINFO structures, one for each input reference sample and one for the destination sample. The destination sample is the first element of the array. |
dwFunction |
Indicates the DXVA_DeinterlaceBltFnCode constant defined in dxva.h. |
lpInputData |
Points to a filled DXVA_DeinterlaceBlt structure. |
lpOutputData |
Set to NULL, not currently used. |
For the DirectX VA device used for deinterlacing, the driver-supplied callback pointed to by RenderMoComp is called without calling the display driver-supplied BeginMoCompFrame or EndMoCompFrame function.