Compartilhar via


Método IMemAllocator::GetBuffer (strmif.h)

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

O método GetBuffer recupera um exemplo de mídia que contém um buffer vazio.

Sintaxe

HRESULT GetBuffer(
  [out] IMediaSample   **ppBuffer,
  [in]  REFERENCE_TIME *pStartTime,
  [in]  REFERENCE_TIME *pEndTime,
  [in]  DWORD          dwFlags
);

Parâmetros

[out] ppBuffer

Recebe um ponteiro para a interface IMediaSample do buffer. O chamador deve liberar a interface.

[in] pStartTime

Ponteiro para a hora de início do exemplo ou NULL.

[in] pEndTime

Ponteiro para a hora final do exemplo ou NULL.

[in] dwFlags

Combinação bit a bit de zero ou mais dos seguintes sinalizadores:

Sinalizador Descrição
AM_GBF_NOTASYNCPOINT Este exemplo não é um ponto de sincronização. Alterações de formato dinâmico não são permitidas neste exemplo. Quando chamado no Mixer de Sobreposição ou VMR, esse sinalizador implica que o buffer retornado conterá uma imagem idêntica à última imagem entregue.
AM_GBF_PREVFRAMESKIPPED Este exemplo é o primeiro após uma descontinuidade. (Somente o renderizador de vídeo usa esse sinalizador.)
AM_GBF_NOWAIT Não espere que um buffer fique disponível.
AM_GBF_NODDSURFACELOCK Usado com o Filtro do Renderizador de Combinação de Vídeo 7 para solicitar uma superfície desbloqueada do DirectDraw. Para obter mais informações, consulte Trabalhando com destinos de renderização do Direct3D.

Retornar valor

Retorna um valor HRESULT . Os valores possíveis incluem os mostrados na tabela a seguir.

Código de retorno Descrição
S_OK
Êxito.
VFW_E_NOT_COMMITTED
O alocador foi descompactado.
VFW_E_TIMEOUT
Tempo limite atingido.

Comentários

Por padrão, esse método bloqueia até que uma amostra gratuita esteja disponível ou o alocador seja descompactado. Se o chamador especificar o sinalizador AM_GBF_NOWAIT e nenhum exemplo estiver disponível, o alocador poderá retornar imediatamente com um valor retornado de VFW_E_TIMEOUT. No entanto, os alocadores não são necessários para dar suporte a esse sinalizador.

O exemplo retornado em ppBuffer tem um ponteiro de buffer válido. 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 de ponto de sincronização. (Para obter mais informações, consulte IMediaSample.)

Os parâmetros pStartTime e pEndTime não são aplicados ao exemplo. O alocador pode usar esses valores para determinar qual buffer ele recupera. Por exemplo, o filtro Renderizador de Vídeo usa esses valores para sincronizar a alternância entre superfícies DirectDraw. Para definir o carimbo de data/hora no exemplo, chame o método IMediaSample::SetTime .

Você deve chamar o método IMemAllocator::Commit antes de chamar esse método. Esse método falha depois que o método IMemAllocator::D ecommit é chamado.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho strmif.h (inclua Dshow.h)
Biblioteca Strmiids.lib

Confira também

Códigos de erro e êxito

IMemAllocator Interface