Redémarrage du traitement dans AVStream

AVStream arrête le traitement si l’une des conditions suivantes est remplie :

  • Dans un environnement centré sur les broches, aucune donnée n’est actuellement disponible sur l’épingle.

  • Dans un environnement centré sur les filtres, au moins une broche pour laquelle le membre Flags de la structure KSPIN_DESCRIPTOR_EX ne définit pas KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING, n’a pas de données en attente d’être traitées. Par défaut, cet indicateur n’est pas défini.

  • La routine de rappel de dispatch de traitement du minidriver retourne STATUS_PENDING, quelle que soit la disponibilité de l’image. Notez que la répartition du traitement peut être AVStrMiniFilterProcess ou AVStrMiniPinProcess, selon que le minidriver implémente le traitement centré sur les broches ou le traitement centré sur les filtres.

AVStream lance le traitement lorsque de nouvelles données arrivent dans une file d’attente précédemment vide. Par conséquent, si la répartition de traitement du minidriver retourne STATUS_PENDING lorsque les files d’attente associées sont pleines, le minidriver ne sera jamais appelé pour reprendre le traitement. Si le minidriver définit STATUS_PENDING, le minidriver doit appeler KsPinAttemptProcessing ou KsFilterAttemptProcessing pour reprendre le traitement.

Ne retournez pas STATUS_SUCCESS du dispatch de traitement si le minidriver ne traite pas réellement les données. Cela amène AVStream à appeler immédiatement le minidriver, ce qui entraîne une boucle infinie entre AVStream et le dispatch de traitement.