Método CBaseAllocator.GetBuffer
[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 GetBuffer
método recupera um exemplo de mídia que contém um buffer. Esse método implementa o método IMemAllocator::GetBuffer .
Sintaxe
HRESULT GetBuffer(
IMediaSample **ppBuffer,
REFERENCE_TIME *pStartTime,
REFERENCE_TIME *pEndTime,
DWORD dwFlags
);
Parâmetros
-
ppBuffer
-
Recebe um ponteiro para a interface IMediaSample do buffer. O chamador deve liberar a interface .
-
pStartTime
-
Ponteiro para a hora de início do exemplo.
-
pEndTime
-
Ponteiro para a hora de término do exemplo.
-
dwFlags
-
Combinação bit a bit de zero ou mais sinalizadores. A classe base dá suporte ao sinalizador a seguir.
Valor Significado - AM_GBF_NOWAIT
Não aguarde até que um buffer fique disponível.
Retornar valor
Retorna um dos seguintes valores HRESULT .
Código de retorno | Descrição |
---|---|
|
Êxito. |
|
O alocador não foi confirmado. |
|
Tempo limite atingido. |
Comentários
A menos que o chamador especifique o sinalizador AM_GBF_NOWAIT em dwFlags, esse método será bloqueado até que o próximo exemplo esteja disponível.
O exemplo de mídia recuperado tem um ponteiro válido para o buffer alocado. O chamador é responsável por definir quaisquer outras propriedades no exemplo, como os carimbos de data/hora, os horários de mídia ou a propriedade do ponto de sincronização. Para obter mais informações, consulte IMediaSample.
Na classe base, os parâmetros pStartTime e pEndTime são ignorados. Classes derivadas podem usar esses valores. Por exemplo, o alocador para o filtro do Renderizador de Vídeo usa esses valores para sincronizar a alternância entre superfícies do DirectDraw.
Se o método precisar aguardar um exemplo, ele incrementará a contagem de objetos de espera (CBaseAllocator::m_lCount) e a função WaitForSingleObject de chamadas no semáforo (CBaseAllocator::m_hSem). Quando um exemplo fica disponível, ele chama o método CBaseAllocator::ReleaseBuffer no alocador, o que aumenta a contagem de semáforos em m_lCount (liberando assim os threads em espera) e define m_lCount de volta para zero.
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|