estrutura AM_MEDIA_TYPE (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.]
A estrutura AM_MEDIA_TYPE descreve o formato de um exemplo de mídia.
Sintaxe
typedef struct _AMMediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
BYTE *pbFormat;
} AM_MEDIA_TYPE;
Membros
majortype
GUID (identificador global exclusivo) que especifica o tipo principal do exemplo de mídia. Para obter uma lista dos tipos principais possíveis, consulte Tipos de mídia.
subtype
GUID que especifica o subtipo do exemplo de mídia. Para obter uma lista de subtipos possíveis, consulte Tipos de mídia. Para alguns formatos, o valor pode ser MEDIASUBTYPE_None, o que significa que o formato não requer um subtipo.
bFixedSizeSamples
Se TRUE, os exemplos serão de um tamanho fixo. Este campo é somente informativo. Para áudio, geralmente é definido como TRUE. Para vídeo, geralmente é TRUE para vídeo descompactado e FALSE para vídeo compactado.
bTemporalCompression
Se TRUE, os exemplos serão compactados usando compactação temporal (interframe). Um valor true indica que nem todos os quadros são quadros-chave. Este campo é somente informativo.
lSampleSize
Tamanho do exemplo em bytes. Para dados compactados, o valor pode ser zero.
formattype
GUID que especifica a estrutura usada para o bloco de formato. O membro pbFormat aponta para a estrutura de formato correspondente. Os tipos de formato incluem o seguinte:
Tipo de formato | Estrutura de formato |
---|---|
|
|
|
|
|
|
|
|
|
Nenhum. |
|
|
|
|
|
|
|
Nenhum |
pUnk
Não usado. Defina como NULL.
cbFormat
Tamanho do bloco de formato, em bytes.
pbFormat
Ponteiro para o bloco de formato. O tipo de estrutura é especificado pelo membro formattype . A estrutura de formato deve estar presente, a menos que formattype seja GUID_NULL ou FORMAT_None.
O buffer pbFormat deve ser alocado chamando CoTaskMemAlloc. Para liberar o bloco de formato, chame FreeMediaType.
Comentários
Quando dois pinos se conectam, eles negociam um tipo de mídia, que é definido por uma estrutura AM_MEDIA_TYPE . O tipo de mídia descreve o formato dos dados que os filtros trocarão. Se os filtros não concordarem com um tipo de mídia, eles não poderão se conectar.
O tipo de fluxo é especificado por dois GUIDs, chamados de tipo principal e o subtipo. O tipo principal define a categoria geral, como vídeo, áudio ou fluxo de bytes. O subtipo define uma categoria mais estreita dentro do tipo principal. Por exemplo, os subtipos de vídeo incluem RGB de 8 bits, 16 bits, 24 bits e 32 bits.
A estrutura AM_MEDIA_TYPE é seguida por um bloco de dados de comprimento variável que contém informações específicas do formato. O membro pbFormat aponta para esse bloco, chamado de bloco de formato. O layout do bloco de formato depende do tipo de dados no fluxo e é especificado pelo membro formattype . O bloco de formato pode ser NULL. Verifique o membro cbFormat para determinar o tamanho. Converta o membro pbFormat para acessar o bloco de formato. Por exemplo:
C++ |
---|
if (pmt->formattype == FORMAT_VideoInfo) { // Check the buffer size. if (pmt->cbFormat >= sizeof(VIDEOINFOHEADER)) { VIDEOINFOHEADER *pVih = reinterpret_cast<VIDEOINFOHEADER*>(pmt->pbFormat); /* Access VIDEOINFOHEADER members through pVih. */ } } |
Para obter informações detalhadas sobre um tipo de mídia especificado para fins de depuração, use o método DisplayType .
Requisitos
Cabeçalho | strmif.h (inclua Dshow.h) |