Compartir a través de


Devoluciones de llamada de compensación de movimiento

DirectX Video Acceleration hace uso de las siguientes funciones de devolución de llamada de compensación de movimiento proporcionadas en los controladores de DirectDraw para la aceleración del procesamiento de descodificación de vídeo digital, con compatibilidad con la combinación alfa con fines como la compatibilidad con la subpictura de DVD:

DdMoCompBeginFrame

DdMoCompCreate

DdMoCompDestroy

DdMoCompEndFrame

DdMoCompGetBuffInfo

DdMoCompGetFormats

DdMoCompGetGuids

DdMoCompGetInternalInfo

DdMoCompQueryStatus

DdMoCompRender

Las funciones de devolución de llamada de compensación de movimiento comprenden el lado del controlador del dispositivo de la interfaz de aceleración de vídeo de DirectX. Los miembros de la estructura de DD_MOTIONCOMPCALLBACKS especifican las funciones de devolución de llamada de compensación de movimiento. En los pasos siguientes se muestra cómo se accede a las funciones de devolución de llamada de compensación de movimiento:

  1. Los GUID recibidos de IAMVideoAccelerator::GetVideoAcceleratorGUIDs se originan en DdMoCompGetGuids del controlador del dispositivo.

  2. Una llamada al pin de entrada de bajada IAMVideoAccelerator::GetUncompFormatsSupported devuelve datos del DdMoCompGetFormats del controlador del dispositivo.

  3. Al principio del procesamiento pertinente, la estructura de datos DXVA_ConnectMode desde el pin de salida del IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData se pasa al DdMoCompCreate del controlador del dispositivo, que notifica al descodificador sobre el objeto de aceleración de vídeo.

  4. Los datos devueltos desde IAMVideoAccelerator::GetCompBufferInfo se originan en DdMoCompGetBuffInfo del controlador del dispositivo.

  5. Los búferes enviados mediante IAMVideoAccelerator::Execute se reciben mediante DdMoCompRender del controlador del dispositivo.

  6. El uso de IAMVideoAccelerator::QueryRenderStatus llama al DdMoCompQueryStatus del controlador del dispositivo. El descodificador del host verá un código de retorno de DDERR_WASSTILLDRAWING desde DdMoCompQueryStatus como código de retorno de E_PENDING desde IAMVideoAccelerator::QueryRenderStatus.

  7. El DdMoCompBeginFrame del controlador del dispositivo recibe los datos enviados a IAMVideoAccelerator::BeginFrame. Se necesita un código de retorno de DDERR_WASSTILLDRAWING de DdMoCompBeginFrame para que el descodificador del host vea E_PENDING en respuesta a IAMVideoAccelerator::BeginFrame.

  8. El DdMoCompEndFrame del controlador del dispositivo recibe los datos enviados a IAMVideoAccelerator::EndFrame.

  9. Al final del procesamiento pertinente, el controlador de dispositivo DdMoCompDestroy se usa para notificar al controlador que el objeto de aceleración de vídeo actual ya no se usará, de modo que el controlador pueda realizar cualquier limpieza necesaria.