Cherche

Les filtres prennent en charge la recherche par le biais de l’interface IMediaSeeking . l’application interroge le gestionnaire de Graph de filtre pour IMediaSeeking et l’utilise pour émettre des commandes de recherche. le gestionnaire de Graph de filtre distribue chaque commande de recherche à tous les filtres de convertisseur du graphique. Chaque convertisseur transmet la commande en amont, via les broches de sortie des filtres en amont, jusqu’à ce qu’elle atteigne un filtre qui peut exécuter la recherche. En général, un filtre source ou un filtre d’analyseur, tel que le séparateur AVI, effectue l’opération de recherche.

Lorsqu’un filtre effectue une opération de recherche, il vide toutes les données en attente. Le résultat est de réduire la latence des commandes de recherche, car les données existantes sont vidées du graphique. Après une commande Seek, le temps de flux se réinitialise à zéro.

Le diagramme suivant illustre la séquence d’événements.

séquence d’événements

Si un filtre de l’analyseur a plusieurs broches de sortie, il les désigne généralement pour accepter les commandes Seek. Les autres codes confidentiels rejettent ou ignorent les commandes de recherche qu’ils reçoivent. De cette façon, l’analyseur conserve tous ses flux synchronisés. Toutefois, toutes les broches de sortie doivent implémenter IMediaSeeking :: GetCapabilities et IMediaSeeking :: CheckCapabilities pour retourner les fonctionnalités de recherche du filtre. cela permet de s’assurer que le gestionnaire de Graph de filtre retourne la valeur correcte à l’application.

L’interface IMediaPosition est dépréciée pour les filtres. les clients Automation doivent toujours utiliser cette interface sur le gestionnaire de Graph de filtre, car IMediaSeeking n’est pas compatible avec Automation, mais le gestionnaire de Graph de filtre traduit tous les appels IMediaPosition en appels IMediaSeeking .

Vidage

Temps et horloges dans DirectShow