다음을 통해 공유


동작 보정 콜백

DirectX 비디오 가속 은 디지털 비디오 디코딩 처리의 가속화를 위해 DirectDraw 드라이버에 제공되는 다음과 같은 동작 보정 콜백 함수를 사용하며 DVD 하위 그림 지원과 같은 목적으로 알파 혼합을 지원합니다.

DdMoCompBeginFrame

DdMoCompCreate

DdMoCompDestroy

DdMoCompEndFrame

DdMoCompGetBuffInfo

DdMoCompGetFormats

DdMoCompGetGuids

DdMoCompGetInternalInfo

DdMoCompQueryStatus

DdMoCompRender

동작 보정 콜백 함수는 DirectX 비디오 가속 인터페이스의 디바이스 드라이버 쪽으로 구성됩니다. 동작 보정 콜백 함수는 DD_MOTIONCOMPCALLBACKS 구조체의 멤버에 의해 지정됩니다. 다음 단계에서는 동작 보정 콜백 함수에 액세스하는 방법을 보여 줍니다.

  1. IAMVideoAccelerator::GetVideoAcceleratorGUIDs에서 받은 GUID는 디바이스 드라이버의 DdMoCompGetGuids에서 시작됩니다.

  2. 다운스트림 입력 핀의 IAMVideoAccelerator::GetUncompFormatsSupported 에 대한 호출은 디바이스 드라이버의 DdMoCompGetFormats에서 데이터를 반환합니다.

  3. 관련 처리가 시작되면 디코더의 IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData의 출력 핀에서 DXVA_ConnectMode 데이터 구조가 디바이스 드라이버의 DdMoCompCreate에 전달되어 디코더에 비디오 가속 개체에 대해 알 수 있습니다.

  4. IAMVideoAccelerator::GetCompBufferInfo에서 반환된 데이터는 디바이스 드라이버의 DdMoCompGetBuffInfo에서 발생합니다.

  5. IAMVideoAccelerator::Execute를 사용하여 전송된 버퍼는 디바이스 드라이버의 DdMoCompRender에서 수신됩니다.

  6. IAMVideoAccelerator::QueryRenderStatus를 사용하면 디바이스 드라이버의 DdMoCompQueryStatus가 호출됩니다. DdMoCompQueryStatus의 DDERR_WASSTILLDRAWING 반환 코드는 호스트 디코더에서 IAMVideoAccelerator::QueryRenderStatus의 E_PENDING 반환 코드로 표시됩니다.

  7. IAMVideoAccelerator::BeginFrame으로 전송된 데이터는 디바이스 드라이버의 DdMoCompBeginFrame에서 수신됩니다. IAMVideoAccelerator::BeginFrame에 대한 응답으로 호스트 디코더가 E_PENDING 표시하려면 DdMoCompBeginFrame에서 DDERR_WASSTILLDRAWING 반환 코드가 필요합니다.

  8. IAMVideoAccelerator::EndFrame으로 전송된 데이터는 디바이스 드라이버의 DdMoCompEndFrame에서 수신됩니다.

  9. 관련 처리가 끝나면 디바이스 드라이버의 DdMoCompDestroy 를 사용하여 드라이버가 필요한 정리를 수행할 수 있도록 현재 비디오 가속 개체가 더 이상 사용되지 않음을 드라이버에 알립니다.