Freigeben über


IAMStreamConfig::GetStreamCaps-Methode (strmif.h)

[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.]

Die GetStreamCaps-Methode ruft eine Reihe von Formatfunktionen ab.

Syntax

HRESULT GetStreamCaps(
  [in]  int           iIndex,
  [out] AM_MEDIA_TYPE **ppmt,
  [out] BYTE          *pSCC
);

Parameter

[in] iIndex

Gibt die abzurufende Formatfunktion an, die von null indiziert wird. Rufen Sie die IAMStreamConfig::GetNumberOfCapabilities-Methode auf, um die Anzahl der vom Pin unterstützten Funktionen zu ermitteln.

[out] ppmt

Adresse eines Zeigers auf eine AM_MEDIA_TYPE Struktur. Die -Methode weist die Struktur zu und füllt sie mit einem Medientyp aus.

[out] pSCC

Zeiger auf ein Bytearray, das vom Aufrufer zugewiesen wird. Verwenden Sie für Videos die VIDEO_STREAM_CONFIG_CAPS-Struktur (siehe Hinweise). Verwenden Sie für Audio die AUDIO_STREAM_CONFIG_CAPS-Struktur . Um die erforderliche Größe des Arrays zu ermitteln, rufen Sie die GetNumberOfCapabilities-Methode auf . Die Größe wird im piSize-Parameter zurückgegeben.

Rückgabewert

Gibt einen HRESULT-Wert zurück. Die folgenden Werte sind möglich.

Rückgabecode Beschreibung
S_FALSE
Der angegebene Index ist zu hoch.
S_OK
Erfolg.
E_INVALIDARG
Ungültiger Index.
E_OUTOFMEMORY
Nicht genügend Arbeitsspeicher.
E_POINTER
NULL-Zeigerwert.
VFW_E_NOT_CONNECTED
Der Eingabenadel ist nicht verbunden.

Hinweise

Diese Methode gibt zwei Informationen zurück:

Hinweis Die Verwendung der VIDEO_STREAM_CONFIG_CAPS-Struktur zum Konfigurieren eines Videogeräts ist veraltet. Obwohl der Aufrufer den Puffer zuordnen muss, sollte er den Inhalt ignorieren, nachdem die Methode zurückgegeben wurde. Das Erfassungsgerät gibt die unterstützten Formate über den parameter pmt zurück.
 
Um den Ausgabepin so zu konfigurieren, dass er dieses Format verwendet, rufen Sie die IAMStreamConfig::SetFormat-Methode auf, und übergeben Sie den Wert von pmt.

Bevor Sie SetFormat aufrufen, können Sie die AM_MEDIA_TYPE-Struktur in pmt mithilfe der Informationen in pSCC ändern. Beispielsweise kann ein Audionadel einen Standardmedientyp von 44 kHz und 16-Bit-Stereo im pmt-Parameter zurückgeben. Basierend auf den in der AUDIO_STREAM_CONFIG_CAPS-Struktur zurückgegebenen Werten können Sie dieses Format in 8-Bit Mono ändern, bevor Sie SetFormat aufrufen.

Die -Methode weist den Arbeitsspeicher für die AM_MEDIA_TYPE-Struktur zu, die im pmt-Parameter zurückgegeben wird. Der Aufrufer muss den Arbeitsspeicher freigeben, einschließlich des Formatblocks. Sie können die Hilfsfunktion DeleteMediaType in der Basisklassenbibliothek verwenden. Der Aufrufer muss den Arbeitsspeicher für den pSCC-Parameter zuordnen.

Bei einigen Komprimierungsfiltern schlägt diese Methode fehl, wenn der Eingabestift des Filters nicht verbunden ist.

Filterentwickler: Weitere Informationen zur Implementierung dieser Methode finden Sie unter Verfügbarmachen von Erfassungs- und Komprimierungsformaten.

Beispiele

Im folgenden Beispiel wird das erste unterstützte Format (Index null) auf einem Videoausgabenadel abgerufen und dann dieses Format auf der Pin festgelegt.

C++
int iCount, iSize; BYTE *pSCC = NULL; AM_MEDIA_TYPE *pmt;

hr = pConfig-GetNumberOfCapabilities>(&iCount, &iSize);

pSCC = new BYTE[iSize]; if (pSCC == NULL) { // TODO: Fehler mit fehlendem Arbeitsspeicher. }

// Get the first format. hr = pConfig->GetStreamCaps(0, &pmt, pSCC)); if (hr == S_OK) { // TODO: Examine the format. If it's not suitable for some // reason, call GetStreamCaps with the next index value (up // to iCount). Otherwise, set the format: hr = pConfig->SetFormat(pmt); if (FAILED(hr)) { // TODO: Error handling. } DeleteMediaType(pmt); } delete [] pSCC;

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile strmif.h (include Dshow.h)
Bibliothek Strmiids.lib

Weitere Informationen

Fehler- und Erfolgscodes

IAMStreamConfig-Schnittstelle