IMFSourceReaderEx::AddTransformForStream-Methode (mfreadwrite.h)

Fügt einem Stream eine Transformation hinzu, z. B. einen Audio- oder Videoeffekt.

Syntax

HRESULT AddTransformForStream(
  [in] DWORD    dwStreamIndex,
  [in] IUnknown *pTransformOrActivate
);

Parameter

[in] dwStreamIndex

Der zu konfigurierende Stream. Der Wert kann einer der folgenden Werte sein.

Wert Bedeutung
0–0xFFFFFFFB
Der nullbasierte Index eines Datenstroms.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
Der erste Videostream.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
Der erste Audiodatenstrom.

[in] pTransformOrActivate

Ein Zeiger auf eine der folgenden Optionen:

Rückgabewert

Diese Methode kann einen dieser Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Erfolg.
MF_E_INVALIDMEDIATYPE
Die Transformation unterstützt das aktuelle Streamformat nicht, und es war keine Konvertierung möglich. Weitere Informationen finden Sie unter Hinweise.
MF_E_INVALIDREQUEST
Ungültige Anforderung.
MF_E_INVALIDSTREAMNUMBER
Der dwStreamIndex-Parameter ist ungültig.

Hinweise

Diese Methode versucht, die Transformation am Ende der aktuellen Verarbeitungskette hinzuzufügen.

Um diese Methode zu verwenden, führen Sie die folgende Sequenz von Aufrufen aus:

  1. Rufen Sie IMFSourceReader::SetCurrentMediaType auf, um den gewünschten Ausgabetyp für den Stream festzulegen. In diesem Schritt können Sie einen Medientyp angeben, der nur die Haupttyp- und Untertyp-GUIDs enthält. Um beispielsweise eine 32-Bit-RGB-Ausgabe abzurufen, legen Sie einen Haupttyp von MFMediaType_Video und einen Untertyp von MFVideoFormat_RGB32 fest. (Weitere Informationen finden Sie unter Medientyp-GUIDs.)
  2. Rufen Sie AddTransformForStream auf. Wenn der Quellleser erfolgreich eine Verbindung mit der Transformation herstellt, wird der Ausgabetyp für die Transformation festgelegt.
  3. Rufen Sie IMFSourceReader::GetCurrentMediaType auf, um den Ausgabetyp aus der Transformation abzurufen. Diese Methode gibt einen Medientyp mit einer vollständigen Formatbeschreibung zurück.
  4. Wenn Sie den Ausgabetyp ändern möchten, rufen Sie OPTIONAL ERNEUT IMFSourceReader::SetCurrentMediaType auf, um einen vollständigen Medientyp für die Transformation festzulegen.
Die AddTransformForStream-Methode fügt keinen Decoder in die Verarbeitungskette ein. Wenn das native Streamformat codiert ist und die Transformation ein unkomprimiertes Format erfordert, rufen Sie SetCurrentMediaType auf, um das unkomprimierte Format festzulegen (Schritt 1 in der vorherigen Liste). Die -Methode fügt jedoch einen Videoprozessor ein, um bei Bedarf zwischen RGB- und YUV-Formaten zu konvertieren.

Die Methode schlägt fehl, wenn der Quellleser mit den Attributen MF_READWRITE_DISABLE_CONVERTERS oder MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING konfiguriert wurde.

Im asynchronen Modus schlägt die Methode auch fehl, wenn eine Beispielanforderung aussteht. Warten Sie in diesem Fall, bis der OnReadSample-Rückruf aufgerufen wird, bevor Sie die -Methode aufrufen. Weitere Informationen zur Verwendung des Quelllesers im asynchronen Modus finden Sie unter IMFSourceReader::ReadSample.

Sie können während des Streamings jederzeit eine Transformation hinzufügen. Die -Methode leert oder entleert die Pipeline jedoch nicht, bevor die Transformation eingefügt wird. Wenn sich daten bereits in der Pipeline befindet, wird daher nicht garantiert, dass die Transformation für das nächste Beispiel angewendet wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile mfreadwrite.h

Weitere Informationen

IMFSourceReaderEx

Quellleser