Classe CBaseAllocator
[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.]
A classe CBaseAllocator é uma classe base abstrata que implementa um alocador. Os alocadores expõem a interface IMemAllocator .
Um alocador é um objeto que aloca buffers de memória. O alocador mantém uma lista de buffers disponíveis. Quando um cliente (geralmente um filtro) solicita um buffer, o alocador recupera um da lista. O cliente preenche o buffer com dados e pode passar o buffer para outro objeto. Eventualmente, o buffer é liberado e o alocador o retorna para a lista de buffers disponíveis.
Cada buffer é encapsulado por um objeto chamado exemplo de mídia. Exemplos de mídia são uma maneira de empacotar ponteiros para blocos de memória dentro da estrutura COM (Component Object Model). Os exemplos de mídia expõem a interface IMediaSample e são implementados usando a classe CMediaSample . Um exemplo de mídia contém um ponteiro para o buffer associado, que pode ser acessado chamando o método IMediaSample::GetPointer . Para obter mais informações, consulte Exemplos e alocadores.
Para usar essa classe, execute as seguintes etapas:
- Chame o método CBaseAllocator::SetProperties para especificar os requisitos de buffer, incluindo o número de buffers e o tamanho de cada buffer.
- Chame o método CBaseAllocator::Commit para alocar os buffers.
- Chame o método CBaseAllocator::GetBuffer para recuperar exemplos de mídia. Esse método bloqueia até que o próximo exemplo fique disponível.
- Quando terminar cada exemplo, chame o método IUnknown::Release no exemplo. O exemplo não é excluído quando sua contagem de referência atinge zero. Em vez disso, o exemplo retorna à lista gratuita do alocador.
- Quando terminar de usar o alocador, chame o método CBaseAllocator::D ecommit para liberar a memória dos buffers.
O método Commit chama o método virtual CBaseAllocator::Alloc, que aloca a memória para os buffers. O método Decommit chama o método virtual puro CBaseAllocator::Free, que libera a memória. Classes derivadas devem substituir esses dois métodos.
A classe base CMemAllocator deriva de CBaseAllocator. As classes base de filtro usam a classe CMemAllocator .
Variáveis de membro protegidas | Descrição |
---|---|
m_lFree | Ponteiro para uma lista de exemplos de mídia disponíveis (gratuitos). |
m_hSem | Semáforo que é sinalizado quando uma amostra fica disponível. |
m_lWaiting | Contagem de threads aguardando amostras. |
m_lCount | Número de buffers a serem fornecidos. |
m_lAllocated | Número de buffers alocados no momento. |
m_lSize | Tamanho de cada buffer. |
m_lAlignment | Alinhamento de cada buffer. |
m_lPrefix | Prefixo de cada buffer. |
m_bChanged | Sinalizador indicando se os requisitos de buffer foram alterados. |
m_bCommitted | Sinalizador que indica se o alocador foi confirmado. |
m_bDecommitInProgress | Sinalizador indicando se uma operação de descomando está em andamento. |
m_pNotify | Ponteiro para uma interface de retorno de chamada, que é chamada quando os exemplos são liberados. |
m_fEnableReleaseCallback | Sinalizador que indica se o retorno de chamada de versão está habilitado. |
Métodos Protegidos | Descrição |
Alloc | Aloca memória para os buffers. Virtual. |
Métodos públicos | Descrição |
Cbaseallocator | Método de construtor. |
~Cbaseallocator | Método destruidor. |
SetNotify | Obsoleto. |
GetFreeCount | Recupera o número de exemplos de mídia que não estão em uso. |
NotifySample | Libera todos os threads que estão aguardando amostras. |
SetWaiting | Incrementa a contagem de threads em espera. |
Métodos virtuais puros | Descrição |
Gratuita | Libera toda a memória do buffer. |
Métodos IMemAllocator | Descrição |
SetProperties | Especifica o número de buffers a serem alocados e o tamanho de cada buffer. |
GetProperties | Recupera o número de buffers que o alocador criará e as propriedades do buffer. |
Commit | Aloca a memória para os buffers. |
Decommit | Descompromissa os buffers. |
GetBuffer | Recupera um exemplo de mídia que contém um buffer. |
ReleaseBuffer | Retorna um exemplo de mídia para a lista de exemplos de mídia gratuitos. |
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|