다음을 통해 공유


등시 파이프를 사용하는 데이터 흐름

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

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

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

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

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

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

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

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