MFT_MESSAGE_COMMAND_DRAIN

Demande une transformation Media Foundation (MFT) pour vider toutes les données stockées.

Paramètre de message

Aucun.

Notes

Pour envoyer ce message, appelez IMFTransform::P rocessMessage.

Une fois ce message envoyé, le flux d’entrée spécifié n’accepte pas d’entrée tant que le MFT ne traite pas toutes les données des appels précédents à IMFTransform::P rocessInput.

Le processus de drainage varie légèrement entre les MFT synchrones et les MFT asynchrones :

MFT synchrones

  1. Une fois que le client a envoyé ce message, il appelle IMFTransform::P rocessOutput dans une boucle, jusqu’à ce que ProcessOutput retourne le code d’erreur MF_E_TRANSFORM_NEED_MORE_INPUT.
  2. Tant que le MFT a encore des données à traiter, d’autres appels à ProcessInput échouent. Le MFT continue de produire une sortie jusqu’à ce qu’il utilise toutes les données stockées. Le MFT ignore toutes les données qui ne peuvent pas être traitées dans un exemple de sortie complet. (Par exemple, il doit supprimer une image vidéo partielle.)

MfT asynchrones

  1. Le MFT continue d’envoyer des événements METransformHaveOutput jusqu’à ce qu’il n’ait plus de données à traiter. Il n’envoie pas d’événements METransformNeedInput pendant cette période.
  2. Une fois que le MFT a envoyé le dernier événement METransformHaveOutput , il envoie un événement METransformDrainComplete .
  3. Une fois le drainage terminé, le MFT n’envoie pas d’autre événement METransformNeedInput tant qu’il n’a pas reçu un message MFT_MESSAGE_NOTIFY_START_OF_STREAM du client.

Une fois que le client a vidé le MFT, le client peut envoyer des données d’entrée supplémentaires. Le premier exemple après l’opération de drainage doit avoir l’attribut de discontinuité (MFSampleExtension_Discontinuity attribut).

Notes

Les versions antérieures de cette documentation indiquait que le paramètre d’événement ulParam est membre de l’énumération _MFT_DRAIN_TYPE . C’est inexact. UlParam contient un identificateur de flux.

 

Implémentation

Un MFT asynchrone doit toujours renvoyer METransformDrainComplete une fois qu’il a été vidé.

Un MFT synchrone peut ignorer ce message et retourner S_OK si les conditions suivantes sont remplies :

  • Le MFT ne stocke jamais plusieurs exemples d’entrée à la fois.
  • Chaque exemple d’entrée produit un seul exemple de sortie.

Sinon, un MFT synchrone doit implémenter ce message.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2008 [applications de bureau uniquement]
En-tête
Mftransform.h

Voir aussi

MFT_MESSAGE_TYPE

MfT asynchrones