DCFreak schreef op vrijdag 27 juni 2008 @ 20:01:
[...]
Ik vraag mij af of dat verhaal ook geldt als je MPEG2 als doel-codec gebruikt. Compressie factor hoeft niet al te hoog te zijn (bij streamen heb je geen last van grote file sizes) en de bitrate kan zo hoog als dat je netwerk aankan (minimaal 100 Mb). Ik ben alleen nieuwsgierig of je een dergelijke load evenredig kan verdelen over 4 cores, omdat ik ooit ergens had gelezen dat encoding algoritmes niet parallel kunnen draaien vanwege data afhankelijkheden.
Interessante vraag, indeed. Om dezelfde kwaliteit met MPEG2 te halen als met H.264, heb je ongeveer 2-3x zo'n hoge bitrate nodig. Mijn AVC materiaal (direkt van Bluray of getranscode) ligt ergens tussen de 13-30Mb/s. Met een bitrate van ~90Mb/s zou je het met een 100Mb kaartje dus net moeten kunnen trekken.
MPEG2 codeert wel een stuk sneller. Ca. 2-5x sneller, zelfs! Er zijn met name twee factoren die H.264 encoding zeer CPU-intensief maken:
1): Zowel MPEG2 als H.264 gebruiken zogehete "entropy encoding", zeg maar het onderzoeken van het materiaal op voorkomende patronen, om die dan te kunnen compressen. MPEG2 gebruikt daar een fixed algoritme voor; H.264 daarentegen gebruikt CABAC (Context-based Adaptive Binary Arithmetic Coding), wat forse winst oplevert, maar wel een stuk trager gaat.
2): Een probleem bij MPEG2, zeker bij lagere bitrate, is altijd
blocking geweest. Je kunt achteraf de randjes tussen de blokjes wegwerken (soften), maar dat vereist ook weer veel rekenkracht. Wat H.264 daarentegen doet is "in-loop deblocking". Dat wil zeggen, je deblockt een frame, en gebruikt dan die ge-deblockte output weer als basis voor de volgende codeer-stap. Je neemt de deblocking dus als het ware op in de 'loop'. Ook dit vereist echter een enorme extra hoeveelheid rekenkracht.
Maar goed, om een lang verhaal kort te maken, aangezien MPEG2 2-5x sneller is dan H.264, zou in, in het uiterste geval, uitgaande van die max 5 fps die ik haal met mijn quadcode, dus 5 x 5 = 25 fps kunnen halen. Maar dat is dus wel erg optimistisch. Met 3 fps x 2 keer sneller val je bv. weer terug naar 6 fps. Maar goed, om dit met MPEG2 te doen was wel een goede suggestie, natuurlijk. Want dan zou je, zeg, met een bestaand Skull Trail bordje inderdaad toch al heel dicht in de buurt van 'real-time' 1080p transcoded streaming kunnen komen.
i9 12900K | MSI Meg CoreLiquid S360 | ASUS ROG STRIX Z690-A GAMING WIFI D4 | G.Skill Trident Z Royal Elite 2x32GB 4266Mhz Gold | AORUS RTX 4090 MASTER | Dark Power 13 1300W | Samsung 980/860/970/990 Pro | Logitech Z-906 | Phanteks Evolv X | Dell AW3821DW