Sdílet prostřednictvím


Filter Graph Manager

[Funkce přidružená k této stránce DirectShow je starší funkce. Byla nahrazena MediaPlayer, MMFMediaEnginea Audio/Video Capture v Media Foundation. Tyto funkce jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal MediaPlayer, MMFMediaEngine a Audio/Video Capture v Media Foundation místo DirectShow, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]

Graph Manager pro filtrování sestavuje a řídí grafy filtrování. Tento objekt je ústřední komponentou directShow. Aplikace ho používají k vytváření a řízení grafů filtrování. Správce grafů filtru také zpracovává synchronizaci, oznámení událostí a další aspekty řízení grafu filtru. Vytvořte tento objekt voláním CoCreateInstance.

CLSID

Pro vytvoření Správce grafů filtru existují dva identifikátory CLSI:

CLSID Popis
CLSID_FilterGraph Vytvoří Správce grafů filtru ve sdíleném pracovním vlákně.
CLSID_FilterGraphNoThread Vytvoří Správce grafů filtru ve vlákně aplikace.

 

Obecně platí, že aplikace by měly používat CLSID_FilterGraph. Oba identifikátory CLSI vytvářejí stejný objekt, ale používají různé modely podprocesů:

  • CLSID_FilterGraph vytvoří Správce grafů filtru ve vlákně pracovního procesu, které sdílí všechny instance CLSID_FilterGraph ve stejném procesu. Vlákno odesílá zprávy odeslané filtry a řídí životnost všech oken vytvořených filtry.
  • CLSID_FilterGraphNoThread vytvoří Správce grafů filtru ve vlákně aplikace. Pokud použijete tento IDENTIFIKÁTOR CLSID, vlákno, které volá CoCreateInstance musí mít smyčku zpráv, která odesílá zprávy; jinak může dojít k zablokování. Před ukončením vlákna aplikace musí také uvolnit Správce grafů filtru a všechny objekty grafu (například filtry, špendlíky, referenční hodiny atd.).

Rozhraní

Správce grafů filtru zveřejňuje následující rozhraní:

objekty DirectShow