IMFMediaSink::SetPresentationClock 方法 (mfidl.h)
設定媒體接收上的簡報時鐘。
語法
HRESULT SetPresentationClock(
[in] IMFPresentationClock *pPresentationClock
);
參數
[in] pPresentationClock
表示時鐘或Null之IMFPresentationClock介面的指標。 如果值為 Null,媒體接收會停止接聽先前設定的簡報時鐘,如果有的話。
傳回值
方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。
傳回碼 | 描述 |
---|---|
|
此方法已成功。 |
|
簡報時鐘沒有時間來源。 在簡報時鐘上呼叫 SetTimeSource 。 |
|
已呼叫媒體接收的 Shutdown 方法。 |
備註
在串流期間,媒體接收會嘗試比對速率與簡報時鐘。 在理想情況下,媒體接收會根據簡報時鐘在正確的時間呈現樣本,而且不會落後。 無速率媒體接收是此規則的例外狀況,因為它們會儘快取用樣本,並忽略時鐘。 如果接收是無速率的, IMFMediaSink::GetCharacteristics 方法會傳回MEDIASINK_RATELESS旗標。
簡報時鐘必須有時間來源。 呼叫此方法之前,請在簡報時鐘上呼叫 IMFPresentationClock::SetTimeSource ,以設定簡報時間來源。 某些媒體接收提供時間來源;因此,媒體接收可能是其本身簡報時鐘的時間來源。 不過,不論哪個物件提供時間來源,媒體接收都必須嘗試比對速率與 pPresentationClock中指定的時鐘。 如果媒體接收無法比對與外部時間來源的速率,媒體接收的 IMFMediaSink::GetCharacteristics 方法會擷取MEDIASINK_CANNOT_MATCH_CLOCK旗標。 在此情況下, SetPresentationClock 仍然會成功,但結果將不會是最佳結果。 接收可能無法快速轉譯樣本,以符合簡報時鐘的速率。
如果 pPresentationClock 不是Null,媒體接收必須在簡報時鐘上呼叫 IMFPresentationClock::AddClockStateSink 來註冊時鐘狀態通知。 如果使用新的簡報時鐘再次呼叫 方法,或 pPresentationClock 為 Null,媒體接收必須呼叫 IMFPresentationClock::RemoveClockStateSink ,才能從上一個時鐘取消註冊本身。
所有媒體接收都必須支援這個方法。
需求
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | mfidl.h |
程式庫 | Mfuuid.lib |