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 |
---|---|
|
Êxito. |
|
O alocador foi descompactado. |
|
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 |