Méthode CBaseOutputPin.Deliver

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

La Deliver méthode fournit un exemple de média à la broche d’entrée connectée.

Syntaxe

virtual HRESULT Deliver(
   IMediaSample *pSample
);

Paramètres

pSample

Pointeur vers l’interface IMediaSample de l’exemple.

Valeur renvoyée

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

Code de retour Description
S_OK
Opération réussie.
VFW_E_NOT_CONNECTED
Le code pin n’est pas connecté.

Notes

Cette méthode appelle la méthode IMemInputPin::Receive sur la broche d’entrée. Receive peut bloquer si la méthode IMemInputPin::ReceiveCanBlock retourne S_OK.

Relâchez l’exemple après avoir appelé cette méthode. La broche d’entrée pouvant contenir un nombre de références sur l’exemple, ne réutilisez pas l’exemple. Appelez toujours la méthode CBaseOutputPin::GetDeliveryBuffer pour obtenir un nouvel exemple.

Maintenez la section critique du filtre avant d’appeler cette méthode. Dans le cas contraire, l’épingle risque d’être déconnectée pendant l’appel de méthode. Si le filtre utilise un thread de travail pour remettre des exemples, maintenez la section critique lorsque le filtre est prêt à remettre un exemple. Sinon, vous pouvez conserver la section critique dans la méthode IMemInputPin::Receive du filtre, où le filtre traite des exemples.

Les threads de travail peuvent créer un blocage potentiel. Lorsque le thread contient la section critique, il peut attendre un changement d’état dans le filtre. En même temps, le changement d’état peut attendre la fin du thread. Pour éviter cela, le code de changement d’état doit signaler un événement qui met fin au thread, puis attendre que le thread signale l’achèvement.

Configuration requise

Condition requise Valeur
En-tête
Amfilter.h (include Streams.h)
Bibliothèque
Strmbase.lib (builds de vente au détail) ;
Strmbasd.lib (builds de débogage)

Voir aussi

CBaseOutputPin, classe