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

Define o relógio de apresentação no coletor de mídia.

Sintaxe

HRESULT SetPresentationClock(
  [in] IMFPresentationClock *pPresentationClock
);

Parâmetros

[in] pPresentationClock

Ponteiro para a interface IMFPresentationClock do relógio de apresentação ou NULL. Se o valor for NULL, o coletor de mídia deixará de ouvir o relógio de apresentação que foi definido anteriormente, se houver.

Valor retornado

O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.

Código de retorno Descrição
S_OK
O método foi bem-sucedido.
MF_E_CLOCK_NO_TIME_SOURCE
O relógio de apresentação não tem uma fonte de tempo. Chame SetTimeSource no relógio da apresentação.
MF_E_SHUTDOWN
O método Shutdown do coletor de mídia foi chamado.

Comentários

Durante o streaming, o coletor de mídia tenta corresponder as taxas com o relógio da apresentação. O ideal é que o coletor de mídia apresente amostras no momento correto de acordo com o relógio da apresentação e não fique para trás. Coletores de mídia sem taxa são uma exceção a essa regra, pois consomem amostras o mais rápido possível e ignoram o relógio. Se o coletor for sem taxa, o método IMFMediaSink::GetCharacteristics retornará o sinalizador MEDIASINK_RATELESS.

O relógio de apresentação deve ter uma fonte de tempo. Antes de chamar esse método, chame IMFPresentationClock::SetTimeSource no relógio da apresentação para definir a origem da hora da apresentação. Alguns coletores de mídia fornecem fontes de tempo; portanto, o coletor de mídia pode ser a fonte de tempo para seu próprio relógio de apresentação. Independentemente de qual objeto fornece a fonte de tempo, no entanto, o coletor de mídia deve tentar corresponder as taxas com o relógio especificado em pPresentationClock. Se um coletor de mídia não puder corresponder as taxas com uma fonte de tempo externa, o método IMFMediaSink::GetCharacteristics do coletor de mídia recuperará o sinalizador MEDIASINK_CANNOT_MATCH_CLOCK. Nesse caso, SetPresentationClock ainda terá êxito, mas os resultados não serão ideais. O coletor pode não renderizar amostras rapidamente o suficiente para corresponder as taxas com o relógio de apresentação.

Se pPresentationClock não for NULL, o coletor de mídia deverá se registrar para notificações de estado do relógio, chamando IMFPresentationClock::AddClockStateSink no relógio da apresentação. Se o método for chamado novamente com um novo relógio de apresentação ou se pPresentationClock for NULL, o coletor de mídia deverá chamar IMFPresentationClock::RemoveClockStateSink para se desregistrar do relógio anterior.

Todos os coletores de mídia devem dar suporte a esse método.

Requisitos

   
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho mfidl.h
Biblioteca Mfuuid.lib

Confira também

IMFMediaSink

Coletores de mídia

Relógio de Apresentação