H.265 - HEVC: High Efficiency Video Code
Videocodec van de toekomst
Een blik op de opvolger van H.264
Inleiding
In april vorig jaar werd de H.265 standaard, ofwel de HEVC videocodec, gefinaliseerd. H.265 moet de komende jaren dé technologie worden die de doorbraak van video in 4K-resolutie mogelijk maakt. Hoe werkt H.265 precies en wanneer mag je ondersteuning bij verschillende soorten apparaten verwachten? Wij nemen een duik in de materie.Deze nieuwe videocoderingsstandaard, die ook bekend staat onder naam HEVC ofwel High Efficiency Video Codec, moet de drijvende kracht achter de 4K-revolutie worden.
Tegelijkertijd moet het ook de bandbreedte-vereiste voor video met lagere resolutie reduceren. Inmiddels beginnen we de eerste producten met HEVC-ondersteuning te zien.
Samsung liep er al mee te koop bij de introductie van de Galaxy S4, het bedrijf achter DivX experimenteert er ook flink op los en zo lopen we steeds vaker tegen de technologie aan. Voldoende reden om de nieuwe videocodering nader toe te lichten.
Opvolger van H.264
H.265 is de opvolger van de bestaande H.264 / MPEG4 AVC standaard, die we inmiddels wel dé videostandaard van dit moment mogen noemen.Je kunt het zo gek niet bedenken of het is wel gebaseerd op de H.264 codec: de meeste vormen van streaming video (waaronder YouTube), de meeste HDTV televisiekanalen, verreweg de meeste Blu-ray schijven, (vrijwel) alle moderne videocamera’s als ook de video-opname mogelijkheden van fotocamera’s en smartphones.
Ook de meest gebruikte videocodec in het minder legale circuit, x264, is zoals de naam al aangeeft gebaseerd op H.264. Wat bijdraagt aan de populariteit is dat zo’n beetje ieder modern apparaat – laptops, smartphones, mediaspelers, TV’s – ondersteuning biedt voor H.264 video, wat weer het resultaat is van het feit dat vrijwel iedere moderne CPU/GPU/SoC een H.264 decoder aan boord heeft.
De H.264 standaard stamt uit mei 2003 en heeft dus vorig jaar zijn tiende verjaardag gevierd.
Pas de in de laatste circa vijf jaar heeft H.264 zich ontpopt tot dé moderne standaard voor digitale video. Toen nog voor de eeuwwisseling begonnen werd met het ontwerp van H.264 was het doel om een standaard te maken die (Full) HD video met beperkte bandbreedte kon transporteren.
Nu staat de industrie voor eenzelfde uitdaging, maar dan met de 4K-resolutie. Er zijn echter meer redenen waarom men vrijwel direct na het voltooien van de H.264 standaard begon te werken aan een opvolger. Streaming video op internet heeft de laatste jaren echt een vlucht genomen en is nu verantwoordelijk voor het allergrootste gedeelte van het wereldwijde internetverkeer.
De resoluties van PC’s, maar vooral ook smartphones zijn de laatste jaren flink toegenomen: was Full HD een paar jaar geleden enkel voorbehouden aan luxe televisies, inmiddels hebben ook smartphones schermen met 1920 bij 1080 pixels.
Dat zorgt voor een toenemende behoefte aan online video in hoge resolutie en met uitstekende beeldkwaliteit.
Dat kost simpelweg veel bandbreedte; met H.265 moet die vereiste gereduceerd worden.
Samenwerking
De H.265 standaard is ontwikkeld door twee grote consortia, die eerder ook al verantwoordelijk waren voor de H.264 standaard en diens voorlopers.De ITU-T Video Coding Experts Group (VCEG) begon al in 2004, een jaar na de standaardisatie van H.264, met het oriënteren op een opvolger. De ISO/IEC Moving Picture Expert Group (MPEG) begon in 2007 met werkzaamheden aan een nieuwe standaard. Beide instanties hadden ruwweg dezelfde doelstelling: een nieuwe video-codec die circa 50% bandbreedtereductie ten opzichte van H.264 zou kunnen bewerkstelligen, bij gelijkblijvende beeldkwaliteit.
De benodigde decoders zouden maximaal zo’n 2 à 3 keer zo complex mogen worden als die voor H.264. Die standaard werd overigens ontwikkeld met een vergelijkbare doelstelling, maar dan om 50% reductie te bewerkstelligen ten opzichte van MPEG2, de standaard die we primair kennen van DVD’s en standaard definitie digitale televisie.
In 2010 sloegen beide groepen de handen ineen en werd het werk dat tot dan doe was verzet gecombineerd. In februari 2012 leverde men de eerste zogenaamde Draft versie van de nieuwste standaard af en sinds april 2013 is de H.265 definitief ‘af’ en goedgekeurd. Dat weerhield overigens menig hard- en softwarefabrikant er niet van om al ruim voor die datum met producten aan de slag te gaan. Nu de standaard is voltooid kunnen we gaan uitkijken naar de eerste producten die officieel H.265 ondersteunen.
Gebaseerd op zelfde concept…
De H.265 standaard is in feite gebaseerd op dezelfde ideeën als H.264 en diens voorlopers.In de basis werken videocodecs door het vinden van overeenkomsten tussen opeenvolgende frames bij video, als ook het vinden van op elkaar lijkende gedeeltes binnen ieder afzonderlijk beeld.
Door niet alle frames volledig op te slaan maar voornamelijk de verschillen te beschrijven, kan de hoeveelheid data die nodig is om frames op te slaan flink worden beperkt.
Bij het analyseren van verschillen tussen achtereenvolgende frames wordt voornamelijk naar beweging gezocht: wanneer objecten bij het volgende beeld verschuiven ten opzichte van het vorige, slaat de video codec juist die verschuiving op in plaats van de beeldinformatie opnieuw op te slaan.
Gecodeerde video bestaat bij H.265 net als bij H.264 uit opeenvolgende frames, die worden aangeduid als I-frame, P-frame of B-frame. I-frames zijn ‘volledige’ frames, die zonder informatie van andere beelden kunnen worden gedecodeerd.
Het eerste frame in een videofragment is per definitie altijd een I-frame, maar codecs zetten in de regel om de zoveel tijd of bij scène-veranderingen een nieuw I-frame neer. P-frames zijn gebaseerd op data van oudere frames, terwijl B-frames zijn gebaseerd op informatie van zowel oudere als toekomstige frames.
We spreken de hele tijd over codecs, wat een samentrekking is van coder en decoder, ofwel algoritmes om video te comprimeren en juist weer weer te geven.
Belangrijk om je te realiseren is dat bij codecs enkel de decoder is gestandaardiseerd.
Ofwel: de H.264 standaard (en de H.264, MPEG2 en andere standaarden daarvoor) specificeren exact hoe een decoder te werk moet gaan en daarmee ook hoe videostreams moeten zijn opgebouwd om via zo’n gestandaardiseerde decoder te kunnen worden verwerkt.
De encoders moeten dus video afleveren die voldoet aan de standaard, maar hoe ze dat bewerkstelligen is helemaal vrij en dát is waar de meeste magie plaats vindt.
Hoe slimmer en inventiever de encoder, hoe beter de beeldkwaliteit bij een bepaalde bandbreedte. Voor de H.264 standaard zijn vele encoders beschikbaar, met verschillende eigenschappen qua beeldkwaliteit en snelheid.
… maar duidelijk verbeterd
Het aantal verbeteringen binnen H.265 ten opzichte van H.264 is talrijk en grotendeels puur te bevatten door wie een studie wiskunde achter de kiezen heeft. Een aantal zaken lichten we er uit.Vrijwel alle video-codecs delen frames op in vierkanten op basis waarvan uiteindelijk de codering gedaan wordt. Deze zogenaamde macroblokken zijn bij H.264 maximaal 16x16 pixels groot.
Voor beperkte resoluties is dat een prima keuze, maar voor hogere resoluties en zeker voor 4K zijn grotere blokken gewenst om efficiënter te kunnen coderen, omdat grotere gedeeltes qua beeld overeenkomstig kunnen zijn. De macroblokken, die men bij H.265 Coding Tree Units (CTU’s) noemt, zijn bij de nieuwe standaard tot 64x64 pixels groot, maar kunnen ook makkelijker dan hij H.264 waar nodig worden onderverdeeld naar kleinere blokken van verschillende groottes.
Een ander belangrijk verschil is dat H.265 veel nauwkeuriger naar overeenkomsten voor blokken binnen hetzelfde frame kan zoeken.
De H.264 codec kan dat in maximaal 9 richtingen, bij H.265 zijn er dat 34.
Opvallend is dat er bij H.265 geen specifieke ondersteuning voor interlaced video meer bestaat.
De makers stellen terecht dat tegenwoordig alle beeldschermen progressief werken, zodat er geen reden meer is om nog rekening te houden met situaties waar met halve beelden gewerkt wordt.
H.265 kan met grotere blokgroottes dan H.264 werken, met efficiëntere codering tot gevolg.
Multi-core
Voornoemde zaken en vele andere optimalisaties zorgen er voor dat de H.265 codec aanzienlijk efficiënter is dan H.264. Maar er zijn ook optimalisaties op andere fronten.Zo heeft men bij de H.265 standaard rekening gehouden met verwerking door multi-core processors.
H.264 kende al het concept ‘slices’, waarmee frames konden worden opgedeeld in gedeeltes die afzonderlijk van elkaar gedecodeerd kunnen worden en waarbij er dus geen onderlinge informatie vereist is. H.265 voegt daar het concept van ‘tiles’ ofwel tegels aan toe; dat is een even aantal van 256x64 pixels grote slices, die alle evenveel CTU’s bevatten, zodat iedere tile even veel verwerkingskracht vereist om te decoderen.
Op die manier kan het decoderen van video nog veel beter dan nu worden verdeeld over meerdere rekeneenheden. Een ander voordeel van tiles is dat kleinere gedeeltes van een video bekeken kunnen worden, zonder dat alles gedecodeerd hoeft te worden.
Handig wanneer je op een Full HD scherm bijvoorbeeld een ingezoomed gedeelte van een 4K-video wil bekijken.
Een nog geavanceerdere variant is Wavefront Parallel Processing, waarbij slices worden opgedeeld in meerdere rijen CTU’s en iedere volgende rij wél gebruik kan maken van data van voorgaande rijen, maar niet van opvolgende rijen.
WPP kan zorgen voor efficiëntere codering dan tiles gebruiken, maar vraagt wel meer rekenkracht bij de verwerking. Het gebruik van tiles of WPP is overigens beide optioneel.
Doelstelling is behaald
Het consortium achter de H.265 standaard heeft inmiddels geruime tijd al een referentie encoder beschikbaar, die constant wordt verbeterd.Op basis daarvan zijn er al de nodige tests met de nieuwste standaard uitgevoerd.
De IEEE-organisatie heeft september 2012 al een grote test gedaan op basis van negen verschillende videofragmenten, elk gecodeerd op 12 verschillende bitrates.
Voor alle resultaten werd volgende de PSNR (Peak Signal-to-Noise Ratio) methode het verschil tussen de gecodeerde video en het origineel bepaald.
Uit het onderzoek bleek dat H.265 gemiddeld met 35,4% minder bandbreedte hetzelfde kwaliteitsniveau als H.264 kon behalen. In vergelijking met MPEG2 was er een gemiddelde brandbreedtebesparing van 70,8%.
Bij hetzelfde onderzoek werd ook een test gedaan met een grote groep mensen die de beeldkwaliteit van alle gecodeerde fragmenten mochten beoordelen.
Op basis van dit subjectieve onderzoek bleek H.265 dezelfde beeldkwaliteit te kunnen bieden met gemiddeld 49,3% minder bandbreedte dan H.264, exact volgens de doelstelling van de standaard dus. Een in Frankrijk uitgevoerd onderzoek met 4K video kwam uit op gemiddeld 44,4% bandbreedte besparing voor gelijke PSNR en zelfs 66,5% besparing voor gelijke beeldkwaliteit volgens een testpanel. Indrukwekkende scores, zeker wanneer je bedenkt dat de H.265 codec nog in de kinderschoenen staat en encoders de komende jaren steeds beter zullen worden, zoals dat met H.264 ook is gebeurd.
Profielen en levels
H.265 kent standaard twee profielen, Main en Main 10. Het Main-profiel werkt standaard met 4:2:0 chroma sampling, wat inhoudt dat kleurinformatie op een kwart van de resolutie wordt verwerkt, in tegenstelling tot helderheidsinformatie (luminantie), die wel op volledige resolutie wordt verwerkt. Overigens is 4:2:0 gebruikelijk bij videocodecs, omdat het flink in bandbreedte scheelt en het menselijk oog veel gevoeliger is voor verandering van helderheid dan voor kleur. Het Main 10-profiel werkt ook met 4:2:0 sampling, maar biedt ondersteuning voor 10-bit kleur. De meeste vormen van digitale video tot nu toe werken met 8-bit kleur, waarbij er voor elk van de drie primaire kleuren (rood, groen en blauw) 256 verschillende gradaties zijn en in totaal dus 256³ = 16,7 miljoen verschillende kleuren. Met 10-bit kleur zijn er 1024 gradaties voor elk van de drie primaire kleuren, met een totaal aantal van 1024³ = 1 miljard verschillende kleuren. Het maakt dat er veel subtielere kleurnuances mogelijk zijn. De 10-bit ondersteuning is naar verluidt ook nodig om de Rec.2020 norm voor kleurruimte van de UHD-standaard te behalen. 10-bit kleur was bij H.264 enkel mogelijk met een later uitgebracht extensie en wordt door de meeste decoders niet ondersteund. Bij H.265 gaat ondersteuning voor 10-bit kleur vermoedelijk voor de meeste apparaten tot de standaard uitrusting behoren.Er wordt gewerkt aan extra profielen voor H.265, om onder meer zelfs 12-bit kleur en 4:2:2 en 4:4:4 chroma subsampling mogelijk te maken. Bij 4:4:4 wordt ook de kleurinformatie op volledig resolutie verwerkt, bij 4:2:2 wordt deze horizontaal op halve resolutie en verticaal op volledige resolutie verwerkt.
Net als bij H.264 zijn er verder verschillende levels gedefinieerd waaraan decoders kunnen voldoen. Het level geeft aan wat de maximale bandbreedte, aantal pixels en framerate zijn. Een compleet overzicht vind je in bijstaande tabel. HEVC level 4.1 is nodig om Full HD met 60-beelden per seconde (1080p60) te verwerken. Wie 8K beeld (7680x4320) met 120fps wil verwerken heeft een decoder met ondersteuning voor level 6.2 nodig.
Level | Max. bitrate | Max. resolutie |
---|---|---|
1 | 0,1 Mbit/s | 176x144 @ 15fps |
2 | 1,5 Mbit/s | 352x288 @ 30fps |
2.1 | 3,0 Mbit/s | 640x360 @ 30fps |
3 | 6,0 Mbit/s | 960x540 @ 30fps |
3.1 | 10,0 Mbit/s | 1280x720 @ 33fps |
4 | 12,0 Mbit/s | 2048x1080 @ 30fps |
4.1 | 20,0 Mbit/s | 2048x1080 @ 60fps |
5 | 25,0 Mbit/s | 4096x2160 @ 30fps |
5.1 | 40,0 Mbit/s | 4096x2160 @ 60fps |
5.2 | 60,0 Mbit/s | 4096x2160 @ 120fps |
6 | 60,0 Mbit/s | 8192x4320 @ 30fps |
6.1 | 120,0 Mbit/s | 8192x4320 @ 60fps |
6.2 | 240,0 Mbit/s | 8192x4320 @ 120fps |
Producten
De afgelopen twee jaar hebben al vele fabrikanten aankondigingen rond H.265 gedaan. ARM-chip leverancier Qualcomm gaf in februari 2012 – ruim een jaar voordat de standaard gefinaliseerd werd – al de aftrap door op het Mobile World Congress een op Snapdragon S4 Pro gebaseerde Android tablet te tonen, die HEVC-content afspeelde. Naar verluidt kost het afspelen van 1080p 30fps HEVC video zo’n 50% van de rekenkracht van een quad-core Qualcomm ARM CPU.Begin 2013 kondigde Samsung aan dat haar F8500 4K Plasma-televisie geschikt is voor HEVC, al is nog niet helemaal duidelijk hoe de TV überhaupt H.265 content kan afspelen. De toekomstige F9000 4K LED-TV moet ook geschikt worden voor HEVC. Ook begin 2013 kondigde Broadcom tijdens de CES-beurs haar BCM7455 SoC. Deze chip, bedoeld voor high-end TV’s en settop boxes, is gebaseerd op vier ARM Cortex-A15 kernen en bevat een hardwarematige HEVC-decoder. Prototypes van de chip schijnen inmiddels rond te zwerven bij settopbox- en TV-fabrikanten, maar aangekondigde producten zijn er nog niet.
In maart 2013 kondigde Samsung aan dat de Galaxy S4 ook ondersteuning biedt voor H.265. Wij krijgen het echt nog niet voor elkaar om demo-bestanden gemaakt volgens de nieuwe codec op de S4 af te spelen, maar de vraag staat uit bij Samsung.
De voor ons hobbyisten wellicht meest interessante aankondiging kwam afgelopen mei van de makers van DivX. Zij publiceerden een beta-versie van hun DivX Plus Player met H.265 support en enkele demo-films (zie kader).
In juni 2013 kondigde PowerVR de D5500 H.265 decoder aan. Dit bouwblok kunnen fabrikanten opnemen in ARM SoC’s die ook van PowerVR GPU’s gebruik maken. Het zou ons niets verbazen als we die D5500 op niet al te lange termijn in verschillende ARM-chips tegen gaan komen, bijvoorbeeld de exemplaren van Apple. In dezelfde maand kondigde LG aan dat de LA9700 UHD-TV geschikt wordt voor HEVC en stuurde Cyberlink, de makers van de PowerDVD en PowerDirector software, een persbericht uit dat men een prototype H.265 encoder gereed heeft en die in 2014 in consumentenproducten wil gaan onderbrengen.
Experimenteren met de DivX H.265 decoder
De makers van DivX hebben zoals geschreven een beta-versie van hun DivX Plus Player uitgebracht met ondersteuning voor HEVC, samen met enkele HEVC testbestanden. The Tears of Steal filmtrailer die men beschikbaar heeft gesteld heeft een bitrate ruim onder de 2 Mbit/s bij Full HD (1920x1080) resolutie. We zijn onder de indruk van de resultaten: ondanks de zeer lage bitrate ziet de video er zéér goed uit. De praktijk wijst dus ook uit dat HEVC het echt mogelijk maakt om Full HD de streamen met relatief lage bitrates. Wij testten het op een Intel Core i7 4770K Haswell systeem en het CPU-gebruik tijdens het bekijken van de video schommelde rond de 14%. Dat valt wel mee, maar je moet je realiseren dat een 4770K een bloedsnelle CPU is. Op een drie jaar oude laptop met Intel Core i7 640M-processor lukte het bijvoorbeeld niet om de video af te spelen; deze CPU bleek te traag.Codec-leverancier Elecard heeft ook een prototype HEVC-player met demovideo’s beschikbaar. Bij hen kun je een trailer van Big Buck Bunny in H.265 downloaden. Ook hier zien we een combinatie van Full HD resolutie met een bitrate onder de 2 Mbit/s en opnieuw zeer mooi beeld. Hier maten we echter een gemiddelde CPU-gebruik van tegen de 30%.
Middels de DivX Plus Player kun je nu al experimenteren met H.265.
Intel, Nvidia en AMD
Drie belangrijke namen missen we als PC-liefhebbers natuurlijk in het lijstje op de vorige pagina: Intel, Nvidia en AMD. Op dit moment heeft nog geen enkele CPU of GPU van de genoemde fabrikanten een ingebouwde H.265 decoder aan boord. Tijdens Computex 2013 gaf Intel wel al een demonstratie dat de Haswell CPU’s in de nieuwste generatie Ultrabooks snel genoeg zijn om 4K HEVC-beelden te decoderen. Heel fijn, maar het is natuurlijk logisch dat, wanneer je CPU-kernen vol belast worden bij het decoderen van video, de werktijd op de accu van je laptop of tablet alles behalve ideaal zal zijn. Op de vraag of Intel werkt aan een hardwarematige H.265 decoder in volgende generaties CPU’s werd politiek geantwoord met de stelling “zodra het nodig is zullen we een oplossing hebben”. Waarvan akte.Ook Nvidia en AMD hebben nog niets te bieden en houden de lippen stijf op elkaar over dit onderwerp. Juist omdat het coderen en decoderen van H.265 zich erg leent voor parallelle verwerking, ligt het echter voor de hand dat de GPU-ontwikkelaars zelf of één van hun partners met Cuda of OpenCL gebaseerde codecs op de markt gaan komen. Je hoeft geen waarzegger te zijn om te voorspellen dat in een toekomstige generatie GPU’s van beide fabrikanten een hardwarematige H.265 decoder ingebakken zal zitten. Of dat al de eerstvolgende generatie zal zijn is nog niet met zekerheid te zeggen.
Open source
In de open source wereld zit men inmiddels ook niet stil. Waar x264 de meest populaire open source H.264 encoder is – en volgens menig test ook kwalitatief de beste H.264 encoder ter wereld – is inmiddels ook een x265 project gestart, waar een aantal nieuwe mensen bij betrokken zijn, maar ook programmeurs die aan x264 hebben meegewerkt. De x265 codec staat echt nog in de kinderschoenen, de code wordt pre-alpha genoemd, is nog verre van geoptimaliseerd en mist nog veel van de opties die wel al in x264 terug te vinden. Toch wijzen tests van onder meer ExtremeTech uit dat nu al met de zeer vroege versies van x265 betere resultaten te behalen zijn dan met x264, de codec die de afgelopen jaren tot in het uiterste geoptimaliseerd is. Dat belooft wat voor de toekomst!Of we snel Usenet en torrent-sites vol met x265 gecodeerde films mogen gaan verwachten, valt te betwijfelen. Met maar weinig apparaten die het überhaupt kunnen afspelen zal er de eerste tijd sowieso weinig vraag naar zijn. Daarnaast is de beschikbaarheid van 4K content op dit moment nog zo laag, dat er ook om die reden weinig behoefte is om snel met x265 aan de slag te gaan.
De populaire x264 open source H.265 encoder krijgt een opvolger in de vorm van x265.
Kosten
Als leveranciers van streaming video als YouTube, Vimeo en Netflix 50% op hun bandbreedte kunnen besparen door over te stappen op H.265 voor apparaten die het ondersteunen, zou je verwachten dat ze staan te popelen om met de nieuwe standaard aan de slag te gaan. Toch is er nog een reden waardoor de adoptie online ook nog wel eens tegen zou kunnen gaan vallen en dat is dat nog niet bekend is wat de licentiekosten zijn die de ITU en MPEG organisaties gaan vragen voor het gebruik van H.265 voor streaming video.Het gebruik van H.264 online is gratis en daar was een goede reden voor. Vóór de codec werd uitgebracht was er nog geen enkele partij die daadwerkelijk geld verdiende met online video en was de VP6-codec die werd gebruikt in Flash-video erg sterk. Het consortium zag destijds wel in dat geld vragen voor het gebruik van H.264 de snelle verspreiding van de standaard niet ten goede zou komen. In 2013 is dat wel anders; partijen als Netflix verdienen goed geld aan streaming video en H.264 heeft op het vlak van streaming video geen serieuze concurrentie meer van codecs als VP8. Het zou dus zomaar kunnen, dat het consortium nu aan partijen als Netflix wél geld gaat vragen, net zoals men voor H.264 ook al doet aan fabrikanten van TV’s, Blu-ray-spelers, etc.
Conclusie
H.265 ofwel HEVC heeft inmiddels bewezen een reductie van 50% op de bandbreedte van H.264 te kunnen bewerkstelligen. De nieuwe codec zal naar alle waarschijnlijkheid een grote rol gaan spelen bij de toenemende populariteit van 4K video. Vooralsnog is het echter wachten op apparaten en daarmee chips met ondersteuning voor de nieuwe standaard. Partijen als Qualcomm en PowerVR hebben al aankondigingen gedaan, maar bij andere partijen is het nog verdacht stil.Android Quad Core xbmc player met H.264 & H.265 ondersteuning |
Geen opmerkingen:
Een reactie posten
Dank voor uw input, na moderatie zal uw input worden opgenomen.
Vriendelijke groet, team Moviestreamer™