Partager via


Transitions d’état

Pour garantir une allocation ordonnée des ressources, seul un sous-ensemble des transitions d’état de streaming de noyau possibles est autorisé. Le tableau suivant répertorie les transitions autorisées ainsi que les tâches qu’un minidriver de classe Stream effectue généralement pendant ces transitions.

Transition Description

Arrêter pour suspendre

Allouez des ressources. Les SB de lecture sont mis en file d’attente une fois la transition vers KSSTATE_PAUSE terminée.

Suspendre pour exécuter

Commencez la diffusion en continu.

Exécuter pour suspendre

Arrêtez la diffusion en continu. Les SB de lecture en suspens restent dans la file d’attente gérée par le minidriver.

Suspendre pour arrêter

Libérez les ressources et effectuez tous les SSB de lecture en suspens. Les SSB qui n’ont pas été remplis avec une image sont terminés avec une longueur nulle dans le membre DataUsed de la structure KSSTREAM_HEADER .

Remarque : Les transitions peuvent effectuer plusieurs cycles entre les états KSSTATE_PAUSE et KSSTATE_RUN avant de revenir à l’état KSSTATE_STOP . Les mini-disques de capture vidéo doivent s’attendre à des transitions telles que :

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

Lorsqu’un flux est dans un état KSSTATE_STOP , le minidriver doit immédiatement terminer tous les SB de lecture de données en attente.

Étant donné qu’une application en mode utilisateur peut se terminer de manière inattendue lors de la diffusion en continu, tous les minidrivers de classe Stream doivent accepter et traiter une demande de SRB_CLOSE_STREAM à partir de l’interface de classe Stream à tout moment. Avant que l’interface de classe Stream envoie SRB_CLOSE_STREAM à un minidriver, elle annule toutes les mémoires tampons en suspens via la routine HwCancelPacket du minidriver. Notez que l’état du flux ne peut pas être défini sur KSSTATE_STOP avant la fin de l’application.

Ne mettez pas à jour les membres PictureNumber ou DropCount de KS_FRAME_INFO, KS_VBI_FRAME_INFO ou KSPROPERTY_DROPPEDFRAMES_CURRENT_S lors de la transition de KSSTATE_PAUSE à KSSTATE_RUN ou KSSTATE_RUN à KSSTATE_PAUSE. Pour plus d’informations, consultez Capture de vidéo.