MFT_OUTPUT_DATA_BUFFER-Struktur (mftransform.h)

Enthält Informationen zu einem Ausgabepuffer für eine Media Foundation-Transformation. Diese Struktur wird in der METHODE IMFTransform::P rocessOutput verwendet.

Syntax

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

Members

dwStreamID

Ausgabedatenstrombezeichner. Legen Sie diesen Member vor dem Aufrufen von ProcessOutput auf einen gültigen Streambezeichner fest.

Ausnahme: Wenn die IMFTransform::GetStreamIDs-Methode E_NOTIMPL zurückgibt, ignoriert der MFT dieses Element und verwendet die Indizes des pOutputSamples-Arrays in der ProcessOutput-Methode als Streambezeichner. Mit anderen Worten, es verwendet das erste Element im Array für Stream 0, das zweite für Stream 1 usw. Es wird empfohlen (aber nicht erforderlich), dass der Aufrufer in diesem Fall dwStreamID dem Arrayindex entspricht.

pSample

Zeiger auf die IMFSample-Schnittstelle . Legen Sie vor dem Aufrufen von ProcessOutput diesen Member gleich einem gültigen IMFSample-Zeiger oder NULL fest. Weitere Informationen finden Sie unter Hinweise.

dwStatus

Legen Sie diesen Member vor dem Aufrufen von ProcessOutput auf 0 fest. Wenn die -Methode zurückgibt, kann der MFT den Member gleich einem Wert aus der _MFT_OUTPUT_DATA_BUFFER_FLAGS-Enumeration festlegen. Andernfalls belässt der MFT diesen Member gleich 0.

pEvents

Legen Sie vor dem Aufrufen von ProcessOutput dieses Member auf NULL fest. Bei der Ausgabe kann der MFT diesen Member auf einen gültigen IMFCollection-Schnittstellenzeiger festlegen. Der Zeiger stellt ein Collecton dar, das null oder mehr Ereignisse enthält. Um jedes Ereignis abzurufen, rufen Sie IMFCollection::GetElement auf, und fragen Sie den zurückgegebenen IUnknown-Zeiger für die IMFMediaEvent-Schnittstelle ab. Wenn die ProcessOutput-Methode zurückgegeben wird, ist der Aufrufer für das Freigeben des IMFCollection-Zeigers verantwortlich, wenn der Zeiger nicht NULL ist.

Hinweise

Sie müssen eine MFT_OUTPUT_DATA_BUFFER-Struktur für jeden ausgewählten Ausgabestream bereitstellen.

MFTs können zwei verschiedene Zuordnungsmodelle für Ausgabebeispiele unterstützen:

  • Das MFT weist das Ausgabebeispiel zu.
  • Der Client weist das Ausgabebeispiel zu.
Rufen Sie IMFTransform::GetOutputStreamInfo auf, um zu ermitteln, welches Modell vom MFT für einen bestimmten Ausgabedatenstrom unterstützt wird, und überprüfen Sie den Wert von dwFlags.
Flag Zuordnungsmodell
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES Der MFT weist die Ausgabebeispiele für den Stream zu. Legen Sie pSample für diesen Stream auf NULL fest.
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES Der MFT unterstützt beide Zuordnungsmodelle.
Weder (Standard) Der Client muss die Ausgabebeispiele für den Stream zuordnen.
 

Das Verhalten von ProcessOutput hängt vom Anfangswert von pSample und dem Wert des dwFlags-Parameters in der ProcessOutput-Methode ab.

  • Wenn pSampleNULL ist und dwFlags das MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER-Flag enthält, verwirft der MFT die Ausgabedaten.

    Einschränkung: Dieser Ausgabedatenstrom muss über das MFT_OUTPUT_STREAM_DISCARDABLE- oder MFT_OUTPUT_STREAM_LAZY_READ-Flag verfügen. (Um die Flags für den Ausgabestream abzurufen, rufen Sie die IMFTransform::GetOutputStreamInfo-Methode auf.)

  • Wenn pSampleNULL ist und dwFlags nicht den MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER enthält, stellt der MFT ein Beispiel für die Ausgabedaten bereit. Der MFT legt pSample so fest, dass er auf das bereitgestellte Beispiel verweist. Der MFT kann entweder ein neues Beispiel zuordnen oder ein Eingabebeispiel erneut verwenden.

    Einschränkung: Dieser Ausgabedatenstrom muss über das MFT_OUTPUT_STREAM_PROVIDES_SAMPLES- oder MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES-Flag verfügen.

  • Wenn pSample nicht NULL ist, verwendet der MFT das vom Aufrufer bereitgestellte Beispiel.

    Einschränkung: Dieser Ausgabedatenstrom darf nicht über das flag MFT_OUTPUT_STREAM_PROVIDES_SAMPLES verfügen.

Alle anderen Kombinationen sind ungültig und führen dazu , dass ProcessOutput E_INVALIDARG zurückgibt.

Jeder Aufruf von ProcessOutput kann null oder mehr Ereignisse und bis zu einem Beispiel pro Ausgabedatenstrom erzeugen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Kopfzeile mftransform.h

Weitere Informationen

IMFTransform::P rocessOutput

Medienfundamentstrukturen

Media Foundation-Transformationen