Recherche

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Les filtres prennent en charge la recherche via l’interface IMediaSeeking . L’application interroge le Gestionnaire de graphe de filtre pour IMediaSeeking et l’utilise pour émettre des commandes de recherche. Le Gestionnaire de graphe de filtre distribue chaque commande de recherche à tous les filtres du convertisseur dans le graphique. Chaque convertisseur transmet la commande amont, via les broches de sortie des filtres amont, jusqu’à ce qu’il 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 de recherche, le temps de flux est réinitialisé à zéro.

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

séquence d’événements

Si un filtre d’analyseur a plusieurs broches de sortie, il désigne généralement l’une d’entre elles pour accepter les commandes de recherche. Les autres broches rejettent ou ignorent toutes les commandes de recherche qu’elles reçoivent. De cette façon, l’analyseur maintient 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 garantit que le Gestionnaire de graphe de filtres retourne la valeur correcte à l’application.

L’interface IMediaPosition a été déconseillée pour les filtres. Les clients Automation doivent toujours utiliser cette interface sur le Gestionnaire de graphes de filtre, car IMediaSeeking n’est pas compatible avec Automation, mais le Gestionnaire de graphes de filtre traduit tous les appels IMediaPosition en appels IMediaSeeking .

Rinçage

Heure et horloges dans DirectShow