Muze mi prosim nekdo vysvetlit, jakej je rozumnej duvod aby byl Mplayer, nebo jakejkoliv jinej prehravac rozdelenej na vic vlaken?
Ja sem az doted zil v domeni, ze vicprocesorovej system mam od toho, abych moh poustet nekolik narocnejch aplikaci najednou (pripadne urychlil ty, ktery se daj rozdelit na mensi casti).
nestudoval jsem to ale tipnu si, ze jedno vlakno muze treba nacitat data ze souboru
do pameti, dalsi vlakno dekodovat obraz z dat, dalsi vlakno muze zobrazovat
grafiku atd. atd.
no ale co z toho, když všechno funguje dostatečně rychle i v jednom vlákně? :-)
Tohle má smysl např. při kompresi videa (mencoder), tam může díky paralelnímu zpracování dojít ke zrychlení, ale u přehrávání moc velký smysl nevidím.
a co kdyz to nefunguje dostatecne rychle? Vezmeme si naprosto realnou situaci - kolega s 2GHz Core2Duo procesorem, snazici se prehrat (na Windows Vista, ale to je nepodstatny detail) plne HD video. Nez sehnal vicevlaknovy kodek do stareho MediaPlayer classic, nebyl schopen to video prehrat dostatecne plynule...
A proc si myslite, ze ma smysl paralelizovat enkodovani a ne dekodovani?
S přehráváním jsem nikdy problém neměl, asi mám buď moc rychlý procesor, nebo nesleduji videa v dostatečně velkém rozlišení :-) Možná to smysl má, ale to už se asi dřív začnou používat GPU pro přehrávání.
"A proc si myslite, ze ma smysl paralelizovat enkodovani a ne dekodovani?"
komprese je jednak náročnější a jednak má smysl ji zrychlovat co nejvíc - aby to bylo rychle hotové, zatímco na film nechceme koukat zrychleně, ten si budeme vychutnávat např. celé dvě hodiny.
Zřejmě se Vám nedostalo do ruky nějaké kvalitní 1080i video s H.264 kompresí. Na takovém si vyláme zuby i většina 2x2GHz procesorů. A obě jádra pracují paralelně na dekódování videa a přesto nestíhají. Dekomprese H.264 videa je extrémně náročná a proto téměř všechny dostupné SW dekodéry (CoreAVC, libavcodec, DivX) jsou vícevláknové. Jednovláknový dekodér by na současných procesorech neměl nárok uspět.
Řekl bych, že značně podceňujete náročnost přehrávání H.264 videa.
Co že nemá super kompresi? H.264? To se používá proto, že má právě nejlepší kompresi že všech dostupných formátů. 1:100 není žádný problém a to je poměrně slušný, ne? Zkus si 1:100 zkomprimovat nějaký audio.
Nektere ukoly lze paralelizovat, tak proc toho nevyuzit? Radeji necham na Linuxovem jadru nez nejake aplikaci aby rozhodl, co bude bezet na jednotlivych cpu.
Pozor, co se týče správy (přidělování systémových zdrojů) procesů a jejich vláken má vždycky právo veta jádro operačního systému ... a ne nějaká aplikace ... Každopádně ta nějaká aplikace musí být napsaná jako vícevláknová (multithread), aby vůbec šlo využít potenciálu hardwarového paralelismu. Je doufám jasné, že vícevláknové app mohou běžet i na jednom procesoru s jedním jádrem ...
No tech moznosti je nekolik. Bud se muze kazde jadro starat o ruznou cast obrazovky (jedno jadro leva pulka, druhe jadro druha pulka obrazovky). Nebo jedno jadro dela dekodovani (coz se zase samo o sobe da rozdelit na vice procesu) a dalsi aplikuje post procesni filtry (a tech zase obvykle byva vice, takze klidne co filtr to procesor).
Dnešní HTPC mají sice poměrně slabé integrované grafiky, které ale bez problémů zvládnou dekódování full HD videa třeba i z Blu-ray disků. Naopak běžný dvoujádrový procesor nemá šanci přehrát takové video, výkonově nedostačuje.
Další věcí je spotřeba. Při přehrávání pomocí CPU výrazně stoupne a HTMPC se musí začít chladit. Hučící větrák při sledování filmů rozhodně není touhou majitelů HTPC. Proto sahají po chipsetech jako například AMD 780G a dekódují pomocí grafické karty.
ja jsem si rikal, zda by slo udelat, ze by kernel bezel jen na jednom CPU jadre
a ostatni CPU jadra by se pouzivaly jen pro aplikace. asi jako se pouzivaji dneska
GPU, bezi na nich uzivatelsky kod, ale ne jadro.
Já bych to nedávno docela uvítal. Sehnal jsem si film v HD s videem v H264 a ma mém core2duo 1,5GHz jsem měl místami problémy s tím, že počítač nestíhal (opravdu nestíhal procesor, sledoval jsem to v top). Takže rozložení do více vláken by mi aspoň trochu mohlo pomoci.
dival jsem se uz driv na tenhle projekt, bohuzel, hlavni vetev jede jednovlaknove a tak ma tohle pred sebou tezkej zivot - vsechny novy patche, featury apod, co bude mit mplayer viseji tady (snad) na jednom cloveku...
A ze mplayer je deravy (a to ho mam rad nad vsechny jine playery/encodery).
U mencoderu jde běžně encodovat vícevláknově u některých codeců. Např u xvid a h264 stačí zadat správný parametr a mít tu danou knihovnu zkompilovanou s podporou více vláken.