Scalable Kvazaar : Implementing HEVC Scalability Extension in Kvazaar Open-Source Encoder
Laitinen, Jaakko (2020)
Laitinen, Jaakko
2020
Tietotekniikan DI-ohjelma - Master's Programme in Information Technology
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2020-11-25
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202011198101
https://urn.fi/URN:NBN:fi:tuni-202011198101
Tiivistelmä
Global internet video traffic is predicted to keep increasing year after year, making up 82% of all internet traffic by the year 2022. This increase is accelerated by the proliferation of different media devices and higher video resolutions. To address the explosive growth of video traffic, more efficient video compression methods are needed. To this end, ITU-T VCEG and ISO/IEC MPEG defined the High Efficiency Video Coding (HEVC) standard that improves compression efficiency by roughly 50% for the same visual quality over the previous video coding standards. The HEVC standard also includes Scalable High Efficiency Video Coding (SHVC) — the scalable extensions of HEVC — for creating video streams that can adapt to changing network conditions and playback devices.
SHVC extends the functionality of HEVC by creating an encoded video that can be made up of several versions of the same input with different quality and video parameters. It uses an inter-layer reference (ILR) mechanism to improve coding efficiency by taking advantage of the redundancy between the different video quality versions. The types of scalability discussed in this thesis are quality and spatial scalability; they can be used to provide the user with videos containing multiple quality and resolution levels, respectively.
At the time of writing, no open-source solutions are available for real-time SHVC encoding. To remedy this, the Scalable Kvazaar SHVC encoder is proposed in this work. It is based on the open-source Kvazaar HEVC encoder, and it implements quality and spatial scalability functionality in a practical encoder. This thesis proposes three main optimization approaches to accelerate Scalable Kvazaar. The first two approaches involve integrating inter-layer processing with wavefront parallel processing (WPP) and overlapped wavefront (OWF) parallelization. The third approach employs single instruction, multiple data (SIMD) optimizations on the picture upscaling functions. Through these new SHVC specific optimizations, Scalable Kvazaar aims to achieve real-time coding speeds.
The performance of Scalable Kvazaar was measured with three test cases. In the quality scalability case, Scalable Kvazaar is able to reduce bit rate by 16.16% on average, and it achieves a 1.20× speedup over simulcast coding, where each quality version is encoded separately. The respective values for 2× spatial scalability are 13.12% and 1.03×. Finally, when using a 1.5× scaling ratio, the bit rate reduction is 23.19% and the speedup is 1.04×. As for absolute coding speed, Scalable Kvazaar was able to encode 1080p video at over 40 frames per second in all test cases, thereby hitting the real-time encoding target. Maailman internet-liikenne koostuu enenemässä määrin videosta, jonka ennustetaan saavuttavan 82% osuuden vuoteen 2022 mennessä. Kasvua vauhdittavat medialaitteiden videoresoluutioiden kasvu sekä video-ominaisuuksien monipuolistuminen. ITU-T VCEG ja ISO/IEC ovat vastanneet tähän videoliikenteen kasvuun määrittelemällä High Efficiency Video Coding (HEVC) videonpakkausstandardin, joka pienentää videon kokoa noin 50% samalla kuvanlaadulla edellisiin videonpakkausstandardeihin verrattuna. HEVC-standardi sisältää myös tuen Scalable High Efficiency Video Coding (SHVC) –lisäosalle, joka mahdollistaa koodattujen videoiden mukautumisen muuttuviin verkon olosuhteisiin ja jopa eri tehoisille laitteille.
SHVC-pakattu video voi sisältää eri laaduilla ja resoluutioilla pakattuja versioita samasta videosta. SHVC käyttää hyödykseen versioiden välistä samankaltaisuutta, mikä mahdollistaa paremman pakkaustehokkuuden saavuttamisen. Tässä työssä keskitytään pääasiassa laadun ja kuvakoon skaalautuvuuteen.
SHVC-pakkaukseen tarkoitettuja ohjelmistoja ei ole tällä hetkellä monia. Erityisesti reaaliaikaiseen pakkaukseen kykeneviä avoimen lähdekoodin ohjelmistoja ei kirjoitushetkellä ole olemassa. Tässä työssä esitellään SHVC-pakkaukseen kykenevä Scalable Kvazaar –niminen ohjelmisto. Se pohjautuu avoimen lähdekoodin HEVC-videokooderiin nimeltä Kvazaar ja tukee kuvanlaadun sekä kuvakoon muuttamista. Tässä työssä esitetään kolme nopeutuskeinoa Scalable Kvazaarille. Kaksi ensimmäistä keinoa liittävät skaalautuvuuden kuvansisäiseen rinnakkaiseen prosessointiin (WPP) ja kuvien väliseen rinnakkaiseen pakkaukseen (OWF). Kolmas keino optimoi kuvan skaalaukseen käytettyjä funktioita vektorikäskyjen avulla (SIMD). Näiden uusien skaalautuvuuten liittyvien optimointien avulla, Scalable Kvazaar pyrkii saavuttamaan reaaliaikaisen pakkauksen.
Scalable Kvazaarin pakkaustehokkuutta ja suorituskykyä on mitattu kolmessa eri testikokoonpanossa, joissa verrokkina käytettiin Kvazaarin pakkaamia videoita. Kun ainoastaan versioiden välistä laatua muutettiin, Scalable Kvazaar pienensi tiedostokokoa keskimäärin 16.16% ja saavutti 1.20× nopeutuksen Kvazaariin verrattuna. Tarkasteltaessa kokoonpanoa, jossa versioiden resoluutioiden välinen suhde oli 2×, vastaavat tulokset olivat 13.12% ja 1.03×. Resoluutioiden suhteen ollessa 1.5×, tiedostokoko pieneni 23.19% ja pakkaus nopeutui 1.04× kertaiseksi. Absoluuttista pakkausnopeutta tarkasteltaessa Scalable Kvazaar kykeni pakkaamaan 1080p videota yli 40 kuvaa sekunnissa kaikissa testikokoonpanoissa saavuttaen reaaliaikaisen suorituskyvyn.
SHVC extends the functionality of HEVC by creating an encoded video that can be made up of several versions of the same input with different quality and video parameters. It uses an inter-layer reference (ILR) mechanism to improve coding efficiency by taking advantage of the redundancy between the different video quality versions. The types of scalability discussed in this thesis are quality and spatial scalability; they can be used to provide the user with videos containing multiple quality and resolution levels, respectively.
At the time of writing, no open-source solutions are available for real-time SHVC encoding. To remedy this, the Scalable Kvazaar SHVC encoder is proposed in this work. It is based on the open-source Kvazaar HEVC encoder, and it implements quality and spatial scalability functionality in a practical encoder. This thesis proposes three main optimization approaches to accelerate Scalable Kvazaar. The first two approaches involve integrating inter-layer processing with wavefront parallel processing (WPP) and overlapped wavefront (OWF) parallelization. The third approach employs single instruction, multiple data (SIMD) optimizations on the picture upscaling functions. Through these new SHVC specific optimizations, Scalable Kvazaar aims to achieve real-time coding speeds.
The performance of Scalable Kvazaar was measured with three test cases. In the quality scalability case, Scalable Kvazaar is able to reduce bit rate by 16.16% on average, and it achieves a 1.20× speedup over simulcast coding, where each quality version is encoded separately. The respective values for 2× spatial scalability are 13.12% and 1.03×. Finally, when using a 1.5× scaling ratio, the bit rate reduction is 23.19% and the speedup is 1.04×. As for absolute coding speed, Scalable Kvazaar was able to encode 1080p video at over 40 frames per second in all test cases, thereby hitting the real-time encoding target.
SHVC-pakattu video voi sisältää eri laaduilla ja resoluutioilla pakattuja versioita samasta videosta. SHVC käyttää hyödykseen versioiden välistä samankaltaisuutta, mikä mahdollistaa paremman pakkaustehokkuuden saavuttamisen. Tässä työssä keskitytään pääasiassa laadun ja kuvakoon skaalautuvuuteen.
SHVC-pakkaukseen tarkoitettuja ohjelmistoja ei ole tällä hetkellä monia. Erityisesti reaaliaikaiseen pakkaukseen kykeneviä avoimen lähdekoodin ohjelmistoja ei kirjoitushetkellä ole olemassa. Tässä työssä esitellään SHVC-pakkaukseen kykenevä Scalable Kvazaar –niminen ohjelmisto. Se pohjautuu avoimen lähdekoodin HEVC-videokooderiin nimeltä Kvazaar ja tukee kuvanlaadun sekä kuvakoon muuttamista. Tässä työssä esitetään kolme nopeutuskeinoa Scalable Kvazaarille. Kaksi ensimmäistä keinoa liittävät skaalautuvuuden kuvansisäiseen rinnakkaiseen prosessointiin (WPP) ja kuvien väliseen rinnakkaiseen pakkaukseen (OWF). Kolmas keino optimoi kuvan skaalaukseen käytettyjä funktioita vektorikäskyjen avulla (SIMD). Näiden uusien skaalautuvuuten liittyvien optimointien avulla, Scalable Kvazaar pyrkii saavuttamaan reaaliaikaisen pakkauksen.
Scalable Kvazaarin pakkaustehokkuutta ja suorituskykyä on mitattu kolmessa eri testikokoonpanossa, joissa verrokkina käytettiin Kvazaarin pakkaamia videoita. Kun ainoastaan versioiden välistä laatua muutettiin, Scalable Kvazaar pienensi tiedostokokoa keskimäärin 16.16% ja saavutti 1.20× nopeutuksen Kvazaariin verrattuna. Tarkasteltaessa kokoonpanoa, jossa versioiden resoluutioiden välinen suhde oli 2×, vastaavat tulokset olivat 13.12% ja 1.03×. Resoluutioiden suhteen ollessa 1.5×, tiedostokoko pieneni 23.19% ja pakkaus nopeutui 1.04× kertaiseksi. Absoluuttista pakkausnopeutta tarkasteltaessa Scalable Kvazaar kykeni pakkaamaan 1080p videota yli 40 kuvaa sekunnissa kaikissa testikokoonpanoissa saavuttaen reaaliaikaisen suorituskyvyn.