IMFDeviceTransform ::P rocessEvent, méthode (mftransform.h)

La méthode ProcessEvent envoie un événement à un flux d’entrée sur cette transformation Media Foundation (MFT).

Syntaxe

HRESULT ProcessEvent(
  [in] DWORD         dwInputStreamID,
  [in] IMFMediaEvent *pEvent
);

Paramètres

[in] dwInputStreamID

identificateur Stream. Pour obtenir la liste des identificateurs de flux, appelez IMFDeviceTransform ::GetStreamIDs.

[in] pEvent

Pointeur vers l’interface IMFMediaEvent d’un objet d’événement.

Valeur retournée

Cette méthode retourne un code HRESULT. Les valeurs possibles incluent, mais sans s’y limiter, les valeurs indiquées dans le tableau suivant.

Code de retour Description
S_OK
Événement traité avec succès. L’événement sera propagé vers le bas du flux.
MF_E_INVALIDSTREAMNUMBER
Un ID de flux non valide a été passé.
MF_S_TRANSFORM_DO_NO_PROPOGATE_EVENT
Indique que l’appareil MFT ne souhaite pas que l’événement soit propagé davantage.
E_NOTIMPL
La fonction n’est pas implémentée.

Remarques

Un MFT peut gérer l’envoi de l’événement en aval, ou il peut laisser la DTM effectuer cette opération, comme indiqué par la valeur de retour :

  • E_NOTIMPL : Le MFT ignore tous les événements, et la DTM doit envoyer tous les événements en aval. Une fois que le pipeline a reçu cette valeur de retour
  • S_OK: La MFT a examiné cet événement, mais la DTM doit envoyer l’événement en aval. En interne, la MFT peut répondre à l’événement d’une manière ou d’une autre, ou ignorer l’événement.
  • MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT : La DTM ne doit pas propager cet événement en aval. Soit la MFT envoie l’événement en aval, soit la MFT consomme l’événement et ne l’envoie pas en aval. Le MFT ne doit consommer l’événement que si l’événement doit s’arrêter à cette MFT et ne pas se déplacer plus en aval. Mais dans la plupart des cas, l’événement doit se déplacer en aval.
Pour envoyer l’événement en aval, le MFT ajoute l’événement à l’objet de collection fourni par le client dans le membre pEvents de la structure MFT_OUTPUT_DATA_BUFFER , lorsque le client appelle IMFTransform ::P rocessOutput.

Les événements doivent être sérialisés avec les exemples qui viennent avant et après eux. Attachez l’événement à l’exemple de sortie qui suit l’événement. (Le pipeline traite d’abord l’événement, puis l’exemple.) Si un MFT conserve un ou plusieurs échantillons entre les appels à IMFTransform ::P rocessInput et IMFTransform ::P rocessOutput, le MFT doit gérer l’envoi de tous les événements en aval, car dans ce cas, le pipeline ne peut pas mettre en corrélation les échantillons d’entrée avec les exemples de sortie.

Si un MFT ne retient pas les échantillons et n’a pas besoin d’examiner des événements, il peut retourner E_NOTIMPL.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10 version 1703
Plateforme cible Windows
En-tête mftransform.h

Voir aussi

IMFDeviceTransform