一种系数存取方法和装置及机器可读介质与流程

文档序号:16278175发布日期:2018-12-14 22:43阅读:218来源:国知局
一种系数存取方法和装置及机器可读介质与流程

本申请主张在2017年06月07日提出申请的美国专利申请15/615,845号的权利,且上述美国专利申请以引用方式并入本文中。

本发明涉及一种逆扫描设计,且更具体而言,涉及一种在将系数存储到逆扫描存储设备(inversescanstoragedevice)前确定系数的存储位置的方法和相关装置及机器可读介质。

背景技术

传统的视频编码标准一般采用基于块的编码技术,以利用空间和时间冗余度。例如,基本的方法是将整个源帧分解成多个块,对每个块进行帧内预测/帧间预测,变换每个块的残余,以及量化、扫描和熵编码。另外,在编码循环中生成重构帧,以提供用于编码后续块的参考像素数据。对于某些视频编码标准,环路滤波器用于增强该重构帧的图像质量。

视频解码器用于执行由视频编码器所执行的视频编码操作的反向操作。例如,逆扫描(inversescan,is)用于存储由熵解码器所生成的系数,并以扫描/读出的顺序输出所存储的系数,以用于后续逆量化(inversequantization,iq)。然而,不同变换块的逆量化可能需要系数的不同扫描/读出顺序。例如,第一变换块的逆量化需要该第一变换块的系数的非转置(non-transposed)扫描/读出顺序,而第二变换块的逆量化需要该第二变换块的系数的转置(transposed)扫描/读出顺序。在满足设计的逆量化的吞吐量要求的情况下,为了支持系数的不同扫描/读出顺序,采用多个is存储设备并不是一种降低成本的解决方案。因此,需要一种高性能和低成本的逆扫描设计。



技术实现要素:

本发明的目的之一在于,提出一种在将系数存储到逆扫描存储设备前确定系数的存储位置的方法和相关装置及机器可读介质。

根据本发明的第一方面,公开一种实例性的系数存取方法。所述实例性的系数存取方法包括:接收熵解码过程所生成的系数,其中所述接收到的系数是变换块的一部分;在将所述接收到的系数存储到逆扫描存储装置之前,根据与所述变换块相关的转置标志位确定所述接收到的系数的存储位置,其中所述转置标志位表示是否需要系数转置过程;以及在确定所述存储位置之后,将所述接收到的系数存储到所述逆扫描存储装置内所述确定的存储位置。

根据本发明的第二方面,公开一种实例性的系数存取装置。所述实例性的系数存取装置包括接收电路、写控制电路和写电路。接收电路用于接收由熵解码器所生成的系数,其中所述接收到的系数是变换块的一部分。写控制电路用于在将所述接收到的系数存储到逆扫描存储装置之前,根据与所述变换块相关的转置标志位确定所述接收到的系数的存储位置,其中所述转置标志位表示是否需要系数转置过程。写电路用于在确定所述存储位置之后,将所述接收到的系数存储到所述逆扫描存储装置内所述确定的存储位置。

根据本发明的第三方面,公开一种实例性的非暂时性机器可读介质。所述非暂时性机器可读介质存储有程序代码。在由处理器执行时,所述程序代码指示所述处理器以执行如下步骤:接收熵解码过程所生成的系数,其中所述接收到的系数是变换块的一部分;在将所述接收到的系数存储到逆扫描存储装置之前,根据与所述变换块相关的转置标志位确定所述接收到的系数的存储位置,其中所述转置标志位表示是否需要系数转置过程;以及在确定所述存储位置之后,将所述接收到的系数存储到所述逆扫描存储装置内所述确定的存储位置。

本发明通过根据转置标志位确定从熵解码器所获得的系数在逆扫描存储装置内的存储位置,进而将系数存储到该逆扫描存储装置内的存储位置,从而使得逆扫描支持系数的不同扫描/读出顺序,成本低,且性能高。

在阅读以下对各图及图式中所例示的优选实施例的详细说明之后,本发明的这些及其它目标无疑将对所属领域的技术人员显而易见。

附图说明

图1是例示根据本发明实施例的使用所提出的系数转置设计的视频解码器的示意图。

图2是例示根据本发明实施例的逆扫描电路的示意图。

图3是例示根据本发明实施例的控制和执行系数转置过程的方法的流程图。

图4是例示根据本发明实施例的将第一转置过程tp1(例如内部4x4cg转置过程)应用于一个4x4cg的示意图。

图5是例示根据本发明实施例的将第一转置过程tp1(例如内部4x4cg转置过程)应用于同一8x8tb内不同的4x4cg的示意图。

图6是例示根据本发明实施例的将第二转置过程tp2(例如外部4x4cg转置过程)应用于一个8x8tb的4x4cg的示意图。

图7是例示根据本发明实施例的将第二转置过程tp2(例如外部4x4cg转置过程)应用于同一8x8tb内不同的4x4cg的示意图。

图8是例示根据本发明实施例的逆量化的两个系数输入的情景的示意图。

图9是例示根据本发明实施例的is存储装置的第一占用空间的示意图。

图10是例示根据本发明实施例的is存储装置的第二占用空间的示意图。

图11是例示根据本发明实施例的is存储装置的第三占用空间的示意图。

图12是例示根据本发明实施例的is存储装置的修改后的第二占用空间的示意图。

图13是例示根据本发明实施例的is存储装置的修改后的第三占用空间的示意图。

图14是例示根据本发明实施例的具有基于软件的系数存取控制的逆扫描设计的示意图。

具体实施方式

本说明书及权利要求书通篇中所用的某些用语指代特定部件。如所属领域的技术人员可以理解的是,电子设备制造商可利用不同名称来指代同一个部件。本文并非以名称来区分部件,而是以功能来区分部件。在以下说明书及权利要求书中,用语“包括”是开放式的限定词语,因此其应被解释为意指“包括但不限于…”。另外,用语“耦合”旨在意指间接电连接或直接电连接。因此,当一个装置耦合到另一装置时,则这种连接可以是直接电连接或通过其他装置及连接部而实现的间接电连接。

图1是根据本发明实施例的使用所提出的系数转置设计的视频解码器的示意图。如图1所示,视频解码器100包括熵解码器(例如,可变长度解码器(variablelengthdecoder,vld)102、逆扫描电路(用“is”表示)104、逆量化电路(用“iq”表示)106、逆变换电路(用“it”表示)108、重构电路110、运动矢量计算电路(用“mv计算”表示)112、运动补偿电路(用“mc”表示)114、帧内预测电路(用“ip”表示)116、帧间/帧内模式选择电路(用“帧间/帧内选择”表示)118,环路滤波器(例如去块滤波器(deblockingfilter,df))120和参考帧缓存器122。当块被帧间编码时,运动矢量计算电路112参考由熵解码器102(例如vld)从编码比特流中解析出的信息,以确定正在解码的当前帧的该块与参考帧的预测块之间的运动矢量,该参考帧是一重构帧,并且存储在参考帧缓存器122内。当块被帧内编码时,帧内预测电路116从当前帧中确定预测块,该当前帧包括该块。

通过熵解码器(例如vld)102、逆扫描电路104、逆量化电路106和逆变换电路108,重构电路110获取该块的解码残余。当块被帧内编码时,帧间/帧内模式选择电路118输出帧内预测块到重构电路110,而当块被帧间编码时,其输出帧间预测块到重构电路110。重构电路110结合该解码残余和该预测块,以生成重构块。去块滤波器120先处理该重构块,然后将其存储到参考帧缓存器内以作为参考帧的一部分,该参考帧用于解码后续帧。

在本实施例中,逆扫描电路104支持系数(coefficient)的不同扫描/读出顺序,该系数用于后面的逆量化电路106。例如,当后面的逆量化电路106需要系数的转置扫描/读出顺序时,逆扫描电路104执行系数转置过程,其包括第一转置过程124和第二转置过程126,以将由前面的熵解码器(例如vld)102直接所获得的系数(特别是量化的转置系数)存储到存储位置,该存储位置是根据该系数转置过程的结果而确定的。又例如,当后面的逆量化电路106需要系数的非转置扫描/读出顺序时,逆扫描电路104绕开系数转置过程,并将由前面的熵解码器(例如vld)102直接所获得的系数(特别是量化的转置系数)存储到存储位置,该存储位置是根据熵解码器(例如vld)102所提供的相关信息而确定的。

在一个示例设计中,视频解码器100可以是第二代音视频编码标准(secondgenerationaudiovideocodingstandardavs2)解码器。因此,逆扫描电路104支持系数的非转置扫描/读出顺序和转置扫描/读出顺序,其可以是avs2iq过程所需要的,但是,此仅作示例目的,并不用于限制本发明。实际上,采用逆扫描给后续处理阶段(例如逆量化)提供系数的任何视频解码器均可以使用本发明所提出的系数转置设计。

图2是根据本发明实施例的逆扫描电路的示意图。如图1所示的逆扫描电路104可以为图2中的逆扫描电路200。如图2所示,逆扫描电路200包括逆扫描(inversescan,is)存储装置201和系数存取装置202。例如,is存储装置201可以是静态随机存取存储器(staticrandomaccessmemory,sram),动态随机存取存储器(dynamicrandomaccessmemory,dram)或者寄存器。系数存取装置202包括接收电路204、写控制电路206、写电路208和读电路210。

接收电路204耦合到熵解码器(例如,如图1所示的熵解码器102),并用于接收来自于该熵编码器的一个编码组(codinggroup,cg)内的系数ceff和相关cg位置信息(例如,在变换块(transformblock,tb)内的cg索引)。例如,一个8x8tb被划分成四个4x4cg,进而一个4x4cg包括16个系数ceff。当该熵解码器生成4x4cg内的一个系数ceff至系数存取装置202时,其也生成该4x4cg的cg索引至系数存取装置202。cg的系数ceff(其具有系数索引)和该cg的cg索引可以用于直接或者间接确定is存储装置201内的系数存储位置和cg位置。

写控制电路206包括第一转置处理电路212、第二转置处理电路214和存储位置确定电路216。第一转置处理电路212用于执行如图1所示的第一转置过程124。第二转置处理电路214用于执行如图1所示的第二转置过程126。在一个8x8tb被划分位四个4x4cg的情况下,第一转置过程124是内部4x4cg转置过程,第二转置过程126是外部4x4cg转置过程。应注意,视实际设计考虑,可以调节一个tb的大小和一个cg的大小。也就是说,一个tb的大小不限于8x8,和/或一个cg的大小不限于4x4。本发明所提出的系数转置过程不限制tb尺寸和/或cg尺寸。第一转置过程(例如,内部cg转置过程)124和第二转置过程(例如,外部cg转置过程)126的进一步详细说明将在后面进行描述。

存储位置确定电路216用于确定tb的每个cg内的每个系数的存储位置。当需要系数转置过程时,存储位置确定电路216参考第一转置处理电路212的输出,以确定接收电路204所接收到的系数的存储位置,其中第一转置处理电路212的输出表示cg内转置后的系数位置,而第二转置处理电路214的输出表示tb内转置后的cg位置。当不需要系数转置过程时,存储位置确定电路216参考熵解码器所提供的信息,以确定接收电路204所接收到的该系数的存储位置,其中cg内的该系数表示该cg内的非转置系数位置,tb内cg索引表示该tb内非转置cg位置。在本实施例中,接收电路204从熵解码器(例如图1中的熵解码器102)接收系数ceff(其是tb的一部分)之后,在通过写电路208将接收到的该系数ceff存储到is存储装置201内之前,写控制电路206根据与该tb相关的转置标志位(transposeflag)fl确定接收到的系数ceff的存储位置,其中该转置标志位fl表示是否需要系数转置过程。

在本实施例中,根据转置标志位fl控制第一转置处理电路212和第二转置处理电路214的绕开。在一个示例设计中,熵解码器(例如,图1中的熵解码器102)参考从比特流中解析出来的信息以设置该转置标志位fl,并且通过接收电路204将该转置标志位fl传输至写控制电路206。在另一示例设计中,熵解码器(例如,图1中的熵解码器102)通过接收电路204将从比特流中解析出来的信息传输至写控制电路206,写控制电路206将参考该信息以设置转置标志位fl。

假定逆扫描电路200是avs2解码器的一部分。根据avs2的说明,当intramodeldx=1和ischroma=0时,若编码单元类型=‘i_2n’或者‘i_n’时,则执行quantcoeffmatrix转置过程(例如,将quantcoeffmatrix[i][j]和quantcoeffmatrix[j][i]进行转置,其中i=0~(m1-1),j=0~(m2-1),m1是系数矩阵quantcoeffmatrix的宽度,m2是系数矩阵quantcoeffmatrix的高度),否则不执行quantcoeffmatrix转置过程。当执行quantcoeffmatrix转置过程时,转置扫描/读出顺序用于从逆扫描电路200提供系数至逆量化电路(例如,图1中的逆量化电路106)。此时,转置标志位fl设置为第一值,其表示需要系数转置过程。然而,当不执行quantcoeffmatrix转置过程时,非转置扫描/读出顺序用于从逆扫描电路200提供系数至逆量化电路(例如,图1中的逆量化电路106)。此时,转置标志位fl设置为第二值,其表示不需要系数转置过程。上述仅用作示例目的,并不用于限制本发明。当遵从不同视频编码标准的视频解码器采用逆扫描电路200时,可通过不同的规则设置转置标志位fl。

请同时参考图2和图3,其中图3是根据本发明实施例的控制和执行系数转置过程的示意图。图2中的系数存取装置202使用如图3所示的方法。在步骤302中,写控制电路206检测转置标志位fl以确定是否需要系数转置过程。如果与当前tb相关的转置标志位fl表明当前tb不需要系数转置过程,则绕开系数转置过程。如果与当前tb相关的转置标志位fl表明当前tb需要系数转置过程,则流程继续至步骤304。在步骤304中,写控制电路206检测is存储装置201是否已准备接收当前tb内的一个cg的系数。如图2所示的读电路210从is存储装置201中存取系数,到后面的处理阶段(例如,如图1所示的逆量化电路106)。当is存储装置201已存储满等待被转置到后面的处理阶段(例如,如图1所示的逆量化电路106)的系数时,is存储装置201没有空闲的存储空间以用于缓存新的系数。如果is存储装置201还没有准备接收系数,流程继续至步骤306,以等待is存储装置201准备接收系数。如果is存储装置201已准备接收系数,流程继续到步骤308和310。

在步骤308中,在熵解码器(例如,如图1所示的熵解码器102)生成系数,并且其被接收电路204接收之后,第一转置处理电路212执行第一转置过程(例如,内部cg转置过程)124,以确定cg内系数ceff的转置系数位置。图4是根据本发明实施例的将第一转置过程(例如,内部4x4cg转置过程)tp1应用到一个cg的的示意图。图4的左部分显示了在将第一转置过程(例如,内部4x4cg转置过程)tp1应用到4x4cg之前,该4x4cg内16个系数的排列。图4的右部分显示了在将第一转置过程(例如,内部4x4cg转置过程)tp1应用到该4x4cg之后,该4x4cg内16个系数的排列。如图4所示,一个4x4cg包括16个系数,其分配了不同的索引值0-15。该索引值表示熵解码系数的顺序。换句话说,熵解码器(例如,如图1所示的熵解码器102)以0→1→2…→15的顺序生成该16个系数。

如图4的左部分所示,索引值为‘0’的系数的非转置系数位置是[0][0],索引值为‘1’的系数的非转置系数位置是[1][0],索引值为‘5’的系数的非转置系数位置是[2][0],索引值为‘6’的系数的非转置系数位置是[3][0],索引值为‘2’的系数的非转置系数位置是[0][1],索引值为‘4’的系数的非转置系数位置是[1][1],索引值为‘7’的系数的非转置系数位置是[2][1],索引值为‘12’的系数的非转置系数位置是[3][1],索引值为‘3’的系数的非转置系数位置是[0][2],索引值为‘8’的系数的非转置系数位置是[1][2],索引值为‘11’的系数的非转置系数位置是[2][2],索引值为‘13’的系数的非转置系数位置是[3][2],索引值为‘9’的系数的非转置系数位置是[0][3],索引值为‘10’的系数的非转置系数位置是[1][3],索引值为‘14’的系数的非转置系数位置是[2][3],以及索引值为‘15’的系数的非转置系数位置是[3][3]。

第一转置过程(例如,内部4x4cg转置过程)tp1可以在同一cg内给系数分配转置系数位置。如图4的右部分所示,索引值为‘0’的系数的转置系数位置是[0][0],索引值为‘1’的系数的转置系数位置是[0][1],索引值为‘5’的系数的转置系数位置是[0][2],索引值为‘6’的系数的转置系数位置是[0][3],索引值为‘2’的系数的转置系数位置是[1][0],索引值为‘4’的系数的转置系数位置是[1][1],索引值为‘7’的系数的转置系数位置是[1][2],索引值为‘12’的系数的转置系数位置是[1][3],索引值为‘3’的系数的转置系数位置是[2][0],索引值为‘8’的系数的转置系数位置是[2][1],索引值为‘11’的系数的转置系数位置是[2][2],索引值为‘13’的系数的转置系数位置是[2][3],索引值为‘9’的系数的转置系数位置是[3][0],索引值为‘10’的系数的转置系数位置是[3][1],索引值为‘14’的系数的转置系数位置是[3][2],以及索引值为‘15’的系数的转置系数位置是[3][3]。

图5是根据本发明实施例的将第一转置过程(例如内部4x4cg转置过程)tp1应用到同一8x8tb内的不同4x4cg的示意图。图5的左部分显示了在将第一转置过程(例如,内部4x4cg转置过程)tp1应用到任何一个4x4cg之前,8x8tb(其被分为分别标记为cg0、cg1,cg2和cg3的四个4x4cg)内64个系数的排列。图5的右部分显示了在将第一转置过程(例如,内部4x4cg转置过程)tp1应用到所有4x4cg之后,该8x8tb(其被分为分别标记为cg0、cg1,cg2和cg3的四个4x4cg)内64个系数的排列。关于该tb的任意一个cg内的系数,其由熵解码器(例如,如图1所示的熵解码器102)生成,第一转置过程(例如内部4x4cg转置过程)tp1确定其转置系数位置。

在步骤310中,在熵解码器(例如,如图1所示的熵解码器102)生成系数ceff,并且其被接收电路204接收之后,第二转置处理电路214执行第二转置过程(例如,外部cg转置过程)126,以确定该tb内cg的转置cg位置。图6是根据本发明实施例的将第二转置过程(例如,外部4x4cg转置过程)tp2应用到一个8x8tb的4x4cg的示意图。图6的左部分显示了在将第二转置过程(例如,内部4x4cg转置过程)tp2应用到一个8x8tb的4x4cg之前,四个4x4cg的排列,并且图4的右部分显示了在将第二转置过程(例如,外部4x4cg转置过程)tp2应用到一个8x8tb的4x4cg之后,四个4x4cg的排列。如图6所示,四个4x4cg分配了不同的索引值0,1,2,3,其分别表示标记‘cg0’,‘cg1’,‘cg2’和‘cg3’的后缀。该索引值表示熵解码4x4cg的顺序。换句话说,熵解码器(例如,如图1所示的熵解码器102)以0→1→2→3的顺序生成一个8x8tb内的四个4x4cg。

如图6的左部分所示,索引值为‘0’(即cg0)的cg的非转置cg位置是[0][0],索引值为‘1’(即cg1)的cg的非转置cg位置是[1][0],索引值为‘2’(即cg2)的cg的非转置cg位置是[0][1],索引值为‘3’(即cg3)的cg的非转置cg位置是[1][1]。

第二转置过程(例如,外部4x4cg转置过程)tp2可以确定同一tb内cg的转置cg位置。如图6的右部分所示,索引值为‘0’(即cg0)的cg的转置cg位置是[0][0],索引值为‘1’(即cg1)的cg的转置cg位置是[0][1],索引值为‘2’(即cg2)的cg的转置cg位置是[1][0],索引值为‘3’(即cg3)的cg的转置cg位置是[1][1]。

图7是根据本发明实施例的将第二转置过程(例如外部4x4cg转置过程)tp2应用到同一8x8tb内不同4x4cg的示意图。图7的左部分显示了在将第二转置过程(例如,外部4x4cg转置过程)tp2应用到任何一个4x4cg之前,8x8tb(其被分为分别标记为cg0、cg1,cg2和cg3的四个4x4cg)内64个系数的排列。图7的右部分显示了在将第二转置过程(例如,外部4x4cg转置过程)tp2应用到所有4x4cg之后,该8x8tb(其被分为分别标记为cg0、cg1,cg2和cg3的四个4x4cg)内64个系数的排列。为了简化说明,假设在将第一转置过程(例如内部4x4cg转置过程)tp1应用到8x8tb内的每个4x4cg之后,再将第二转置过程(例如外部4x4cg转置过程)tp2应用到该8x8tb内的4x4cg。这样,如图7的左部分所示的在将第二转置过程(例如外部的4x4cg转置过程)tp2应用于任何一个4x4cg之前,与如图5的右部分所示的在将第一转置过程(内部4x4cg转置过程)tp1应用于所有4x4cg之后,该8x8tb内的64个系数的排列相同,但是此仅作示例目的,并不用作限制本发明。关于该tb的任意一个cg内的系数,其由熵解码器(例如,如图1所示的熵解码器102)生成,第二转置过程(例如,外部4x4cg装置过程)tp2根据该熵解码器(例如,如图1所示的熵解码器102)所生成的cg索引可以确定该接收到的系数所属的cg的转置cg位置。

为了实现更好的视频解码性能,第一转置处理电路212和第二转置处理电路214以并行的方式执行第一转置过程(步骤308)和第二转置过程(步骤310)。也就是说,关于系数的转置系数位置以及该系数所属的cg的装置cg位置的计算,第一转置过程的处理时间与第二转置过程的处理时间重叠。可选地,第一转置处理电路212和第二转置处理电路214以顺序的方式执行第一转置过程(步骤308)和第二转置过程(步骤310)。例如,关于系数的转置系数位置以及该系数所属的cg的装置cg位置的计算,第一转置过程和第二转置过程中的一个完成时,才开始另外一个。

在第一转置处理电路212确定转置系数位置之后,存储位置确定电路216根据转置系数位置确定cg内接收到的系数ceff的存储位置(步骤312)。随后,写电路208将该cg内接收到的系数ceff写入到is存储装置201内所确定的存储位置(步骤314)。以图4中的cg为例,存储位置确定电路216给具有转置系数位置的系数合理确定系数存储位置。假设一个存储字节可以缓存四个系数,这样,索引值为0,1,5,6的系数可以存储在第一存储字节中,索引值为2,4,7,2的系数可以存储在第二存储字节中,索引值为3,8,11,13的系数可以存储在第三存储字节中,以及索引值为9,10,14,15的系数可以存储在第四存储字节中。然而,在转置标志位fl表明不需要系数转置过程的情况下,索引值为0,2,3,9的系数可以存储在第一存储字节中,索引值为1,4,8,10的系数可以存储在第二存储字节中,索引值为5,7,11,14的系数可以存储在第三存储字节中,以及索引值为6,12,13,15的系数可以存储在第四存储字节中。

此外,在第二转置处理电路214确定转置cg位置之后,还将该转置cg位置提供给写电路208。在一个示例设计中,写电路208进一步参考该转置cg位置以控制所接收到的系数ceff写入到is存储装置201内。也即是,当需要系数转置过程时,根据存储位置所确定的系数存储位置以及第二转置处理电路214所确定的cg位置,写电路208确定接收到的系数ceff的写入地址。例如,在is存储装置201内,可以将cg位置映射到特殊的基准地址,并且该系数存储位置作为地址补偿量。然而,若由于某些因素导致的tb内至少一个cg被跳过时,由于至少一个被跳过的cg,is存储装置201内所分配的至少一个存储空间将被填入预设值。因此,没有有效地使用is存储装置201。

在另一示例设计中,第二转置处理电路214所确定的cg位置将通过写电路208直接存储到is存储装置201(步骤318)。由于将非跳过的cg的转置系数存储到is存储装置201内,没有考虑转置cg位置,则无需为每个跳过的cg在is存储装置201内预留一个存储空间。仅在存储位置确定电路216所确定的系数存储位置的控制下,写电路208将每个非跳过的cg的转置系数ceff存储到is存储装置201。例如,假设跳过同一tb内的cg1和cg2,写电路208直接将非跳过的cg0和cg3的转置cg位置存储到is存储装置201的可用存储字节内,并根据存储位置确定电路216所确定的系数存储位置将非跳过的cg0和cg3的转置系数存储到is存储装置201的可用存储字节内。例如,将非跳过的cg0和cg3的转置系数存储到is存储装置201的连续的存储字节内。读电路210参考从is存储装置201中所获得的非跳过的cg0和cg3的转置cg位置,进而以转置扫描/读出顺序从is存储装置201中正确获取转置系数。简言之,可以结合is存储装置201内的转置系数(其不受转置cg位置影响)和is存储装置201内的转置cg位置来获取转置系数。但是,此仅作示例的目的,并不用作限制本发明。

在步骤316中,写控制电路206检测当前cg是否是该tb内的最后一个cg,如果当前cg是该tb内的最后一个cg,则该tb的系数转置过程完成。如果当前cg是该tb内的最后一个cg,则流程继续到步骤304,以检测is存储装置201是否已准备接收该tb内的下一cg的系数。

如上所述,在将由接收电路204所接收到的系数ceff存储到is存储装置201之前,写控制电路206根据与tb(其包括该接收的系数ceff)相关的转置标志位fl确定该接收的系数ceff的存储位置。当转置标志位fl表明不需要系数转置过程时,存储位置确定电路216根据该接收的系数ceff的非转置系数位置确定其存储位置,该接收的系数ceff无需运行第一转置处理电路212的处理(例如内部cg转置处理)。并且,将该接收的系数ceff所属的cg的非转置cg位置旁通到写电路208,而无需运行第二转置处理电路214的处理(例如外部cg转置处理)。当转置标志位fl表明需要系数转置过程时,存储位置确定电路216根据该接收的系数ceff的转置系数位置确定其存储位置,其中该接收的系数ceff的转置系数位置是由第一转置处理电路212的处理(例如内部cg转置处理)而确定。在结合is存储装置201的转置系数和转置cg位置之后,通过存储tb的系数而无需对其应用系数转置过程,单独的is存储装置可以支持系数的非转置扫描/读出顺序,以用于后续处理阶段(例如逆量化),并且,通过存储该tb的系数且对其应用系数转置过程,也可以支持系数的转置扫描/读出顺序,以用于后续处理阶段(例如逆量化)。也就是说,逆扫描电路200不需要具有第一is存储装置和第二is存储装置,其中,通过存储tb的系数而无需对其应用系数转置过程,第一is存储装置用于支持系数的非转置扫描/读出顺序,以用于后续处理阶段(例如逆量化);通过存储tb的系数且对其应用系数转置过程,第二is存储装置用于支持系数的转置扫描/读出顺序,以用于后续处理阶段(例如逆量化)。简言之,具有本发明所提出的系数转置功能的系数存取装置202可以实现低成本的逆扫描,其仅需要单独的is存储装置(例如is存储装置201),以支持用于后续处理阶段(例如逆量化)的系数的不同的扫描/读出顺序。

此外,在支持用于后续处理阶段(例如逆量化)的系数的转置扫描/读出顺序的情况下,具有本发明所提出的系数转置功能的系数存取装置202也可以实现单独is存储装置201的高吞吐量。下面将进行详细说明。

图8是根据本发明实施例的逆量化的两个系数输入的情景的示意图。图8的子图(a)示出了逆量化的第一系数输入的情景。从is到iq系数的非转置扫描/读出顺序是以列扫描顺序,且从左上到右下。这样,从is到iq系数的非转置扫描/读出顺序是0→2→3→9→32→34→35→41→1→4→8→10…→54→60→61→63,其中,索引值0-63表示熵解码系数顺序。图8的子图(b)示出了逆量化的第二系数输入的情景。从is到iq系数的转置扫描/读出顺序是以行扫描顺序,且从左上到右下。这样,从is到iq系数的转置扫描/读出顺序是0→1→5→6→16→17→21→22→2→4→7→12…→57→58→62→63,其中,索引值0-63表示熵解码系数顺序。

在逆量化的第一系数输入的情景中,is存储装置201将系数存储到特定的占用空间,以满足逆量化过程中吞吐量的要求。

图9是根据本发明实施例的is存储装置的第一占用空间的示意图。在本实例中,逆量化过程的吞吐量要求是每个时钟周期一个像素(即1个像素/1t)。假设is存储装置201是issram,其具有n个sram字节(分别用字节0-字节(n-1)表示)。在本实例中,sram字节大小是16比特。n个sram字节中的每个用于存储tb内一个像素的系数,其中n表示该tb内系数的数量。如图9所示,在tb内系数位置[0][0]上的系数存储到sram字节‘字节0’,在该tb内系数位置[0][1]上的系数存储到sram字节‘字节1’,在该tb内系数位置[0][2]上的系数存储到sram字节‘字节2’,在该tb内系数位置[0][3]上的系数存储到sram字节‘字节3’,在该tb内系数位置[0][4]上的系数存储到sram字节‘字节4’,在该tb内系数位置[0][5]上的系数存储到sram字节‘字节5’,在该tb内系数位置[0][6]上的系数存储到sram字节‘字节6’,在该tb内系数位置[0][7]上的系数存储到sram字节‘字节7’,在该tb内系数位置[1][0]上的系数存储到sram字节‘字节8’,等等。这样,当读电路(例如图2中的读电路210)在n个时钟周期内顺序读出这些sram字节‘字节0’-‘字节(n-1)’时,以如图8的子图(a)所示的非转置扫描/读出顺序0→2→3→9→32→34→35→41→1→4→8→10→…,将is存储装置201内的系数馈入到后续处理阶段(例如逆量化)。另外,在非转置扫描/读出顺序的情况下,这些n个sram字节中的每个可以在一个时钟周期t内输出一个系数,以满足逆量化过程的吞吐量要求。

图10是根据本发明实施例的is存储设备的第二占用空间的示意图。在本实例中,逆量化过程的吞吐量要求是每个时钟周期两个像素(即2个像素/1t)。假设is存储装置201是issram,其具有(n/2)个sram字节(分别用字节0-字节(n/2-1)表示)。在本实例中,sram字节大小是32比特。n个sram字节中的每个用于存储tb内两个像素的系数,其中n表示该tb内系数的数量。如图10所示,在该tb内系数位置[0][0]和[0][1]上的系数存储到sram字节‘字节0’,在该tb内系数位置[0][2]和[0][3]上的系数存储到sram字节‘字节1’,在该tb内系数位置[0][4]和[0][5]上的系数存储到sram字节‘字节2’,在该tb内系数位置[0][6]和[0][7]上的系数存储到sram字节‘字节3’,在该tb内系数位置[1][0]和[1][1]上的系数存储到sram字节‘字节4’,等等。这样,当读电路(例如图2中的读电路210)在(n/2)个时钟周期内顺序读出这些sram字节‘字节0’-‘字节(n/2-1)’时,以如图8的子图(a)所示的非转置扫描/读出顺序0,2→3,9→32,34→35,41→1,4→8,10→…,将is存储装置201内的系数馈入到后续处理阶段(例如逆量化)。另外,在非转置扫描/读出顺序的情况下,这些(n/2)个sram字节中的每个可以在一个时钟周期t内输出两个系数,以满足逆量化过程的吞吐量要求。

图11是根据本发明实施例的is存储设备的第三占用空间的示意图。在本实例中,逆量化过程的吞吐量要求是每个时钟周期四个像素(即4个像素/1t)。假设is存储装置201是issram,其具有(n/4)个sram字节(分别用字节0-字节(n/4-1)表示)。在本实例中,sram字节大小是64比特。n个sram字节中的每个用于存储tb内四个像素的系数,其中n表示该tb内系数的数量。如图11所示,在该tb内系数位置[0][0],[0][1],[0][2]和[0][3]上的系数存储到sram字节‘字节0’,在该tb内系数位置[0][4],[0][5],[0][6]和[0][7]上的系数存储到sram字节‘字节1’,在该tb内系数位置[1][0],[1][1],[1][2]和[1][3]上的系数存储到sram字节‘字节2’,等等。这样,当读电路(例如图2中的读电路210)在(n/4)个时钟周期内顺序读出这些sram字节‘字节0’-‘字节(n/4-1)’时,以如图8的子图(a)所示的非转置扫描/读出顺序0,2,3,9→32,34,35,41→1,4,8,10→…,将is存储装置201内的系数馈入到后续处理阶段(例如逆量化)。另外,在非转置扫描/读出顺序的情况下,这些(n/4)个sram字节中的每个可以在一个时钟周期t内输出四个系数,以满足逆量化过程的吞吐量要求。

当逆量化过程的吞吐量要求为每个时钟周期内两个像素(即2个像素/1t)时,图10中的第二占用空间可以满足如图8的子图(a)中的非转置扫描/读出顺序的情况下的吞吐量要求,但是,不能满足如图8的子图(b)中的转置扫描/读出顺序的情况下的吞吐量要求。具体地,为了满足如图8的子图(b)中的转置扫描/读出顺序的情况下的吞吐量要求,需要在一个时钟周期内从is存储装置中读出两个系数位置(例如,[0][0]和[1][0])上的系数。但是,根据如图10中的第二占用空间,需要将两个系数位置上的系数存储到不同的sram字节中。例如,将在系数位置[0][0]上的系数存储到一个sram字节‘字节0’中,并将在系数位置[1][0]上的系数存储到一个sram字节‘字节4’中。

当逆量化过程的吞吐量要求为每个时钟周期内四个像素(即4个像素/1t)时,图11中的第三占用空间可以满足如图8的子图(a)中的非转置扫描/读出顺序的情况下的吞吐量要求,但是,不能满足如图8的子图(b)中的转置扫描/读出顺序的情况下的吞吐量要求。具体地,为了满足如图8的子图(b)中的转置扫描/读出顺序的情况下的吞吐量要求,需要在一个时钟周期内从is存储装置中读出四个系数位置(例如,[0][0],[1][0],[2][0]和[3][0])上的系数。但是,根据如图11中的第三占用空间,不能将四个系数位置(例如,[0][0],[1][0],[2][0]和[3][0])上的系数存储到同一sram字节中。

在本发明所提出的系数转置过程的帮助下,为了满足如图8的子图(b)中的转置扫描/读出顺序的情况下的吞吐量要求(例如,2个像素/1t或者4个像素/1t),可以适当调整is存储装置的占用空间。

当转置标志位fl表明由于逆量化的系数输入所要求的转置扫描/读出顺序而需要系数转置过程时,该系数转置过程包括第一转置过程(例如,内部cg转置过程)和第二转置过程(例如,外部cg转置过程),将tb内转置系数位置上的系数存储到is存储装置201中。例如,根据如图7的右部分所示的转置系数排列,将8x8tb内转置系数位置上的系数存储到is存储装置201中。

图12是根据本发明实施例的is存储装置的修改后的第二占用空间的示意图。在本实例中,逆量化过程的吞吐量要求是每个时钟周期两个像素(即2个像素/1t)。假设is存储装置201是issram,其具有(n/2)个sram字节(分别用字节0-字节(n/2-1)表示)。在本实例中,sram字节大小是32比特。n个sram字节中的每个用于存储tb内两个像素的系数,其中n表示该tb内系数的数量。如图12所示,在图7的右部分所示的该tb内系数位置[0][0]和[0][1]上的系数存储到sram字节‘字节0’,在图7的右部分所示的该tb内系数位置[0][2]和[0][3]上的系数存储到sram字节‘字节1’,在图7的右部分所示的该tb内系数位置[0][4]和[0][5]上的系数存储到sram字节‘字节2’,在图7的右部分所示的该tb内系数位置[0][6]和[0][7]上的系数存储到sram字节‘字节3’,在图7的右部分所示的该tb内系数位置[1][0]和[1][1]上的系数存储到sram字节‘字节4’,等等。这样,当读电路(例如图2中的读电路210)在(n/2)个时钟周期内顺序读出这些sram字节‘字节0’-‘字节(n/2-1)’时,以如图8的子图(b)所示的转置扫描/读出顺序0,1→5,6→16,17→21,22→2,4→7,12→…,将is存储装置201内的系数馈入到后续处理阶段(例如逆量化)。另外,在转置扫描/读出顺序的情况下,这些(n/2)个sram字节中的每个可以在一个时钟周期t内输出两个系数,以满足逆量化过程的吞吐量要求。

图13是根据本发明实施例的is存储装置的修改后的第三占用空间的示意图。在本实例中,逆量化过程的吞吐量要求是每个时钟周期四个像素(即4个像素/1t)。假设is存储装置201是issram,其具有(n/4)个sram字节(分别用字节0-字节(n/4-1)表示)。在本实例中,sram字节大小是64比特。n个sram字节中的每个用于存储tb内四个像素的系数,其中n表示该tb内系数的数量。如图13所示,在图7的右部分所示的该tb内系数位置[0][0],[0][1],[0][2]和[0][3]上的系数存储到sram字节‘字节0’,在图7的右部分所示的该tb内系数位置[0][4],[0][5],[0][6]和[0][7]上的系数存储到sram字节‘字节1’,在图7的右部分所示的该tb内系数位置[1][0],[1][1],[1][2]和[1][3]上的系数存储到sram字节‘字节2’,等等。这样,当读电路(例如图2中的读电路210)在(n/4)个时钟周期内顺序读出这些sram字节‘字节0’-‘字节(n/4-1)’时,以如图8的子图(b)所示的转置扫描/读出顺序0,1,5,6→16,17,21,22→2,4,7,12→…,将is存储装置201内的系数馈入到后续处理阶段(例如逆量化)。另外,在转置扫描/读出顺序的情况下,这些(n/4)个sram字节中的每个可以在一个时钟周期t内输出四个系数,以满足逆量化过程的吞吐量要求。

在逆量化过程的吞吐量要求为每时钟周期两个像素(即,2个像素/1t)的一种情况下,当转置标志位fl表明不需要本发明所提出的系数转置过程时,is存储装置201采用图10中的第二占用空间。当转置标志位fl表明需要本发明所提出的系数转置过程时,is存储装置201采用图12中的修改后的第二占用空间。因此,在用于逆量化的系数的不同扫描/读出顺序下,可以实现高性能和低成本的逆扫描设计。

在逆量化过程的吞吐量要求为每时钟周期四个像素(即,4个像素/1t)的另一情况下,当转置标志位fl表明不需要本发明所提出的系数转置过程时,is存储装置201采用图11中的第三占用空间。当转置标志位fl表明需要本发明所提出的系数转置过程时,is存储装置201采用图13中的修改后的第三占用空间。因此,在用于逆量化的系数的不同扫描/读出顺序下,可以实现高性能和低成本的逆扫描设计。

应注意,当转置标志位fl表明需要本发明所提出的系数转置过程时,由于在所提出的系数转置过程的控制下,这些系数被存储到存储装置201中,读电路210可以从is存储装置201直接读出系数至后续处理阶段(例如,图1中的逆量化电路106)。换句话说,在将所存储的系数从is存储装置201传输到后续处理阶段(例如,图1中的逆量化电路106)之前,无需额外的系数转置过程来处理在is存储装置201内一个tb的所有存储的系数。

如上所述,当is存储装置201使用图10中的第二占用空间来存储系数,如图5的左部分所示的非转置系数位置[0][0]和[0][1]上的系数存储到sram字节‘字节0’,如图5的左部分所示的非转置系数位置[0][2]和[0][3]上的系数存储到sram字节‘字节1’,如图5的左部分所示的非转置系数位置[0][4]和[0][5]上的系数存储到sram字节‘字节2’,以及如图5的左部分所示的非转置系数位置[0][6]和[0][7]上的系数存储到sram字节‘字节3’。当is存储装置201使用图12中的修改后的第二占用空间来存储系数时,如图7的右部分所示的转置系数位置[0][0]和[0][1]上的系数存储到sram字节‘字节0’,如图7的右部分所示的转置系数位置[0][2]和[0][3]上的系数存储到sram字节‘字节1’,如图7的右部分所示的转置系数位置[0][4]和[0][5]上的系数存储到sram字节‘字节2’,以及如图7的右部分所示的转置系数位置[0][6]和[0][7]上的系数存储到sram字节‘字节3’。在用于逆量化的系数的非转置扫描/读出顺序下与在用于逆量化的系数的转置扫描/读出顺序下,读电路210的读出操作相同。基于这个发现,读电路210可以使用相同的映射表lut,使得其以非转置扫描/读出顺序或者转置扫描/读出顺序读出系数,其中该映射表lut记录存储位置与系数位置之间的映射关系。由于无需维护用于以非转置扫描/读出顺序读出系数的第一映射表和用于以转置扫描/读出顺序读出系数的第二映射表,进一步减少硬件成本。

在上述图2所示的实施例中,可以使用专用硬件来实现系数存取装置202,使得本发明所提出的系数转置过程可以在该硬件内实施。但是,此仅用作示例的目的,并不用于限制本发明。可选地,本发明所提出的系数转置过程可以在软件内实施。

图14是根据本发明实施例的具有基于软件的系数存取控制的逆扫描设计的示意图。程序代码prog存储在机器可读介质1404内。例如,机器可读介质1404可以是非易失性存储器,如闪存。当处理器1402加载并执行该程序代码prog时,该程序代码prog指示处理器1402以执行图3中的控制流程。即是,在处理器1402中运行的该程序代码prog可以实现上述系数存取装置202所处理的同一功能和操作。例如,处理器1402根据转置标志位fl确定每个接收的系数的存储位置,并将接收的系数存储到is存储装置201的所确定的存储位置。又例如,处理器1402参考同一映射表lut,进而以非转置扫描/读出顺序或者转置扫描/读出顺序从is存储装置201读出系数至后续处理阶段(例如,图1中的逆量化电路106)。根据上述涉及is存储装置201的基于硬件的系数存取控制的说明,本领域的技术人员可以很容易地理解is存储装置201的基于软件的系数存取控制的原理,为了简洁,此处将省略详细的说明。

所属领域的技术人员易知,可在保持本发明的教示内容的同时对装置及方法作出诸多修改及变动。因此,以上公开内容应被视为仅受随附权利要求书的范围的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1