Consultando recursos de busca

[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 Microsoft® DirectShow® dá suporte à busca por meio da interface IMediaSeeking . O Gerenciador de Grafo de Filtro expõe essa interface, mas a funcionalidade de busca sempre é implementada por filtros no grafo.

Alguns dados não podem ser buscados. Por exemplo, você não pode buscar uma transmissão de vídeo ao vivo de uma câmera. No entanto, se um fluxo for buscado, há vários tipos de busca que ele pode dar suporte. Estão incluídos:

  • Buscando uma posição arbitrária no fluxo.
  • Recuperando a duração do fluxo.
  • Recuperando a posição atual dentro do fluxo.
  • Jogando ao contrário.

A interface IMediaSeeking define um conjunto de sinalizadores, AM_SEEKING_SEEKING_CAPABILITIES, que descrevem as possíveis funcionalidades de busca. Para recuperar os recursos do fluxo, chame o método IMediaSeeking::GetCapabilities . O método retorna uma combinação bit a bit de sinalizadores. O aplicativo pode testá-los usando o & operador ( AND bit a bit). Por exemplo, o código a seguir verifica se o grafo pode buscar uma posição arbitrária:

DWORD dwCap = 0;
HRESULT hr = pSeek->GetCapabilities(&dwCap);
if (AM_SEEKING_CanSeekAbsolute & dwCap)
{
    // Graph can seek to absolute positions.
}