熵编码器、熵译码器及对应地熵编码方法和熵译码方法转让专利

申请号 : CN202011110231.X

文献号 : CN112492322B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴东兴陈立恒周汉良

申请人 : 联发科技股份有限公司

摘要 :

本发明提供一种熵编码器、熵译码器及对应地方法。熵编码器包括:熵编码电路,被布置为接收像素组的多个符号,并且对从像素组的多个符号导出的数据进行熵编码,以生成由第一比特流部分和第二比特流部分组成的比特流段,其中,第一比特流部分包含像素组的多个符号的编码幅度数据,并且第二比特流部分包含像素组的多个符号的至少一部分的编码正负号数据;以及大小确定电路,被布置为确定比特流部分的大小,其中比特流部分包括第一比特流部分和第二比特流部分中的至少一个。本发明的熵编码器、熵译码器及对应地方法可以获取提取的比特流片段的比特流片段的比特流位置。

权利要求 :

1.一种熵编码器,其特征在于,包括:

熵编码电路,被布置为接收像素组的多个符号,并且对从所述像素组的所述多个符号导出的数据进行熵编码,以生成由第一比特流部分和第二比特流部分组成的比特流段,其中,所述第一比特流部分包含所述像素组的所述多个符号的编码幅度数据,并且所述第二比特流部分包含所述像素组的所述多个符号的至少一部分的编码正负号数据,所述像素组包括多个像素,所述像素组的所述多个符号分别具有所述多个像素的多个符号值,至少一符号值具有零幅度值,所述第一比特流部分包含所述至少一符号值的编码幅度值,且所述第二比特流部分不包含所述至少一符号值的编码正负号值;以及大小确定电路,被布置为确定比特流部分的大小,其中所述比特流部分包括所述第一比特流部分和所述第二比特流部分中的至少一个。

2.根据权利要求1所述的熵编码器,其特征在于,所述熵编码器还包括:

零检测电路,其被布置为对所多个述符号值的多个幅度值执行零值检查以分别产生多个零值检查结果,其中当符号值具有非零幅度值时,相应的零值检查结果由第一值设置,并且当所述符号值具有零幅度值时,所述相应的零值检查结果通过第二值设置;

其中所述比特流部分是所述第二比特流部分,并且所述大小确定电路根据所述多个零值检查结果确定所述第二比特流部分的所述大小。

3.根据权利要求2所述的熵编码器,其特征在于,所述大小确定电路将所述第二比特流部分的所述大小设置为包括在所述多个零值检查结果中的第一值的数量。

4.根据权利要求1所述的熵编码器,其特征在于,所述熵编码电路还被配置为确定与所述像素组的所述多个符号的所述幅度数据的熵编码相关联的比特深度值,并且所述熵编码器还包括:第一比特流位置确定电路,被布置为根据至少所述比特深度值计算第一比特流位置,其中所述第一比特流位置指示所述比特流段中的所述第一比特流部分的末端的位置。

5.根据权利要求4所述的熵编码器,其特征在于,每个符号值的编码幅度值的比特深度等于所述比特深度值,并且所述第一比特流位置确定电路至少根据所述比特深度值和所述像素组中包括的所述多个像素的数量的乘积来计算所述第一比特流位置。

6.根据权利要求4所述的熵编码器,其特征在于,还包括:

第二比特流位置确定电路,包括所述大小确定电路,并且被布置为根据所述第一比特流位置和所述比特流部分的所述大小来计算第二比特流位置,其中所述比特流部分是所述第二比特流部分,并且所述第二比特流位置指示所述第二比特流部分的末端在所述比特流段中的位置。

7.根据权利要求1所述的熵编码器,其特征在于,还包括:

比特流位置确定电路,包括所述大小确定电路,并且被布置为根据至少所述比特流部分的所述大小来计算比特流位置,其中,所述比特流位置指示所述比特流段中的所述第二比特流部分的末端的位置。

8.根据权利要求1所述的熵编码器,其特征在于,所述大小确定电路通过使用查找表或多路复用器来确定所述比特流部分的所述大小。

9.一种熵译码器,其特征在于,包括:

熵译码电路,被布置为接收由第一比特流部分和第二比特流部分组成的比特流段,并且对所述比特流段进行熵译码以获得像素组的多个符号的译码数据,其中所述第一比特流部分包含所述像素组的所述多个符号的编码幅度数据,所述第二比特流部分包含所述像素组的所述多个符号的至少一部分的编码正负号数据,所述像素组包括多个像素,所述像素组的所述多个符号分别具有所述多个像素的多个符号值,至少一符号值具有零幅度值,所述第一比特流部分包含所述至少一符号值的编码幅度值,且所述第二比特流部分不包含所述至少一符号值的编码正负号值;以及大小确定电路,被布置为确定比特流部分的大小,其中所述比特流部分包括所述第一比特流部分和所述第二比特流部分中的至少一个。

10.根据权利要求9所述的熵译码器,其特征在于,所述第一比特流部分包括所述多个符号值的多个编码幅度值,所述熵译码器还包括:零检查电路,其被布置以对所述多个符号值的所述多个编码幅度值分别执行零值检查以产生多个零值检查结果,其中当符号值的编码幅度值具有非零值时,通过第一值设置相应的零值检查结果,并且当所述符号值的所述编码幅度值具有零值时,通过第二值设置所述相应的零值检查结果;

其中所述比特流部分是所述第二比特流部分,并且所述大小确定电路根据所述多个零值检查结果确定所述第二比特流部分的所述大小。

11.根据权利要求10所述的熵译码器,其特征在于,所述大小确定电路将所述第二比特流部分的所述大小设置为包括在所述多个零值检查结果中的第一值的数量。

12.根据权利要求9所述的熵译码器,其特征在于,所述第一比特流部分包括编码比特深度值,所述熵译码电路译码所述编码比特深度值,以获得与所述像素组的所述多个符号的所述编码幅度数据的熵译码相关联的译码比特深度值,所述熵译码器还包括:第一比特流位置确定电路,被布置为根据至少所述译码比特深度值计算第一比特流位置,其中所述第一比特流位置指示所述比特流段中的所述第一比特流部分的末端的位置。

13.根据权利要求12所述的熵译码器,其特征在于,所述第一比特流部分包括所述多个符号值的多个编码幅度值,每个符号值的编码幅度值的比特深度等于所述译码比特深度值,并且所述第一比特流位置确定电路至少根据所述译码比特深度值和包括在所述像素组中的所述多个像素的数量的乘积来计算所述第一比特流位置。

14.根据权利要求12所述的熵译码器,其特征在于,还包括:

第二比特流位置确定电路,包括所述大小确定电路,并且被布置为根据所述第一比特流位置和所述比特流部分的所述大小来计算第二比特流位置,其中所述比特流部分是所述第二比特流部分,并且所述第二比特流位置指示所述第二比特流部分的末端在所述比特流段中的位置。

15.根据权利要求9所述的熵译码器,其特征在于,还包括:

比特流位置确定电路,包括所述大小确定电路,并且被布置为根据至少所述比特流部分的所述大小来计算比特流位置,其中,所述比特流位置指示所述比特流段中的所述第二比特流部分的末端的位置。

16.根据权利要求9所述的熵译码器,其特征在于,所述大小确定电路通过使用查找表或多路复用器来确定所述比特流部分的所述大小。

17.一种熵编码方法,其特征在于,包括:

接收像素组的多个符号;

对从所述像素组的所述多个符号导出的数据进行熵编码,以生成由第一比特流部分和第二比特流部分组成的比特流段,其中,所述第一比特流部分包含所述像素组的所述多个符号的编码幅度数据,并且所述第二比特流部分包含所述像素组的所述多个符号的至少一部分的编码正负号数据,所述像素组包括多个像素,所述像素组的所述多个符号分别具有所述多个像素的多个符号值,至少一符号值具有零幅度值,所述第一比特流部分包含所述至少一符号值的编码幅度值,且所述第二比特流部分不包含所述至少一符号值的编码正负号值;以及确定比特流部分的大小,其中所述比特流部分包括所述第一比特流部分和所述第二比特流部分中的至少一个。

18.根据权利要求17所述的熵编码方法,其特征在于,所述熵编码方法还包括:

对所多个述符号值的多个幅度值分别执行零值检查以产生多个零值检查结果,其中当符号值具有非零幅度值时,相应的零值检查结果由第一值设置,并且当所述符号值具有零幅度值时,所述相应的零值检查结果通过第二值设置;

其中所述比特流部分是所述第二比特流部分,并且根据所述多个零值检查结果确定所述第二比特流部分的所述大小。

19.根据权利要求18所述的熵编码方法,其特征在于,将所述第二比特流部分的所述大小设置为包括在所述多个零值检查结果中的第一值的数量。

20.根据权利要求17所述的熵编码方法,其特征在于,更包含:

确定与所述像素组的所述多个符号的所述幅度数据的熵编码相关联的比特深度值,以及根据至少所述比特深度值计算第一比特流位置,其中所述第一比特流位置指示所述比特流段中的所述第一比特流部分的末端的位置。

21.根据权利要求20所述的熵编码方法,其特征在于,每个符号值的编码幅度值的比特深度等于所述比特深度值,并且至少根据所述比特深度值和所述像素组中包括的所述多个像素的数量的乘积来计算所述第一比特流位置。

22.根据权利要求20所述的熵编码方法,其特征在于,还包括:

根据所述第一比特流位置和所述比特流部分的所述大小来计算第二比特流位置,其中所述比特流部分是所述第二比特流部分,并且所述第二比特流位置指示所述第二比特流部分的末端在所述比特流段中的位置。

23.根据权利要求17所述的熵编码方法,其特征在于,还包括:

根据至少所述比特流部分的所述大小来计算比特流位置,其中,所述比特流位置指示所述比特流段中的所述第二比特流部分的末端的位置。

24.根据权利要求17所述的熵编码方法,其特征在于,通过使用查找表或多路复用器来确定所述比特流部分的所述大小。

25.一种熵译码方法,其特征在于,包括:

接收由第一比特流部分和第二比特流部分组成的比特流段;

确定比特流部分的大小,其中所述比特流部分包括所述第一比特流部分和所述第二比特流部分中的至少一个;以及对所述比特流段进行熵译码以获得像素组的多个符号的译码数据;

其中所述第一比特流部分包含所述像素组的所述多个符号的编码幅度数据,所述第二比特流部分包含所述像素组的所述多个符号的至少一部分的编码正负号数据,所述像素组包括多个像素,所述像素组的所述多个符号分别具有所述多个像素的多个符号值,至少一符号值具有零幅度值,所述第一比特流部分包含所述至少一符号值的编码幅度值,且所述第二比特流部分不包含所述至少一符号值的编码正负号值。

26.根据权利要求25所述的熵译码方法,其特征在于,所述第一比特流部分包括所述多个符号值的多个编码幅度值,所述熵译码方法还包括:对所述多个符号值的所述多个编码幅度值分别执行零值检查以产生多个零值检查结果,其中当符号值的编码幅度值具有非零值时,通过第一值设置相应的零值检查结果,并且当所述符号值的所述编码幅度值具有零值时,通过第二值设置所述相应的零值检查结果;

其中所述比特流部分是所述第二比特流部分,并且所述第二比特流部分的所述大小根据所述多个零值检查结果确定。

27.根据权利要求26所述的熵译码方法,其特征在于,所述第二比特流部分的所述大小被设置为包括在所述多个零值检查结果中的第一值的数量。

28.根据权利要求25所述的熵译码方法,其特征在于,所述第一比特流部分包括编码比特深度值,所述编码比特深度值被译码,以获得与所述像素组的所述多个符号的所述编码幅度数据的熵译码相关联的译码比特深度值,所述熵译码方法还包括:根据至少所述译码比特深度值计算第一比特流位置,其中所述第一比特流位置指示所述比特流段中的所述第一比特流部分的末端的位置。

29.根据权利要求28所述的熵译码方法,其特征在于,所述第一比特流部分包括所述多个符号值的多个编码幅度值,每个符号值的编码幅度值的比特深度等于所述译码比特深度值,并且至少根据所述译码比特深度值和包括在所述像素组中的所述多个像素的数量的乘积来计算所述第一比特流位置。

30.根据权利要求28所述的熵译码方法,其特征在于,还包括:

根据所述第一比特流位置和所述比特流部分的所述大小来计算第二比特流位置,其中所述比特流部分是所述第二比特流部分,并且所述第二比特流位置指示所述第二比特流部分的末端在所述比特流段中的位置。

31.根据权利要求25所述的熵译码方法,其特征在于,还包括:

根据至少所述比特流部分的所述大小来计算比特流位置,其中,所述比特流位置指示所述比特流段中的所述第二比特流部分的末端的位置。

32.根据权利要求25所述的熵译码方法,其特征在于,通过使用查找表或多路复用器来确定所述比特流部分的所述大小。

说明书 :

熵编码器、熵译码器及对应地熵编码方法和熵译码方法

【技术领域】

[0001] 本发明所公开的实施例涉及熵编码和译码,更具体地,涉及用于通过确定至少一个比特流部分(例如,用于携带编码的正负号数据(sign data)的比特流部分)的大小来执行熵编码和熵译码的方法和装置。【背景技术】
[0002] 一般来说,视频译码器性能通常受熵译码性能的限制。一种常规视频编码技术是将一个帧分割成多个片(slice)并且独立地对每个片进行编码。以这种方式,每个编码片可以在视频译码器处可独立译码。举例来说,视频编码器可经配置以具有用于单独产生不同比特流段的多个熵编码单元,且视频译码器可经配置以具有用于对从视频编码器发送的编码比特流中包括的不同比特流段进行并行熵译码的多个熵译码单元。关于视频编码器,需要知道用于组合比特流片段以形成经编码(或简写为编码)比特流的比特流片段的比特流位置。关于视频译码器,需要知道用于从经编码(或简写为编码)比特流提取比特流片段的比特流片段的比特流位置。【发明内容】
[0003] 依据本发明的示范性实施例,提出一种熵编码器、熵译码器及对应地方法以解决上述问题。
[0004] 依据本发明的一个实施例,提出一种熵编码器,包括:熵编码电路,被布置为接收像素组的多个符号,并且对从像素组的多个符号导出的数据进行熵编码,以生成由第一比特流部分和第二比特流部分组成的比特流段,其中,第一比特流部分包含像素组的多个符号的编码幅度数据,并且第二比特流部分包含像素组的多个符号的至少一部分的编码正负号数据;以及大小确定电路,被布置为确定比特流部分的大小,其中比特流部分包括第一比特流部分和第二比特流部分中的至少一个。
[0005] 依据本发明的另一实施例,提出一种熵译码器,包括:熵译码电路,被布置为接收由第一比特流部分和第二比特流部分组成的比特流段,并且对比特流段进行熵译码以获得像素组的多个符号的译码数据,其中第一比特流部分包含像素组的多个符号的编码幅度数据,第二比特流部分包含像素组的多个符号的至少一部分的编码正负号数据;以及大小确定电路,被布置为确定比特流部分的大小,其中比特流部分包括第一比特流部分和第二比特流部分中的至少一个。
[0006] 依据本发明的另一实施例,提出一种熵编码方法,包括:接收像素组的多个符号;对从像素组的多个符号导出的数据进行熵编码,以生成由第一比特流部分和第二比特流部分组成的比特流段,其中,第一比特流部分包含像素组的多个符号的编码幅度数据,并且第二比特流部分包含像素组的多个符号的至少一部分的编码正负号数据;以及确定比特流部分的大小,其中比特流部分包括第一比特流部分和第二比特流部分中的至少一个。
[0007] 依据本发明的又一实施例,提出一种熵译码方法,包括接收由第一比特流部分和第二比特流部分组成的比特流段;确定比特流部分的大小,其中比特流部分包括第一比特流部分和第二比特流部分中的至少一个;以及对比特流段进行熵译码以获得像素组的多个符号的译码数据;其中第一比特流部分包含像素组的多个符号的编码幅度数据,第二比特流部分包含像素组的多个符号的至少一部分的编码正负号数据。
[0008] 本发明的熵编码器、熵译码器及对应地方法可以获取提取的比特流片段的比特流片段的比特流位置。【附图说明】
[0009] 图1是示出根据本发明实施例的示例性熵编码器的框图。
[0010] 图2是示出图1所示的部分电路组件的示例性电路设计的图。
[0011] 图3是示出根据本发明实施例的示例性熵译码器的框图。
[0012] 图4是根据本发明的一个实施例示出图3所示的部分电路组件的第一示例性电路设计的图。
[0013] 图5是根据本发明的一个实施例示出图3所示的部分电路组件的第二示例性电路设计的图。【具体实施方式】
[0014] 在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异异来作为区分组件的方式,而是以组件在功能上的差异异来作为区分的基准。在通篇说明书及权利要求书当中所提及的「包含」是开放式的用语,故应解释成「包含但不限定于」。另外,「耦接」一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或透过其它装置或连接手段间接地电气连接至第二装置。
[0015] 本发明提出分别对符号(symbol)的幅度数据(magnitude data)(例如,预测残差的绝对值,量化预测残差的绝对值或量化变换系数的绝对值)和符号的正负号数据应用熵编码,从而生成第一比特流部分和第二比特流部分,它们被级联以形成最终比特流段,其中第一比特流部分包含符号的编码幅度数据,第二比特流部分包含符号的编码正负号数据(sign data)。在下面的说明书描述中,术语“符号”可以指由熵编码器熵编码的任何数据。例如,符号与残差相关联或对应于残差,诸如在高级显示流压缩(advanced display stream compression,简写为A‑DSC)块预测模式下的量化预测残差或在A‑DSC变换模式下的量化变换系数。对于另一示例,符号是在A‑DSC传输模式下的量化的变换系数。由于符号的幅度数据和正负号数据被单独地熵编码,因此可以采用正负号数据移除技术来通过减小第二比特流部分的大小来缩短最终比特流段。例如,当符号值具有零幅度时,符号值的幅度数据被编码为第一比特流部分的一部分,而符号值的正负号数据不呈现在第二比特流部分中。
[0016] 一个图像可以包括一个或多个片,一个片可以包括一个或多个块,并且一个块可以包括一个或多个像素组。作为示例而非限制,具有固定压缩比的压缩算法可以用于对每个片进行熵编码,使得每个压缩片的大小由固定压缩比限制。考虑其中2×2像素组包括4个像素并且2×2像素组的符号包括4个符号值{3,0,5,‑20}的情况。因此,符号值{3,0,5,‑20}的幅度数据(即,绝对值)是{3,0,5,20},并且符号值{3,0,5,20}的正负号数据是{+,+,+,‑}。以二进制符号呈现符号值{3,0,5,20}中的每一者所需的最大比特深度(bit‑depth)为5。因此,绝对值{3,0,5,20}中的每一者以最大比特深度进行熵编码,使得每个符号值的编码幅度数据的大小等于相同的最大比特深度。例如,幅度数据{3,0,5,20}的熵编码结果可以是{00011,00000,00101,10100}。因此,第一比特流部分包括“00011 00000 00101 10100”。
[0017] 正负号数据{+,+,+,‑}的熵编码使用一个比特来表示一个符号值的正负号数据,并且使用正负号数据去除来去除具有零幅度的任何符号值的正负号数据。例如,正号{+}由“0”表示,负号{‑}由“1”表示。由于第二符号值{0}具有零大小,所以第二符号值{0}的正负号数据不包括在第二比特流部分中。因此,第二比特流部分包括“0 0 1”。第一比特流部分和第二比特流部分被级联以形成最终比特流段“00011 00000 00101 10100 001”。另外,可在最终比特流段中对最大比特深度信息{5}进行编码和用信号发送。例如,第一比特流部分还包括在符号的编码幅度数据之前的编码的最大比特深度信息。
[0018] 如上所述,可以单独地执行幅度数据的熵编码和正负号数据的熵编码,并且组合第一比特流部分和第二比特流部分以形成最终比特流段用于携带对应于一个像素组的符号的信息。因此,熵编码器可能需要知道最终比特流段中的第一比特流部分的末端位置,以将第二比特流部分正确地附加到第一比特流部分,并且还可能需要知道第二比特流部分的末端位置(即当前像素组的最终比特流段的末端位置)以将下一像素组的第一比特流部分附加到当前像素组的第二比特流部分。
[0019] 熵译码器可以被配置为分别执行编码幅度数据的熵译码和编码的正负号数据的熵译码。因此,熵译码器可能需要知道最终比特流段中的第一比特流部分的末端位置,以将第一比特流部分与第二比特流部分分离。另外,熵译码器可以被配置为以并行方式执行一个像素组的比特流段的熵译码和另一像素组的比特流段的熵译码。因此,熵译码器可能需要知道第二比特流部分的末端位置(即,当前比特流段的末端位置),以快速找到下一个比特流段的第一比特流部分。
[0020] 所提出的熵编码器设计和熵译码器设计的进一步细节描述如下。
[0021] 图1是示出根据本发明实施例的示例性熵编码器的框图。作为示例,但不限于,熵编码器100可以由高级显示流压缩(advanced display stream compression,简写为A‑DSC)编码器采用。在本实施例中,由熵编码器100执行的熵编码支持前述正负号数据去除功能。如图1所示,熵编码器100包括熵编码电路102、第一比特流位置确定电路104和第二比特流位置确定电路106。熵编码电路102是熵编码器100的核心部分,并且被布置为接收像素组的符号S(例如,2×2像素组的预测残差、量化预测残差或量化变换系数),并对从像素组的符号S导出的数据进行熵编码,以生成由第一比特流部分BS1和第二比特流部分BS2组成的比特流段。熵编码电路102确定与像素组的符号S的幅度数据Mag(S)的熵编码相关联的比特深度值BD,其中幅度数据Mag(S)包括像素组的符号S的所有符号值的幅度值(即绝对值)。例如,可以通过以二进制符号呈现幅度数据Mag(S)的每个幅度值所需的最大比特深度来设置比特深度值BD。当由于像素组的符号S的至少一个符号值具有零幅度值而启用正负号数据移除时,要被熵编码的正负号数据Sign(S)不包括具有零幅度的至少一个符号值的正负号值(sign value)。当由于像素组的符号S的符号值都不具有零幅度值而未启用正负号数据移除时,要被熵编码的正负号数据Sign(S)包括像素组的符号S的所有符号值的正负号值。
[0022] 熵编码电路102分别对比特深度值BD、幅度数据Mag(S)和正负号数据Sign(S)执行熵编码,以生成相应的编码比特深度值D1、编码幅度数据D2和编码的正负号数据D3,其中编码的比特深度值D1、编码幅度数据D2和编码的正负号数据D3可以被级联以形成由第一比特流部分BS1和第二比特流部分BS2组成的比特流段。在本实施例中,可以组合编码的比特深度值D1和编码幅度数据D2以形成第一比特流部分BS1,并且可以输出编码的正负号数据D3作为第二比特流部分BS2。换言之,第一比特流部分BS1包含像素组的符号S的编码幅度数据,并且第二比特流部分BS2包含像素组的符号S的至少一部分(即,部分或全部)的编码正负号数据。
[0023] 第一比特流位置确定电路104被布置为根据至少由熵编码电路102确定的比特深度值BD来计算第一比特流位置P1,其中第一比特流位置P1指示比特流段中的第一比特流部分BS1末端的位置。像素组(例如,2×2像素组)具有多个像素(例如,4个像素),并且像素组的符号S分别具有多个像素的符号值。在本实施例中,通过以二进制符号表示幅度数据Mag(S)的每个幅度值(绝对值)所需的最大比特深度来设置比特深度值BD。因此,每个符号值的编码幅度值的比特深度等于比特深度值BD。第一比特流位置确定电路104可以至少根据比特深度值BD和像素组中包括的像素数目的乘积(product)来计算第一比特流位置P1。应当注意,包括在像素组中的像素的数量与针对像素组生成的编码的幅度值的数量相同。
[0024] 第二比特流位置确定电路106包括零检查(zero checking)电路112、大小确定电路114和位置计算电路116。零检查电路112被布置为对符号值的幅度值执行零值检查,以分别生成多个零值检查结果。例如,当符号值具有非零幅度值(即,当符号值的绝对值大于零时),通过第一值(例如“1”)设置对应的零值检查结果,并且当符号值具有零幅度值时(即,当符号值的绝对值等于零时),通过第二值(例如,“0”)设置相应的零值检查结果。如上所述,正负号数据的熵编码使用用于表示具有非零幅度的一个符号值的正负号值的一个比特,并且具有零幅度的任何符号值的正负号值不被编码到第二比特流部分BS2中。因此,大小确定电路114可以根据由零检查电路112提供的零值检查结果来确定第二比特流部分BS2的大小。例如,第二比特流部分BS2仅包括被设置为表示具有非零幅度的一个符号值的正负号值的比特,使得第二比特流部分BS2的大小等于具有非零幅度的符号值的数量。由于具有非零幅度的符号值的数量由零值检查结果中包括的第一值(例如,“1”)指示,因此大小确定电路114可以将第二比特流部分BS2的大小设置为包括在零值检查结果中的第一值(例如,“1”)的数量。
[0025] 在本实施例中,通过组合第一比特流部分BS1和第二比特流部分BS2来生成比特流段。例如,第一比特流部分BS1的末端(end)紧跟着第二比特流部分BS2的开始。如上所述,由第一比特流位置确定电路104计算的第一比特流位置P1指示比特流段中第一比特流部分BS1的末端位置,并且第二比特流部分BS2的大小由大小确定电路114获得。位置计算电路116被布置为根据第一比特流位置P1和第二比特流部分BS2的大小来计算第二比特流位置P2。例如,第二比特流位置P2由第一比特流位置P1和第二比特流部分BS2的大小的和来设置。第二比特流位置P2指示比特流段中的第二比特流部分BS2的末端的位置。应当注意,第二比特流部分BS2的末端也是比特流段的末端。
[0026] 熵编码电路102可以分别对幅度数据Mag(S)(其包括像素组的符号S的所有幅度值)执行熵编码,以及对正负号数据Sign(S)执行熵编码(其包括像素组的至少一部分符号S的正负号数据)。由第一比特流位置确定电路104计算的第一比特流位置P1和由第二比特流位置确定电路106计算的第二比特流位置P2都被提供给熵编码电路102。以这种方式,熵编码电路102可以参考第一比特流位置P1(其指示比特流段中的第一比特流部分BS1的末端位置)以正确地附加第二比特流部分BS2(即,编码正负号数据D3)到第一比特流部分BS1(其至少包括编码幅度数据D2),并且还可以参考第二比特流位置P2(其指示第二比特流部分BS2的末端位置)以附加下一个像素组的第一比特流部分到当前像素组的比特流段。
[0027] 第一比特流位置P1和第二比特流位置P2的上述使用仅用于说明性目的,而不意味着是对本发明的限制。在实践中,使用所提出的比特流位置确定方案来计算比特流位置(例如,P1和/或P2)的任何熵编码器设计落入本发明的范围内。
[0028] 图2是示出图1所示的部分电路组件(第一比特流位置确定电路104、零检查电路112、大小确定电路114和位置计算电路116)的示例性电路设计的图。根据本发明的实施例,在该示例中,一个像素组具有四个像素。因此,像素组的幅度数据包括由“残差0”、“残差1”、“残差2”、“残差3”表示的四个幅度值(绝对值)。由于所提出的正负号数据移除,要熵编码的正负号数据仅包括非零符号值的正负号值。像素组中的每个符号的编码幅度值的大小由最大比特深度限制。因此,可以使用乘法器来实现第一比特流位置确定电路104,该乘法器被布置为将最大比特深度值乘以包括在像素组中的像素数目(其等于编码的幅度值的数目(编码的绝对值),每个具有相同的最大比特深度)。可以使用用于生成幅度值(绝对值)的零检查结果的零检查单元(附图中用“零检查”表示)来实现零检查电路112。大小确定电路114可以使用加法器来实现,用于对零检查结果求和以确定第二比特流部分的大小(其等于非零符号值的数量)。位置计算电路116可以使用加法器来实现,以通过将第二比特流部分的大小和第一比特流位置相加来确定第二比特流位置。应当注意的是,图2所示的电路实现仅用于说明的目的,并不意味着对本发明的限制。
[0029] 图3是示出根据本发明实施例的示例性熵译码器的框图。作为示例,但不限于,熵译码器300可以由高级显示流压缩(A‑DSC)译码器采用。在本实施例中,熵译码器300用于对从图1所示的熵编码器100生成的比特流段(由第一比特流部分BS1和第二比特流部分BS2组成)进行熵译码。如图3所示,熵译码器300包括熵译码电路302、第一比特流位置确定电路304和第二比特流位置确定电路306。熵译码电路302是熵译码器300的核心部分,并被配置为具有在熵编码器100执行的熵编码支持所提出的正负号数据移除功能时恢复移除的正负号数据的功能。熵译码电路302被配置为接收由第一比特流部分BS1(其包括编码的比特深度值D1和编码幅度数据D2)和第二比特流部分BS2(其包括编码的正负号数据D3)组成的比特流段,熵译码比特流段以获得像素组(例如,2×2像素组)的符号S的译码数据。具体地,第一比特流部分BS1包含像素组的符号S的编码幅度数据,并且第二比特流部分BS2包含像素组的至少一部分(即,部分或全部)符号S的的编码正负号数据。
[0030] 熵译码电路302对包括在第一比特流部分BS1中的编码的比特深度值D1进行熵译码,以获得与编码幅度数据D2的熵译码相关联的译码的比特深度值BD'。例如,译码的比特深度值BD'是指示每个符号值的编码幅度数据的大小的最大比特深度。译码的比特深度值BD'可以用于对编码幅度数据D2进行熵译码,并且还可以用于确定第一比特流位置P1。进一步的细节描述如下。
[0031] 在译码的比特深度值BD'可用之后,熵译码电路302通过根据译码的比特深度值BD'对编码幅度数据D2进行熵译码来获得译码的幅度数据Mag(S)'。另外,熵译码电路302还通过对编码的正负号数据D3进行熵译码来获得译码的正负号数据Sign(S)'。当由于像素组的符号S具有至少一个零符号值的事实,在熵编码器100处使能正负号数据移除时,译码的正负号数据Sign(S)'不包括至少一个零符号值的正负号值。当由于像素组的符号S具有的所有符号值具有非零幅度的事实,在熵编码器100处未启用正负号数据移除时,译码的正负号数据Sign(S)'包括由像素组的符号S所拥有的所有非零符号值。
[0032] 译码的幅度数据Mag(S)'和译码的正负号数据Sign(S)'由恢复电路303处理以恢复像素组的残差S的译码数据。关于符号值的译码的非零幅度值,从译码的正负号数据Sign(S)'获得符号值的相关联正负号值。关于符号值的译码零幅度值,符号值的相关联正负号值不呈现在译码的正负号数据Sign(S)'中,并且通过预定正负号值直接设置。
[0033] 此外,在译码的比特深度值BD'可用之后,第一比特流位置确定电路304可操作以根据至少译码的比特深度值BD'来计算第一比特流位置P1,其中第一比特流位置P1表示比特流段中的第一比特流部分BS1的结尾的位置。像素组(例如,2×2像素组)具有多个像素(例如,4个像素),并且像素组的符号S分别具有多个像素的多个符号值。每个符号值的编码的幅度值的比特深度等于译码的比特深度值BD(其是控制每个符号的编码幅度值的大小的最大比特深度)。第一比特流位置确定电路304可以至少根据译码的比特深度值BD和像素组中包括的像素的数量(其等于在第一比特流部分BS1中编码的幅度值的数量)的乘积来计算第一比特流位置P1)。
[0034] 第二比特流位置确定电路306包括零检查电路312、大小确定电路314和位置计算电路316。零检查电路312被布置为对符号值的编码幅度值分别执行零值检查,以生成多个零值检查结果。例如,当符号值的编码幅度值具有非零值时,通过第一值(例如,“1”)设置对应的零值检查结果,并且当符号值的编码幅度值具有零值时,则通过第二值(例如,“0”)设置对应的零值检查结果。如上所述,正负号数据的熵编码使用一个比特用于表示具有非零幅度的一个符号值的正负号值,并且在第二比特流部分BS2中不呈现任何具有零幅度的符号值的正负号值。因此,大小确定电路314可以根据由零检查电路312提供的零值检查结果来确定第二比特流部分BS2的大小。例如,第二比特流部分BS2仅包括被设置为表示具有非零幅度的一个符号值的正负号值的比特,使得第二比特流部分BS2的大小等于非零编码幅度值的数量。应当注意,一个非零幅度值的熵编码生成一个非零编码幅度值,并且一个零幅度值的熵编码生成一个零编码幅度值。由于非零编码幅度值的数量由零值检查结果中包括的第一值(例如,“1”)指示,因此大小确定电路314可以将第二比特流部分BS2的大小设置为包括在零值检查结果中的第一值(例如,“1”)的数量。
[0035] 如上所述,通过连接第一比特流部分BS1和第二比特流部分BS2来生成比特流段。由第一比特流位置确定电路304计算的第一比特流位置P1指示比特流段中的第一比特流部分BS1的末端位置,并且通过大小确定电路314获得第二比特流部分BS2的大小。位置计算电路316被布置为根据第一比特流位置P1和第二比特流部分BS2的大小来计算第二比特流位置P2。例如,第二比特流位置P2由第一比特流位置P1和第二比特流部分BS2的大小的和设置。第二比特流位置P2指示比特流段中的第二比特流部分BS2的末端的位置。应当注意,第二比特流部分BS2的末端也是比特流段的末端。
[0036] 熵译码电路302可以分别对编码幅度数据D2(其包括像素组的符号S的所有编码的绝对值)执行熵译码,以及对编码的正负号数据D3(其包括像素组的符号S的至少一部分的编码的正负号数据)执行熵译码。由第一比特流位置确定电路304计算的第一比特流位置P1和由第二比特流位置确定电路306计算的第二比特流位置P2都被提供给熵译码电路302。以这种方式,熵译码电路302可以参考第一比特流位置P1(其指示比特流段中的第一比特流部分BS1的末端位置),以将第二比特流部分BS2与第一比特流部分BS1正确地分离。另外,熵译码电路302可以参考指示第二比特流部分BS2的末端位置的第二比特流位置P2以快速找到下一比特流段的第一比特流部分的开始位置。以这种方式,熵译码电路302可以被配置为执行多个比特流段的低延迟并行熵译码。
[0037] 第一比特流位置P1和第二比特流位置P2的上述使用仅用于说明的目的,而不意味着是对本发明的限制。在实践中,使用所提出的比特流位置确定方案来计算比特流位置(例如,P1和/或P2)的任何熵译码器设计落入本发明的范围内。
[0038] 图4是根据本发明的一个实施例示出图3所示的部分电路组件(第一比特流位置确定电路304、零检查电路312、大小确定电路314和位置计算电路316)的第一示例性电路设计的图。在该示例中,一个像素组具有四个像素。因此,像素组的编码幅度数据包括由“编码残余0”、“编码残余1”、“编码残余2”、“编码残余3”表示的四个编码幅度值(编码绝对值)。要被熵译码的编码正负号数据具有非零符号值的编码正负号值。像素组中的每个符号的编码幅度数据的大小由最大比特深度限制。熵译码电路302译码在第一比特流部分中用信号通知的编码的最大比特深度值,以向第一比特流位置确定电路304产生译码的最大比特深度值。因此,第一比特流位置确定电路304可以使用被设置为将译码的最大比特深度值和包括在像素组中的像素数量(其等于包括在第一比特流部分中的编码幅度值的数目)相乘的乘法器来实现。零检查电路312可以使用零检查单元(由“零检查”表示)来实现,用于产生编码幅度值(编码绝对值)的大小确定电路。大小确定电路314可以使用加法器来实现,用于对大小确定电路求和以确定第二比特流部分的大小(其等于非零符号值的数量)。位置计算电路
316可以使用加法器来实现,以通过将第二比特流部分的大小和第一比特流位置相加来确定第二比特流位置。应当注意的是,图4仅用于说明的目的,并不意味着对本发明的限制。
[0039] 图5是根据本发明的一个实施例示出图3所示的部分电路组件(第一比特流位置确定电路304、零检查电路312、大小确定电路314和位置计算电路316)的第二示例性电路设计的图。图4和图5所示的示例性电路设计之间的主要区别在于图5所示的大小确定电路314可以使用多路复用器(MUX)来实现,其中所述MUX的输出取决于编码的幅度值(编码的绝对值)的大小确定电路。例如,当大小确定电路仅包括一个第一值(例如,1)时,MUX选择值“1”作为其输出;当大小确定电路仅包括两个第一值(例如,两个1)时,MUX选择值“2”作为其输出;当大小确定电路仅包括三个第一值(例如,三个1)时,MUX选择值“3”作为其输出;并且当大小确定电路都是第一值(例如,4个1)时,MUX选择值“4”作为其输出。第二比特流部分的大小(等于非零残差值的数量)由多路复用器输出设置。应当注意的是,图5所示的电路实现仅用于说明的目的,并不意味着对本发明的限制。
[0040] 在图1所示的上述示例性熵编码器设计和图3所示的示例性熵译码器设计中,第一比特流位置确定电路104/304被配置为进行比特流位置计算用于获得第一比特流位置P1,第二比特流位置确定电路106/306被配置为进行比特流位置计算以获得第二比特流位置P2。然而,这些仅是为了说明的目的,并不意味着是对本发明的限制。在一个替代实施方式中,第一比特流位置确定电路104/304被修改为包括大小确定电路,其被配置为将第一比特流部分BS1的大小信息提供给熵编码电路102/熵译码电路302;和/或第二比特流位置确定电路106/306被修改为至少省略位置计算电路316,并且大小确定电路114/314被配置为提供第二比特流部分BS2的大小信息(或者第一比特流部分BS1和第二比特流部分BS2的大小信息)提供给熵编码电路102/熵译码电路302。
[0041] 当接收到第一比特流部分BS1的大小信息和第二比特流部分BS2的大小信息(或者第一比特流部分BS1的大小信息以及第一比特流部分BS1和第二比特流部分BS2的大小信息)时,熵编码电路102可以参考接收到的大小信息以知道如何正确地执行对第一比特流部分BS1和第二比特流部分BS2的比特流连接。当接收到第一比特流部分BS1的大小信息和第二比特流部分BS2的大小信息(或者第一比特流部分BS1的大小信息以及第一比特流部分BS1和第二比特流部分BS2的大小信息)时,熵译码电路302可以参考所接收的大小信息来获知比特流段中的第一比特流部分BS1和第二比特流部分BS2的正确的比特流连接布置。例如,一个比特流部分BS1/BS2/BS1+BS2的大小信息可以通过算术计算获得。对于另一个示例,通过查找表执行比特流处理,并且可以直接或间接地从查找表获得一个比特流部分BS1/BS2/BS1+BS2的大小信息。对于又一个示例,可以通过使用复用器来提供一个比特流部分BS1/BS2/BS1+BS2的大小信息。
[0042] 文中描述的主题有时示出了包含在其它不同部件内的或与其它不同部件连接的不同部件。应当理解:这样描绘的架构仅仅是示例性的,并且,实际上可以实施实现相同功能的许多其它架构。在概念意义上,实现相同功能的部件的任何布置是有效地“相关联的”,以使得实现期望的功能。因此,文中被组合以获得特定功能的任意两个部件可以被视为彼此“相关联的”,以实现期望的功能,而不管架构或中间部件如何。类似地,这样相关联的任意两个部件还可以被视为彼此“可操作地连接的”或“可操作地耦接的”,以实现期望的功能,并且,能够这样相关联的任意两个部件还可以被视为彼此“操作上可耦接的”,以实现期望的功能。“操作上可耦接的”的具体示例包含但不限于:实体地可联结和/或实体地相互、作用的部件、和/或无线地可相互作用和/或无线地相互作用的部件、和/或逻辑地相互作用的和/或逻辑地可相互作用的部件。
[0043] 此外,关于文中基本上任何复数和/或单数术语的使用,只要对于上下文和/或应用是合适的,本领域普通技术人员可以将复数变换成单数,和/或将单数变换成复数。
[0044] 本领域普通技术人员将会理解,通常,文中所使用的术语,特别是在所附权利要求(例如,所附权利要求中的主体)中所使用的术语通常意在作为“开放性”术语(例如,术语“包含”应当被解释为“包含但不限干”,术语“具有”应当被解释为“至少具有”,术语“包含”应当被解释为“包含但不限干”等)。本领域普通技术人员还将理解,如果意在所介绍的权利要求陈述对象的具体数目,则这样的意图将会明确地陈述在权利要求中,在缺乏这样的陈述的情况下,不存在这样的意图。例如,为了帮助理解,所附权利要求可以包含使用介绍性短语“至少一个”和“一个或更多个”来介绍权利要求陈述对象。然而,这样的短语的使用不应当被解释为:用不定冠词“一个(a或an)”的权利要求陈述对象的介绍将包含这样介绍的权利要求陈述对象的任何权利要求限制为只包含一个这样的陈述对象的发明,即使在同一权利要求包含介绍性短语“一个或更多个”或“至少一个”以及诸如“一个(a)”或“一个(an)”之类的不定冠词的情况下(例如,“一个(a)”和/或“一个(an)”应当通常被解释为意味着“至少一个”或“一个或更多个”)也如此;上述对以定冠词来介绍权利要求陈述对象的情况同样适用。另外,即使明确地陈述了介绍的权利要求陈述对象的具体数目,但本领域普通技术人员也会认识到:这样的陈述通常应当被解释为意味着至少所陈述的数目(例如,仅有“两个陈述对象”而没有其他修饰语的陈述通常意味着至少两个陈述对象,或两个或更多个陈述对象)。此外,在使用类似于“A、B和C中的至少一个等”的惯用语的情况下,通常这样的结构意在本领域普通技术人员所理解的该惯用语的含义(例如,“具有A、B和C中的至少一个的系统”将包含但不限于具有单独的A、单独的B、单独的C、A和B—起、A和C一起、B和C一起和/或A、B和C一起的系统等)。在使用类似于“A、B或C中的至少一个等”的惯用语的情况下,通常这样的结构意在本领域普通技术人员所理解的该惯用语的含义(例如,“具有A、B或C中的至少一个的系统”将包含但不限于具有单独的A、单独的B、单独的C、A和B—起、A和C一起、B和C一起和/或A、B和C一起的系统等)。本领域普通技术人员将进一歩理解,不管在说明书、权利要求书中还是在附图中,表示两个或更多个可替换的术语的几乎任意析取词和/或短语应当理解成考虑包含术语中的一个、术语中的任一个或所有两个术语的可能性。例如,短语“A或B”应当被理解成包含“A”、“B”、或“A和B”的可能性。
[0045] 尽管已经在文中使用不同的方法、设备以及系统来描述和示出了一些示例性的技术,但是本领域普通技术人员应当理解的是:可以在不脱离所要求保护的主题的情况下进行各种其它修改以及进行等同物替换。此外,在不脱离文中描述的中心构思的情况下,可以进行许多修改以使特定的情况适应于所要求保护的主题的教导。因此,意在所要求保护的主题不限制于所公开的特定示例,而且这样的要求保护的主题还可以包含落在所附权利要求的范围内的所有实施及它们的等同物。