Condividi tramite


Metodo IAMStreamConfig::GetStreamCaps (strmif.h)

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il metodo GetStreamCaps recupera un set di funzionalità di formato.

Sintassi

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

Parametri

[in] iIndex

Specifica la funzionalità di formato da recuperare, indicizzata da zero. Per determinare il numero di funzionalità supportate dal pin, chiamare il metodo IAMStreamConfig::GetNumberOfCapabilities .

[out] ppmt

Indirizzo di un puntatore a una struttura AM_MEDIA_TYPE . Il metodo alloca la struttura e la riempie con un tipo di supporto.

[out] pSCC

Puntatore a una matrice di byte allocata dal chiamante. Per il video, usare la struttura VIDEO_STREAM_CONFIG_CAPS (vedere La sezione Osservazioni). Per l'audio, usare la struttura AUDIO_STREAM_CONFIG_CAPS . Per determinare le dimensioni necessarie della matrice, chiamare il metodo GetNumberOfCapabilities . La dimensione viene restituita nel parametro piSize .

Valore restituito

Restituisce un valore HRESULT . Di seguito sono indicati alcuni valori possibili.

Codice restituito Descrizione
S_FALSE
L'indice specificato è troppo elevato.
S_OK
Operazione completata.
E_INVALIDARG
Indice non valido.
E_OUTOFMEMORY
Memoria insufficiente.
E_POINTER
Valore del puntatore NULL.
VFW_E_NOT_CONNECTED
Il pin di input non è connesso.

Commenti

Questo metodo restituisce due informazioni:

  • Il parametro pmt riceve una struttura di AM_MEDIA_TYPE compilata, che descrive un formato di output supportato.
  • Il parametro pSCC riceve una struttura che contiene informazioni di formato aggiuntive. Per il video, pSCC riceve una struttura VIDEO_STREAM_CONFIG_CAPS . Per l'audio, riceve una struttura AUDIO_STREAM_CONFIG_CAPS .
Nota L'uso della struttura VIDEO_STREAM_CONFIG_CAPS per configurare un dispositivo video è deprecato. Anche se il chiamante deve allocare il buffer, deve ignorare il contenuto dopo la restituzione del metodo. Il dispositivo di acquisizione restituirà i formati supportati tramite il parametro pmt .
 
Per configurare il pin di output in modo che usi questo formato, chiamare il metodo IAMStreamConfig::SetFormat e passare il valore di pmt.

Prima di chiamare SetFormat, è possibile modificare la struttura AM_MEDIA_TYPE in pmt usando le informazioni in pSCC. Ad esempio, un pin audio potrebbe restituire un tipo di supporto predefinito di 44 kHz, stereo a 16 bit nel parametro pmt . In base ai valori restituiti nella struttura AUDIO_STREAM_CONFIG_CAPS , è possibile modificare questo formato in mono a 8 bit prima di chiamare SetFormat.

Il metodo alloca la memoria per la struttura AM_MEDIA_TYPE restituita nel parametro pmt . Il chiamante deve rilasciare la memoria, incluso il blocco di formato. È possibile usare la funzione helper DeleteMediaType nella libreria di classi di base. Il chiamante deve allocare la memoria per il parametro pSCC .

In alcuni filtri di compressione, questo metodo ha esito negativo se il pin di input del filtro non è connesso.

Filtrare gli sviluppatori: per altre informazioni sull'implementazione di questo metodo, vedere Esposizione di formati di acquisizione e compressione.

Esempio

L'esempio seguente recupera il primo formato supportato (indice zero) in un pin di output video e quindi imposta questo formato sul pin.

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

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

pSCC = new BYTE[iSize]; if (pSCC == NULL) { // TODO: errore di memoria insufficiente. }

// 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;

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione strmif.h (include Dshow.h)
Libreria Strmiids.lib

Vedi anche

Codici di errore e di esito positivo

Interfaccia IAMStreamConfig