Compartilhar via


Método IAMStreamConfig::GetStreamCaps (strmif.h)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O método GetStreamCaps recupera um conjunto de recursos de formato.

Sintaxe

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

Parâmetros

[in] iIndex

Especifica a funcionalidade de formato a ser recuperada, indexada de zero. Para determinar o número de recursos compatíveis com o pin, chame o método IAMStreamConfig::GetNumberOfCapabilities .

[out] ppmt

Endereço de um ponteiro para uma estrutura AM_MEDIA_TYPE . O método aloca a estrutura e a preenche com um tipo de mídia.

[out] pSCC

Ponteiro para uma matriz de bytes alocada pelo chamador. Para vídeo, use a estrutura VIDEO_STREAM_CONFIG_CAPS (consulte Comentários). Para áudio, use a estrutura AUDIO_STREAM_CONFIG_CAPS . Para determinar o tamanho necessário da matriz, chame o método GetNumberOfCapabilities . O tamanho é retornado no parâmetro piSize .

Retornar valor

Retorna um valor HRESULT . Os possíveis valores incluem os seguintes.

Código de retorno Descrição
S_FALSE
O índice especificado é muito alto.
S_OK
Êxito.
E_INVALIDARG
Índice inválido.
E_OUTOFMEMORY
Memória insuficiente.
E_POINTER
Valor do ponteiro NULL .
VFW_E_NOT_CONNECTED
O pino de entrada não está conectado.

Comentários

Esse método retorna duas informações:

  • O parâmetro pmt recebe uma estrutura de AM_MEDIA_TYPE preenchida, que descreve um formato de saída com suporte.
  • O parâmetro pSCC recebe uma estrutura que contém informações de formato adicionais. Para vídeo, o pSCC recebe uma estrutura VIDEO_STREAM_CONFIG_CAPS . Para áudio, ele recebe uma estrutura AUDIO_STREAM_CONFIG_CAPS .
Nota O uso da estrutura VIDEO_STREAM_CONFIG_CAPS para configurar um dispositivo de vídeo foi preterido. Embora o chamador deva alocar o buffer, ele deve ignorar o conteúdo após o retorno do método. O dispositivo de captura retornará seus formatos com suporte por meio do parâmetro pmt .
 
Para configurar o pino de saída para que ele use esse formato, chame o método IAMStreamConfig::SetFormat e passe o valor de pmt.

Antes de chamar SetFormat, você pode modificar a estrutura AM_MEDIA_TYPE no pmt, usando as informações em pSCC. Por exemplo, um pino de áudio pode retornar um tipo de mídia padrão de 44 kHz, estéreo de 16 bits no parâmetro pmt . Com base nos valores retornados na estrutura AUDIO_STREAM_CONFIG_CAPS , você pode alterar esse formato para mono de 8 bits antes de chamar SetFormat.

O método aloca a memória para a estrutura AM_MEDIA_TYPE retornada no parâmetro pmt . O chamador deve liberar a memória, incluindo o bloco de formato. Você pode usar a função auxiliar DeleteMediaType na biblioteca de classes base. O chamador deve alocar a memória para o parâmetro pSCC .

Em alguns filtros de compactação, esse método falhará se o pino de entrada do filtro não estiver conectado.

Filtrar Desenvolvedores: para obter mais informações sobre como implementar esse método, consulte Expondo formatos de captura e compactação.

Exemplos

O exemplo a seguir recupera o primeiro formato com suporte (índice zero) em um pino de saída de vídeo e define esse formato no pino.

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

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

pSCC = novo BYTE[iSize]; if (pSCC == NULL) { // TODO: erro de memória insuficiente. }

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho strmif.h (inclua Dshow.h)
Biblioteca Strmiids.lib

Confira também

Códigos de erro e êxito

IAMStreamConfig Interface