동작 보정 장치 드라이버와 운영 대응

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

이 섹션에는 DirectX VA 인터페이스의 동작 보정 디바이스 드라이버 쪽에 대한 설명이 포함되어 있습니다. (참조:Windows 2000 DDK - 그래픽 드라이버 - 디자인 가이드 - 3.0 DirectDraw DDI - 3.12 동작 보정. 굵게 표시된 구조체에 대한 설명서는 Windows DDK를 참조하세요.)

다음 항목은 DD_MOTIONCOMPCALLBACKS 구조를 통해 액세스되는 항목을 참조합니다.

  1. 관련 처리가 시작될 때 디바이스 드라이버의 DdMoCompCreate 는 소프트웨어 디코더가 비디오 가속 개체를 사용하기 시작하도록 드라이버에 알리는 데 사용됩니다.
  2. IAMVideoAccelerator::GetVideoAcceleratorGUIDs에서 받은 GUID는 디바이스 드라이버의 DdMoCompGetGUID에서 시작됩니다.
  3. 다운스트림 입력 핀의 IAMVideoAccelerator::GetUncompFormatsSupported 에 대한 호출은 디바이스 드라이버의 DdMoCompGetFormats에서 데이터를 반환합니다.
  4. 디코더의 IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData 의 DXVA_ConnectMode 데이터 구조가 디바이스 드라이버의 DdMoCompCreate에 전달됩니다.
  5. IAMVideoAccelerator::GetCompBufferInfo에서 반환된 데이터는 디바이스 드라이버의 DdMoCompGetBuffInfo에서 발생합니다.
  6. IAMVideoAccelerator::Execute를 사용하여 전송된 버퍼는 디바이스 드라이버의 DdMoCompRender에서 수신됩니다.
  7. IAMVideoAccelerator::QueryRenderStatus를 사용하면 디바이스 드라이버의 DdMoCompQueryStatus가 호출됩니다. DdMoCompQueryStatus의 DDERR_WASSTILLDRAWING 반환 코드는 호스트 디코더에서 IAMVideoAccelerator::QueryRenderStatus의 E_PENDING 반환 코드로 표시됩니다.
  8. IAMVideoAccelerator::BeginFrame으로 전송된 데이터는 디바이스 드라이버의 DdMoCompBeginFrame에서 수신됩니다. IAMVideoAccelerator::BeginFrame에 대한 응답으로 호스트 디코더가 E_PENDING 표시하려면 DdMoCompBeginFrame에서 E_PENDING 반환 코드가 필요합니다.
  9. IAMVideoAccelerator::EndFrame으로 전송된 데이터는 디바이스 드라이버의 DdMoCompEndFrame에서 수신됩니다.
  10. 관련 처리가 끝나면 디바이스 드라이버의 DdMoCompDestroy 를 사용하여 드라이버가 필요한 정리를 수행할 수 있도록 현재 비디오 가속 개체가 더 이상 사용되지 않음을 드라이버에 알립니다.