H.266/VVC代码学习43:VLC编解码

在ALF的系数上纠结了两个周,不了解它为什么没有传flag却可以从解码端直接获得,终于终于在VLCReader.cpp中抓到了它,也许这对RBSP的了解也有很大的益处吧,下面走进变长编码的世界。

1 简介

VLC即变长编码。原理是用短码来编频率高的信息来达到少比特的目的。
我们知道视频编码中多数内容都是通过CABAC进行编解码的,对多数flag和变换系数熵编码都使用,并具有较高的编码效率。但以零阶指数哥伦布码为首的VLC的编码效率对于广义高斯信源也很高,且编解码简单,因此在VPS、SPS、PPS参数和Slice头信息的大部分语法元素上都得以使用

2 零阶指数哥伦布码

只要根据码字信息就能计算出编码后的码长,通过简单的计算解码码字,无需查表。
解码方式:
1、读取第一个1前面0的个数,有几位0就先加上2的几次方,记为C1
2、读取第一个1后面的二进制数字,记为C2
3、解码值为C1+C2-1,若需要表达有符号数,则如下表所示:

码字 解码值 有符号数
1 0 0
010 1 1
011 2 -1
00100 3 2
00101 4 -2
00110 5 3
00111 6 -3

猜你喜欢

转载自blog.csdn.net/weixin_42979679/article/details/102923305