Método IMediaSeeking::SetRate (strmif.h)
[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.
El SetRate
método establece la velocidad de reproducción.
Sintaxis
HRESULT SetRate(
[in] double dRate
);
Parámetros
[in] dRate
Velocidad de reproducción. No debe ser cero.
Valor devuelto
Devuelve un valor HRESULT . Estos son algunos de los valores posibles.
Código devuelto | Descripción |
---|---|
|
Correcto. |
|
La tasa especificada era cero o un valor negativo. (Vea la sección Comentarios). |
|
Sin implementar. |
|
Argumento de puntero NULL. |
|
El filtro o el dispositivo de audio no admiten esta velocidad. |
Comentarios
La velocidad de reproducción se expresa como una relación de la velocidad normal. Por lo tanto, 1,0 es la velocidad de reproducción normal, 0,5 es media velocidad y 2,0 es dos veces la velocidad. En el caso de las secuencias de audio, cambiar la velocidad también cambia el tono.
Los valores negativos indican la reproducción inversa. La mayoría de los filtros no admiten la reproducción negativa, sino que devuelven un código de error si el parámetro dRate es negativo.
Cuando una aplicación llama a este método en el Administrador de gráficos de filtros, el Administrador de gráficos de filtros hace lo siguiente:
- Llama al método IMediaSeeking::GetCurrentPosition . Esta llamada devuelve la posición actual calculada por el Administrador de gráficos de filtros.
- Detiene el gráfico de filtros (si el gráfico está en pausa o en ejecución).
- Llama al método IMediaSeeking::SetPositions en los filtros, con la posición actual como hora de inicio. Esto tiene el efecto de restablecer el tiempo de la secuencia en cero.
- Llama al
SetRate
método en los filtros, con la nueva velocidad. - Reanuda el gráfico de filtros, si estaba en pausa o en ejecución.
Los filtros deben responder a los cambios de velocidad de la siguiente manera:
Analizador y filtros de origen: El filtro que origina las marcas de tiempo responde a la SetRate
llamada. Normalmente, se trata de un filtro de analizador, como el filtro divisor AVI, pero podría ser un filtro de origen. Después de cualquier cambio de búsqueda o tasa, el filtro debe llamar al método IPin::NewSegment con la nueva configuración. Después de un cambio de tasa, debe ajustar sus marcas de tiempo en consecuencia. Dado que un cambio de velocidad va precedido por una búsqueda, las marcas de tiempo se reinician desde cero, por lo que el filtro simplemente puede dividir por la tasa para calcular las nuevas marcas de tiempo.
Filtros de descodificador: Los descodificadores no deben actuar en SetRate
las llamadas que no sean para pasarlas ascendentes. En su lugar, deben responder a la llamada NewSegment que emite el analizador ascendente. Cuando un filtro de descodificador recibe nueva información de segmento, debe almacenar los valores y pasar la llamada NewSegment de bajada. Algunos descodificadores necesitan generar marcas de tiempo adicionales interpolando su entrada; deben tener en cuenta los cambios de velocidad al hacerlo.
Renderizadores: Los representadores de vídeo normalmente pueden omitir los cambios de velocidad, ya que los fotogramas entrantes ya tienen la marca de tiempo correcta. Los representadores de audio deben modificar su velocidad de reproducción, ya que normalmente los descodificadores de audio no realizan conversiones de cambio de velocidad.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | strmif.h (incluya Dshow.h) |
Library | Strmiids.lib |