Po přečtení druhé věty ,,Panuje u nich jakási zakořeněná myšlenka.....'' jsem si vzpomněl na situaci před několika lety, tak 6-7 let zpátky. Kdy přehrávat video na platformě win byl doslova zápas s prohledávání stavového prostoru instalací různých kodeků, programů a pochopitelně všydy přítomných koníků (bohužel většinou trojských).
Program MPlayer řešil v té době k naprosté spokojenosti všechny běžné požadavky. Kupodivu to bylo především zásluhou monolitického aplikace, která obsahuje vše potřebné. Doba pokročila a v obou táborech nastaly změny. MPlayer se blíží ke své verzi 1.0 a i v táboru modrý bylo hodně věcí vylepšeno.
Docela mne překvapuje paradoxní situace, kdy uživatelský orientovaný systém mám velmi pěknou vnitřní architekturu založenou na directshow, kterou by leckterý unixově orientovaný systém mohl závidět. Za to ale vzhled a způsob ovládání programů se stále pouze přibližuje tomu co MPlayer měl hned na začátku, to bude možná tím mým administrátorským pohledem, ale co, i MPlayer má win instalaci.
Trochu jiná věc je při přehrávní video souborů na display notebooku a externí výstup.
Tady nám tábor modrý stále dopřává rozsáhlý stavový prostor a spoustu příležitostí jak se zabavit než to jeden zabalí.....
Jedna z mála věcí, která vysvětluje a možná trochu obhajuje monolitickou aplikaci je pohled na modularitu na úrovni zdrojových kódů, respektive knihoven. Seznam závislostí je úctyhodný a proč řešit hospodaření s kodekama, když lze volat knihovní funkce přímo. Opravdu je jiný způsob centrální správy nutný?
Přímé zobrazení prostřednictvím directshow je velmi efektivní a snadno integrovatelné do jiných aplikací, která jen tak v unixech nebude. Není toto daň za přílišnou modulárnost unixových systémů vycházející z pověstného spojování programů rourami?
Koneckonců i ten X server má největší slabost ve své největší přednosti, rozdělení na server a klient.....
Za těch několik let spokojeného používání MPlayeru na uni*xech , jsem něco málo efektivity ochoten obětovat.
Osobně se těším na hw dekodování multimedií na grafických kartách, pak by úzká hrdla X serveru nemusela vadit, jen to bude ještě pár let trvat.....
Úzká hrdla X serveru moc nevadí ani teď, když je výstupem XVideo. Pak procesor jenom dekóduje, ale zobrazení je hardwarově akcelerované grafickou kartou, efektivita je plus mínus stejná jako ve Windows (s overlay).
Jinak co se týče toho DirectShow versus zabudované kodeky - proboha, vždyť GStreamer vznikl už před 10 lety. Vzhledem k tomu, že distribuce jako Ubuntu ho již řadu let používají jako výchozí multimediální ("kodekový") framework (jehož klientem je např, přehrávač Totem a další programy), tak nechápu, že si toho ještě lidé pořád, po tolika letech, nevšimli.
OK, distribuci ubuntu neznám (z osobní zkušnosti) a je pěkné že gstreamer použivají pro centrální správu, ale to bude jistě také nějak řešeno ostatních prostředí, například typu KDE.
GStreamer má pěknou myšlenku, ale používá se za těch 10 let také někde jinde než jako základ desítky různých přehrávačů?
Osobně si myslím, že gstreamer-plugins nelze přímo porovnávat s DirectShow a to z několika důvodů
- DirectShow je součástí OS, kdežto gstreamer si musím instalovat, teď to myslím tak, že když už něco instaluji tak se to jednaknemusí přímočaře povést, ale hlavně můžu instalovat cokoliv jiného ..... btw. i ten MPlayer umí používat pluginy ve smyslu win32 dll knihoven, jen je stačí nakopírovat na správné místo, a tím myslím i na uni*xech.
- DirectShow není jen o kodecích, ale o použitelnosti v jiných aplikací, teď to beru z pohledu vyvojáře. Jak efektivně zasáhnu v gstreamer do obrazu, když tam chci něco upravit, přidat, vykreslit. Co sem měl zatím možnost se s gstreamer seznamit, tak to moc efektivně nejde. V současné době mi přijde že některé elementární filtry (pluginy) použít nebo přizpůsobit buď vůbec nejde, nebo jde, ale zas to není příliš efektivní.
Podobně je to s Xvideo. Všechno fajn, pokud je cílem jenom něco vykreslit a zobrazit a již s tím nic nedělat.
Zatím mi stále připadá, že nejvhodnější je výstup řešit přes OpenGL ve win pak přes DirectX. Výkonnostní rozdíl je však bohužel ve prospěch DirectX, sice mne to mrzí, ale věřím, že se to zlepší. Zatím to řeším výkonou grafickou kartou a nějakým tím jádrem navíc a extra desktopem (virtuálním) pro ,,offscreen rendering''. Budu velmi rád, pokud vývoj gstreamer bude ku prospěchu, zatím budu držet palce....
- Z jiného pohledu vývojáře: Co mi gstreamer nabídne oproti třeba ffmpeg nebo aviplay?
Co mne napadá je snad větší počet kodeků. Je mi celkem jedno jestli volám funkci gstreamer nebo ffmpeg. Tak jako tak musí gstream mít přislušný plugin, který bude volat funkce třeba z libtheora.
Jenže tyto ,,pluginy'' jsou v podstatě v každé aplikaci (MPlayer, ffmpeg, transcode) v podobě přímého volání. Tak jaképak gstream pluginy.....
Z pohledu závislosti už mi to tak jedno není, gstreamer je moloch a osobně raději sáhnu pro ffmpeg.....
Chápu, že při použití třeba wxWidget je výhodné gstreamer použít, beru-li jej jako multimediální platformu v rámci toolkitu.....
Z hlediska uživatele je to asi trochu jiné, místo toho aby čekal, až vývojáři ,,nabindujou'' příslušnou knihovnu třeba do MPlayeru, tak čeká až někdo udělá něco jako gstreamer-plugins-x264 pro nový kodek. Na druhou stranu kolik nových smysluplných kodeků se v posledním roce objevilo?
To, že si toho lidi nevšimli, bych viděl především v tom, že těch 10 let je málo a bude to chtít více času a určitě více smělých kroků ke ,,standardizaci'' jako třeba Ubuntu.