USBCAMD2は、32 パケットの 2 つの転送を要求することで、等時性パイプでのストリーミングを開始します。 各パケットには、選択した代替設定の最大サイズに対応する最大サイズがあります。
手記 等時性パイプでのストリーミングは、Microsoft DirectShow ストリーミングとは無関係です。
二重バッファー等時性転送要求は、USBCAMD2に継続的に送信され、次の 2 つの条件のいずれかが発生した場合にのみ停止します。
DirectShow ストリームの停止状態が発行されます (KSSTATE_STOP)。
カメラ ミニドライバーは、USBCAMD_SetIsoPipeStateの呼び出しで PipeStateFlags パラメーターにUSBCAMD_STOP_STREAMING フラグを渡すことによって、等時性ストリーミングを停止する USBCAMD2を要求します。
ストリーミングの進行中、USBCAMD2とカメラ ミニドライバーは、ストリーミングが停止するまで次のプロセスを繰り返します。
USBCAMD2は、USBバスドライバーから受信した各パケットごとに、カメラミニドライバーのCamProcessUSBPacketExコールバック関数 (IRQL = DISPATCH_LEVEL) を呼び出します。 カメラ ミニドライバーは、エラー状態の場合に適切なエラー フラグを設定する必要があります。 また、CamProcessUSBPacketEx の FrameComplete パラメーターを使用して新しいビデオ フレームの先頭が検出された場合、ミニドライバーは新しいビデオ フレーム フラグを設定する必要があります。
カメラ ミニドライバーがビデオ フレームが完了したと判断した後、USBCAMD2はカメラ ミニドライバーの CamProcessRawVideoFrameEx コールバック関数を (ワーカー スレッドのコンテキストから) 呼び出して、色空間変換または展開を実行する必要がある場合にビデオ フレームを処理します。 USBCAMD2は、IRQL = PASSIVE_LEVEL でカメラ ミニドライバーによって処理される stream.sys クラス ドライバーに完成した未加工フレームを返します。 フレーム データが不十分であったり、不適切なデータが原因で圧縮解除中にエラーが発生した場合など、CamProcessRawVideoFrameEx に対する BytesReturned パラメーターを 0 に設定する必要があります。