Sdílet prostřednictvím


Hlavní hodiny

Minidrivery mohou synchronizovat datové proudy s hodinami vytvořenými jinými minidrivery; více datových proudů je možné synchronizovat s jedněmi hodinami. Pokud pin používá nebo vytváří takové hlavní hodiny, minidriver by měl podporovat KSPROPERTY_STREAM_MASTERCLOCK. Klienti mohou tuto vlastnost také použít k nastavení hlavních hodin pro pin. Piny, které provádějí operace vykreslování a zachytávání, často používají hlavní časovač. Minidriver je zodpovědný za uvolnění časových referencí po ukončení.

Rozhraní pro hlavní hodiny je objekt souboru, který podporuje metody, vlastnosti a události.

Všechny dotazy na objekt souboru jsou k dispozici pouze v PASSIVE_LEVEL. Dotaz na pozici hodin je však podporován také prostřednictvím ukazatele volání přímé funkce, který je k dispozici v DISPATCH_LEVEL, což je platné, pokud je objekt souboru platný. Toto přímé volání musí být předáno objektu souboru hodin jako kontextový parametr.

Popisovač souboru se získává prostřednictvím žádosti o vytvoření instance filtračního pinu, podobně jako je vytvoření pinu prováděno pomocí IRP_MJ_CREATE. Požadavek způsobí vytvoření popisovače souboru, podobně jako se vytvoří popisovač k pinu, přičemž oba mají své vlastní kontextové informace. Tento popisovač souboru se pak předá zpět volajícímu a dá se použít k nastavení hlavního časovače pro filtry v režimu jádra. V době, kdy je filtru přiřazován hlavní časovač grafu, se instance pinu může dotazovat na objekt nadřazeného souboru, aby určila, zda je vlastníkem hlavního časovače.

Když je k tomuto hlavnímu času přiřazen filtr, můžete ho použít k dotazování vlastností. Pokud jsou hlavní hodiny založené na filtru režimu jádra, musí podporovat rozhraní pro dotazování popisovače souboru na část hlavní hodiny v režimu jádra. Pokud rozhraní není podporované, předpokládá se, že hodiny jsou založené na uživatelském režimu a filtry režimu jádra se s ním nemůžou synchronizovat.

Filtr proxy DirectShow požadující hlavní popisovač hodin jej následně předá do podkladového popisovače pro filtr v režimu jádra. Filtr režimu jádra odkazuje na příslušný objekt souboru. Pokud už filtr měl hlavní hodiny, odreferencuje objekt souboru a použije nový handle. K tomu musí být filtr ve stavu Zastavení.

Fyzický čas hlavního objektu hodin je často založený na hardwaru. Pokud filtr, který prezentuje hlavní čas, nemá žádné fyzické hodiny, pak čas datového proudu postupuje podle časových razítek zobrazených dat. V takové situaci se časová razítka mohou zastavit kvůli nedostatku dat.

Fyzický čas za hlavními hodinami může být vzdálený, v takovém případě je odpovědností místní proxy poskytovat přesné časové údaje. Proxy server má například odpovědnost za kompenzaci zpoždění v rámci připojení 1394 nebo průměr zpoždění v síti. Kromě toho platí, že pokud je nějaký jiný filtr jádra proxy pro druhé zařízení ve stejné sběrnici 1394, mohou tato dvě zařízení vyjednat soukromou metodu propojení s hlavními hodinami. V takovém případě musí zařízení používat privátní rozhraní k určení typu hodin, aby bylo možné ověřit kompatibilitu.