Partager via


Méthode IMFMediaStream ::RequestSample (mfidl.h)

Demande un exemple à partir de la source multimédia.

Syntaxe

HRESULT RequestSample(
  [in] IUnknown *pToken
);

Paramètres

[in] pToken

Pointeur vers l’interface IUnknown vers un objet utilisé comme jeton pour la requête. L’appelant doit implémenter cet objet. Ce paramètre peut être NULL. Consultez la section Notes.

Valeur de retour

Cette méthode retourne un code HRESULT. Les valeurs possibles sont notamment celles figurant dans le tableau suivant.

Code de retour Description
S_OK
S_OK
MF_E_END_OF_STREAM
La fin du flux a été atteinte.
MF_E_MEDIA_SOURCE_WRONGSTATE
La source multimédia est arrêtée.
MF_E_SHUTDOWN
La méthode Shutdown de la source a été appelée.

Remarques

Si pToken n’a pas la valeur NULL, le flux multimédia appelle AddRef sur pToken et place le jeton dans une file d’attente de premier entrant et premier sorti.

Lorsque l’exemple suivant est disponible, le flux de flux multimédia effectue les opérations suivantes :

  1. Extrait le premier jeton de la file d’attente.
  2. Définit l’attribut MFSampleExtension_Token sur l’exemple multimédia. Les données d’attribut sont un pointeur vers l’objet de jeton.
  3. Envoie un événement MEMediaSample . Les données d’événement sont un pointeur vers l’interface IMFSample de l’exemple multimédia.
  4. Appelle Release sur le jeton.
Si le flux multimédia ne peut pas répondre à la demande de l’appelant pour un exemple, il libère simplement l’objet de jeton et ignore les étapes 2 et 3.

L’appelant doit surveiller le nombre de références sur le jeton de demande. Si le flux multimédia envoie un événement MEMediaSample , récupérez l’attribut MFSampleExtension_Token à partir de l’exemple et faites correspondre la valeur de l’attribut au jeton. Si le nombre de références du jeton tombe à zéro et que vous n’avez pas reçu d’événement MEMediaSample, cela signifie que la demande a été supprimée.

Étant donné que le pipeline Media Foundation est multithread, la méthode RequestSample de la source peut être appelée après l’arrêt de la source. Si la source multimédia est arrêtée, la méthode doit retourner MF_E_MEDIA_SOURCE_WRONGSTATE. Le pipeline ne traite pas ce code de retour comme une condition d’erreur. Si la source retourne un autre code d’erreur, le pipeline le traite comme une erreur irrécupérable et arrête la session.

Note Les versions antérieures de la documentation ont répertorié le code d’erreur incorrect pour ce cas.

 

Si la source multimédia est suspendue, la méthode réussit, mais le flux ne remet pas l’exemple tant que la source n’est pas redémarré.

Si une source multimédia rencontre une erreur de manière asynchrone lors du traitement des données, elle doit signaler l’erreur de l’une des manières suivantes (mais pas les deux) :

  • Retourne un code d’erreur de l’appel RequestSample suivant.
  • Envoyer un événement MEError .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête mfidl.h
Bibliothèque Mfuuid.lib

Voir aussi

IMFMediaStream

Sources multimédias