MFT_OUTPUT_DATA_BUFFER structure (mftransform.h)

Contient des informations sur une mémoire tampon de sortie pour une transformation Media Foundation. Cette structure est utilisée dans la méthode IMFTransform::P rocessOutput .

Syntaxe

typedef struct _MFT_OUTPUT_DATA_BUFFER {
  DWORD         dwStreamID;
  IMFSample     *pSample;
  DWORD         dwStatus;
  IMFCollection *pEvents;
} MFT_OUTPUT_DATA_BUFFER, *PMFT_OUTPUT_DATA_BUFFER;

Membres

dwStreamID

Identificateur de flux de sortie. Avant d’appeler ProcessOutput, définissez ce membre sur un identificateur de flux valide.

Exception : si la méthode IMFTransform::GetStreamIDs retourne E_NOTIMPL, le MFT ignore ce membre et utilise les index du tableau pOutputSamples dans la méthode ProcessOutput comme identificateurs de flux. En d’autres termes, il utilise le premier élément du tableau pour le flux 0, le second pour le flux 1, et ainsi de suite. Il est recommandé (mais pas obligatoire) que l’appelant définisse dwStreamID égal à l’index du tableau dans ce cas.

pSample

Pointeur vers l’interface IMFSample . Avant d’appeler ProcessOutput, définissez ce membre sur un pointeur IMFSample ou NULL valide. Pour plus d'informations, consultez la section Notes.

dwStatus

Avant d’appeler ProcessOutput, définissez ce membre sur zéro. Lorsque la méthode est retournée, la MFT peut définir le membre sur une valeur de l’énumération _MFT_OUTPUT_DATA_BUFFER_FLAGS . Sinon, le MFT laisse ce membre égal à zéro.

pEvents

Avant d’appeler ProcessOutput, définissez ce membre sur NULL. Lors de la sortie, le MFT peut définir ce membre sur un pointeur d’interface IMFCollection valide. Le pointeur représente un collecton qui contient zéro ou plusieurs événements. Pour obtenir chaque événement, appelez IMFCollection::GetElement et interrogez le pointeur IUnknown retourné pour l’interface IMFMediaEvent . Lorsque la méthode ProcessOutput retourne, l’appelant est chargé de libérer le pointeur IMFCollection si le pointeur n’a pas la valeur NULL.

Notes

Vous devez fournir une structure MFT_OUTPUT_DATA_BUFFER pour chaque flux de sortie sélectionné.

Les mfts peuvent prendre en charge deux modèles d’allocation différents pour les exemples de sortie :

  • Le MFT alloue l’exemple de sortie.
  • Le client alloue l’exemple de sortie.
Pour trouver le modèle pris en charge par MFT pour un flux de sortie donné, appelez IMFTransform::GetOutputStreamInfo et case activée la valeur de dwFlags.
Indicateur Modèle d’allocation
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES Le MFT alloue les exemples de sortie pour le flux. Définissez pSample sur NULL pour ce flux.
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES MFT prend en charge les deux modèles d’allocation.
Ni l’un ni l’autre (par défaut) Le client doit allouer les exemples de sortie pour le flux.
 

Le comportement de ProcessOutput dépend de la valeur initiale de pSample et de la valeur du paramètre dwFlags dans la méthode ProcessOutput .

  • Si pSample a la valeur NULL et que dwFlags contient l’indicateur MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, le MFT ignore les données de sortie.

    Restriction : ce flux de sortie doit avoir l’indicateur MFT_OUTPUT_STREAM_DISCARDABLE ou MFT_OUTPUT_STREAM_LAZY_READ. (Pour obtenir les indicateurs du flux de sortie, appelez la méthode IMFTransform::GetOutputStreamInfo .)

  • Si pSample a la valeur NULL et que dwFlags ne contient pas le MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, MFT fournit un exemple pour les données de sortie. Le MFT définit pSample pour qu’il pointe vers l’exemple qu’il fournit. Le MFT peut allouer un nouvel exemple ou réutiliser un exemple d’entrée.

    Restriction : ce flux de sortie doit avoir l’indicateur MFT_OUTPUT_STREAM_PROVIDES_SAMPLES ou MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES.

  • Si pSample n’a pas la valeur NULL, MFT utilise l’exemple fourni par l’appelant.

    Restriction : ce flux de sortie ne doit pas avoir l’indicateur MFT_OUTPUT_STREAM_PROVIDES_SAMPLES.

Toutes les autres combinaisons ne sont pas valides et entraînent le retour de ProcessOutput E_INVALIDARG.

Chaque appel à ProcessOutput peut produire zéro ou plusieurs événements et jusqu’à un échantillon par flux de sortie.

Spécifications

   
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]
En-tête mftransform.h

Voir aussi

IMFTransform::P rocessOutput

Media Foundation Structures

Transformations Media Foundation