Share via


ISampleGrabber::SetMediaType-Methode

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Hinweis

[Veraltet. Diese API kann aus zukünftigen Versionen von Windows entfernt werden.]

 

Die SetMediaType -Methode gibt den Medientyp für die Verbindung am Eingabenadel des Sample Grabbers an.

Syntax

HRESULT SetMediaType(
   const AM_MEDIA_TYPE *pType
);

Parameter

pType

Der Zeiger auf eine AM_MEDIA_TYPE-Struktur gibt den erforderlichen Medientyp an. Es ist nicht erforderlich, alle Strukturmitglieder festzulegen. Weitere Informationen finden Sie unter Hinweise.

Rückgabewert

Gibt S_OK zurück.

Bemerkungen

Standardmäßig weist der Beispielgrabber keinen bevorzugten Medientyp auf. Um sicherzustellen, dass der Beispielgrabber eine Verbindung mit dem richtigen Filter herstellt, rufen Sie diese Methode auf, bevor Sie das Filterdiagramm erstellen.

Diese Methode schränkt den Bereich der Medientypen ein, die der Filter akzeptiert. Wenn der Filter eine Verbindung herstellt, versucht er, dem in pType angegebenen Medientyp zu entsprechen. Dazu werden die Haupttyp-, Unter- und Formattyp-GUIDs in dieser Reihenfolge verglichen. Wenn pType für jede dieser GUIDs über den Wert GUID_NULL verfügt, akzeptiert der Beispielgrabber den Medientyp ohne weitere Überprüfungen. Wenn pType über einen anderen Wert verfügt, vergleicht der Beispielgrabber ihn mit der GUID im Verbindungstyp. Sofern die beiden GUIDs nicht genau übereinstimmen, lehnt der Beispielgrabber die Verbindung ab.

Bei Videomedientypen ignoriert der Beispielgrabber den Formatblock. Daher akzeptiert es jede Videogröße und Bildrate. Legen Sie beim Aufrufen SetMediaTypeden Formatblock (pbFormat) auf NULL und die Größe (cbFormat) auf Null fest. Für Audiomedientypen untersucht der Beispielgrabber die WAVEFORMATEX-Struktur und erfordert, dass der andere Filter eine Verbindung mit diesem Format herstellt, es sei denn, der Formatblock in pType ist NULL, oder das Formattag ist WAVE_FORMAT_PCM und die anderen Strukturmember sind 0.

Beispiel 1:

  • Haupttyp: MEDIATYPE_Video
  • Untertyp: GUID_NULL
  • Formattyp: GUID_NULL

Der Beispielgrabber akzeptiert jeden Videotyp, bei dem der Haupttyp MEDIATYPE_Video entspricht. Der Untertyp wird nicht überprüft.

Beispiel 2:

  • Haupttyp: MEDIATYPE_Video
  • Untertyp: MEDIASUBTYPE_RGB24
  • Formattyp: GUID_NULL

Jetzt überprüft der Beispielgrabber den Untertyp und akzeptiert nur RGB 24-Video.

Einschränkungen: Unabhängig davon, welchen Typ Sie festlegen, lehnt der Beispielgrabberfilter alle Videotypen mit top-down-Ausrichtung (negativ biHeight) oder mit einem Formattyp von FORMAT_VideoInfo2 ab. In diesem Fall stellt der Filter keine Verbindung her, obwohl die SetMediaType Methode erfolgreich ist.

Hinweis

Die Headerdatei Qedit.h ist nicht mit Direct3D-Headern ab Version 7 kompatibel.

 

Hinweis

Um Qedit.h zu erhalten, laden Sie das Microsoft Windows SDK Update für Windows Vista und .NET Framework 3.0 herunter. Qedit.h ist im Microsoft Windows SDK für Windows 7 und .NET Framework 3.5 Service Pack 1 nicht verfügbar.

 

Anforderungen

Anforderung Wert
Header
Qedit.h
Bibliothek
Strmiids.lib

Siehe auch

Verwenden des Beispielgrabbers

ISampleGrabber-Schnittstelle