一种适用于hevc标准的去方块效应滤波器的硬件片上存储方法
【专利摘要】本发明属于数字高清视频压缩编解码【技术领域】,具体为一种适用于HEVC标准的去方块效应滤波器的硬件片上存储方法。在HEVC标准中,一个视频流有三个颜色分量:亮度分量Y,色度分量Cb和Cr;在去方块滤波器中,对每个8x8块的边界先进行垂直滤波然后进行水平滤波。本发明是基于一个64x64大小的LCU进行处理。首先是逻辑映射:将Y分量分成左右两个部分LLUMA和RLUMA,色度分量Cb和Cr合成一个部分CCBC;其次是物理映射:将LLUMA、RLUMA和CCBC中不同边界的4x4块存储在不同的SRAM里。本发明一共使用6块SRAM,从而省去了数据从外设的输入和输出时间,减少一个LCU的处理时间,提高吞吐率,最终实现高清数字视频的实时编码。
【专利说明】—种适用于HEVC标准的去方块效应滤波器的硬件片上存储方法
【技术领域】
[0001]本发明属于数字高清视频压缩编解码【技术领域】,针对HEVC视频编解码标准,具体涉及一种适用于HEVC视频编码标准的、去方块滤波器的硬件片上存储方法。
【背景技术】
[0002]作为下一代视频编解码标准,HEVC(High Efficiency Video Coding)是于 2013 年由国际电信组织(ITU)和运动图像专家组(MPEG)联合成立的组织JCTVC所提出。其目标是,与上一代标准H.264/AVC相比,在相同的视觉效果的前提下,比特率减少50%。
[0003]在HEVC中,一帧图像会划分成一个个最大编码单元(IXU),其大小可以为64x64,然后IXU会划分成更小的编码单元(⑶),其大小从8x8到32x32。与H.264/AVC类似,HEVC使用基于块的预测变换编码方式。这种方式会导致块的边界像素值的不连续性,即块效应,从而影响视频的图像质量,并且会增大码流。统计数据表明,块效应将会使码流增大1.3^3.3%,在某些情况会增大6%。为了消除这种块效应,HEVC使用了去块效应滤波器。
[0004]去方块滤波器模块如图1中所示。首先判断一个8x8块边界是否是预测单元(PU)或变换单元(TU)的边界;如果是,则取该边界两边的4x4块像素进行进一步的判断和滤波。在去块效应滤波器中一共有两种滤波器:(1)正常滤波器(normal filter):4x4块的每行上只有1个或2个像素值会发生改变;(2)强滤波器(strong filter):4x4块的每行上多大三个像素值会发生改变。对每个边界具体使用哪种滤波器取决于该边界两边的4x4块像素的值的大小。
[0005]在去方块滤波器中,每个8x8块边界两边都有8x8块或4x4块。因此对每个IXU来说,其第一列4x4块需要用到右边IXU的最左边一列的4x4块,其第一行4x4块需要用到上边IXU的最下边一行的4x4块;并且由于其特殊的处理顺序,对每个IXU还需用到左上IXU的右下角的4x4块。
[0006]在标准参考软件HM10.0中,去块效应滤波器先处理每个IXU的8x8块垂直边界,再处理水平边界。但是在硬件实现时,由于像素值是存储在存储器中的。如果是存储在片外存储器将会增大整个系统的功耗,并对片外存储器的带宽带来极大的压力,如果存储在片上存储器则要合理规划组织IXU的存储方式和位置,以提高系统的吞吐率。
【发明内容】
[0007]本发明的目的在于提出一种处理时间短、吞吐率高的适用于HEVC标准的去方块滤波器的硬件片上存储方法。
[0008]本发明提出去方块滤波器的硬件片上存储方法,具体步骤为:
(1)在原始视频流中,将一帧图像划分为一个个64x64大小的IXU ;每个IXU有:一个64x64大小的亮度分量Y,两个32x32大小的色度分量Cb和Cr ;将64x64大小的亮度分量Y分成两个部分:左边亮度部分(LLUMA)和右边亮度部分(RLUMA),分时进行数据输入、滤波处理和数据输出;将两个32x32大小的色度分量Cb和Cr合成一个部分色度总量(CCBC),连续进行数据输入、滤波处理和数据输出;
(2)去方块效应滤波器针对每个8x8大小的CU边界进行滤波处理;硬件片上存储器深度为128位,即每个地址存储一个4x4块大小像素值。
[0009]其中,数据输入、滤波处理和数据输出采用采用乒乓处理模式,即将LLUMA和RLUAM中任何一个8x8块的边界两个相邻4x4块存储在不同的存储器中,使用第零到第五共6块双端口存储器:SRAM0、SRAM1、SRAM2、SRAM3、SRAM4、SRAM5 ;这6块双端口存储器采用乒乓处理模式:首先,第零存储器SRAM0和第一存储器SRAM1读入LLUMA像素;然后,第零存储器SRAM0和第一存储器SRAM1中的像素进行去方块效应滤波处理,同时第二存储器SRAM2和第三存储器SRAM3读入RLUMA像素;最后,将第零存储器SRAM0和第一存储器SRAM1中的像素值输出,同时第二存储器SRAM2和第三存储器SRAM3读入RLUMA像素进行去方块效应滤波处理,第四存储器SRAM4和第五存储器SRAM5读入CCBC像素;依次循环直到所有LCU都处理完。
[0010]本发明的去方块滤波器的硬件片上存储方法,其架构如图2所示。该架构使用6双端口块存储器,形成两级映射和三个阶段并进行乒乓处理。两级映射分为逻辑映射和物理映射:
(1)逻辑映射:将64x64大小的亮度分量Y分为左右两个部分:LLUMA和RLUAM;将两个32x32大小的色度分量Cb和Cr合成为一个CCBC ;
(2)物理映射:将LLUMA中构成任何一个8x8边界的相邻4x4块存储在第零存储器SRAM0和第一存储器SRAM1 ;将RLUMA中构成任何一个8x8边界的相邻4x4块存储在第二存储器SRAM2和第三存储器SRAM3 ;将CCBC中构成任何一个8x8边界的相邻4x4块存储在第四存储器SRAM4和第五存储器SRAM5 ;
三个阶段,依次分为数据输入(LOADING),滤波处理(FILTERING),数据输出(OUTPUT):
(1)数据输入:从片外存储器中读取4x4块并存储到片上存储器;
(2)滤波处理:从两个片上存储器各读取一个4x4块用于滤波,这个阶段包括垂直滤波和水平滤波,因此每个4x4块需要读取两次,处理完成后还需存储到片上存储器中;
(3)数据输出:每个SRAM上存储的4x4块都处理完后,将其输出到片外存储器中。
[0011]依据两级映射,6块双端口存储器SRAM使用乒乓处理模式,即在同一时刻,6块双端口存储器SRAM分别处于不同的阶段。首先,第零存储器SRAM0和第一存储器SRAM1读入LLUMA像素,即处于数据输入阶段,其余存储器暂时空闲;然后,第零存储器SRAM0和第一存储器SRAM1中的像素进行去方块效应滤波处理,同时第二存储器SRAM2和第三存储器SRAM3读入RLUMA像素,此时第零存储器SRAM0和第一存储器SRAM1处于滤波处理阶段,而第二存储器SRAM2和第三存储器SRAM3处于数据输入阶段;最后,将第零存储器SRAM0和第一存储器SRAM1中的像素值输出,同时第二存储器SRAM2和第三存储器SRAM3读入RLUMA像素进行去方块效应滤波处理,第四存储器SRAM4和第五存储器SRAM5读入CCBC像素,此时第零存储器SRAM0和第一存储器SRAM1处于数据输出阶段,而第二存储器SRAM2和第三存储器SRAM3处于滤波处理阶段,第四存储器SRAM4和第五存储器SRAM5处于数据输入阶段。依次循环直到所有IXU都处理完。
[0012]对于一个64x64大小的LCU,LLUMA和RLUMA中各有136个4x4块,而CCBC中有144个4x4块。因此在LOADING和OUTPUT阶段,LLUMA和RLUMA分别需要137个周期,CCBC需要145个周期。而LLUMA和RLUMA中各有128个边界,而CCBC有132个边界。由于滤波需要多个周期,因此在FILTERING阶段LLUMA和RLUMA中各需要132个周期,CCBC中需要136个周期。
【专利附图】
【附图说明】
[0013]图1:块效应滤波器的整体架构。
[0014]图2:去块效应滤波器的存储器组织方式。
[0015]图3:去块效应滤波器的存储器乒乓处理模式。
【具体实施方式】
[0016]下面结合附图,对本发明做进一步的描述。
[0017]本发明提出了一种适用于HEVC的去块效应滤波器系统,使用了特殊的的片上存储架构,该架构如图1所示,使用了 5个双端口的存储器SRAM(TSRAM5。这些存储器的存储组织管理如图3示。图3中每个小方框为一个4x4块,其存储管理分为两级映射:逻辑映射和物理映射。
[0018]首先是逻辑映射。
[0019]一个IXU共384个4x4块,在进行滤波时还需使用左边IXU、上边IXU和左上边IXU共17个IXU。其中前缀为X、Y、L和R为亮度分量的4x4块,前缀为C和D为色度分量4x4块。ΧΓΧ3, Y0?Y3,L0?L3,R0?R3,Cl?C3,D0?D3,C37?C39 和 D36?D39 是上边 LCU 的 4x4 块,Y4, X8, Y12, X16, Y20, X24, Y28, X32, Y36, X40, Y44, X48, Y52, X56, Y60, X64, D4, C8, D12,C16, D20, C24, D28, C32, D40, C44, D48, C52, D56, C60, D64, C68 是左边 LCU 的 4x4 块,X0,C0和C36是左上角IXU的4x4块,其余则为当前IXU的4x4块。
[0020]在逻辑映射中,将亮度分量前缀为L和R的4x4块作为一个单元,映射为LLUMA,将亮度分量前缀为X和Y的4x4块作为一个单元,映射为RLUAM,将色度分量前缀为C和D的4x4块作为一个单元,映射CCBC。同一个单元的存储,处理等是同时进行的。
[0021]其次是物理映射。
[0022]根据4x4块存储位置的不同,将逻辑映射的结果存储在不同的SRAM里。其中将LLUMA中前缀为L的4x4块存储在SRAM0里,前缀为R的4x4块存储在SRAM1里;将RLUMA中前缀为X的4x4块存储在SRAM2里,前缀为Y的4x4块存储在SRAM3里;将CCBC中前缀为C的4x4块存储在SRAM4里,前缀为D的4x4块存储在SRAM5里。其中后缀数字为每个4x4块在相应SRAM里存储的位置。例如C5表示该4x4块存储在SRAM4的第5个位置里。SRAM(TSRAM5都是双端口存储器。
下面结合附图2所示存储器的工作流程,其具体实施可以分为如下的三个阶段: 第一个阶段为LOADING。
[0023]在此阶段,从片外存储器读取LLUMA,存储到SRAM0和SRAM1,每个周期读取一个4x4块,偶数周期存储到SRAM0里,奇数周期存储到SRAM1里。
[0024]第二个阶段为FILTERING。
[0025]在此阶段,对LLUMA部分的边界进行滤波,每个周期从SRAM0和SRAM1的一个端口读取一条边界的两个4x4块,对其进行流水处理滤波处理,处理完之后从另外一个端口写回;同时在此阶段还从片外存储器读取RLUMA,存储到SRAM2和SRAM3,每个周期读取一个4x4块,偶数周期存储到SRAM2里,奇数周期存储到SRAM3里。
[0026]第三个阶段为OUTPUT。
[0027]到此阶段时,LLUAM已全部滤波处理完。因此,此阶段将LLUMA输出至片外存储器,每个周期输出一个4x4块,偶数周期从SRAM0读取4x4块进行输出,奇数周期从SRAM1读取进行输出。同时在此阶段对对RLUMA部分的边界进行滤波,每个周期从SRAM2和SRAM3的一个端口读取一条边界的两个4x4块,对其进行流水处理滤波处理,处理完之后从另外一个端口写回;在此阶段还从片外存储器读取CCBC,存储到SRAM4和SRAM5,每个周期读取一个4x4块,偶数周期存储到SRAM4里,奇数周期存储到SRAM5里。
[0028]第三阶段处理完之后回到第一阶段,读取下一个IXU的LLUMA。同时输出当前IXU的RLUMA,并对当前LUC的CCBC进行滤波处理。
【权利要求】
1.一种适用于HEVC标准的去方块滤波器效应的硬件片上存储方法,其特征在于具体步骤如下: (1)在原始视频流中,将一帧图像划分为一个个64x64大小的IXU;每个IXU有:一个64x64大小的亮度分量Y,两个32x32大小的色度分量Cb和Cr ;将64x64大小的亮度分量Y分成两个部分:左边亮度部分LLUMA和右边亮度部分RLUMA,分时进行数据输入、滤波处理和数据输出;将两个32x32大小的色度分量Cb和Cr合成一个部分,即色度总量CCBC,连续进行数据输入、滤波处理和数据输出; (2)去方块效应滤波器针对每个8x8大小的CU边界进行滤波处理;硬件片上存储器深度为128位,即每个地址存储一个4x4块大小像素值; 其中,数据输入、滤波处理和数据输出采用乒乓处理模式,即将LLUMA和RLUAM中任何一个8x8块的边界两个相邻4x4块存储在不同的存储器中,使用第零到第五共6块双端口存储器(SRAMO、SRAMl、SRAM2、SRAM3、SRAM4、SRAM5);这6块双端口存储器采用乒乓处理模式:首先,第零存储器(SRAMO)和第一存储器(SRAMl)读入LLUMA像素;然后,第零存储器(SRAMO)和第一存储器(SRAMl)中的像素进行去方块效应滤波处理,同时第二存储器(SRAM2)和第三存储器(SRAM3)读入RLUMA像素;最后,将第零存储器(SRAMO)和第一存储器(SRAMl)中的像素值输出,同时第二存储器(SRAM2)和第三存储器(SRAM3)读入RLUMA像素进行去方块效应滤波处理,第四存储器(SRAM4)和第五存储器(SRAM5)读入CCBC像素;依次循环直到所有IXU都处理完。
【文档编号】H04N19/86GK104253998SQ201410494794
【公开日】2014年12月31日 申请日期:2014年9月25日 优先权日:2014年9月25日
【发明者】范益波, 程魏, 谢峥, 陆彦珩, 黄磊磊, 曾晓洋 申请人:复旦大学