Interrogation des fonctionnalités de recherche

Microsoft® DirectShow® prend en charge la recherche par le biais de l’interface IMediaSeeking . le gestionnaire de Graph de filtre expose cette interface, mais la fonctionnalité de recherche est toujours implémentée par des filtres dans le graphique.

Certaines données ne peuvent pas être recherchées. Par exemple, vous ne pouvez pas Rechercher un flux vidéo en direct à partir d’une caméra. Toutefois, si un flux peut faire l’objet d’une recherche, il peut prendre en charge différents types de recherche. Ce sont, entre autres, les suivantes :

  • 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.
  • Lit en sens inverse.

L’interface IMediaSeeking définit un jeu d’indicateurs, qui recherche des _ _ _ fonctionnalités de recherche, 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’opérations de bits d’indicateurs. 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 effectuer une recherche sur une position arbitraire :

DWORD dwCap = 0;
HRESULT hr = pSeek->GetCapabilities(&dwCap);
if (AM_SEEKING_CanSeekAbsolute & dwCap)
{
    // Graph can seek to absolute positions.
}