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 |
---|---|
|
Opération réussie. |
|
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 |
|
Bibliothèque |
|