Método ISampleGrabber::GetCurrentBuffer
[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.]
Observação
[Preterido. Essa API pode ser removida de versões futuras do Windows.]
O método GetCurrentBuffer recupera uma cópia do buffer associado ao exemplo mais recente.
Sintaxe
HRESULT GetCurrentBuffer(
[in, out] long *pBufferSize,
[out] long *pBuffer
);
Parâmetros
-
pBufferSize [in, out]
-
Ponteiro para o tamanho do buffer. Se pBuffer for NULL, esse parâmetro receberá o tamanho do buffer necessário, em bytes. Se pBuffer não for NULL, defina esse parâmetro como igual ao tamanho do buffer, em bytes. Na saída, o parâmetro recebe o número de bytes que foram copiados para o buffer. Esse valor pode ser menor que o tamanho do buffer.
-
pBuffer [out]
-
Ponteiro para uma matriz de bytes de tamanho pBufferSize ou NULL. Se esse parâmetro não for NULL, o buffer atual será copiado para a matriz. Se esse parâmetro for NULL, o parâmetro pBufferSize receberá o tamanho do buffer necessário.
Retornar valor
Retorna um dos valores a seguir.
Código de retorno | Descrição |
---|---|
|
Os exemplos não estão sendo armazenados em buffer. Chame ISampleGrabber::SetBufferSamples. |
|
O buffer especificado não é grande o suficiente. |
|
Argumento de ponteiro NULL. |
|
Êxito. |
|
O filtro não está conectado. |
|
O filtro ainda não recebeu nenhuma amostra. Para fornecer um exemplo, execute ou pause o grafo. |
Comentários
Para ativar o buffer, chame ISampleGrabber::SetBufferSamples com um valor true.
Chame esse método duas vezes. Na primeira chamada, defina pBuffer como NULL. O tamanho do buffer é retornado em pBufferSize. Em seguida, aloque uma matriz e chame o método novamente. Na segunda chamada, passe o tamanho da matriz em pBufferSize e passe o endereço da matriz em pBuffer. Se a matriz não for grande o suficiente, o método retornará E_OUTOFMEMORY.
O parâmetro pBuffer é digitado como um ponteiro longo , mas o conteúdo do buffer depende do formato dos dados. Chame ISampleGrabber::GetConnectedMediaType para obter o tipo de mídia do formato.
Não chame esse método enquanto o grafo de filtro estiver em execução. Enquanto o grafo de filtro está em execução, o filtro De exemplo grabber substitui o conteúdo do buffer sempre que ele recebe um novo exemplo. A melhor maneira de usar esse método é usar o "modo de captura única", que interrompe o grafo depois de receber o primeiro exemplo. Para definir o modo de tiro único, chame ISampleGrabber::SetOneShot.
O filtro não armazena em buffer exemplos de pré-registro ou amostras nas quais o membro dwStreamId da estrutura AM_SAMPLE2_PROPERTIES é algo diferente de AM_STREAM_MEDIA.
Observação
O arquivo de cabeçalho Qedit.h não é compatível com cabeçalhos Direct3D posteriores à versão 7.
Observação
Para obter qedit.h, baixe o SDK do Microsoft Windows Update para Windows Vista e .NET Framework 3.0. O Qedit.h não está disponível no SDK do Microsoft Windows para Windows 7 e .NET Framework 3.5 Service Pack 1.
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|
Confira também