Interrogation des fonctionnalités de 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.]
Microsoft® DirectShow® prend en charge la recherche via l’interface IMediaSeeking . Le Gestionnaire de graphe de filtres expose cette interface, mais la fonctionnalité de recherche est toujours implémentée par les filtres dans le graphique.
Certaines données ne peuvent pas être recherchés. Par exemple, vous ne pouvez pas rechercher un flux vidéo en direct à partir d’une caméra. Toutefois, si un flux est recherché, il existe différents types de recherche qu’il peut prendre en charge. Il s’agit notamment des paramètres suivants :
- Recherche d’une position arbitraire dans le flux.
- Récupération de la durée du flux.
- Récupération de la position actuelle dans le flux.
- Jouer à l’envers.
L’interface IMediaSeeking définit un ensemble d’indicateurs , AM_SEEKING_SEEKING_CAPABILITIES, qui décrivent les fonctionnalités de recherche possibles. Pour récupérer les fonctionnalités du flux, appelez la méthode IMediaSeeking::GetCapabilities . La méthode retourne une combinaison d’indicateurs au niveau du bit. L’application peut les tester à l’aide de l’opérateur (AND au niveau du & bit). Par exemple, le code suivant vérifie si le graphique peut rechercher une position arbitraire :
DWORD dwCap = 0;
HRESULT hr = pSeek->GetCapabilities(&dwCap);
if (AM_SEEKING_CanSeekAbsolute & dwCap)
{
// Graph can seek to absolute positions.
}