Često se vodi polemika o tome kako je najbolje podesiti plejer kako bi se dobila najkvalitetnija slika. Tom prilikom se često preporučuju razni dekoderi kao i njihova različita podešavanja. E, mene je zanimalo da li postoji razlika u kvalitetu slike kod tri najpoznatija softverska video dekodera:

LAV Video

FFDShow

CoreAVC

kao i Nvidia VP2 hardverski dekoder kroz LAV Video i CoreAVC, CUDA mod.

Kako sam testirao dekodere

Priprema

Test klip je u YV12 formatu. Moj zadatak je bio da se pobrinem da dekoderi samo dekodiraju taj klip, bez bilo kakve interne konverzije u neki drugi format (RGB) jer će to da odradi render, kao što to obično i radi.

Drugi problem se odnosio na izbor načina poređenja video strimova. Pošto je uslov bio da se porede svi frejmovi video strima morao sam da sačuvam ceo dekodiran video strim. Izbor je pao na Lagarith, lossless video kodek koji snima i u YV12 mod.

Metoda poređenja strimova

Odabrao sam dve metode za poređenje video strimova: Compare funkcija u Avisynth-u koja računa PSNR i izračunavanje MD5 haša dekodiranog video strima uz pomoć programa FFMpeg. Compare poredi sličnost između dva video klipa dok MD5 poredi same bitove dekodiranog strima.

Ovo je ujedno bila i prilika da testiram da li Lagarith VFW dekoder kao i Lagarith dekoder u FFMPEG-u uvek daju identičan output. Kompresovao sam video koristeći VirtualDub i Lagarith. Zatim sam kopirao taj isti video koristeći Windowsov Copy – Paste i dobio kopiju istog fajla.

Za funkciju Compare sam koristio sam Avisynth skriptu sledeće sadržine:

l = AviSource("fajl1.avi")
f = AvISource("fajl2.avi")
Compare(l, f, "", "compare.log")

Naravno, fajl1 i fajl2 sam zamenio odgovarajućim imenima fajlova.

Za izračunavanje MD5 uz pomoć FFMpeg koristio sam sledeću komandnu liniju:

ffmpeg.exe -I fajl.avi -f md5 fajl.log

I jedan i drugi metod su potvrdili da se radi o istom fajlu te sam mogao da nastavim sa testom.

Kreiranje video srtimova sa različitim dekoderima

Da bih osigurao korišćenje izabranog dekodera koristio sam program GraphStudioNext da kreiram graf fajl (grf) i i da, koristeći Avisynth kao frejmserver, učitam fajl u VirtualDub.

Skripta je, inače, vrlo jednostavna:

DirectShowSource("graffajl.grf", audio=false)

U VirtualDub-u sam koristio Fast Processing mod za video kako VD ne bi radio nikakve interne konverzije svetla i boje. U podešavanjima Lagarith VFW kodeka sam odabrao YV12 za output i čekirao opciju "Prevent Upsampling When Decoding" da prilikom dekodiranja video fajlova u Avisynth-u Lagarith ne radi internu YV12 to RGB konverziju. Kreiranje video fajlova za testiranje je moglo da počne.

Rezultati

Nakon kreiranja video fajlova iz pomoć različitih dekodera započeo sam poređenje istih.

U prvom slučaju kod izračunavanja PSNR vrednosti kao referentni video koristio sam video dobijen LAV Video dekoderom u softveskom modu i poredio ga sa ostalim video strimovima, pa i sa njegovom kopijom. Svi testovi su dali istu PSNR vrednost i pokazuju da nema nikakvih odstupanja.

                                                 Minimum   Average   Maximum
Mean Absolute Deviation:    0.0000       0.0000       0.0000
                 Mean Deviation:  +0.0000    +0.0000     +0.0000
                                  PSNR:  103.2938  103.2938  103.2938
                     Overall PSNR:  103.2938

U drugom slučaju uz pomoć FFMPEG računao sam MD5 dekodiranih video strimova. Svi strimovi su dali idenitčan MD5: 525c831558681d67e9b421e56987916d.

Konačan zaključak je – ne postoji razlika u kvalitetu slike između ova tri video dekodera, kao ni između hardveskog i softverskih dekodera, što je u saglasnosti sa teorijom da svi dekoderi moraju dati identičan output.

Prilog: Dobijeni logovi

Ostavite odgovor

Popunite detalje ispod ili pritisnite na ikonicu da biste se prijavili:

WordPress.com logo

Komentarišet koristeći svoj WordPress.com nalog. Odjavite se /  Promeni )

Google photo

Komentarišet koristeći svoj Google nalog. Odjavite se /  Promeni )

Slika na Tviteru

Komentarišet koristeći svoj Twitter nalog. Odjavite se /  Promeni )

Fejsbukova fotografija

Komentarišet koristeći svoj Facebook nalog. Odjavite se /  Promeni )

Povezivanje sa %s