Konečně pořádný video enkodér s využitím GPGPU

28. 3. 2012

Sdílet

 Autor: Redakce

Když nám před lety výrobci grafických čipů začali slibovat možnost využití svých produktů mimo herní oblast, byly převody videa, což je činnost zdlouhavá a výpočetně náročná, jednou z úloh, kde měly pokročilá GPU jak se říká trhat asfalt. Ani po několika letech jsme se však nedočkali přesvědčivé realizace těchto příslibů: produktů se sice objevilo poměrně dost, kvalita jejich výstupu je však špatná. Vytěžují CPU zcela stejně jako čistě softwarové enkodéry, a to často bez toho, aby byly rychlejší. A navíc nejsou efektivní z hlediska spotřeby energie.

Definitivním důkazem, že
grafické čipy nejsou ke kódování videa příliš vhodné budiž to, že všichni výrobci
již nyní přecházejí na specializované obvody – vyhrazené hardwarové bloky,
podobné enkodérům obsažených v čipech pro mobilní telefony. Po úspěšné
technologii Quick Sync od Intelu nyní přichází VCE (v nedávno uvedených
Radeonech), a NVENC v čerstvých kartách GeForce GTX 680.

Nakonec to však vypadá,
že grafiky přece jen upotřebení naleznou. Po letech marných pokusů se totiž
dočkáme podpory OpenCL akcelerace přímo v (dosud čistě softwarovém) enkodéru
x264. To by zároveň mělo zaručit, že odpadne problém se špatnou obrazovou
kvalitou výsledného videa, neboť x264 je ve svém oboru špičkou.

Vzhledem k tomu, že bylo
zvoleno rozhraní OpenCL, již asi mnozí tipují, že vítr vane spíše od firmy AMD
než z tábora konkurenční Nvidie. Ta se totiž většinou snaží prosadit
prostřednictvím exkluzivního frameworku CUDA.

Skutečně je tomu tak,
firma Multicoreware vyvíjí GPGPU řešení určené pro projekt x264 s přímou
podporou AMD. Neznáme sice detaily ohledně finanční stránky věci (vývoj takto
komplikovaného software pro GPU je údajně nákladný), pravděpodobně ale výrobce
procesorů přispěl více než jen prostřednictvím vzorků hardware.

Podle předběžných
informací (pocházejících z čenichání okolo projektu x264) je podporována jak
architektura GCN, tak starší VLIW (AMD chce samozřejmě podpořit i levnější
karty a především APU, které na novější architekturu ještě nepřejdou). Kód však
údajně funguje i na kartách GeForce (nevíme však, zda pouze na DirectX 11
kompatibilních, nebo i na čipech předchozí architektury).

ICTS24


GPGPU pohled na architekturu GCN

Po zprávách příjemných
nyní k těm poněkud horším. Tato akcelerace nebude pokrývat celý program, pro
převod videa budete nadále potřebovat i výkon CPU. Jelikož komplexnost x264 (a
formátu H.264) plnému přepsání do kódu GPGPU nesvědčí, zaměřily se práce na
takzvaný „lookahead“, což je separátní enkodér v malém. Ten pracuje o
několik snímků napřed nezávisle na hlavním enkodéru, kterému tak umožňuje činit
rozhodnutí optimální vzhledem k budoucím snímkům (enkodér tak může například
investovat více bitů do dat, která budou v budoucnu užitečná, či se
správně rozhodnout mezi snímky P, B a I). Tato technika jednak vylepšuje
kvalitu videa relativně k datovému toku, jednak je s ní snazší dostát
požadavkům na omezení variability datového toku například pro účely tvorby disků
Blu-ray nebo streamování v reálném čase.