핀 중심 처리
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를 구현하는 방법을 보여 줍니다.