비디오 포트 기반 캡처

비디오 포트를 기반으로 하는 캡처 디바이스는 비디오 포트 관리자에 연결하는 비디오 포트 핀을 제공해야 합니다. 비디오 포트 핀을 사용하면 하드웨어 기반 전송이 CPU 또는 PCI(주변 구성 요소 상호 연결) 버스 오버헤드 없이 미리 보기 스트림을 표시할 수 있습니다. 별도의 핀은 캡처 기능을 제공합니다(예: 캡처된 비디오를 디스크에 기록해야 하는 경우). 캡처 프로세스 중에 캡처 버퍼는 버스 마스터링으로 버퍼를 채우는 디스플레이 드라이버에 제공됩니다. 캡처 미니 드라이버와 디스플레이 드라이버 간의 상호 작용은 이 섹션의 뒷부분과 커널 모드 비디오 전송에 자세히 설명되어 있습니다.

Microsoft Windows 98 SE 또는 Windows 2000을 실행하는 시스템에서 오버레이 믹서 필터(이후 운영 체제의 Video Port Manager 필터의 일부)는 보조 모니터에서 비디오 포트 연결을 지원하지 않습니다. 이 경우 핀 연결이 실패합니다. 보조 모니터의 비디오 포트 연결은 Windows Millennium Edition(Windows Me) 및 Windows XP를 실행하는 시스템에서 지원됩니다.

디바이스가 VBI 캡처를 지원하는 경우 일반적으로 VPVBI 및 VBI라는 두 개의 추가 핀을 노출합니다. 비디오 포트 관리자 필터는 VPVBI 핀을 사용하여 VBI 캡처를 위한 비디오 포트 화면을 할당합니다. VBI 핀 자체는 원시 VBI 샘플을 제공합니다.

다음 다이어그램에서는 VPVBI 및 VBI 캡처에 대한 별도의 경로를 보여 줍니다.

vpvbi 및 vbi 캡처에 대한 별도의 경로를 보여 주는 다이어그램

이 유형의 필터 그래프와 관련된 속성 집합은 KSPROPSETID_VPConfig KSPROPSETID_VPVBIConfig PROPSETID_ALLOCATOR_CONTROL.

VPI(비디오 포트 확장) 사용

참고: 다음 단락은 다음 버전의 Windows Vista 이전 운영 체제에만 적용됩니다. 디스플레이 드라이버가 새 Windows Vista LDDM(드라이버 디스플레이 모델)을 사용하는 경우 Windows Vista에서 VPE를 사용할 수 없습니다.

비디오 캡처 미니 드라이버는 DxApi 함수를 사용하여 비디오 미니포트 드라이버와 통신하여 캡처 하드웨어와 디스플레이 하드웨어 간에 비디오 포트 버스를 통해 캡처 스트리밍 비디오를 전송할 수 있습니다. 스트림은 NTSC, PAL 또는 SECAM 비디오의 순차 필드로 구성되며, 블랭킹(VBI) 및 시간 코드(수평 동기화 및 수직 동기화) 데이터를 포함할 수 있습니다. 차원, 색 형식, 빈도, 크기 조정 및 자르기를 포함한 비디오 스트림 특성은 VPE DirectDraw 인터페이스를 통해 사용자 모드로 구성됩니다. 스트리밍이 시작된 후 DxApi 는 커널 모드에서 호출되어 개별 프레임을 캡처합니다. 해상도 변경 또는 전체 화면 명령 프롬프트에서 전환과 같은 표시 변경 내용을 지원하려면 비디오 캡처 미니 드라이버도 비디오 미니포트 드라이버에 등록하여 이러한 표시 변경 이벤트에 응답할 수 있도록 해야 합니다.

VPI 및 DxApi 함수는 DirectX 5.0을 사용하여 DirectDraw DDI에 도입되었습니다. DxApi 는 Windows 2000 이상 운영 체제의 비디오 미니포트 드라이버에서 지원됩니다. 가상 디스플레이 미니포트 드라이버(miniVDD)는 Windows 98 및 Windows Me 운영 체제에서 DxApi를 지원합니다. DxApi를 사용하여 커널 모드 비디오 전송을 사용하도록 설정하려면 WDM 비디오 캡처 미니 드라이버에 ddkmapi.h(DirectDraw 커널 모드 API) 헤더 파일과 dxapi.lib 라이브러리 연결이 포함되어 합니다. DxApi 라이브러리는 dxapi.sys보낸 기능을 사용합니다. DxApi가 DirectDraw DDI에 대한 VP의 일부이기 때문에 DirectDraw가 로드되는 경우에만 DxApi.sys 사용할 수 있습니다.

DxApi는 DxApi.sys 의해 노출되는 단일 커널 모드 API입니다. 비디오 포트 확장은 DDraw.dll 의해 노출되는 사용자 모드 API입니다. 비디오 캡처 미니 드라이버는 올바르게 스트리밍되도록 비디오 포트 하드웨어를 설정하고 구성하기 위해 DxApi 에 대해 여러 가지 호출을 수행해야 합니다.

DxApi 는 여러 함수 식별자를 캡슐화하는 단일 함수입니다. 미니 드라이버는 첫 번째 인수에서 원하는 함수 식별자를 DxApi전달합니다. DxApi대한 나머지 인수는 함수 식별자 및 버퍼 길이에 해당하는 구조체에 대해 미니 드라이버가 할당한 버퍼에 대한 것입니다. 함수의 동작과 입력 및 출력 버퍼의 크기와 형식은 지정된 함수 식별자에 따라 달라집니다. 이 동작은 DxApi 함수 및 식별자에 설명 되어 있습니다.

WDK는 DxApi 기능을 구현하는 방법을 보여 주는 두 가지 샘플 드라이버를 제공합니다. ATIWDM 샘플은 작동하려면 특정 하드웨어가 있어야 합니다. TestCap 샘플에는 하드웨어가 필요하지 않으며 모든 플랫폼에서 작동합니다. GraphEdt 도구를 사용하여 두 샘플 중 하나를 조작할 수 있습니다.

비디오 캡처 미니 드라이버가 DxApi를 호출하여 수행해야 하는 일반적인 함수는 다음과 같습니다.

  • 커널 모드 DirectDraw(DxApi 함수 식별자가 DD_DXAPI_OPENDIRECTDRAW 설정)에 대한 핸들을 엽니다. 이 작업은 IRQL = PASSIVE_LEVEL 수행해야 합니다.

  • 하드웨어 비디오 포트의 커널 모드 기능(DxApi 함수 식별자가 DD_DXAPI_GETKERNELCAPS 설정)을 가져옵니다.

  • 모드가 전체 화면 명령 프롬프트로 전환(DxApi 함수 식별자가 DD_DXAPI_REGISTER_CALLBACK 설정)과 같은 DirectDraw 이벤트를 처리하도록 콜백을 등록합니다.

  • DirectDraw 표면을 대상으로 하는 핸들을 엽니다(DxApi 함수 식별자는 DD_DXAPI_OPENSURFACE 설정됨).

  • 콜백 등록을 취소합니다(DxApi 함수 식별자는 DD_DXAPI_UNREGISTER_CALLBACK 설정됨).

  • 커널 모드 DirectDraw(DxApi 함수 식별자가 DD_DXAPI_CLOSEHANDLE 설정됨)와 표면의 핸들을 닫습니다.

비디오 포트 자식 디바이스 및 전원 관리

TV 튜너 및 디스플레이 조합 어댑터와 같은 비디오 포트 자식 디바이스는 미니 드라이버가 사용 중일 때 전원 상태 전환을 차단할 수 있습니다. 전원 상태 전환 차단은 미니 드라이버가 적극적으로 사용 중일 때 발생합니다(핀 또는 필터가 열려 있습니다). 미니 드라이버가 로드되었지만 사용 중인 핀이나 필터가 없는 경우 전원 상태가 S0(완전 전원)에서 낮은 전원 상태(예: S1, S2, S3 및 S4)로 전환됩니다. 전원 상태 전환 차단은 비디오 포트 자식 디바이스의 클라이언트인 Stream 클래스 미니 드라이버에서만 발생합니다.

WHQL 면제는 이 기준을 충족하는 디바이스에서 사용할 수 있으므로 공급업체는 여전히 로고를 얻을 수 있습니다.