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.
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.
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 |
|
Biblioteca |
|