Classe CPosPassThru

cpospassthru base class hierarchy

Os CPosPassThru identificadores de classe buscam comandos para transformar filtros, passando-os upstream para o próximo filtro.

Quando um aplicativo busca o grafo de filtro, o Gerenciador de Graph de Filtro fornece o comando seek aos filtros do renderizador. O comando é passado upstream, por meio do pino de saída de cada filtro, até atingir um filtro que pode executar o comando (se houver). Para obter detalhes, consulte Seeking. A CPosPassThru classe passa todos os comandos de busca para o pino de saída no filtro upstream, conforme mostrado no diagrama a seguir.

the cpospassthru class sends seek commands upstream.

Embora essa classe seja fornecida na biblioteca de classes base, o DirectShow também fornece a mesma classe em Quartz.dll. Usar a versão Quartz.dll pode reduzir um pouco o tamanho do código no filtro, pois a classe é carregada em tempo de execução da DLL. Para usar essa versão, chame a função CreatePosPassThru .

No método NonDelegatingQueryInterface do pino de saída, delegar ao objeto CPosPassThru sempre que a interface solicitada for IMediaSeeking ou IMediaPosition, conforme mostrado no código a seguir:

// The following member variables are assumed:
IPin *m_pInput;    // Pointer to the input pin on your filter.
IUnknown *m_pPos;  // Pointer to the CPosPassThru object.

STDMETHODIMP CMyPin::NonDelegatingQueryInterface(REFIID riid, void **ppv)
{
    HRESULT hr
    if (riid == IID_IMediaPosition || riid == IID_IMediaSeeking) 
    {
        if (m_pPos == NULL) 
        {
            // We have not created the CPosPassThru object yet. Do so now.
            hr = CreatePosPassThru(GetOwner(), FALSE, m_pInput, &m_pPos);
            if (FAILED(hr)) return hr;
        }
        return m_pPos->QueryInterface(riid, ppv);
    } 
    else
    {
         // Other interfaces (not shown).
    }
}

~CMyPin::CMyPin() 
{
    // Release the CPosPassThruObject.
    if (m_pPos != NULL) m_pPos->Release();
}

Exceto quando observado, todos os métodos IMediaPosition e IMediaSeeking nessa classe chamam o método correspondente no pino conectado e retornam o resultado.

Métodos públicos Descrição
Cpospassthru Método construtor.
ForceRefresh Obsoleto.
GetMediaTime Recupera os carimbos de data/hora no exemplo atual. Virtual.
Métodos IMediaPosition Descrição
get_Duration Recupera a duração do fluxo.
Put_currentposition Define a posição atual em relação à duração total do fluxo.
get_StopTime Recupera o tempo em que a reprodução será interrompida, em relação à duração do fluxo.
put_StopTime Define o tempo em que a reprodução será interrompida, em relação à duração do fluxo.
get_PrerollTime Recupera a quantidade de dados que serão enfileirados antes da posição inicial.
put_PrerollTime Define a quantidade de dados que serão enfileirados antes da posição inicial.
get_Rate Recupera a taxa de reprodução.
put_Rate Define a taxa de reprodução.
get_CurrentPosition Recupera a posição atual em relação à duração total do fluxo.
CanSeekForward Determina se o fluxo pode ser procurado para trás.
CanSeekBackward Determina se o fluxo pode ser procurado para a frente.
Métodos IMediaSeeking Descrição
CheckCapabilities Consulta se um fluxo especificou recursos de busca.
ConvertTimeFormat Converte de um formato de vez em outro.
Obter Disponível Recupera o intervalo de tempos em que a busca é eficiente.
GetCapabilities Recupera todos os recursos de busca do fluxo.
Getcurrentposition Recupera a posição atual em relação à duração total do fluxo.
GetDuration Recupera a duração do fluxo.
GetPositions Recupera a posição atual e a posição de parada, em relação à duração total do fluxo.
GetPreroll Recupera a quantidade de dados que serão enfileirados antes da posição inicial.
GetRate Recupera a taxa de reprodução.
GetStopPosition Recupera o tempo em que a reprodução será interrompida, em relação à duração do fluxo.
Gettimeformat Recupera o formato de hora atual.
Isformatsupported Determina se há suporte para um formato de tempo especificado.
IsUsingTimeFormat Determina se um formato de hora especificado é o formato atualmente em uso.
QueryPreferredFormat Recupera o formato de hora preferencial para o fluxo.
Setpositions Define a posição atual e a posição de parada.
Setrate Define a taxa de reprodução.
SetTimeFormat Define o formato de hora.
Funções auxiliares Descrição
CreatePosPassThru Cria um CPosPassThru objeto CRendererPosPassThru ou CRendererPosPassThru .

Requisitos

Requisito Valor
parâmetro
Ctlutil.h (inclua Fluxos.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)