Partager via


Traitement centré sur les broches de connexion

Lors de l’écriture d’un minidriver AVStream, vous fournissez des filtres qui utilisent l’un des deux paradigmes de traitement : traitement centré sur les broches ou traitement centré sur les filtres.

Le traitement centré sur les broches signifie que AVStream appelle la routine de distribution du processus de broche du minidriver lorsque de nouvelles images arrivent dans la file d’attente d’épingles.

Le traitement centré sur le filtre signifie qu'AVStream appelle la routine de traitement du processus de filtre du minipilote lorsqu’il existe des trames de données disponibles sur chaque connecteur instancié. Notez que ces définitions spécifient le comportement par défaut ; les minidrivers peuvent modifier le comportement par défaut en définissant des indicateurs dans la structure KSPIN_DESCRIPTOR_EX .

En général, les filtres logiciels utilisent le traitement centré sur les filtres et les filtres matériels utilisent le traitement centré sur les broches. Par exemple, les matériels qui transforment ou affichent des données peuvent acheminer les données via un filtre axé sur les broches. Il existe de rares cas dans lesquels ces rôles peuvent être inversés.

Pour fournir un filtre centré sur une broche, le minidriver fournit un pointeur vers une routine de rappel AVStrMiniPinProcess dans chaque structure KSPIN_DISPATCH ; ne fournissez pas de répartition de traitement dans la structure KSFILTER_DISPATCH.

Si le minidriver ne modifie pas les paramètres d’indicateur dans la structure KSPIN_DESCRIPTOR_EX, AVStream appelle la routine de rappel AVStrMiniPinProcess fournie par le fournisseur dans trois situations :

  • La transition du pin vers l'état de traitement minimal. Les trames doivent déjà exister dans la file d'attente, et la broche doit passer d'un état inférieur au traitement minimal à au moins l'état minimal de traitement.

  • De nouvelles images arrivent. La broche doit être dans au moins l’état de traitement minimal et il ne doit pas y avoir d’images à l’avant ou à l’avant du bord de début.

  • Minidriver appelle explicitement KsPinAttemptProcessing.

Par défaut, la pause est l’état de traitement minimal.

En outre, AVStream n’appelle pas l’envoi du processus de broche si la porte logique AND de la broche est fermée. Si vous utilisez les routines KSGATEXxx pour ajouter des entrées supplémentaires d'arrêt à la porte AND de la broche, par exemple, le dispatch de processus ne sera pas appelé.

Quand AVStream appelle AVStrMiniPinProcess, il fournit un pointeur vers l’objet pin qui a des données disponibles. La distribution de traitement du minidriver peut ensuite acquérir un pointeur de bord de pointe en appelant KsPinGetLeadingEdgeStreamPointer. Les minidrivers manipulent ensuite les données de flux à l’aide de l’API de pointeur de flux .

Les minidrivers qui utilisent le traitement centré sur les broches peuvent modifier quand AVStream appelle la fonction de distribution AVStrMiniPinProcess en définissant des indicateurs dans la structure KSPIN_DESCRIPTOR_EX appropriée. Les descriptions des indicateurs sur la page de référence KSPIN_DESCRIPTOR_EX sont particulièrement pertinentes pour les fournisseurs qui implémentent des filtres centrés sur les broches.

Les tentatives de traitement peuvent échouer si le minidriver maintient le mutex de traitement via KsPinAcquireProcessingMutex. Des problèmes peuvent également survenir si le minidriver manipule directement une porte à l’aide des appels KSGATE* .

L’exemple de pilote AVStream Simulated Hardware (AVSHwS) dans les exemples du Kit de pilotes Windows est un pilote de capture centré sur les broches pour un élément matériel simulé. L’exemple Avshws montre comment implémenter DMA via AVStream.