Portál AbcLinuxu, 30. dubna 2025 16:48

32bit vs 64bit: video encoding a decoding [1]

28.10.2007 19:25 | Přečteno: 2685× | Linux | Výběrový blog | poslední úprava: 28.10.2007 20:17

Kódování a dekódování videa jsou často kladené jako příjklady toho, že 64bit aplikace mohou být pomalejší než jejich 32bit protějšky. Důvodem není to, že by se 64bit režim pro tyto aplikace vyloženě nehodil. Problém je v optimalizaci existujících kodeků. Léty optimalizované algoritmy napsané v 32bit assembleru nelze snadno použít ani přepsat. Změnila se v tomto směru již situace nebo tento problém stále přetrvává?

Metodika

Hardware
Core 2 Q6600@3.2GHz

64bit

MPlayer 1.0rc1-4.1.1 (C) 2000-2007 MPlayer Team
CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Přeloženo pro CPU x86 s rozšířeními: MMX MMX2 SSE SSE2
Kodeky přeloženy konzervativnimi CFLAGS a s -march nocona. GCC 4.2 march pro Core2 nemá, march nocona alespoň pozapíná sse a mmx a není to třeba dělat ručně.

32bit

MPlayer 1.0rc1-4.1.1 (C) 2000-2006 MPlayer Team
CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 3DNow 3DNowEx SSE SSE2
Kodeky přeloženy pro p4. mplayer má k dispozici wincodecs a poměrně často jich využívá (rozhodnutí v této záležitosti byly ponechány zcela na přehrávači).

Způsob měření
mplayer -nosound -benchmark -quiet -frames 10000 -vo null
Pozn.: ne každé testované video mělo 10000 snámků

time mencoder
U každého měření bude upřesněno jaké přepínače byly použity.

před každým měřením byl spuštěn jeden průběh pro naplnění diskové cache. Následně byly provedeny tři měření a jejich časy způměrovány a zaokrouhleny na desetiny vteřiny.

Disclaimer: Nejsem žádným odborníkem přes kodeky a kompresi videa. Je možné, že v mém měření nebo v textu budou kvůli tomu nejaké nepřesnosti.

H264 playback

64bit: Vybrán video kodek: [ffh264] vfm: ffmpeg (FFmpeg H.264)
32bit: Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)

32bit [s]    64bit [s]         
The Simpsons Movie, trailer (1080p)18.216.311.7%
Dinosaurs 3D (1080p)30.227.211%
Elephants Dream (720p)38.133.214.7%
Animusic (720p)41.036.512.3%
Apple Leopard Tour (480)15.413.613%

mpeg4 playback

64bit: Vybrán video kodek: [ffmp42] vfm: ffmpeg (FFmpeg M$ MPEG-4 v2)
32bit: Selected video codec: [ffmp42] vfm: ffmpeg (FFmpeg M$ MPEG-4 v2)

32bit [s]    64bit [s]         
Elephants Dream (1080p, 10000kbps)53.549.09%
Garfield (720x384, 2400kbps)10.99.316%
Kulhanek, Temna hmota (768 x 576)10.89.022%

Theora/VP3

64bit: Vybrán video kodek: [theora] vfm: theora (Theora (free, reworked VP3))
32bit: Selected video codec: [theora] vfm: theora (Theora (free, reworked VP3))

32bit [s]    64bit [s]         
other.ogg (1600x1200, nizka komprese)28.623.521.7%
kanturek_diskuze-hq.ogg (768x576)31.623.633.9%

WMV VC1

64bit: Vybrán video kodek: [ffvc1] vfm: ffmpeg (FFmpeg M$ WVC1)
32bit: Selected video codec: [wmvvc1dmo] vfm: dmo (Windows Media Video (VC-1) Advanced Profile Decoder)

32bit [s]    64bit [s]         
Streaming pomoci VLC (720x576)14.618.4-20.7%
CZJUG (480x384)9.811.9-17.6%

WMV3/9

64bit: Vybrán video kodek: [ffwmv3] vfm: ffmpeg (FFmpeg M$ WMV3/WMV9
32bit: Selected video codec: [wmv9dmo] vfm: dmo (Windows Media Video 9 DMO)

32bit [s]    64bit [s]         
film (720x480, 700kbps)10.125.1-59.8%
film (480x360, 512kbps)5.312.9-58.9%

WMV2/8

64bit: Vybrán video kodek: [ffwmv2] vfm: ffmpeg (FFmpeg M$ WMV2/WMV8)
32bit: Selected video codec: [wmv8] vfm: dshow (Windows Media Video 8)

32bit [s]    64bit [s]         
film (512x410)10.19.83%

mpeg2

-frames 30000

64bit: Vybrán video kodek: [mpegpes] vfm: mpegpes (MPEG-PES output (.mpg or DXR3/IVTV/DVB/V4L2 card))
32bit: Selected video codec: [mpegpes] vfm: mpegpes (MPEG-PES output (.mpg or DXR3/IVTV/DVB card))

32bit [s]    64bit [s]         
DVD2.42.020%

mpeg1 + postprocessing

-pp 6 -vf lavcdeint

64bit: Vybrán video kodek: [mpeg12] vfm: libmpeg2 (MPEG-1 or 2 (libmpeg2))
32bit: Selected video codec: [mpeg12] vfm: libmpeg2 (MPEG-1 or 2 (libmpeg2))

32bit [s]    64bit [s]         
videoklip34.230.412.5%

Offtopic 1

aneb vliv různych -vo při použití Berylu na nVidia 8xxx při přehrávání Elephants Dream (1080p)
-vo null  49.0s
-vo xv    66.5s 
-vo x11   113.9s
-vo gl2   175.5s

Offtopic 2

aneb quadcore speedup- o kolik je rychlejší přehrát 4x Apple Leopard Tour paraelne než sekvenčně na quadcore procesoru. Zkrátka vyloženě praktický test ;-)
Sekvenčně: 54.4s
Paraelně: 16.6s
Paraelně je tedy úloha zpracována 3.28x rychleji.

Závěr

Snažil jsem se otestovat širokou škálu kodeků, se kterými uživatel běžně přijde do styku. Kde to šlo jsem použil volně stažitelné zdroje a uvedl zdroj aby si to každý mohl vyzkoušet u sebe.

Z výsledků lze usoudit, že dekódování/dekomprese už není na x86_64 platformě výkonnostním problémem. Výjimku tvoří různé varianty WMV, při přehrávání kterých se použijí perfektně odladěné kodeky z windows ale pouze při použití 32bit binárky.

Tento díl byl jen úvodem pro zjištění zda je o tuto problematiku zájem. Pokud ano, tak bych v příštím dílu provedl podobnou analýzu zaměřenou na mnohem zajímavější téma, tedy na kódování/kompresi.

       

Hodnocení: 96 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Limoto avatar 28.10.2007 20:10 Limoto | skóre: 32 | blog: Limotův blog
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
Odpovědět | Sbalit | Link | Blokovat | Admin
Jak se tak dívám, kdybych na to měl procesor, jdu určitě do 64-bitu...
Jan Drábek avatar 28.10.2007 20:42 Jan Drábek | skóre: 41 | blog: Tartar | Brno
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
Odpovědět | Sbalit | Link | Blokovat | Admin
hmm co jsem zjistil já, tak mě v 32bitech kloudně nejelo HD video na mém C2D 1,5 a v 64bitech ano...
01010010 01000101 01010000 01101100 01001001 00110010 01000100 01100101 01010110
28.10.2007 20:48 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
Odpovědět | Sbalit | Link | Blokovat | Admin
Škoda - gcc není zrovna příliš vypovídající o rychlostech. Otestoval bych to na nějakém dobře optimalizujícím kompilátoru.

Jinak na věci perfektně odladěné v asm - tam je zase všechno jinak.

Ale jinak moc děkuji a klobouk dolů za testy.
http://ponkrac.net
28.10.2007 20:53 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
Odpovědět | Sbalit | Link | Blokovat | Admin
Hmm tak to bych možná to 64bit distro možná mohl i vyzkoušet... :-)
28.10.2007 22:05 Jan Grmela | skóre: 45 | blog: Kilo šťávy z lachtana | Brno
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
Odpovědět | Sbalit | Link | Blokovat | Admin
Díky, to byla poslední kapka pro finální rozhodnutí, zda jít do 64 nebo 32 bit.
28.10.2007 23:42 alkoholik | skóre: 40 | blog: Alkoholik
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
Odpovědět | Sbalit | Link | Blokovat | Admin
Nejsem si uplne jisty, ale kdysi davno jsem videl srovnani 64 bitu na Core Duo vs. Athlon64 a toho jasne plynulo, ze Intel je v 64 bitech o dost pomalejsi. Nemohl byste nekdo zkusit tyhle testy i s procesorem od AMD?
29.10.2007 00:39 miho | skóre: 24 | blog: Mihovy_sochory | Orlová
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
To je mytus; u P4 to do urcite miry platilo a tykalo se to provadeni 64bit operaci mimo SSE, a tech je v beznem kodu prekvapive malo. U Core2 je taktez v relativnich cislech prechod z 32bit na 64bit mene znatelny jsou to ale jen jednotky procent. Viz treba http://www.xbitlabs.com/articles/cpu/display/core2duo-64bit_7.html . Tento rozdil je snadno prevazen tim, ze Intel je tradicne lepsi v enkodovani audia a videa, viz treba http://www.xbitlabs.com/articles/cpu/display/core2extreme-qx6850_7.html
29.10.2007 18:23 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
presneji je nanej vetsina softwaru optimalizovana
USE="-gnome -kde";turris
29.10.2007 13:18 bibri | skóre: 33 | Olomouc
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
Odpovědět | Sbalit | Link | Blokovat | Admin
Zájem by byl...
-- www.bibri.net
David Watzke avatar 29.10.2007 14:46 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
+1
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Limoto avatar 29.10.2007 17:14 Limoto | skóre: 32 | blog: Limotův blog
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
+101110
29.10.2007 20:12 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
Také se přidávám, pěkný test. Já osobně jedu už asi 2 roky v 32 bitech (na 64 bitovém procesoru), ale ani tento test mne zatím nedonutí přepnout.

Přimlouval bych se i za nějaký test spotřeby paměti. Nejlépe u nějakého paměťově náročného programu. Také by mě zajímal testík nějakých Java programů.
13.11.2007 16:29 JeCh
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
Odpovědět | Sbalit | Link | Blokovat | Admin
Mě by zajímalo, proč byly pro porovnání u WMV použity pro 64-bit ffmpeg a pro 32-bit MS dekoder. Jakou to má vypovídací hodnotu, když použiju pokaždý úplně jiný SW? Proč nebyl i pro 32-bit použitý ffmpeg? Je taky s podivem, o kolik jsou MS dekodéry rychlejší než ffmpeg.

Také by bylo dobré napsat, jestli jelo dekódování přes obě jádra nebo jenom na jednom. Současná stabilní verze ffmpeg má, pokud vím, multithreaded dekódování MPEG-1 a MPEG-2. Pro MPEG-4 AVC je už částečně implementované, ale nevím na jaké úrovni. Jak je to s MPEG-4 ASP netuším.

Podpora více jader je podle mě mnohem důležitější než 32 vs. 64-bit.
13.11.2007 17:05 miho | skóre: 24 | blog: Mihovy_sochory | Orlová
Rozbalit Rozbalit vše Re: 32bit vs 64bit: video encoding a decoding [1]
Je to v clanku vysvetleno- vyber kodeku nechavam zcela zamerne na mplayeru. smysl to ma takovy, ze presne to cini naprosta vetsina uzivatelu.

Dekodovani pres "obe ctyri" jadra neprobihalo v zadnem ze zminenych formatu. Mozna, ze se mencoder vicethreadove dekoduje, to nevim. mplayer ale asi ne. Vec kterou zvladam realtime jednothreadove je lepsi nechat tak nez ji delit do vice threadu. Nadelal bych si tim synchronizacni problemy a znacny overhead a neziskal nic.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.