Share via


Flusso di dati uso di pipe isocrone

USBCAMD2 avvia lo streaming sulla pipe isocrona richiedendo due trasferimenti di 32 pacchetti. Ogni pacchetto ha una dimensione massima corrispondente alla dimensione massima nell'impostazione alternativa selezionata.

Nota Lo streaming sulla pipe isocrona è indipendente dallo streaming Di Microsoft DirectShow.

Le richieste di trasferimento isocrone a doppio buffer vengono inviate continuamente a USBCAMD2 e si arrestano solo quando si verifica una delle due condizioni seguenti:

  1. Viene generato uno stato di arresto del flusso DirectShow (KSSTATE_STOP).

  2. Il minidriver della fotocamera richiede a USBCAMD2 di arrestare lo streaming isocrono passando il flag USBCAMD_STOP_STREAMING nel parametro PipeStateFlags in una chiamata a USBCAMD_SetIsoPipeState.

Mentre lo streaming è in corso, USBCAMD2 e il minidriver della fotocamera ripetere il processo seguente fino all'arresto dello streaming:

  1. USBCAMD2 chiama la funzione di callback CamProcessUSBPacketEx della fotocamera minidriver (in IRQL = DISPATCH_LEVEL) per ogni pacchetto ricevuto da USBCAMD2 dal driver del bus USB. Il minidriver della fotocamera deve impostare i flag di errore appropriati in caso di condizioni di errore. Il minidriver deve anche impostare un nuovo flag di fotogrammi video se viene rilevato l'inizio di un nuovo fotogramma video usando il parametro FrameComplete di CamProcessUSBPacketEx.

  2. Dopo che il minidriver della fotocamera ha determinato che un fotogramma video è stato completato, USBCAMD2 chiama la funzione di callback CamProcessRawVideoFrameEx della fotocamera (dal contesto di un thread di lavoro) per elaborare il fotogramma video se è necessario eseguire una conversione dello spazio colore o una decompressione. USBCAMD2 restituisce un frame non elaborato completato al driver di classe stream.sys da elaborare dal minidriver della fotocamera in IRQL = PASSIVE_LEVEL. Se sono presenti dati frame insufficienti o si è verificato un errore durante la decompressione a causa di dati non valido, ad esempio, il parametro BytesReturned su CamProcessRawVideoFrameEx deve essere impostato su 0.