Método IMFMediaSink::SetPresentationClock (mfidl.h)

Establece el reloj de presentación en el receptor de medios.

Sintaxis

HRESULT SetPresentationClock(
  [in] IMFPresentationClock *pPresentationClock
);

Parámetros

[in] pPresentationClock

Puntero a la interfaz IMFPresentationClock del reloj de presentación o NULL. Si el valor es NULL, el receptor de medios deja de escuchar el reloj de presentación que se estableció anteriormente, si existe.

Valor devuelto

El método devuelve un valor HRESULT. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros.

Código devuelto Descripción
S_OK
El método se ha llevado a cabo de forma correcta.
MF_E_CLOCK_NO_TIME_SOURCE
El reloj de presentación no tiene un origen de hora. Llame a SetTimeSource en el reloj de presentación.
MF_E_SHUTDOWN
Se ha llamado al método Shutdown del receptor de medios.

Comentarios

Durante el streaming, el receptor multimedia intenta hacer coincidir las tasas con el reloj de presentación. Idealmente, el receptor de medios presenta muestras en el momento correcto según el reloj de presentación y no se queda atrás. Los receptores de medios sin frecuencia son una excepción a esta regla, ya que consumen muestras lo más rápido posible e ignoran el reloj. Si el receptor no tiene velocidad, el método IMFMediaSink::GetCharacteristics devuelve la marca MEDIASINK_RATELESS.

El reloj de presentación debe tener un origen de hora. Antes de llamar a este método, llame a IMFPresentationClock::SetTimeSource en el reloj de presentación para establecer el origen de la hora de presentación. Algunos receptores de medios proporcionan orígenes de tiempo; por lo tanto, el receptor de medios podría ser el origen de la hora de su propio reloj de presentación. Sin embargo, independientemente del objeto que proporcione el origen de hora, el receptor de medios debe intentar coincidir las tasas con el reloj especificado en pPresentationClock. Si un receptor de medios no puede coincidir con las tasas con un origen de tiempo externo, el método IMFMediaSink::GetCharacteristics del receptor de medios recupera la marca MEDIASINK_CANNOT_MATCH_CLOCK. En este caso, SetPresentationClock seguirá siendo correcto, pero los resultados no serán óptimos. Es posible que el receptor no represente muestras lo suficientemente rápido como para hacer coincidir las tasas con el reloj de presentación.

Si pPresentationClock no es NULL, el receptor de medios debe registrarse para las notificaciones de estado del reloj, llamando a IMFPresentationClock::AddClockStateSink en el reloj de presentación. Si se llama de nuevo al método con un nuevo reloj de presentación o si pPresentationClock es NULL, el receptor multimedia debe llamar a IMFPresentationClock::RemoveClockStateSink para anular el registro del reloj anterior.

Todos los receptores multimedia deben admitir este método.

Requisitos

   
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado mfidl.h
Library Mfuuid.lib

Consulte también

IMFMediaSink

Receptores de medios

Reloj de presentación