Método ISampleGrabber::SetMediaType

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na 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 Captura de Áudio/Vídeo no 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.]

Observação

[Preterido. Essa API pode ser removida de versões futuras do Windows.]

 

O SetMediaType método especifica o tipo de mídia para a conexão no pino de entrada do Graber de Exemplo.

Sintaxe

HRESULT SetMediaType(
   const AM_MEDIA_TYPE *pType
);

Parâmetros

pType

O ponteiro para uma estrutura de AM_MEDIA_TYPE especifica o tipo de mídia necessário. Não é necessário definir todos os membros da estrutura; consulte Comentários para obter detalhes.

Retornar valor

Returns S_OK.

Comentários

Por padrão, o Sample Grabber não tem nenhum tipo de mídia preferencial. Para garantir que o Sample Grabber se conecte ao filtro correto, chame esse método antes de criar o grafo de filtro.

Esse método restringe o intervalo de tipos de mídia que o filtro aceitará. Quando o filtro se conecta, ele tenta corresponder ao tipo de mídia fornecido em pType. Para fazer isso, ele compara o tipo principal, o subtipo e os GUIDs de tipo de formato, nessa ordem. Para cada um desses GUIDs, se pType tiver o valor GUID_NULL, o Sample Grabber aceitará o tipo de mídia sem nenhuma verificação adicional. Se pType tiver qualquer outro valor, o Sample Grabber o comparará com o GUID no tipo de conexão. A menos que os dois GUIDs correspondam exatamente, o Sample Grabber rejeita a conexão.

Para tipos de mídia de vídeo, o Sample Grabber ignora o bloco de formato. Portanto, ele aceitará qualquer tamanho de vídeo e taxa de quadros. Quando você chamar SetMediaType, defina o bloco de formato (pbFormat) como NULL e o tamanho (cbFormat) como zero. Para tipos de mídia de áudio, o Sample Grabber examinará a estrutura WAVEFORMATEX e exigirá que o outro filtro se conecte a esse formato, a menos que o bloco de formato em pType seja NULL ou a marca de formato seja WAVE_FORMAT_PCM e os outros membros da estrutura sejam zero.

Exemplo 1:

  • Tipo principal: MEDIATYPE_Video
  • Subtipo: GUID_NULL
  • Tipo de formato: GUID_NULL

O Sample Grabber aceitará qualquer tipo de vídeo em que o tipo principal seja igual a MEDIATYPE_Video. Ele não marcar o subtipo.

Exemplo 2:

  • Tipo principal: MEDIATYPE_Video
  • Subtipo: MEDIASUBTYPE_RGB24
  • Tipo de formato: GUID_NULL

Agora, o Sample Grabber marcar o subtipo e aceitará apenas o vídeo RGB 24.

Limitações: Independentemente do tipo definido, o Filtro de Captura de Exemplo rejeita todos os tipos de vídeo com orientação de cima para baixo ( biHeight negativo) ou com um tipo de formato de FORMAT_VideoInfo2. Nesse caso, embora o SetMediaType método seja bem-sucedido, o filtro não se conectará.

Observação

O arquivo de cabeçalho Qedit.h não é compatível com cabeçalhos Direct3D posteriores à versão 7.

 

Observação

Para obter qedit.h, baixe o SDK do Microsoft Windows Update para Windows Vista e .NET Framework 3.0. O Qedit.h não está disponível no SDK do Microsoft Windows para Windows 7 e .NET Framework 3.5 Service Pack 1.

 

Requisitos

Requisito Valor
parâmetro
Qedit.h
Biblioteca
Strmiids.lib

Confira também

Usando o graber de exemplo

ISampleGrabber Interface