Partager via


IMemInputPin ::Receive, méthode (strmif.h)

[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.]

La Receive méthode reçoit l’exemple de média suivant dans le flux.

Syntaxe

HRESULT Receive(
  [in] IMediaSample *pSample
);

Paramètres

[in] pSample

Pointeur vers l’interface IMediaSample de l’exemple.

Valeur retournée

Retourne une valeur HRESULT . Les valeurs possibles incluent celles indiquées dans le tableau suivant.

Code de retour Description
S_OK
Opération réussie.
S_FALSE
L’échantillon a été rejeté.
E_POINTER
Argument pointeur NULL .
VFW_E_INVALIDMEDIATYPE
Type de média non valide.
VFW_E_RUNTIME_ERROR
Une erreur d’exécution s’est produite.
VFW_E_WRONG_STATE
L’épingle est arrêtée.

Remarques

Cette méthode est synchrone et peut être bloquante. L’épingle effectue l’une des opérations suivantes :

  • Rejette l’exemple.
  • Retourne immédiatement et traite l’exemple dans un thread de travail.
  • Traite l’exemple avant de retourner.
Dans le dernier cas, la méthode peut se bloquer indéfiniment. Si cela peut se produire, la méthode IMemInputPin ::ReceiveCanBlock retourne S_OK.

Si l’épingle utilise un thread de travail pour traiter l’exemple, elle contient un nombre de références sur l’exemple. Dans tous les cas, la broche de sortie ne peut pas réutiliser directement cet exemple. Elle doit appeler la méthode IMemAllocator ::GetBuffer pour obtenir un nouvel exemple.

Si cette méthode retourne S_FALSE ou un code d’erreur, le filtre amont doit cesser d’envoyer des exemples jusqu’à ce que le graphique arrête ou termine une opération de vidage. Les raisons courantes d’une valeur de retour S_FALSE sont les suivantes :

  • La broche en aval est en cours de vidage ; autrement dit, il a reçu un appel BeginFlush et n’a pas encore reçu d’appel EndFlush .
  • Le filtre en aval a détecté la fin du flux. (Voir Notifications de fin d’Stream.)

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête strmif.h (include Dshow.h)
Bibliothèque Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

IMemInputPin, interface