GraphEdit
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.
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
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"
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
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.