Kaarlo Räihä
19. tammikuuta, 2009 19:07
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.
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.
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.
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 | - | - |
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 | - | - |
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 | - | - |
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 | - | - |
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.