Testissä videonkäsittely näytönohjaimen avustuksella
Johdanto
Viime vuosien aikana näytönohjaimien tarjoamat ominaisuudet ovat monipuolistuneet nopealla vauhdilla, jonka johdosta näytönohjaimilla voi käyttää muuhunkin kuin pelkkään pelaamiseen tai 3D-mallinnukseen.
Nykyään näytönohjaimien tarjoaman laskentatehon voi valjastaa esim. salasanojen murtamiseen, lääketieteelliseen laskentaan ja videoiden käsittelyyn.
Näytönohjaimien tarjoamaa laskentatehoa ei voi kuitenkaan hyödyntää automaattisesti ohjelmissa, vaan ohjelmiin pitää lisätä erikseen ohjelmakoodia ja tuki sopivalle rajapinnalle, jonka kautta näytönohjaimien tarjoamaa laskentatehoa pääsee hyödyntämään. Nykyään rajapinnoista suosituin on NVIDIA:n CUDA, jota tuetaan virallisesti NVIDIA:n omissa näytönohjaimissa. Muita tarjolla olevia rajapintoja ovat ATI:n kehittämä Stream, joulukuussa 1.0-version saavuttanut OpenCL ja Microsoftin DirectX 11:n mukana tuoma Compute Shader -tuki.
Ohjelmat
Allekirjoittanut päätti tutustua paremmin CUDA:n tuomiin hyötyihin videonkäsittelyssä, koska CUDA-tuki löytyy nykyään valmiina mm. TMPGEnc 4.0 XPress- ja PowerDirector-ohjelmista.
Tarkoituksena oli selvittää se, kuinka paljon CUDA nopeuttaa videoiden pakkausta ja se, että häviääkö näytönohjaimen avulla käsitellyn videon laatu pelkästään suorittimella käsitellyn videon laadulle, kuten ATI:n ja NVIDIA:n tarjoamien oletusohjelmien kanssa voi käydä.
TMPGEnc 4.0 XPress -ohjelmassa CUDA:a hyödynnetään MPEG-1- ja MPEG-2-videodatan purkamisessa ja tiettyjen videosuotimien laskemisessa. Täten CUDA:sta ei ole hyötyä kaikissa mahdollisissa tilanteissa, mutta ohjelman CUDA-tukea on tarkoitus laajentaa tulevaisuudessa, joten toivottavasti TMPGEnc 4.0 XPress saa jatkossa lisää hyötyä CUDA:n tarjoamasta laskentatehosta. Nykyisellään videonkäsittely nopeutuu PEGASYS Inc. -yrityksen antamien tietojen mukaan parhaimmillaan tietyissä tapauksissa noin 800 prosenttia, kun koneesta löytyy CUDA-rajapintaa tukeva näytönohjain.
CyberLink julkaisi PowerDirector-ohjelmasta uuden version CES-messujen kynnyksellä, josta löytyy tuki sekä CUDA:lle että Streamille. PowerDirectorissa näytönohjaimen laskentatehoa hyödynnetään suotimien laskennan ohella myös videon pakkaamisessa H.264/AVC-muotoon. Allekirjoittanut asettikin PowerDirectorin CUDA-tuelle suuret ennakko-odotukset.
Kummassakaan ohjelmassa CUDA-tuki ei ole oletuksena päällä, vaan se pitää ottaa erikseen käyttöön. TMPGEnc 4.0 XPress -ohjelmassa tämä onnistuu valitsemalla CUDA-tuen päälle ja käynnistämällä ohjelman uudelleen. PowerDirector-ohjelmassa pitää puolestaan valita valikoista tuki suotimien CUDA-laskennalle ja H.264/AVC-pakkauksen yhteydessä valita GPU-pakkaaja käyttöön.
TMPGEnc 4.0 XPressin CUDA-tuki efekteille ja videoiden purkamiselle
PowerDirectorin CUDA-tuki efekteille
PowerDirectorin CUDA-tuki H-264/AVC-videon pakkaamiselle
Kaksikkoa vastaan asettui avoimen lähdekoodin AVIdemux-ohjelma, joka ei osaa hyödyntää näytönohjaimen tarjoamia ominaisuuksia, mutta sen avulla saadaan jonkinlaista vertailukohtaa kuvanlaadun osalta, kun videot pakataan monien suosimalla x264-enkooderilla.
Testausmenetelmät
Testaukseen käytetään W6RZ-sivustolta löytyvää Sony HDW-F900 footage -videota, jolla on kestoa 2 minuuttia ja 6 sekuntia. Video on MPEG-2-muodossa 1080p-resoluutiolla ja se on tallennettu Transport Stream -säiliöformaattiin. Videodatan bitrate nousee parhaillaan 30 Mbps asti ja keskiarvollinen bitrate on puolestaan 18 Mbps, joten videon pitäisi rasittaa ohjelmia tarpeeksi ja se toimii myös hyvänä vertailukohtana monien parempien digitaalisten videokameroiden tuottamille tiedostoille.
Testivideo pakataan kaikilla ohjelmilla H.264/AVC-muotoon sekä ilman CUDA-avusteita että avusteiden kera (AVIdemuxin kanssa CUDA ei luonnollisesti ole mukana). Ensimmäisenä kohteena on nettilevitystä varten tehtävä 720p-resoluution video, joka pakataan 2 pass variable bitrate -asetuksella. Keskiarvoiseksi bitrateksi asetettiin kaikissa ohjelmissa 3 000 kbps, muuten asetukset ovat oletusasetuksia videon osalta. Audion bitrateksi asetettiin 64 kbps.
TMPGEnc 4.0 XPressin 720p-pakkausasetukset
PowerDirectorin 720p-pakkausasetukset
AVIdemuxin 720p-pakkausasetukset
Toisena kohteena oli iPhoneja ja iPod toucheja varten tehty versio, jossa resoluutioksi valittiin 640x360 ja pakkausmetodiksi 1 pass constant bitrate -asetus (bitrate 1 000). Audion bitrateksi asetettiin 64 kbps.
TMPGEnc 4.0 XPressin iPhone-pakkausasetukset
AVIdemuxin iPhone-pakkausasetukset
Valitettavasti PowerDirectorin kanssa H.264/AVC-videota ei saa tallennettua MP4-tiedostoon, vaan ainoastaan m2ts-tiedostoiksi. Tämän vuoksi videoraita irrotettiin m2ts-tiedostosta mencoder-ohjelmalla, jonka jälkeen se laitettiin MP4-tiedostoon MP4box-ohjelman avustuksella. PowerDirectorin resoluution valinta on myös erittäin rajoittunut, jonka takia iPhone/iPod touch -tiedostoa ei ohjelmalla tehty lainkaan. Ohjelma ei osannut myöskään tuottaa AAC-ääniraitaa m2ts-tiedostoon, joten myös se puuttuu lopullisista tiedostoista. Ohjelma sotki myös videon kuvasuhteen, vaikka sitä yritettiin vielä pakottaa erikseen 16:9-tilaan.
Molemmat käännökset testattiin kaikissa ohjelmissa ilman suotimia ja värejä korjaavan Color Correction -suotimen kera. Eri ohjelmien ajat eivät ole keskenään vertailukelpoisia, koska ohjelmien H.264/AVC-pakkaus on toteutettu eri kirjastoilla ja myös suotimet ovat toteutettu eri tavalla, jonka johdosta ohjelmista ulos tulevat tiedostot ovat erilaisia. Suotimen kanssa on kuitenkin helppo tarkistella kuinka paljon sen käyttäminen hidastaa pakkausta kyseisen ohjelman kohdalla.
Operaatiot suoritettiin Windows Vista SP1 -käyttöjärjestelmän omaavalla tietokoneella, josta löytyy 1,6 GHz kellotaajuudella toimiva kaksiytiminen Intel Pentium Dual E2140 -suoritin, 2 gigatavua keskusmuistia ja Club 3D:n valmistama Geforce 9600GT -näytönohjain. Näytönohjaimen ajurina toimi NVIDIA:n Forceware 181.20-ajuri. TMPGEnc 4.0 XPress -ohjelmasta käytössä oli 4.6.3.268-versio, PowerDirectorista käytössä oli 7.0.2416a-versio ja AVIdemuxista käytössä oli 2.4.3-versio (r4494), jossa käytettiin x264-pakkauskirjaston r1080-julkaisua.
Pakkaukseen kulunut aika mitattiin sekuntikellon avulla.
Testitulokset
720p ilman suodinta
Ohjelma | Aika ilman CUDA:a | Aika CUDA:n kanssa | CUDA:n tuoma hyöty |
TMPGEnc 4.0 XPress | 16 min 16 sek | 15 min 17 sek | 59 sek |
PowerDirector | 4 min 54 sek | 3 min 51 sek | 1 min 3 sek |
AVIdemux | 11 min 10 sek | - | - |
720p suotimen kanssa
Ohjelma | Aika ilman CUDA:a | Aika CUDA:n kanssa | CUDA:n tuoma hyöty |
TMPGEnc 4.0 XPress | 25 min 22 sek | 16 min 15 sek | 9 min 7 sek |
PowerDirector | 6 min 2 sek | 4 min 59 sek | 1 min 3 sek |
AVIdemux | 11 min 18 sek | - | - |
iPhone ilman suodinta
Ohjelma | Aika ilman CUDA:a | Aika CUDA:n kanssa | CUDA:n tuoma hyöty |
TMPGEnc 4.0 XPress | 3 min 44 sek | 3 min 54 sek | -10 sek |
AVIdemux | 2 min 34 sek | - | - |
iPhone suotimen kanssa
Ohjelma | Aika ilman CUDA:a | Aika CUDA:n kanssa | CUDA:n tuoma hyöty |
TMPGEnc 4.0 XPress | 8 min 26 sek | 5 min 56 sek | 2 min 30 sek |
AVIdemux | 2 min 36 sek | - | - |
Videotiedostot (MP4-muodossa)
TMPGEnc 4.0 XPress 720p ilman CUDA:n apua
TMPGEnc 4.0 XPress 720p CUDA:n kanssa
PowerDirector 720p ilman CUDA:n apua
PowerDirector 720p CUDA:n kanssa
AVIdemux 720p
TMPGEnc 4.0 XPress iPhone ilman CUDA:n apua
TMPGEnc 4.0 XPress iPhone CUDA:n kanssa
AVIdemux iPhone
Kuvankaappauksia (720p)
(klikkaamaalla kuvaa näet täysikokoisen PNG-kuvan)
TMPGEnc 4.0 XPress 720p 33 sekunnin kohdalta (ilman CUDA:a)
TMPGEnc 4.0 XPress 720p 33 sekunnin kohdalta (CUDA:n kanssa)
PowerDirector 720p 33 sekunnin kohdalta (ilman CUDA:a)
PowerDirector 720p 33 sekunnin kohdalta (CUDA:n kanssa)
AVIdemux 720p 33 sekunnin kohdalta
TMPGEnc 4.0 XPress 720p minuutin kohdalta (ilman CUDA:a)
TMPGEnc 4.0 XPress 720p minuutin kohdalta (CUDA:n kanssa)
PowerDirector 720p minuutin kohdalta (ilman CUDA:a)
PowerDirector 720p minuutin kohdalta (CUDA:n kanssa)
AVIdemux 720p minuutin kohdalta
TMPGEnc 4.0 XPress 720p 90 sekunnin kohdalta (ilman CUDA:a)
TMPGEnc 4.0 XPress 720p 90 sekunnin kohdalta (CUDA:n kanssa)
PowerDirector 720p 90 sekunnin kohdalta (ilman CUDA:a)
PowerDirector 720p 90 sekunnin kohdalta (CUDA:n kanssa)
AVIdemux 720p 90 sekunnin kohdalta
Kuvankaappauksia (iPhone)
(klikkaamaalla kuvaa näet täysikokoisen PNG-kuvan)
TMPGEnc 4.0 XPress iPhone 33 sekunnin kohdalta (ilman CUDA:a)
TMPGEnc 4.0 XPress iPhone 33 sekunnin kohdalta (CUDA:n kanssa)
AVIdemux iPhone 33 sekunnin kohdalta
TMPGEnc 4.0 XPress iPhone minuutin kohdalta (ilman CUDA:a)
TMPGEnc 4.0 XPress iPhone minuutin kohdalta (CUDA:n kanssa)
AVIdemux iPhone minuutin kohdalta
TMPGEnc 4.0 XPress iPhone 90 sekunnin kohdalta (ilman CUDA:a)
TMPGEnc 4.0 XPress iPhone 90 sekunnin kohdalta (CUDA:n kanssa)
AVIdemux iPhone 90 sekunnin kohdalta
Yhteenveto
TMPGEnc 4.0 XPressin kohdalla CUDA:n tarjoama laskentateho auttoi erityisesti suodinta käyttäessä, kuten TMPGEncin omat testit ennakoivatkin. CUDA:n käyttö ei vaikuttanut XPressin kohdalla kuvanlaatuun, joten CUDA:a voi pitää huoletta päällä kyseisen ohjelman kanssa. Tietyissä tilanteissa CUDA kuitenkin hidastaa pakkausta hieman, joten omien videoiden kohdalla kannattaa tehdä muutama pakkaustesti ennen kuin asetuksen ottaa pysyvästi käyttöön.
PowerDirectorin kanssa CUDA:n käyttö vaihtoi käytettäviä pakkausasetuksia selvästi, sillä CUDA:n kanssa pakkausprofiili vaihtui toiseen, jonka seurauksena CUDA:n tuottama tiedosto on melkein kolme megatavua suurempi. Kuvanlaatu on myös hieman parempi CUDA:n kanssa pakatulla videolla, mutta ilmiö johtunee korkeammasta bitratesta ja toisesta profiilista, eikä varsinaisesta näytönohjaimen avusta. CUDA:n kanssa video pakkautui kuitenkin selvästi nopeammin, joten PowerDirectorin kanssa CUDA kannattaa pitää käytössä.
PowerDirectorin tuottamat videot häviävät kuitenkin kuvanlaadun osalta selvästi TMPGEnc 4.0 XPressin ja AVIdemuxin tuottamille videoille. PowerDirector pakkaa siis videot vauhdilla, mutta valitettavasti lopputulos ei ole kuvanlaadun kannalta paras mahdollinen. Ohjelman rajoittuneet säätöoptiot ja ongelmat kuvasuhteen kanssa eivät myöskään jätä hyvää kuvaa ohjelman toiminnasta.
Kuvanlaadun osalta AVIdemuxin kanssa käytetty x264 tuottaa ainakin allekirjoittaneen mielestä selvästi parhaan lopputuloksen. Toivottavasti x264 saa tulevaisuudessa apua näytönohjaimen laskentatehosta, jotta videoita voidaan vastaisuudessa pakata entistä vauhdikkaammin.
8 KOMMENTTIA
LordPepsi1/8
Hieno !! Varmast vieny aikaa tunnin jos toisenkin :D
Sokar802/8
en näiden juttujen ammattilainen mut miten 3,6ghz pöyrivä Quad core prossa suorituisi kun tossa oli käytössä tuollainen Intel Pentium Dual E2140 perus pihvin hintainen possu
iteillä Intel Quad Core 9450 3.6ghz ja pari gigaa muistia kun olen muutaman DVD video muutan kännykkä N95 muotoon se vie jotakin 8min mulle ihan riitävän nopeaa
OneMember3/8
Ihan hyvältä vaikutti näin väsyneillä silmillä.
On tainnut Agentilla mennä hieman aikaa tuon parissa?
LordPepsi4/8
Eikai siinä ole muuta kun että mikäkin ohjelma tukee x määrää ytimiä eli jos softa tukee vain tuplaydin ajoa ja ajaa quadilla niin lopuista 2 ytimestä ei ole ohjelman kannalta suurta eroa ellei niillä kahdella jäävällä ytimellä saa suoritettuu sitten windowsit ja muut softat ??
jhgrc5/8
Testi mielestäni puuttuu toisarvoiseen seikkaan eli "kuinka nopeasti video pakataan". Yleensä tämä renderöinti tehdään vain kerran tai kaksi per video.
Oikea ongelma on ettei Intel Q6600/4GB jaksa videoeditorissa pyörittää kunnolla MP4-muotoista HD-videota. Ts. ediointiprosessi ei ole sujuva. Ainut mahdollisuus olisi uudelleenpakata video vähemmän kompressoituun muotoon. Mutta jos tähän editointiprosessiin saataisiin että CUDA:lla purettaisiin ja filtteroitaisiin jotta editointia voisi oikeasti tehdä reaaliajassa.
Ja videon editointiin saattaa mennä vuorokausikin aikaa kun oikeasti editoidaan. Siinä 10min renderöintiajalla ei ole mitään merkitystä.
Eli missä on tällainen tutkielma että tukeeko softat CUDA-pohjaista editoinnin kiihdytystä ja testi että toimiiko oikeasti? Sillä on merkitystä.
WillKane6/8
x264 tukee neljää ydintä, joten se nopeutuu selvästi.
Testi on ongelmallinen, koska enkooderien asetukset vaikuttavat tietysti sekä laatuun että nopeuteen. Esimerkiksi x264 saadaan asetuksia muuttamalla monta kertaa nopeammaksi ja kuvanlaatu on silti todennäköisesti PowerDirectorin enkooderin jälkeä parempi.
Kiitoksia mielenkiintoisesta testistä ja toivotaan että CUDA ja muut GPU:ta hyödyntävät sovellukset kehittyvät edelleen. Valitettavasti ne eivät ole vielä kilpailukykyisiä täysin softapohjaisen x264:n kanssa. CUDA-tuki myös x264:een olisi toivottavaa. Kehitystä voivat kuitenkin hidastaa monet kilpailevat rajapintasovellukset. Toivottavasti jostain, esim. OpenCL:stä, muodostuisi käytännön standardi.
jannne7/8
x264 skaalautuu ainakin 64 ytimeen asti, tosin kuvanlaatu alkaa laskea esim. 1080p-resolla jossain 16 ytimen/säikeen kohdalla. Tämä johtuu siitä miten tuo säikeistys on tehty.
newmanni8/8
Hyvä artikkeli kiitos. Suosittelisin ajamaan PSNR mittaukset noille enkoodatuille streameille niin voisi verrata tarkemmin laatua.
Artikkeli/vertailu dekoodauksen nopeudesta voisi olla mielenkiintoinen. Esim. siten että verrattaisiin nopeutta eri prosessoreilla kiihdytin kovon kanssa ja ilman. Tuosta näkisi kätevästi minkälainen/hintainen setti on hyvä esim. HTPC käyttöön jossa ei kiihdytin kovon kanssa välttämättä tarvitse tehokasta prosessoria mihinkään.
TÄMÄN UUTISEN KOMMENTOINTI ON PÄÄTTYNYT