Compartilhar via


Classe CMediaSample

[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.]

hierarquia de classes cmediasample

A CMediaSample classe define um exemplo de mídia que dá suporte à interface IMediaSample2 . O exemplo de mídia contém um ponteiro para um buffer de memória e várias propriedades armazenadas como variáveis de membro protegidas.

Os exemplos de mídia são criados por alocadores, que são derivados da classe CBaseAllocator . O CMediaSample construtor recebe um ponteiro para um buffer alocado, juntamente com o tamanho do buffer. Outras propriedades normalmente são definidas e recuperadas por meio de métodos de interface IMediaSample .

O ciclo de vida de um exemplo de mídia difere do da maioria dos objetos COM:

  • O alocador contém uma lista de exemplos gratuitos. Quando um filtro precisa de um novo exemplo, ele chama o método IMemAllocator::GetBuffer do alocador. O alocador recupera um exemplo de sua lista gratuita, incrementa a contagem de referência do exemplo e retorna um ponteiro para o exemplo.
  • Depois que o filtro for feito com o exemplo, ele chamará o método IUnknown::Release no exemplo. Ao contrário da maioria dos objetos, o exemplo não se exclui quando sua contagem de referência atinge zero. Em vez disso, ele chama o método IMemAllocator::ReleaseBuffer no alocador e o alocador retorna o exemplo para sua lista gratuita.
  • O alocador não destrói amostras até que o método IMemAllocator::D ecommit seja chamado.
Variáveis de membro protegidas Descrição
M_dwflags Sinalizadores de propriedade de exemplo.
m_dwTypeSpecificFlags Sinalizadores específicos do tipo.
m_pBuffer Ponteiro para o buffer de memória que contém os dados de mídia.
m_lActual Comprimento dos dados válidos no buffer, em bytes.
m_cbBuffer Tamanho do buffer, em bytes.
m_pAllocator Ponteiro para o alocador que criou este exemplo.
m_pNext Ponteiro para o próximo exemplo na lista de exemplos do alocador.
m_Start Hora de início da amostra.
m_End Hora de término de exemplo.
m_MediaStart Hora de início da mídia.
m_MediaEnd Tempo de parada de mídia.
m_pMediaType Ponteiro para o tipo de mídia, se o tipo tiver sido alterado em relação ao exemplo anterior no fluxo de dados.
m_dwStreamId Identificador de fluxo.
Variáveis de membro público Descrição
m_cRef Contagem de referências.
Métodos públicos Descrição
Cmediasample Método de construtor.
~Cmediasample Método destruidor. Virtual.
SetPointer Define o ponteiro para o buffer de memória.
Métodos IMediaSample Descrição
GetPointer Recupera um ponteiro de leitura/gravação para o buffer.
Getsize Recupera o tamanho do buffer.
GetTime Recupera os horários de fluxo nos quais este exemplo deve começar e concluir.
SetTime Define os horários de fluxo nos quais este exemplo deve ser iniciado e concluído.
IsSyncPoint Determina se o início do exemplo é um ponto de sincronização.
SetSyncPoint Especifica se o início deste exemplo é um ponto de sincronização.
IsPreroll Determina se este exemplo é um exemplo de pré-registro.
SetPreroll Especifica se este exemplo é um exemplo de pré-registro.
GetActualDataLength Recupera o comprimento dos dados válidos no buffer.
SetActualDataLength Define o comprimento dos dados válidos no buffer.
Getmediatype Recupera o tipo de mídia, se o tipo de mídia for diferente do exemplo anterior.
Setmediatype Define o tipo de mídia para o exemplo.
IsDiscontinuity Determina se este exemplo representa uma quebra no fluxo de dados.
SetDiscontinuity Especifica se este exemplo representa uma quebra no fluxo de dados.
GetMediaTime Recupera os tempos de mídia para este exemplo.
SetMediaTime Define os tempos de mídia para este exemplo.
Métodos IMediaSample2 Descrição
GetProperties Recupera as propriedades do exemplo.
SetProperties Define as propriedades do exemplo.

Requisitos

Requisito Valor
parâmetro
Amfilter.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)