Compartir a través de


CPosPassThru (clase)

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

jerarquía de clases base cpospassthru

La CPosPassThru clase controla los comandos seek para los filtros de transformación, pasandolos ascendentes al siguiente filtro.

Cuando una aplicación busca el gráfico de filtros, el Administrador de gráficos de filtros proporciona el comando seek a los filtros del representador. El comando se pasa ascendente, a través del pin de salida de cada filtro, hasta que alcanza un filtro que puede ejecutar el comando (si existe). Para obtener más información, consulte Búsqueda. La CPosPassThru clase pasa todos los comandos seek al pin de salida en el filtro ascendente, como se muestra en el diagrama siguiente.

La clase cpospassthru envía comandos seek ascendentes.

Aunque esta clase se proporciona en la biblioteca de clases base, DirectShow también proporciona la misma clase en Quartz.dll. El uso de la versión de Quartz.dll puede reducir el tamaño del código en el filtro un poco, ya que la clase se carga en tiempo de ejecución desde el archivo DLL. Para usar esa versión, llame a la función CreatePosPassThru .

En el método NonDelegatingQueryInterface del pin de salida, delegue al objeto CPosPassThru cada vez que la interfaz solicitada sea IMediaSeeking o IMediaPosition, como se muestra en el código siguiente:

// 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();
}

Excepto donde se indique, todos los métodos IMediaPosition e IMediaSeeking de esta clase llaman al método correspondiente en el pin conectado y devuelven el resultado.

Métodos públicos Descripción
CPosPassThru Método constructor.
ForceRefresh Obsoleto.
GetMediaTime Recupera las marcas de tiempo en el ejemplo actual. Virtual.
Métodos IMediaPosition Descripción
get_Duration Recupera la duración de la secuencia.
put_CurrentPosition Establece la posición actual, en relación con la duración total de la secuencia.
get_StopTime Recupera la hora en la que se detendrá la reproducción, con respecto a la duración de la secuencia.
put_StopTime Establece la hora en la que se detendrá la reproducción, en relación con la duración de la secuencia.
get_PrerollTime Recupera la cantidad de datos que se ponerán en cola antes de la posición inicial.
put_PrerollTime Establece la cantidad de datos que se pondrá en cola antes de la posición inicial.
get_Rate Recupera la velocidad de reproducción.
put_Rate Establece la velocidad de reproducción.
get_CurrentPosition Recupera la posición actual, en relación con la duración total de la secuencia.
CanSeekForward Determina si la secuencia se puede buscar hacia atrás.
CanSeekBackward Determina si la secuencia se puede buscar hacia delante.
Métodos IMediaSeeking Descripción
CheckCapabilities Consulta si una secuencia ha especificado funcionalidades de búsqueda.
ConvertTimeFormat Convierte de un formato de una vez a otro.
GetAvailable Recupera el intervalo de tiempos en los que la búsqueda es eficaz.
GetCapabilities Recupera todas las funcionalidades de búsqueda de la secuencia.
GetCurrentPosition Recupera la posición actual, en relación con la duración total de la secuencia.
GetDuration Recupera la duración de la secuencia.
GetPositions Recupera la posición actual y la posición de detención, en relación con la duración total de la secuencia.
GetPreroll Recupera la cantidad de datos que se ponerán en cola antes de la posición inicial.
GetRate Recupera la velocidad de reproducción.
GetStopPosition Recupera la hora en la que se detendrá la reproducción, con respecto a la duración de la secuencia.
GetTimeFormat Recupera el formato de hora actual.
IsFormatSupported Determina si se admite un formato de hora especificado.
IsUsingTimeFormat Determina si un formato de hora especificado es el formato actualmente en uso.
QueryPreferredFormat Recupera el formato de hora preferido para la secuencia.
SetPositions Establece la posición actual y la posición de detención.
SetRate Establece la velocidad de reproducción.
SetTimeFormat Establece el formato de hora.
Funciones del asistente Descripción
CreatePosPassThru Crea un CPosPassThru objeto o CRendererPosPassThru .

Requisitos

Requisito Value
Encabezado
Ctlutil.h (include Streams.h)
Biblioteca
Strmbase.lib (compilaciones comerciales);
Strmbasd.lib (compilaciones de depuración)