IamStreamConfig ::GetStreamCaps, méthode (strmif.h)

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

La méthode GetStreamCaps récupère un ensemble de fonctionnalités de format.

Syntaxe

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

Paramètres

[in] iIndex

Spécifie la capacité de format à récupérer, indexée à partir de zéro. Pour déterminer le nombre de fonctionnalités prises en charge par l’épingle, appelez la méthode IAMStreamConfig ::GetNumberOfCapabilities .

[out] ppmt

Adresse d’un pointeur vers une structure AM_MEDIA_TYPE . La méthode alloue la structure et la remplit avec un type de média.

[out] pSCC

Pointeur vers un tableau d’octets alloué par l’appelant. Pour la vidéo, utilisez la structure VIDEO_STREAM_CONFIG_CAPS (voir Remarques). Pour l’audio, utilisez la structure AUDIO_STREAM_CONFIG_CAPS . Pour déterminer la taille requise du tableau, appelez la méthode GetNumberOfCapabilities . La taille est retournée dans le paramètre piSize .

Valeur retournée

Retourne une valeur HRESULT . Les valeurs possibles sont les suivantes.

Code de retour Description
S_FALSE
L’index spécifié est trop élevé.
S_OK
Réussite.
E_INVALIDARG
L’index n’est pas valide.
E_OUTOFMEMORY
Mémoire insuffisante.
E_POINTER
Valeur du pointeur NULL.
VFW_E_NOT_CONNECTED
La broche d’entrée n’est pas connectée.

Remarques

Cette méthode retourne deux informations :

  • Le paramètre pmt reçoit une structure de AM_MEDIA_TYPE renseignée, qui décrit un format de sortie pris en charge.
  • Le paramètre pSCC reçoit une structure qui contient des informations de format supplémentaires. Pour la vidéo, pSCC reçoit une structure VIDEO_STREAM_CONFIG_CAPS . Pour l’audio, il reçoit une structure AUDIO_STREAM_CONFIG_CAPS .
Note L’utilisation de la structure VIDEO_STREAM_CONFIG_CAPS pour configurer un périphérique vidéo est déconseillée. Bien que l’appelant doit allouer la mémoire tampon, il doit ignorer le contenu après le retour de la méthode. L’appareil de capture retourne ses formats pris en charge via le paramètre pmt .
 
Pour configurer la broche de sortie afin qu’elle utilise ce format, appelez la méthode IAMStreamConfig ::SetFormat et transmettez la valeur de pmt.

Avant d’appeler SetFormat, vous pouvez modifier la structure AM_MEDIA_TYPE dans pmt, à l’aide des informations contenues dans pSCC. Par exemple, une broche audio peut retourner un type de média par défaut de 44 kHz, stéréo 16 bits dans le paramètre pmt . En fonction des valeurs retournées dans la structure AUDIO_STREAM_CONFIG_CAPS, vous pouvez modifier ce format en mono 8 bits avant d’appeler SetFormat.

La méthode alloue la mémoire pour la structure AM_MEDIA_TYPE retournée dans le paramètre pmt . L’appelant doit libérer la mémoire, y compris le bloc de format. Vous pouvez utiliser la fonction d’assistance DeleteMediaType dans la bibliothèque de classes de base. L’appelant doit allouer la mémoire pour le paramètre pSCC .

Sur certains filtres de compression, cette méthode échoue si la broche d’entrée du filtre n’est pas connectée.

Filtrer les développeurs : pour plus d’informations sur l’implémentation de cette méthode, consultez Exposition des formats de capture et de compression.

Exemples

L’exemple suivant récupère le premier format pris en charge (index zéro) sur une broche de sortie vidéo, puis définit ce format sur l’épingle.

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

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

pSCC = new BYTE[iSize] ; if (pSCC == NULL) { // TODO : Erreur de mémoire insuffisante. }

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête strmif.h (include Dshow.h)
Bibliothèque Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

IamStreamConfig, interface