Méthode ISampleGrabber::SetOneShot

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est 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.]

Notes

[Déconseillé. Cette API peut être supprimée des versions ultérieures de Windows.]

 

La méthode SetOneShot spécifie si le filtre Sample Grabber s’arrête après que le filtre a reçu un exemple.

Syntaxe

HRESULT SetOneShot(
   BOOL OneShot
);

Paramètres

OneShot

Valeur booléenne qui spécifie si le filtre Sample Grabber s’arrête après la réception d’un exemple.

Valeur Signification
TRUE
L’exemple Grabber s’arrête après le premier exemple.
FALSE
Après le premier exemple, l’sample grabber continue de traiter les exemples. Il s'agit du comportement par défaut.

 

Valeur retournée

Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Notes

Utilisez cette méthode pour obtenir un seul exemple à partir du flux, comme suit :

  1. Appelez SetOneShot avec la valeur TRUE.
  2. Si vous le souhaitez, utilisez l’interface IMediaSeeking pour rechercher une position dans le flux.
  3. Appelez IMediaControl::Run pour exécuter le graphique de filtre.
  4. Appelez IMediaEvent::WaitForCompletion pour attendre que le graphique s’arrête. Vous pouvez également appeler IMediaEvent::GetEvent pour obtenir des événements de graphique, jusqu’à ce que vous receviez l’événement EC_COMPLETE .

Après l’arrêt de l’exemple Grabber, le graphe de filtre est toujours en cours d’exécution. Vous pouvez rechercher ou suspendre le graphe pour obtenir un autre exemple.

Remarque

Une version antérieure de la documentation indiquait que le graphique de filtre s’arrête après la réception de l’exemple. Ce n’est pas exact. Le flux se termine, mais le graphe reste dans l’état en cours d’exécution.

 

L’exemple Grabber implémente le mode one-shot en appelant IPin::EndOfStream sur le filtre en aval et en retournant S_FALSE à partir de la méthode IMemInputPin::Receive de celui-ci.

Notes

Le fichier d’en-tête Qedit.h n’est pas compatible avec les en-têtes Direct3D ultérieurs à la version 7.

 

Remarque

Pour obtenir Qedit.h, téléchargez la mise à jour Microsoft Windows SDK pour Windows Vista et .NET Framework 3.0. Qedit.h n’est pas disponible dans le Microsoft Windows SDK pour Windows 7 et .NET Framework 3.5 Service Pack 1.

 

Configuration requise

Condition requise Valeur
En-tête
Qedit.h
Bibliothèque
Strmiids.lib

Voir aussi

Utilisation de l’exemple Grabber

ISampleGrabber, interface