H.265 eller HEVC ( High Efficiency Video Coding ) är ett videokomprimeringsformat som använder mer effektiva algoritmer jämfört med H.264/MPEG-4 AVC [1] . CCITT Recommendation H.265, liksom ISO/IEC 23008-2 MPEG-H Part 2, är en gemensam utveckling av CCITT Video Coding Experts Group (VCEG) och MPEG Moving Picture Expert Group [2]. Rekommendationen av standarden utvecklades som svar på det växande behovet av högre komprimering av rörliga bilder för en mängd olika applikationer såsom Internetströmning, dataöverföring, videokonferenser, digitala lagringsenheter och TV-sändningar [3] .
Bildformat upp till 8K ( UHDTV ) med en upplösning på 8192×4320 pixlar [4] stöds .
2004 började VCEG forskning om utveckling av teknologier som skulle möjliggöra skapandet av en ny videokomprimeringsstandard (eller en betydande förbättring av H.264/MPEG-4 AVC-standarden). I oktober 2004 gjordes en översyn av olika sätt på vilka H.264/MPEG-4 AVC kunde förbättras [5] .
H.265 var ursprungligen tänkt att vara en helt ny standard, inte en förlängning av H.264 som HVC (High-performance Video Coding). Som en del av projektet tilldelades de provisoriska namnen H.265 och H.NGVC ( engelska Next-generation Video Coding - nästa generation av videokodning), det fanns också en betydande del av VCEG:s arbete innan dess utveckling till HEVC , ett gemensamt projekt med MPEG 2010. I april 2009 fick projektet namnet NGVC; i juli 2009 hölls ett möte mellan MPEG och VCEG, där ytterligare gemensamt arbete kring NGVC och HVC diskuterades.
Förutsättningarna för NGVC är en 50 % minskning av bithastigheten med liknande subjektiv bildkvalitet och beräkningskomplexitet jämförbar med H.264 High profile. Beroende på inställningarna förväntas beräkningskomplexiteten variera från 1/2 till 3 jämfört med H.264 High profile, medan NGVC i det första fallet ska ge en 25 % lägre bithastighet [6] .
ISO/IEC Moving Picture Experts Group (MPEG) startade ett liknande projekt 2007 , preliminärt kallat High-performance Video Coding. I juli 2007 fattades ett beslut som målet för projektet att uppnå en 50 % minskning av bithastigheten [7] . I juli 2009 visade resultaten av experimentet en genomsnittlig bithastighetsminskning på cirka 20 % jämfört med AVC High Profile, dessa resultat fick MPEG att börja standardisera i samarbete med VCEG.
För att utveckla MPEG- och VCEG-standarden skapade de Joint Collaborative Team on Video Coding (JCT-VC) (ITU-T Rec H.264|ISO/IEC 14496-10) [8] . Det första mötet med Joint Video Coding Team (JCT-VC) hölls i april 2010 . 27 fullfjädrade projekt presenterades. Utvärderingar har visat att vissa förslag kan uppnå samma bildkvalitet som AVC med bara halva bithastigheten i många försök, med 2 till 10 gånger beräkningskomplexiteten, och vissa konstruktioner har uppnått god subjektiv kvalitet och bra bithastighetsresultat med lägre beräkningskomplexitet än högprofilerad AVC-referenskodning. Vid detta möte antogs namnet för det gemensamma projektet - High Efficiency Video Coding (HEVC) [9] .
HEVC-projektkommittén godkändes i februari 2012 . I juni 2012 meddelade MPEG LA att de hade påbörjat processen att acceptera gemensamma licenser för HEVC-patent. Ett utkast till internationell standard godkändes i juli 2012 vid ett möte i Stockholm. Fröjdh, ordförande för den svenska MPEG-delegationen, tror att kommersiella produkter som stödjer HEVC skulle kunna släppas 2013 [10] .
Den 29 februari 2012 på Mobile World Congress visade Qualcomm en HEVC-avkodare som körs på en Android- surfplatta med en Qualcomm Snapdragon S4 dual-core 1,5 GHz-processor. Två versioner av videon visades med samma innehåll, kodade i H.264/MPEG-4 AVC och HEVC. I den här showen visade HEVC en nästan 50 % minskning i bithastighet jämfört med H.264/MPEG-4 AVC [11] .
Den 31 augusti 2012 tillkännagav Allegro DVT lanseringen av två HEVC-sändningskodare: AL1200 HD-SDI-kodaren och AL2200 IP-omvandlaren [12] . Allegro DVT uppgav att HEVC-hårdvaruavkodare inte borde förväntas förrän 2014, men HEVC kunde användas tidigare i mjukvaruavkodade applikationer. På IBC 2012 visade Allegro DVT HEVC IP-streamingsystem baserade på AL2200 IP-omvandlaren.
Ericsson i september 2012 vid International Broadcasting Convention (IBC) presenterade världens första HEVC-kodare - Ericsson SVP 5500, designad för att koda realtidsvideo för att sända marksänd TV i mobilnät [13] .
I april 2013 antogs utkastet som en ITU-T-standard [3] .
I början av 2017 implementerades partiellt stöd för HEVC-standarden på hårdvarunivå av alla större processortillverkare.
Många nya funktioner har föreslagits som krav för standarden:
Det antas att dessa tekniker kommer att ge den största fördelen vid multipass-kodning [14] .
Utvecklingen av de flesta videokodningsstandarder är i första hand utformad för att uppnå den största kodningseffektiviteten. Kodningseffektivitet definieras som förmågan att koda video med lägsta möjliga bithastighet samtidigt som en viss nivå av videokvalitet bibehålls . Det finns två standardsätt att mäta videokodningsprestanda, det ena är att använda ett objektivt mått som peak signal to brus ratio (PSNR) och det andra är att använda ett subjektivt mått på videokvalitet. Den subjektiva utvärderingen av bildkvalitet är den viktigaste parametern för att utvärdera videokodning, eftersom tittare uppfattar videokvalitet på ett subjektivt sätt.
Istället för makroblock som används i H.264 använder HEVC block med en trädliknande kodningsstruktur. Fördelen med HEVC-kodaren är att man använder större block. Detta visades i PSNR-tester med HM-8.0-kodarmodellen, där kodningsresultaten jämfördes med olika blockstorlekar. Som ett resultat av testerna visade det sig att jämfört med kodningsblock på 64×64 pixlar ökar bithastigheten med 2,2 % när block på 32×32 används och ökar med 11,0 % när block på 16×16 används . I tester av videokodning med en upplösning på 2560x1600 pixlar, när man använder block på 32x32 pixlar, ökar bithastigheten med 5,7 %, och när man använder block på 16x16 pixlar, med 28,2 % jämfört med video där block i storleken 64x64, med samma toppsignal-brusförhållande. Tester har visat att användning av större block är effektivare vid kodning av högupplöst video. Tester har också visat att video kodad med 16x16 block tar 60 % längre tid att avkoda än när man använder 64x64 block. Det vill säga att användningen av större block ökar kodningseffektiviteten samtidigt som avkodningstiden minskar [15] .
Kodningseffektiviteten för H.265 Main Profile jämfördes med H.264/MPEG-4 AVC High Profile (HP), MPEG-4 Advanced Simple Profile (ASP), H.263 High Profile Latency (HLP) och H.262/ MPEG-2 huvudprofil (MP). Underhållningsvideor och nio testvideosekvenser med 12 olika bithastigheter kodades med hjälp av testmodellen HEVC HM-8.0, fem av dem var i HD-upplösning och fyra var i WVGA-upplösning (800×480). Bithastighetsreduktion bestämdes baserat på PSNR [15] .
Videokodningsstandard | Genomsnittlig bithastighetsminskning | |||
---|---|---|---|---|
H.264/MPEG-4 AVC HP | MPEG-4 ASP | H.263 HLP | H.262/MPEG-2MP | |
HEVC MP | 35,4 % | 63,7 % | 65,1 % | 70,8 % |
H.264/MPEG-4 AVC HP | - | 44,5 % | 46,6 % | 55,4 % |
MPEG-4 ASP | - | - | 3,9 % | 19,7 % |
H.263 HLP | - | - | - | 16,2 % |
Vid kodning av video i HEVC används samma "hybrid" tillvägagångssätt som i alla moderna codecs, med början H.261. Den består i att tillämpa intra- och inter-frame (Intra-/Inter-) prediktion och tvådimensionell transformkodning.
I HEVC-kodaren är varje videoram uppdelad i block. Den första ramen i videosekvensen kodas med användning av endast intra-frame-prediktion, det vill säga den rumsliga prediktionen av den förväntade sampelnivån inom ramen appliceras på intilliggande sampel, medan det inte finns något beroende av andra ramar. För de flesta block av alla andra ramar i sekvensen används som regel moden för tidsförutsägelse mellan ramar. I interframe-prediktionsmoden, baserat på data om värdet av samplen av referensramen och rörelsevektorn, uppskattas de aktuella samplen för varje block. Kodaren och avkodaren skapar identiska inter-frame-prediktioner genom att tillämpa en rörelsekompensationsalgoritm med användning av rörelsevektorer och valda moddata, som överförs som sidoinformation.
Förutsägelsedifferenssignalen, som är skillnaden mellan ett referensblock i en ram och dess förutsägelse, genomgår en linjär rumslig transformation. Transformkoefficienterna skalas sedan, kvantiseras, entropikodning tillämpas och sänds sedan tillsammans med prediktionsinformationen.
Kodaren upprepar exakt avkodarens behandlingscykel så att identiska förutsägelser av efterföljande data kommer att genereras i båda fallen. Således avskalas de transformerade kvantiserade koefficienterna och detransformeras sedan för att upprepa det avkodade skillnadssignalvärdet. Skillnaden läggs sedan till förutsägelsen och det resulterande resultatet filtreras för att jämna ut blockerings- och kvantiseringsartefakter. Den slutliga ramrepresentationen (identisk med ramen vid utgången från avkodaren) lagras i den avkodade rambufferten, som kommer att användas för att förutsäga efterföljande ramar. Som ett resultat av detta skiljer sig ofta ordningen i vilken bearbetningsramar kodas och avkodas från den ordning i vilken de kommer från källan.
Det antas att videomaterialet vid ingången till HEVC-kodaren är progressiv avsökning. HEVC tillhandahåller inte explicita sammanflätningskodningsfunktioner, eftersom det inte används i moderna skärmar och dess distribution minskar. Emellertid introducerade HEVC metadata för att indikera för kodaren att sammanflätad video kodades i ett av två lägen: som individuella bilder, som två fält (jämna eller udda linjer i bildrutan), eller hela bildrutan som helhet. Denna effektiva metod tillhandahåller sammanflätad videokodning utan att behöva belasta avkodare med en dedikerad avkodningsprocess.
Från och med oktober 2012 inkluderade projektet tre profiler: Main (Main), Main 10 (Main 10) och Main Still Picture (Main Still Picture) [16] .
En profil är en specifik uppsättning kodningsverktyg och algoritmer som kan användas för att skapa en videoström som motsvarar denna profil [15] . Kodaren, när den bildar en videoström, bestämmer vilka komponenter som kan användas för en profil, medan avkodaren måste stödja alla funktioner för en given profil.
Följande begränsningar är definierade för huvudprofilen:
Main 10 är en profil för kodning av video med ett färgdjup på 10 bitar per kanal [16] .
Jämförelse av huvudelementen i kodare:
AVC (Hög profil) | HEVC (Main 10) | HEVC (huvudprofil) | |
---|---|---|---|
Block storlek | Makroblock 16×16 | Block med en trädstruktur med kodning från 64x64 till 8x8 | från 64×64 till 16×16 |
Förutsägelseblock | Dela upp till 4×4 | 64×64 till 4×4, asymmetrisk förutsägelse | 64×64 till 8×8, symmetrisk förutsägelse |
Förvandla block | 8×8 och 4×4 | 32x32 16x16 8x8 4x4 + icke-fyrkantiga transformationer | 32×32 16×16 8×8 4×4 |
Intra-frame förutsägelse | 9 lägen | 35 lägen | 35 lägen |
Omvänd transformation | Avblockerande filter | Avblockerande filter, SAO | Avblockerande filter, SAO |
Rörelsekompensation | Rörelsevektor förutsägelse | Avancerad rörelsevektorprediktion (spatial och temporal) | |
Färgdjup per kanal | 8 bitar | 10 bitar | 8 bitar |
Entropikodning | CABAC eller CAVLC | CABAC använder parallella operationer |
Huvudprofilen för stillbilder gör det möjligt att koda en enda bild, med vissa begränsningar som motsvarar huvudprofilen [16] .
Från och med oktober 2012 definierade HEVC-projektet två lager - Main (Main) och High (High), och 13 nivåer [16] . Nivå (Level) är en uppsättning begränsningar för dataflödet som är associerat med beräkningskapaciteten hos avkodaren och minnesbelastningen. Nivån ställs in baserat på den maximala samplingshastigheten, den maximala ramstorleken, den maximala bithastigheten, den minsta kompressionsförhållandet och rambuffertkapaciteten hos avkodaren och kodaren. Konceptet med ett lager ( eng. Tier - tier) introducerades för applikationer som endast skiljer sig i den maximala bithastigheten och kapaciteten hos kodarens rambuffert. Huvudskiktet har designats för de flesta applikationer, medan High-skiktet är designat för mer krävande applikationer. En avkodare som motsvarar ett visst lager och lager måste avkoda alla strömmar som kodas med parametrarna för det lagret och lagret och alla lägre lager och nivåer. För nivåer under 4 är endast Core Layer [1] [16] tillåtet .
Nivå | Max. samplingshastighet [ 17] (Hz) |
Max. ramstorlek [ 17] (pixel) |
Max. bithastighet för Main och Main 10 profiler (kbps) |
Exempel på ramupplösning @ max. bildhastighet (Max rambuffertstorlek) |
Min. kompressionsförhållande _ | |
---|---|---|---|---|---|---|
Baslager | högt lager | |||||
ett | 552 960 | 36 864 | 128 | - | 128×96@33,7 (6) 176×144@15,0 (6) |
2 |
2 | 3 686 400 | 122 880 | 1500 | - | 176×144@100,0 (16) 352×288@30,0 (6) |
2 |
2.1 | 7 372 800 | 245 760 | 3000 | - | 352×[email protected] (12) 640×[email protected] (6) |
2 |
3 | 16 588 800 | 552 960 | 6000 | - | 640×[email protected] (12) 720×[email protected] (8) 720×[email protected] (8) 960×[email protected] (6) |
2 |
3.1 | 33 177 600 | 983.040 | 10 000 | - | 720×[email protected] (12) 720×[email protected] (12) 960×[email protected] (8) 1280×[email protected] (6) |
2 |
fyra | 66 846 720 | 2 228 224 | 12 000 | 30 000 | 1280×[email protected] (12) 1920×[email protected] (6) 2048×[email protected] (6) |
fyra |
4.1 | 133 693 440 | 20 000 | 50 000 | 1280×[email protected] (12) 1920×[email protected] (6) 2048×[email protected] (6) |
fyra | |
5 | 267 386 880 | 8 912 896 | 25 000 | 100 000 | 1920×[email protected] (16) 3840×[email protected] (6) 4096×[email protected] (6) |
6 |
5.1 | 534 773 760 | 40 000 | 160 000 | 1920×[email protected] (16) 3840×[email protected] (6) 4096×[email protected] (6) |
åtta | |
5.2 | 1 069 547 520 | 60 000 | 240 000 | 1920×1080@300,0 (16) 3840×2160@128,0 (6) 4096×2160@120,0 (6) |
åtta | |
6 | 1 069 547 520 | 35 651 584 | 60 000 | 240 000 | 3840×[email protected] (16) 4096×[email protected] (16) 4096×[email protected] (12) 7680×[email protected] (6) 8192×[email protected] (6) |
åtta |
6.1 | 2 139 095 040 | 120 000 | 480 000 | 3840×[email protected] (16) 4096×[email protected] (16) 4096×[email protected] (12) 7680×[email protected] (6) 8192×[email protected] (6) |
åtta | |
6.2 | 4 278 190 080 | 240 000 | 800 000 | 3840×2160@ 300,0 (16) 4096× 2160@300,0 (16) 4096×2304@300,0 (12) 7680×4320@128,0 (6) 8192×4320@120,06 (12) |
6 |
ISO- standarder | |
---|---|
| |
1 till 9999 |
|
10 000 till 19999 |
|
20 000+ | |
Se även: Lista över artiklar vars titlar börjar med "ISO" |
Videokomprimering | |
---|---|
ITU-T- rekommendationer | |
ISO / IEC standarder |
|
SMPTE- standarder | |
MPEG-4 codecs | |
Förlust mindre |
|
Digital bio | |
Andra codecs | |
se även |