DXVA-HD DDI 프로그래밍 고려 사항

이 섹션은 Windows 7 이상 및 Windows Server 2008 R2 이상 버전의 Windows 운영 체제에만 적용됩니다.

사용자 모드 디스플레이 드라이버에서 DXVA-HD DDI 를 구현하는 경우 다음 프로그래밍 팁을 고려해야 합니다.

  • 드라이버는 D3DCAPS9 구조체의 Caps3 멤버에 D3DCAPS3_DXVAHD(0x00000400L) 비트를 설정하여 DXVA-HD DDI를 지원함을 나타내야 합니다. 그렇지 않으면 Direct3D 런타임에서 CreateVideoProcessor 함수를 호출하여 DXVA-HD 디바이스를 만들지 못합니다. D3DCAPS9 구조는 DirectX 9.0 SDK 설명서에 설명되어 있습니다. 드라이버는 pData 매개 변수가 가리키는 D3DDDIARG_GETCAPS 구조체의 Type 멤버에서 D3DDDICAPS_GETD3D9CAPS 값이 설정된 GetCaps 함수에 대한 호출에 대한 응답으로 D3DCAPS3_DXVAHD 비트를 설정합니다.

  • 애플리케이션 수준 DXVAHD_SURFACE_TYPE 열거형의 DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE 값에는 해당 DDI 값이 없습니다. 애플리케이션은 CPU 또는 셰이더 기반 비디오 프로세서 플러그 인에 대해 서로 다른 형식 형식으로 할당되는 오프 스크린 일반 화면에 대한 DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE 값을 설정합니다.

  • 애플리케이션 수준 DXVAHD_SURFACE_TYPE 열거형의 DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT 값은 D3DDDI_RESOURCEFLAGS 구조체VideoProcessRenderTarget 비트 필드 플래그에 해당합니다. Direct3D 런타임은 런타임이 드라이버의 CreateResource 함수를 호출하여 비디오 처리 렌더링 대상을 만들 때 videoProcessRenderTargetD3DDDIARG_CREATERESOURCE 구조의 Flags 멤버로 설정합니다.

  • Direct3D 런타임은 비트 블록 전송(비트블렛) 및 스트림 상태를 모두 유지 관리합니다. 런타임이 쿼리되면 런타임이 애플리케이션으로 돌아갑니다.

  • 애플리케이션 수준 IDXVAHD_VideoProcessor::GetVideoProcessBltState 메서드에는 해당 DDI 함수가 없습니다. 그러나 애플리케이션이 IDXVAHD_VideoProcessor::GetVideoProcessBltState 를 호출하여 비디오 프로세서에 대한 프라이빗 비트블릿 상태 데이터를 검색하는 경우 Direct3D 런타임은 드라이버의 GetVideoProcessBltStatePrivate 함수를 호출합니다.

  • 애플리케이션 수준 IDXVAHD_VideoProcessor::GetVideoProcessStreamState 메서드에는 해당 DDI 함수가 없습니다. 그러나 애플리케이션이 IDXVAHD_VideoProcessor::GetVideoProcessBltState 를 호출하여 비디오 프로세서에 대한 프라이빗 스트림 상태 데이터를 검색하는 경우 Direct3D 런타임은 드라이버의 GetVideoProcessStreamStatePrivate 함수를 호출합니다.

  • 애플리케이션 수준 DXVAHD_STREAM_STATE 열거형의 DXVAHD_STREAM_STATE_D3DFORMAT 값에는 DXVAHDDDI_STREAM_STATE 열거형에 해당 DDI 값이 없습니다. 비디오 프로세서 플러그 인은 애플리케이션 수준 DXVAHD_SURFACE_TYPE 열거형의 DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE 값으로 할당된 화면에 DXVAHD_STREAM_STATE_D3DFORMAT 값을 사용합니다.

  • DXVAHD_DEVICE_TYPE 열거형에는 해당 DDI 열거형이 없습니다(예: DXVAHDDDI_DEVICE_TYPE 없음). DXVAHDDDI_VPDEVCAPS 구조체의 첫 번째 멤버는 예약된 반면 애플리케이션 수준 DXVAHD_VPDEVCAPS 구조체의 첫 번째 멤버는 DeviceType 멤버의 DXVAHD_DEVICE_TYPE 값으로 설정됩니다. DeviceType 멤버는 항상 드라이버를 DXVAHD_DEVICE_TYPE_HARDWARE 보고하는 런타임 또는 비디오 프로세서 플러그 인에 의해 설정됩니다.

  • DXVAHDDDI_FILTER_RANGE_DATA 구조체의 승수 멤버는 부동 소수점 값입니다. 드라이버는 밑 2 분수로 정확하게 나타낼 수 있는 값을 사용해야 합니다. 예를 들어 0.25는 밑 2 분수로 정확하게 나타낼 수 있지만 0.1은 사용할 수 없습니다.

  • 모든 DXVA-HD DDI 함수는 S_OK, E_INVALIDARG 또는 E_OUTOFMEMORY 반환해야 합니다.