Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Filmy a seriály, streamovací služby
Televize  |  Projektory
Audio a domácí kina
Multimediální centra  |  Ostatní
Svět hardware  |  Digimanie
Svět mobilně

GraphEdit

22.1.2003, Radek Jahoda, návod
Pokud jde o práci s videem, není univerzálnější nástroj než GraphEdit. Že ho neznáte? To je ale velká chyba...

1. Úvod


GraphEdit je nástroj pro softwarové vývojáře, který umožňuje pracovat s DirectShow filtry, ovšem jeho použití je daleko širší. Všechny DirectShow aplikace jako přehrávače, editory, zachytávací programy apod. pracují s filtry stejným způsobem jako GraphEdit.



Nejprve se ale musíme seznámit s tím, co to vlastně DirectShow je a jak s ním pracovat.

2. DirectShow

DirectShow definuje rozhraní, které zaručuje vzájemnou kompatibilitu mezi různými multimediálními zařízeními a software od různých výrobců. Nad vším bdí FilterGraph manažer, který si pamatuje informace o všech použitých filtrech. Filtr je jakýsi symbolický blok, který má určitou funkci, např.:
    • Source filter - většinou vstupní zařízení, např. tuner, zachytávací zařízení, zvuková karta, soubor, stream ...
    • Transform filter - filtr, který převádí nějaký vstupní formát na výstupní, sem patří např. kopmresory, dekompresory, efektové filtry, (de)multiplexory apod.
    • Renderer - posílá vstup na nějaké výstupní zařízení - obrazovku (Video Renderer), zvukovou kartu (Audio Renderer), vstupně/výstupní kartu apod.
Každý filtr může mít libovolné množství vstupů a výstupů, popř. jen vstup nebo výstup (pro source filter resp. renderer). Těmto vstupům se říká pin, mluvíme pak o vstupním a výstupním pinu. Výstupní piny filtrů se spojují se vstupním pinem jiného filtru. Při spojování se kontroluje, zda oba piny podporují shodný formát (media type)- jak hlavní formát (major type - video, audio, text, midi, ...), tak vedlejší (subtype - YUY2, RGB24, YVU9, ...). Pokud typ nesouhlasí, piny resp. filtry se navzájem nespojí. Takto jsou pospojovány za sebou všechny filtry od zdrojového až po renderer.

FilterGraph manažer obsahuje jednu zajímavou funkci - tou je automatická tvorba grafu. Např. je možné vytvořit graf pro renderování nějakého souboru, např. AVI videa. FilterGraph manažer se snaží najít takovou kombinaci filtrů, která vede od zdroje až k rendereru. V tomto případě bude jako první filtr File reader, což je obecný filtr pro čtení jakéhokoliv souboru. Jako druhý bude AVI Splitter - filtr, který čte ze souboru data a rozdělí je do dvou pinů, které již obsahjují data pro video a zvuk (Stream 00 a Stream 01). Každý tento pin se dále renderuje zvlášť a hledá se vhodná kombinace filtrů pro dosažení video resp. audio rendereru. Jsou to filtry:

    • DivX Decoder Filter - dekoder formátu DivX
    • AC3 from AVI XForm - tento filtr konvertuje AC3 stream z AVI souboru do standardního MPEG AC3 formátu (tento formát nelze zmultiplexovat do AVI přímo, proto se to obchází takto)
    • InterVideo Audio Decoder - dekodér AC3 zvuku na nekomprimovaný PCM formát
Výsledek je vidět zde:



Je také možné, že pro daný formát existuje více možných filtrů, pak FilterGraph manažer použije ten s vyšší prioritou (tzv. merit), popř. ten, který mu přijde první pod ruku.

Ještě jedna důležitá věc - filtry jsou většinou vlastně obyčejné DLL soubory s definovaným rozhraním. Aby mohl být filtr používán, musí se nejprve zaregistrovat - pomocí programu regsvr32, který je standartně ve Windows:

    • Registrace: regsvr32 "soubor"
    • Odregistrace: regsvr32 /u "soubor"
3. GraphEdit

K ovládádní GraphEditu není co říci, jen krátce nejpoužívanější věci (odpuste, je to primitivní, ale jsou lidé, kteří to potřebují...):
    • Přidání filtru - vybereme z menu Graph/Insert filters..., objeví se nové okno se seznamy filtrů roztříděnými podle kategorií. Nejpoužívanější filtry jsou v kategorii jednoduše nazvané DirectShow Filters. Filtr vložíme dvojitým kliknutím na příslušný filtr.
    • Odebrání filtru - filtr označíme a stiskneme klávesu Del
    • Spojení filtrů - myší potáhneme od výstupního piny ke vstupnímu, pokud formát souhlasí, piny se propojí
    • Rozpojení filtrů - označíme šipku spojující piny a stiskneme klávesu Del
    • Zobrazení dialogu nastavení filtru - označíme filtr, rozbalíme u něj menu pomocí pravého tlačítka myši a vybereme Filter Properties, pokud máme nainstalované i DirectX SDK, zorazí se i další stránky s parametry pinů - typ připojení a preferované formáty.
    • Zobrazení dialogu nastavení pinu - má smysl jen u zachytávacích zařízení u výstupních pinů, kde lze nastavit velikost videa, formát a framerate
GraphEdit samozřejmě nelze použít úplně ke všemu - nelze nastavovat speciální parametry filtrů, které nejsou dostupné pomocí Filter Properties apod.

4. Dekódování AC3 z AVI souboru

Ukažme si na jednom příkladu použití GraphEditu - např. pro dekódování AC3 z AVI souboru do normálního WAV souboru (hodí se při konverzi z AVI s AC3 zvukem do SVCD).

Budeme k tomu potřebovat filtr WAV Dest, který není normálně normálně nainstalovaán, takže ho musíme zaregistrovat pomocí "regsvr32 wavdest.ax".

Otevřeme v GraphEditu náš AVI soubor:




Smažeme celou video větev, tedy DivX Decoder a Video Renderer.



Dále vymažeme Audio Renderer, tedy Default DirectSound Device, a nastavíme parametry dekódování - Properties Filtru InterVideo Audio Decoder (dekoder se může lišit v závislosti na instalovaném software - CyberLink Audio Decoder, AC3 Decoder apod.):



Vložíme WAV Dest filtr a File writer. Při vkládání File writer filtru budeme dotázáni na jméno souboru. Dále tyto filtry propojíme podle obrázku:



Teď už jen spustíme graf pomocí tlačítka Play a počkáme na dokončení operace.