등시 파이프를 사용하는 Data Flow

USBCAMD2는 32개 패킷의 두 전송을 요청하여 등시 파이프에서 스트리밍을 시작합니다. 각 패킷의 최대 크기는 선택한 대체 설정의 최대 크기에 해당합니다.

참고 등시 파이프의 스트리밍은 Microsoft DirectShow 스트리밍과 독립적입니다.

이중 버퍼 등시 전송 요청은 USBCAMD2에 지속적으로 제출되며 다음 두 조건 중 하나가 발생하는 경우에만 중지됩니다.

  1. 중지 DirectShow 스트림 상태가 발급됩니다(KSSTATE_STOP).

  2. 카메라 미니드라이버가 USBCAMD_SetIsoPipeState 호출에서 PipeStateFlags 매개 변수의 USBCAMD_STOP_STREAMING 플래그를 전달하여 등시 스트리밍을 중지하도록 USBCAMD2에 요청합니다.

스트리밍이 진행 중인 동안 USBCAMD2 및 카메라 미니드라이버에서 스트리밍이 중지될 때까지 다음 프로세스를 반복합니다.

  1. USBCAMD2는 USBCAMD2가 USB 버스 드라이버에서 수신하는 모든 패킷에 대해 카메라 미니드라이버의 CamProcessUSBPacketEx 콜백 함수(IRQL = DISPATCH_LEVEL)를 호출합니다. 카메라 미니 드라이버는 오류 조건의 경우 적절한 오류 플래그를 설정해야 합니다. 또한 CamProcessUSBPacketExFrameComplete 매개 변수를 사용하여 새 비디오 프레임의 시작이 감지되면 미니드라이버에서 새 비디오 프레임 플래그를 설정해야 합니다.

  2. 카메라 미니드라이버가 비디오 프레임이 완료되었음을 결정한 후 USBCAMD2는 카메라 미니드라이버의 CamProcessRawVideoFrameEx 콜백 함수(작업자 스레드의 컨텍스트에서)를 호출하여 색 공간 변환 또는 압축 해제를 수행해야 하는 경우 비디오 프레임을 처리합니다. USBCAMD2는 IRQL = PASSIVE_LEVEL 카메라 미니 드라이버에서 처리할 stream.sys 클래스 드라이버에 완성된 원시 프레임을 반환합니다. 예를 들어 잘못된 데이터로 인해 압축 해제 중에 프레임 데이터가 부족하거나 오류가 발생한 경우 CamProcessRawVideoFrameEx대한 BytesReturned 매개 변수를 0으로 설정해야 합니다.