主時鐘
迷你驅動程式可以將串流同步處理至其他迷你驅動程式所建立的時鐘;多個資料流程可以同步處理至一個時鐘。 如果針腳使用或產生這類 主時鐘,迷你驅動程式應該支援 KSPROPERTY_STREAM_MASTERCLOCK。 用戶端也可以使用此屬性來設定針腳的主時鐘。 執行轉譯和擷取作業的針腳經常會使用主時鐘。 迷你驅動程式負責在終止時釋放時鐘參考。
主時鐘的介面是支援方法、屬性和事件的檔案物件。
所有對檔案物件的查詢都只能在PASSIVE_LEVEL使用。 不過,只要檔案物件有效,時鐘位置查詢也支援透過可在DISPATCH_LEVEL取得的直接函式呼叫指標。 這個直接呼叫必須傳遞至時鐘的檔案物件做為內容參數。
檔案控制碼是透過篩選釘選實例上的建立要求取得,就像IRP_MJ_CREATE建立釘選一樣。 要求會導致建立檔案控制代碼,就像建立釘選的檔案控制碼一樣,其本身的內容資訊也一樣。 此檔案控制碼接著會傳回給呼叫端,並可用來設定核心模式篩選的主要時鐘。 在指派篩選準則時,圖形的主時鐘時,針腳實例可以查詢父檔案物件,以判斷它是否擁有主時鐘。
當篩選準則提供給這個主時鐘的檔案控制碼時,就可以用它來查詢屬性。 如果主時鐘是以核心模式篩選為基礎,它必須支援介面,以查詢主要時鐘核心模式部分的檔案控制碼。 如果不支援介面,則會假設時鐘是以使用者模式為基礎,且核心模式篩選無法同步處理至該介面。
要求主要時鐘控制碼的 DirectShow Proxy 篩選器,然後將它傳遞至其基礎核心模式篩選檔案控制代碼。 核心模式篩選會參考基礎檔案物件。 如果篩選已經有主時鐘,它會取值檔案物件,並使用新的控制碼。 若要這樣做,篩選準則必須處於 [停止] 狀態。
主要時鐘物件的實體時間通常是以硬體為基礎。 如果呈現主時鐘的篩選沒有實體時鐘,則串流時間會根據所呈現資料的時間戳記進行。 在這種情況下,時間戳記可能會因為缺少資料而停止。
主時鐘背後的實體時間可能是遠端的,在此情況下,本機 Proxy 必須負責提供精確的讀數。 例如,Proxy 負責補償 1394 連線的延遲,或平均整個網路的延遲。 此外,如果某些其他核心篩選器是相同 1394 匯流排上第二部裝置的 Proxy,這兩個裝置可能會交涉與主要時鐘互動的私人方法。 在這種情況下,裝置必須使用私人介面來判斷時鐘類型,才能驗證相容性。