Transiciones de estado

Para garantizar la asignación ordenada de recursos, solo se permite un subconjunto de las posibles transiciones de estado de streaming del kernel. En la tabla siguiente se enumeran las transiciones permitidas junto con las tareas que normalmente realiza un minidriver de clase Stream durante estas transiciones.

Transición Descripción

Detener para pausar

Asignar recursos. Las SRB de lectura se ponen en cola una vez completada la transición a KSSTATE_PAUSE .

Pausar para ejecutarse

Comience el streaming.

Ejecutar para pausar

Detenga el streaming. Los SRB de lectura pendientes permanecen en la cola mantenida por el minidriver.

Pausar para detener

Desasigne los recursos y complete todos los SRB de lectura pendientes. Los SRB que no se han rellenado con una imagen se completan con una longitud cero en el miembro DataUsed de la estructura KSSTREAM_HEADER .

Nota : Las transiciones pueden ciclo varias veces entre los estados KSSTATE_PAUSE y KSSTATE_RUN antes de volver al estado de KSSTATE_STOP . Los minidrivers de captura de vídeo deben esperar transiciones como:

KSSTATE_STOP ->KSSTATE_ACQUIRE ->KSSTATE_PAUSE ->KSSTATE_RUN ->KSSTATE_PAUSE ->KSSTATE_RUN ->KSSTATE_PAUSE -> KSSTATE_STOP

Cuando una secuencia está en un estado de KSSTATE_STOP , el minidriver debe completar inmediatamente todos los SRB de lectura de datos pendientes.

Dado que una aplicación en modo de usuario puede terminar inesperadamente mientras se transmite, todos los minidrivers de clase Stream deben aceptar y procesar una solicitud de SRB_CLOSE_STREAM de la interfaz de clase Stream en cualquier momento. Antes de que la interfaz de clase Stream envíe SRB_CLOSE_STREAM a un minidriver, cancela todos los búferes pendientes a través de la rutina HwCancelPacket del minidriver. Tenga en cuenta que el estado de la secuencia no se puede establecer en KSSTATE_STOP antes de que finalice la aplicación.

No actualice los miembros PictureNumber o DropCount de KS_FRAME_INFO, KS_VBI_FRAME_INFO o KSPROPERTY_DROPPEDFRAMES_CURRENT_S en la transición de KSSTATE_PAUSE a KSSTATE_RUN o KSSTATE_RUN a KSSTATE_PAUSE. Para obtener más información, consulte Captura de vídeo.