In deze driedelige blogreeks behandelen we VP9, schaalbaarheid en Vidyo's nieuwe, beter presterende VP9-codec. In deel 1 bespraken we temporele schaalbaarheid; vandaag duiken we in ruimtelijke schaalbaarheid.
Meer lezen VP9 verbeteren zonder het te veranderen - Deel 1
De tweede schaalbaarheidsdimensie is ruimtelijke schaalbaarheid en is iets complexer. Stel bijvoorbeeld dat we een videostream coderen op 720p (d.w.z. elk frame heeft 1280×720 pixels). Coderen op een schaalbare manier betekent dat we de video niet alleen kunnen weergeven op de hoogste resolutie van 1280×720, maar ook op lagere resoluties, bijvoorbeeld 640×360 of 320×180. Merk op dat de resoluties in dit voorbeeld met machten van 2 omlaag gaan in elke dimensie. Hoewel dit geen vereiste is, zijn verhoudingen van 2:1 of 1,5:1 typisch voor ruimtelijke schaalbaarheid. De laagste resolutie wordt de basislaag genoemd en de gegevens die nodig zijn om elke hogere resolutie te construeren worden verhogingslagen genoemd.
De terminologie in dit geval geeft weer hoe de gecodeerde gegevens worden opgebouwd. Bij het coderen van een beeld zal de encoder het originele beeld verkleinen tot de resolutie van de basislaag. Hij codeert het vervolgens en gebruikt het gereconstrueerde beeld (hetzelfde beeld dat beschikbaar zal zijn bij de decoder) als referentie om het beeld met een hogere resolutie te coderen.

Figuur 3: Een video gecodeerd met twee ruimtelijke lagen en één temporele laag
Figuur 3 laat zien hoe de beeldstructuur werkt aan de hand van een voorbeeld met twee ruimtelijke lagen en geen temporele schaalbaarheid (er is slechts één temporele laag.) Merk op dat er twee sets afbeeldingen of ruimtelijke lagen zijn. De onderste set zijn de afbeeldingen met lage resolutie (de basislaag) die worden gecodeerd met behulp van de IPPP-structuur van Figuur 1. Daarnaast hebben we de ruimtelijke versterkingslaag (S), waarin afbeeldingen niet alleen worden voorspeld op basis van eerdere versterkingslaagafbeeldingen, maar ook op basis van de overeenkomstige basislaagafbeelding. Deze afhankelijkheid tussen lagen is erg belangrijk voor zowel het verbeteren van de compressie-efficiëntie (de lage resolutieversie van een afbeelding is een uitstekende voorspeller voor de meeste delen van de hoge resolutieafbeelding) als voor de verbeterde foutrobuustheid (je kunt altijd de lage resolutieversie gebruiken als de hoge resolutie beschadigd is of verloren is gegaan).
We kunnen nu de ruimtelijke en temporele schaalbaarheidsconcepten combineren in een enkel ontwerp, waardoor elke combinatie van ruimtelijke resoluties en beeldsnelheden mogelijk wordt. We blijven bij ons voorbeeld van twee ruimtelijke lagen en drie tijdelijke lagen, Figuur 4 laat zien hoe de afbeeldingsstructuur eruitziet.

Figuur 4: Gecombineerde schaalbaarheid: twee ruimtelijke lagen en drie temporele lagen
Uitgaande van een originele bron met 720p 30 fps, stelt deze structuur ons in staat om sets lagen te verkrijgen die elke combinatie van 720p of 360p en 30, 15 en 7,5 fps kunnen bieden. Het belangrijkste is dat men kan overschakelen van een kwaliteitspunt naar een ander zonder de encoder te informeren of signaalverwerking uit te voeren.
Het aanpassingsvermogen dat schaalbare codering biedt, is een belangrijk onderdeel van de implementatie van multipoint video met behulp van Vidyo's gepatenteerde Selective Forwarding Unit (SFU)-architectuur. De SFU kan de video manipuleren door laaggegevens selectief door te sturen volgens de behoeften van de gebruiker, het netwerk of de toepassing. Schaalbaarheid (zowel ruimtelijk als temporeel) is ook belangrijk voor een grotere foutrobuustheid. U kunt meer details over de technische ontwerpprincipes lezen in mijn BlogGeek.me post.
Terwijl het manipuleren van een stream die gebruik maakt van ruimtelijke en temporele schaalbaarheid erg eenvoudig is, is het creëren ervan dat niet. Als je kijkt naar Figuur 4Elke pijl die twee afbeeldingen of lagen met elkaar verbindt, verbergt duizenden individuele beslissingen die door de encoder moeten worden genomen. De taak van de decoder is veel eenvoudiger, omdat deze alleen hoeft te reageren op de instructies van de encoder.
Je kunt de encoder zien als de muziekcomponist en de decoder als de synthesizer die de muziek afspeelt volgens de partituur die de componist heeft gemaakt. In tegenstelling tot de 88 toetsen van een toetsenbord lijken de parameters van een encoder echter meer op de cockpit van een verkeersvliegtuig (zie afbeelding 5) - duizenden individuele parameters moeten gecoördineerd worden om alles goed te laten werken.

Afbeelding 5: Cockpit A380-800 (van de website van Lufthansa)
Kom snel terug voor deel drie, waarin we duiken in prestatievergelijkingen en meer.