Microsoft DirectX 8.1 (C++)

IAMVideoAccelerator Interface

The IAMVideoAccelerator interface enables a video decoder filter to access video accelerator functionality. The Video Mixing Renderer’s input pins support this interface, and so does pin 0 on the Overlay Mixer. If a video decoder filter calls methods on this interface, the decoder should support the IAMVideoAcceleratorNotify interface on its output pin. Applications should not call methods on this interface. For more information on how to use this interface, see IAMVideoAccelerator Operation in DirectX VA.

Note This interface is available in Microsoft® Windows® 2000.

The sequence of events for connecting the video decoder filter is as follows:

  1. The filter graph manager calls the IPin::Connect method on the video decoder filter's output pin.
  2. The video decoder can call IAMVideoAccelerator::GetVideoAcceleratorGUIDs on the renderer’s input pin to retrieve a list of video accelerator GUIDs, which specify the video accelerator formats accepted by the Overlay Mixer.
  3. For a given video accelerator GUID, the video decoder can call IAMVideoAccelerator::GetUncompFormatsSupported to determine a suitable pixel format to propose.
  4. The video decoder calls the IPin::ReceiveConnection method on the renderer's input pin, specifying a video accelerator GUID as the subtype of the media type. Within this call, the renderer calls several methods on the decoder filter's output pin:
  5. The video decoder calls IAMVideoAccelerator::GetCompBufferInfo to retrieve information about the compressed data buffers associated with the video acceleration GUID previously specified.

To support dynamic format changes, this sequence can also occur while the filters are connected and running.

During operation, the video decoder performs the following steps.

  1. For each uncompressed data buffer, it calls IAMVideoAccelerator::BeginFrame to begin processing the output frame.
  2. To send uncompressed data to the video accelerator, the decoder calls the following methods:
  3. To end frame processing, it calls IAMVideoAccelerator::EndFrame.
  4. To display a frame, it calls IAMVideoAccelerator::DisplayFrame.

Before locking a buffer with the GetBuffer method, the video decoder should verify that any decompression operations that update that buffer are complete. After using the Execute method to send buffers of data to the accelerator, the QueryRenderStatus ethod can be called for a sent buffer to determine whether an operation is complete. imilarly for DisplayFrame, the video decoder must check that all decompression operations that update that frame are complete.

Requirements

Requires Videoacc.h.

In addition to the methods inherited from IUnknown, the IAMVideoAccelerator interface exposes the following methods.

Method Description
GetVideoAcceleratorGUIDs Retrieves a list of the GUIDs for the video accelerator formats accepted.
GetUncompFormatsSupported Retrieves a list of pixel formats that can be used to render a specified video accelerator format.
GetInternalMemInfo Retrieves information about the uncompressed data memory requirements, based on the video accelerator GUID, the uncompressed size, and the pixel format.
GetCompBufferInfo Retrieves compressed buffer information.
GetInternalCompBufferInfo Called after the pins are connected, retrieving compressed buffer information given the connected type.
BeginFrame Begins frame processing.
EndFrame Ends frame processing and passes miscellaneous data to the video accelerator driver.
GetBuffer Retrieves the compressed buffer of a specified index and type.
ReleaseBuffer Releases a compressed buffer after processing.
Execute Performs a decompression operation.
QueryRenderStatus Queries the processing status of a data buffer.
DisplayFrame Displays a decoded frame.