Advertisement
Guest User

Untitled

a guest
Feb 8th, 2012
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.80 KB | None | 0 0
  1. <blockquote><p>Někde jsem zahlédl nějaké komentáře o tom, jaký typ chyby zavádí H.264 a vydedukoval jsem si z toho myšlenku, že moderní komprimační mechanismy (H.264 apod.) vyrobí video o malém bitrate s dobrou kvalitou, ale vždy je trochu horší než mpeg2 s velkým bitrate.</p></blockquote>
  2.  
  3.  
  4. To určitě není pravda. Viděl bych tu minimálně 2 důvody:
  5.  
  6. 1) mpeg2 má některé technické nedostatky, které tomuto brání. Jako první mě napadá absence weighted prediction, takže když máte stmívačky rztmívačky (nebo například osvětlení měnící barvu), tak enkodér nezvládá predikci, má tuny residuálu a výsledkem je kopa artefaktů nebo rovnou bloků. H.264 umožňuje weighted prediction (zkrátka uloží multiplier/offset - IIRC - který se aplikuje na predikovanou hodnotu, a hned je residual mnohem menší). Dále, mpeg2 nemá bit-exaktní DCT/iDCT, takže dekodér může mít drobnou odchylku od výsledku, s kterým pracuje enkodér. V rámci jednoho framu to může být jedno, ale tato chyba se pak kumuluje predikcí v dalších framech (jeden z důvodů, proč mpeg2 obvykle používá krátký interval mezi klíčovými snímky). Něco, čím si nejsem jistý je maximální vzdálenost, o kterou můžou predikovat pohybové vektory, viděl jsem na DVD scény, které byly prostým globálním posuvem nehybného obrazu, ale i prři vysoké bitrate v tom byla kupa bloků. Je však možné, šlo o selhání enkodéru, který neviděl 'dost daleko'.
  7.  
  8. 2) není důležitý jen formát, ale i enkodér. x264 je v současnosti určitě nejpokročilejší enkodér, a tyto schopnosti nejsou dobré jenom k tomu, aby se dosáhlo nejnižší možné velikosti, ale i pro to, aby kvalita na konstantní velikosti rostla, to, že by H.264 nějak snižovala strop dosažitelné kvality myslím nehrozí, spíš i naopak... x264 je určitě pokročilejší než HC Encoder nebo jiné mpeg2 nástroje.
  9.  
  10. Jestli mi nevěříte, tak zkusím vysvětlit, proč by to tak mělo být: komprese probíhá tak, že se nejprve najde pohyb, aby se daly budoucí snímky predikovat z předchozích. V tomto kroku má h264 výhodu, protože dokáže používat menší plošky (4x4,4x8,8x4,8x8,8x16,16x8), takže dokáže predikovat přesněji. Také má vyvinutější intra predikci, která zase něco přihodí do mlýna. A výhodu tu také budou mát velmi sofistikované enkodéry - jako je x264. V dalším kroku vezmeme rozdíl mezi predikovaným framem a zdrojem - residual. Čím lépe jsme si v předchozím kroku vedli, tím méně dat bude tento rozdíl obsahovat. V třetím kroku pak tento rozdíl transformujeme (DCT/"HCT") a protože těch dat bude hodně, tak některé koeficienty umažeme (quantization), snažíce se přitom, aby efekt toho byl co nejméně znatelný. Zde vlastně dochází ke ztrátové kompresi. Čím pokročilejší byl náš formát, tím méně zde tedy musíme tlačit na pilu. To, kolik, a kterých koeficientů enkodér vypustí je pak ta nejhorší část, kde se toho dá hodně posrat :) Takže v tomto kroku je důležitý pokročilý enkodér. Následující krok (entropy coding, který operuje nad údaji predikujícími frame a těmi koeficienty transformovného residuálu, které nebyly vypuštěny) už je bezeztrátový, takže nás nezajímá (ale v h.264 je tato bezeztrátová komprese také účinnější).
  11.  
  12. A teď k té otázce, jestli může pokročilejší formát znamenat, že už se sníží maximální dosažitelná kvalita. V principu je to možné u špatného enkodéru, ovšem špatný enkodér staršího formátu taky bude mít špatné výsledky, takže... Když se podíváte na předchozí odstavec, tak vidíte, že v krocích provádějících predikci nemohou pokročilé techniky h.264 uškodit, protože jakákoliv chyba bdue opravena residuálem. Naopak starší techniky v mpeg2 nebudou tak úspěšné a residuálu bude víc. Čili mpeg2 bude muset víc vypouštět koeficienty, což přímo zasahuje kvalitu. Co se týče té kvantizace, tak mi není známo, že by formát h.264 v tomto ohledu zaváděl něco, co by ubližovalo kvalitě, a navíc dobrý enkodér se v tomto kroku může různým nebezúpečím vyhnout. Tzv. adaptive quantization je zdá se skoro nejdůležitější částí jakéhokoliv slušnějšího enkodéru...
  13.  
  14. Existuje jedna vyjímka z toho, co jsem řekl, a tou je loopfilter - ten je aplikován až po na celkově hotový snímek, takže v principu může umazat nějaké detaily, které v snímku byly (a už ho residual nemůže opravit). Jenže tento filtr je poměrně dobře vyvážen, jeho síla závisí na síle kvantizace (pokud má blok qp 15 a lepší, neprovede se už vůbec), takže moc neškodí, navíc dobrý enkodér si ho dokáže pohlídat tak, že kdyby někde škodil, sníží qp příslušného bloku, aby se loopfilter oslabil nebo vypnul. Moje zkušenost je taková, že to funguje dobře a škody skutečně nevznikají (oni ti týpci z H.264 a MPEGu nejsou úplně na kočku, heh).
  15.  
  16. <b>TL;DR</b>
  17.  
  18. 1. x264 je nejlepší současný enkodér (a h.264 nej formát). Není reálné, že by způsobil problémy s kvalitou, které by mpeg2 nepostihly v prvé řadě, a navíc mnohem hůře.
  19.  
  20. 2. Lepší komprese znamená, že máme zdrojů k upotřebení, takže naše video bude vypadat lépe.
  21.  
  22. 3. Lepší enkodér opět přináší více zdrojů k upotřebení -> lépe vypadající video. Naopak špatný enkodér může škodit i když použije spoustu bitů (prostě prosto, že něco zmrví).
  23.  
  24. (4. Ona ta velikost skoro nikdy není neomezená, takže ten přístup "stačí zvednout bitrate" snadno selže. Příklad: max. bitrate u DVD je 9.8kbps při 720x576 nebo 720x480, a přesto to kolikrát dopadá špatně. Důležité ovšem také je, že náročné scény můžou potřebovat mnohonásobně vyšší tok než je průměr.)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement