다음을 통해 공유


핀 중심 처리

AVStream 미니드라이버를 작성할 때 핀 중심 처리 또는 필터 중심 처리의 두 가지 처리 패러다임 중 하나를 사용하는 필터를 제공합니다.

핀 중심 처리는 새 프레임이 핀 큐에 도착할 때 AVStream이 미니드라이버의 핀 프로세스 디스패치 루틴을 호출한다는 것을 의미합니다.

필터 중심 처리는 인스턴스화된 각 핀에서 사용할 수 있는 데이터 프레임이 있을 때 AVStream이 미니드라이버의 필터 프로세스 디스패치 루틴을 호출한다는 것을 의미합니다. 이러한 정의는 기본 동작을 지정합니다. 미니 드라이버는 KSPIN_DESCRIPTOR_EX 구조에서 플래그를 설정하여 기본 동작을 수정할 수 있습니다.

일반적으로 소프트웨어 필터는 필터 중심 처리를 사용하고 하드웨어 필터는 핀 중심 처리를 사용합니다. instance 경우 데이터를 변환하거나 렌더링하는 하드웨어는 핀 중심 필터에서 데이터를 라우팅할 수 있습니다. 이러한 역할을 되돌릴 수 있는 드문 경우가 있습니다.

핀 중심 필터를 제공하기 위해 미니 드라이버는 각 KSPIN_DISPATCH 구조에서 AVStrMiniPinProcess 콜백 루틴에 대한 포인터를 제공합니다. 는 KSFILTER_DISPATCH 구조에서 처리 디스패치를 제공하지 않습니다.

미니드라이버가 KSPIN_DESCRIPTOR_EX 구조에서 플래그 설정을 수정하지 않는 경우 AVStream은 다음 세 가지 상황에서 공급업체에서 제공하는 AVStrMiniPinProcess 콜백 루틴을 호출합니다.

  • 핀이 최소 처리 상태로 전환됩니다. 프레임은 큐에 이미 있어야 하며 핀은 최소 처리 상태보다 작은 상태에서 최소 처리 상태로 전환해야 합니다.

  • 새 프레임이 도착합니다. 핀은 최소한 최소 처리 상태여야 하며 선행 가장자리 앞이나 앞에 프레임이 없어야 합니다.

  • 미니드라이버에서 KsPinAttemptProcessing을 명시적으로 호출합니다.

기본적으로 일시 중지는 최소 처리 상태입니다.

또한 AVStream은 핀의 AND 게이트가 닫힌 경우 핀 프로세스 디스패치를 호출하지 않습니다. KSGATEXxx 루틴을 사용하여 핀의 AND 게이트에 끄기 입력을 추가하는 경우 instance 프로세스 디스패치가 호출되지 않습니다.

AVStream 이 AVStrMiniPinProcess를 호출할 때 사용 가능한 데이터가 있는 핀 개체에 대한 포인터를 제공합니다. 그런 다음, 미니드라이버의 처리 디스패치는 KsPinGetLeadingEdgeStreamPointer를 호출하여 선행 에지 포인터를 가져올 수 있습니다. 그런 다음, 미니드라이버가 스트림 포인터 API를 사용하여 스트림 데이터를 조작합니다.

핀 중심 처리를 사용하는 미니드라이버에서는 AVStream이 관련 KSPIN_DESCRIPTOR_EX 구조에서 플래그를 설정하여 AVStrMiniPinProcess 디스패치를 호출할 때 수정할 수 있습니다. KSPIN_DESCRIPTOR_EX 참조 페이지의 플래그 설명은 핀 중심 필터를 구현하는 공급업체와 특히 관련이 있습니다.

미니드라이버가 KsPinAcquireProcessingMutex를 통해 처리 뮤텍스를 보유하는 경우 처리 시도가 실패할 수 있습니다. 미니드라이버가 KSGATE* 호출을 사용하여 게이트를 직접 조작하는 경우에도 문제가 발생할 수 있습니다.

Windows 드라이버 키트 샘플의 AVSHwS(AVStream 시뮬레이션 하드웨어 샘플 드라이버) 는 시뮬레이션된 하드웨어를 위한 핀 중심 캡처 드라이버입니다. Avshws 샘플은 AVStream을 통해 DMA를 구현하는 방법을 보여 줍니다.