基于avs的视频硬件解码器的存储空间地址映射方法

文档序号:7954146阅读:189来源:国知局
专利名称:基于avs的视频硬件解码器的存储空间地址映射方法
技术领域
本发明涉及一种数字视频编解码技术领域的方法,具体是一种基于AVS(数字音视频编解码技术标准)的视频硬件解码器的存储空间地址映射方法。
背景技术
AVS是由中国数字音视频编解码技术标准工作组(AVS工作组)牵头创制的音视频信源编码标准,是数字电视、宽带网络流媒体、移动多媒体通信、激光视盘等数字音视频产业群的共性基础标准。它的视频部分于2006年2月22日被颁布为中华人民共和国国家标准,标准号GB/T 20090.2-2006,于2006年3月1日起实施。
在AVS视频硬件解码器的设计与实现中,存储器的读写效率是制约系统性能的重要因素之一。根据ATSC(先进电视制式委员会)标准的规定,高清晰度电视(HDTV)的最大分辨率是1920像素×1080像素,宽高比为16∶9。为了播放高清晰度的视频,必须用快速高效的方法处理如此大的图像尺寸,在有限的时间内从存储器读出所需的数据或把数据写入存储器。
采用DDR SDRAM(双倍数据速率的同步动态随机访问存储器)作为存储器的方案逐渐兴起,在把图像映射到存储器地址空间时必须适应它的时序特性,减少数据读出或写入时额外花费的时间。为了减少额外时间,需要尽量使连续访问的数据存放在同一bank、同一行中,实在需要切换bank或切换行时,尽量使相继访问数据存储在不同的bank中。另外,DDR SDRAM广泛采用猝发读/写的方式来提高效率。猝发读/写是指在发送一次列地址后,默认读写“猝发长度”个数据。在猝发读写的过程中,列地址自动递增。猝发长度可以是2、4或8。
AVS视频标准里最基本的解码单位是8×8的块。在AVS视频硬件解码系统中,访问存储器的有运动补偿模块、环路滤波模块和显示模块。运动补偿模块对存储器进行读操作,每次读取一个大小、位置均不固定的矩形块的像素数据;环路滤波模块向存储器进行写操作,每次固定写8×8的像素数据;显示模块对存储器进行读操作,一般每次读取图像的一行。随着解码过程的进行,存储器的不同地址区域不断变换功能。因此只能采用一种存储器地址映射方式。于是,存在这样的困难视频系统中访问DDR SDRAM的三大模块的读写要求各不相同,存储器地址映射的方法却只能选择一种。
经对现有技术文献的检索发现,Hansoo Kim等人在IEEE Transaction oncircuits and system for video technology,Vol.11,No.11,November 2001(IEEE的视频技术的电路和系统学报)上所发表的“High Performance and LowPower Memory Interface Architecture for Video Processing Applications”(视频处理应用中的高性能,低功耗存储界面结构)中,涉及到一种MPEG2视频标准的地址映射方法,它的特点在于,使用固定的16*8的矩形映射单位,然后动态地把矩形映射单位分配给存储器不同的bank。它针对MPEG2视频而设计,因为MPEG2的宏块划分只有16*16和16*8,所以选取16*8的固定矩形映射单位。它的缺点在于1、它致力于在需要切换bank或切换行的时候把连续访问数据存储在不同的bank中,但是没有考虑运动补偿模块读参考块的范围特点,即不是首先考虑把运动补偿需要读取的参考块放在同一行同一bank中。2、较窄的映射单位(宽度仅为16)使得显示模块在读图像的行时不能使用较长的猝发长度。3、动态地把矩形映射单位分配给不同的bank需要一个复杂的选择-判决机构,而不是使用一个简单而且固定的公式来映射,不利于硬件实现。

发明内容
本发明要解决的技术问题是克服上述困难,提供一种基于AVS的视频硬件解码器的存储空间地址映射方法,它以一种按矩形折叠的地址映射方法把AVS视频图像映射到DDR SDRAM的存储空间。本发明包括亮度分量映射和色度分量映射两方面,适用于各种大小的图像,同时支持4:2:0和4:2:2的色度格式,帧方式和场方式分别映射,亮度和色度像素采用相同的简洁的映射公式,利于硬件实现。通过选取合适的矩形大小,能够兼顾运动补偿模块、环路滤波模块和显示模块的不同需求特点,有效减少DDR SDRAM的ACTIVE命令的数目,充分利用猝发读写的优势,提高了DDR SDRAM的效率。
本发明是通过以下技术方案实现的首先设定每个地址涉及的数据宽度,把图像划分成多个A矩形,如果是场方式还要进一步把A矩形划分成偶块和奇块,即步骤(a)-(c);然后对亮度地址映射采用步骤(d),对色度地址映射采用步骤(e)-(f);最后得出DDR SDRAM的地址坐标换算公式,即步骤(g)。下文提到的坐标/像素如不加特别说明,均指亮度坐标/像素。
(a)设定每个地址涉及的数据宽度;(b)选取合适的矩形尺寸,把图像划分成多个A矩形;(c)场方式下把A矩形划分成偶块和奇块,帧方式下则不划分;(d)为每个A矩形内的亮度像素分配地址;(e)把色度像素的坐标用图像的亮度像素坐标来表示;(f)为每个A矩形内的色度像素分配地址;(g)得出DDR SDRAM的地址坐标换算公式。
以下对各个步骤进行进一步的说明(a)设定每个地址涉及的数据宽度使DDR SDRAM的端口宽度为D比特,D是2的整数幂。这D比特的宽度也可以是由若干块DDR SDRAM并联而成。例如可以将2片端口宽度分别为D/2比特的DDR SDRAM并联。每个像素需要8比特的存储空间,从而每个地址可以存储(D/8)个像素。在双倍数据速率下,每一个时钟周期可以读出或写入2个地址(2×D比特)的数据。即每个时钟周期可以从DDR SDRAM中读出(D/4)个像素。
(b)选取合适的矩形尺寸,把图像划分成多个A矩形将W×H的图像范围划分成(W/s)×(H/t)个A矩形,A矩形的大小为s×t。一般地,s选取为D的2的整数幂倍,可以使显示模块以猝发读的方式送一次地址就读取到较宽的一行图像。t可以选择和s相同或是s的2倍,使得A矩形是一个正方形或A矩形内的每个场是一个正方形,从而运动补偿模块读取的参考块有较大的可能性落在一个A块内部。s和t必须是8的整数倍,便于环路滤波模块每次写入一个8×8块。当今主流的DDR SDRAM有4个bank,选择s和t尽量使得一个A矩形刚好占用了DDR SDRAM的一行,2个bank,能保证相继读取的数据属于不同的bank。
(c)场方式下把A矩形划分成偶块和奇块,帧方式下则不划分如果是场方式,把A矩形划分成偶块和奇块,偶块的大小是s×(t/2),由偶数行组成;奇块的大小也是s×(t/2),由奇数行组成。行的计数从零开始。对于亮度像素和4:2:2色度格式下的色度像素,偶数行的像素在偶块中,奇数行的像素在奇块中;而4:2:0色度格式下所有色度像素都在偶块中,奇块空置。如果是帧方式,不进行分块,4:2:0色度格式下所有色度像素都在偶行中,奇行空置。
(d)为每个A矩形内的亮度像素分配地址在一个A矩形内部,如果是帧方式,按从左到右、从上到下的顺序给亮度像素分配地址,一个A矩形占用 个地址;如果是场方式,先将偶块按从左到右、从上到下的顺序给亮度像素分配地址,分配了 个地址,再将奇块按从左到右、从上到下的顺序继续给亮度像素分配地址,又分配了 个地址。从左到右、从上到下地给全部的(W/s)×(H/t)个A矩形按上述方法分配地址。
(e)把色度像素的坐标用图像的亮度像素坐标来表示用亮度像素的坐标来表示色度像素的位置。即对于4:2:2的色度格式,色度横坐标乘以2,纵坐标不变;对于4:2:0的色度格式,色度横坐标和纵坐标均乘以2。色度包括Cb和Cr两个分量,存放在相邻的两个亮度横坐标的位置上。4:2:0色度格式下,奇数行不存放实际的像素。
(f)为每个A矩形内的色度像素分配地址在一个A矩形内部,如果是帧方式,按从左到右、从上到下的顺序给色度像素分配地址,一个A矩形占用 个地址;如果是场方式,先将偶块按从左到右、从上到下的顺序给色度像素分配地址,分配了 个地址,再将奇块按从左到右、从上到下的顺序继续给色度像素分配地址,又分配了 个地址。从左到右、从上到下地给全部的(W/s)×(H/t)个A矩形分配地址。4:2:0色度格式下有一半的地址是空置的。
(g)得出DDR SDRAM的地址坐标换算公式DDR SDRAM由若干个bank组成,每个bank中又分列地址(Col)和行地址(Row)。对应的DDR SDRAM的地址Addr按{Row,Bank,Col}构成。其中Bank对应于DDR SDRAM的BA管脚;Row和Col对应于A管脚,且Row和Col是复用的。
(1)如果是帧方式亮度和色度的映射公式是相同的,如下式Addr=[(y/t)×Ws+(x/s)]×(s×tD/8)]]>+(y%t)×tD/8]]>+(x%s)×1D/8]]>(2)如果是场方式亮度和色度的映射公式是相同的,如下式Addr=[(y/t)×Ws+(x/s)]×(s×tD/8)]]>+(y%2)×s×(t/2)D/8]]>+[(y%t)/2]×tD/8]]>+(x%s)×1D/8]]>(3)最后为亮度和色度分别加上一个基地址,映射到存储器的不同地址区域,完成地址映射。
LumaAddr=BaseAddr1+AddrChromaAddr=BaseAddr2+Addr
上述坐标都是亮度坐标。因为一个地址可以放置D/8个像素,映射公式中的x须是D/8的整数倍。
步骤(a)到(g)表述的按矩形折叠的地址映射方法,它的优点是(1)每次运动补偿模块读取的参考块有很大的可能性落在一个A矩形的内部,而且这个A矩形恰好存放在DDR SDRAM的一行中,不需要切换行的ACTIVE操作。即使参考块跨越A矩形的边界,也能够保证相继读取的数据属于不同的bank。运动补偿读取参考块是存储器接口总线上数据吞吐量最大的操作,有效地减少非读写操作的延迟对于提高DDR SDRAM读取效率有至关重要的意义。
(2)每次环路滤波模块向DDR SDRAM写一个8×8的块都不需要切换行或bank,即不需要发ACTIVE命令。
(3)每次显示模块从DDR SDRAM可以读出长度至少为s的一行图像像素并且不需要发ACTIVE命令。并且可以把猝发读的长度设为8,连续地读出数据。
(4)在帧方式下对一个A矩形进行连续的映射,在场方式下先映射偶块,再映射奇块,即偶块的地址是连续的,奇块的地址也是连续的,适应场方式下的读写操作。
(5)色度地址映射方法同时支持4:2:0和4:2:2,色度和亮度能够采用相同的简洁的地址映射公式。
由上可知,本发明所述的一种基于AVS的高清晰度视频硬件解码器的存储空间地址映射方法,包括亮度分量映射和色度分量映射,适用于各种大小的图像,同时支持4:2:0和4:2:2的色度格式,帧方式和场方式分别映射,亮度和色度像素采用相同的简洁的映射公式,利于硬件实现。通过选取合适的矩形大小,能够兼顾运动补偿模块、环路滤波模块和显示模块的不同需求特点,有效减少ACTIVE命令的数目,充分利用猝发读写的优势,提高了DDR SDRAM的效率。
特别地,本发明与前文中所提到的Hansoo Kim等人提出的方法进行比较,可以得到如下的对比结果(1)从运动补偿读参考块时所需的ACTIVE命令数目来说,Hansoo Kim等人的方法没有考虑运动补偿模块读参考块的范围特点,如果应用于AVS,只有参考块的高度为8,且参考块起始点纵坐标恰好落在8的整数倍位置时,参考块才会在同一行、同一bank中,这个概率仅为3%。本发明特别针对运动补偿需要读取的参考块大小不定、位置不定的特点,把需要读取的参考块尽可能放在同一行的同一bank中以减少ACTIVE命令的数目。实施例中,运动补偿参考块在同一行、同一bank的概率为56%,从而运动补偿模块的读操作可以比按Hansoo Kim等人提出的方法减少53%的ACTIVE命令数目。(2)从可利用的猝发读长度来说,Hansoo Kim等人的方法只考虑块读写,没有考虑显示模块的行读写,读取图像的一行时不能用猝发读的方式;而本发明中设计的A矩形比较宽,可以使显示模块每次以最长的猝发读长度高效地读取图像的行。(3)从硬件实现的复杂度来说,Hansoo Kim等人的方法需要循环搜索最合适的窗大小来分配bank,不利于硬件实现;本发明提出的方法仅仅使用一个简单的映射公式,很容易实现。(4)另外,本发明分别考虑帧方式和场方式,在帧方式下对A矩形内的每一行连续分配地址,在场方式下先对A矩形的奇行分配地址,再对A矩形的偶行分配地址,有利于在两种情况下都获得较高的读写效率。
综上所述,本发明在提高存储器读取效率和减小硬件实现复杂度上,都是具有优势的。


图1是DDR SDRAM的地址结构示意图;图2是把视频图像划分成多个A矩形的示意图;图3是场方式情况下把A矩形划分成偶块和奇块的示意图;图4是A矩形在帧方式和场方式下的不同映射顺序的示意图;图5是4:2:2和4:2:0色度格式下的色度像素在A矩形中的布局示意图;图6是亮度分量和色度分量映射到不同地址区域的示意图;图7是实施例中A矩形刚好占用DDR SDRAM1行,2个bank的示意图;图8是实施例中参考块的6类可能的位置示意图。
具体实施例方式
本发明提出的映射方法适用于各种大小的图像尺寸,结合本发明技术方案以及附图提供以下实施例采用MicronTM公司的MT46V8M16芯片,它的规格是2兆×16×4Banks,两片该芯片并联,从而D=32,每个地址可以存放4个亮度像素。令Row,Bank,Col分别表示DDR SDRAM的行坐标,bank序号和列坐标。Row的范围是0-4095,Bank的范围是0-3,Col的范围是0-511。DDR SDRAM的布局见附图1。
图像的尺寸为W=1920,H=1088。设x和y分别为图像的亮度横坐标和纵坐标。x的范围是0-1919,共11比特;y的范围是0-1087,也是11比特。
选取s=64,t=64。如附图2所示,把图像划分成30×17个A矩形,每个A矩形的大小为64×64。
如果是场方式,把A矩形分成偶块和奇块,偶块由第0,2,4,6,8,…,60,62行构成,奇块由第1,3,5,7,9,…,61,63行构成,如附图3所示。
在一个A矩形内部,如附图4所示,如果是帧方式,从左到右依次给每一行中的像素分配地址,从上到下依次给每一行分配地址;如果是场方式,先给偶块分配地址,再给奇块分配地址。附图4中方括号中的数字表明了每一行的映射次序。
色度像素的地址映射和亮度像素是相同的,见附图5,色度的Cb和Cr分量存放在相邻的两个亮度横坐标的位置上;4:2:2色度格式下色度和亮度的数据量相同,4:2:0色度格式下,奇数行不存放实际的像素。
用该按矩形折叠的地址映射方法计算出来的地址是帧方式Addr=[(y/64)×192064+(x/64)]×(64×6432/8)]]>+(y%64)×6432/8]]>+(x%64)×132/8]]>场方式
Addr=[(y/64)×192064+(x/64)]×(64×6432/8)]]>+(y%2)×64×(64/2)32/8]]>+[(y%64)/2]×6432/8]]>+(x%64)×132/8]]>化简后,可以得到对应的DDR SDRAM的地址构成公式是帧方式Row=y[10:6]×15+x[10:7]Bank=x[6]×2+y[5]Col=y[4:0]×16+x[5:2]]]>场方式Row=y[10:6]×15+x[10:7]Bank=x[6]×2+y
Col=y[5:1]×16+x[5:2]]]>最后,把亮度和色度映射到不同的地址空间,是通过加上一个不同的基地址来实现的,见附图6。可以计算出,由于y最大为1087,y[10∶6]最大为16,由于x最大为1919,x[10∶7]最大为14,Row最大占用8比特。所以可以用Row[11∶8]作为基地址。
本实施例中,由于每个存储器地址可以存放4个亮度像素,要求x是4的整数倍。本实施例中的A矩形恰好占用DDR SDRAM的1行、2个bank,参见附图7,阴影部分恰好放置一个A矩形。在运动补偿时,参考块在图像中的位置如附图8所示,共6类。其中第1类就是落在同一行、同一bank中。8×8的亮度块做运动补偿需要读取的平均亮度块大小为10.5×10.5,于是第1类位置的概率为(64-10.5)×(32-10.5)64×32=56%,]]>读取第1类位置的参考块不需要DDR SDRAM的ACTIVE命令。第2、3、4类位置需要一次ACTIVE命令,第5、6类位置需要三次ACTIVE命令,但是相继读取的数据都在不同的bank中,即ACTIVE命令可以在前一个bank正在被访问的同时发出,在时间上重叠。
权利要求
1.一种基于AVS的视频硬件解码器的存储空间地址映射方法,其特征在于,包括如下步骤(a)设定每个地址涉及的数据宽度;(b)选取合适的矩形尺寸,把图像划分成多个A矩形;(c)场方式下把A矩形划分成偶块和奇块,帧方式下则不划分;(d)为每个A矩形内的亮度像素分配地址;(e)把色度像素的坐标用图像的亮度像素坐标来表示;(f)为每个A矩形内的色度像素分配地址;(g)得出DDR SDRAM的地址坐标换算公式。
2.如权利要求1所述的基于AVS的视频硬件解码器的存储空间地址映射方法,其特征是,在步骤(a)中,DDR SDRAM的端口宽度为D比特,D是2的整数幂,可能由若干块DDR SDRAM并联而成,从而每个地址能存储D/8个像素。
3.如权利要求1所述的基于AVS的视频硬件解码器的存储空间地址映射方法,其特征是,在步骤(b)中,将W×H的图像范围划分成(W/s)×(H/t)个A矩形,A矩形的大小为s×t,其中宽度s是D的整数倍,高度t和s相同或是s的2倍,另外s和t都须是8的整数倍。
4.如权利要求1所述的基于AVS的视频硬件解码器的存储空间地址映射方法,其特征是,在步骤(c)中,如果是场方式,把A矩形划分成偶块和奇块,偶块和奇块分别由偶数行和奇数行构成,如果是帧方式则不进行划分。
5.如权利要求1所述的基于AVS的视频硬件解码器的存储空间地址映射方法,其特征是,在步骤(d)中,在一个A矩形内部,如果是帧方式,按从左到右、从上到下的顺序给亮度像素分配地址,如果是场方式,先给偶块分配地址,再给奇块分配地址;用该方法从左到右、从上到下地给全部的(W/s)×(H/t)个亮度A矩形分配地址。
6.如权利要求1所述的基于AVS的视频硬件解码器的存储空间地址映射方法,其特征是,在步骤(e)中,用亮度分量的坐标来表示色度像素的位置,4:2:2格式下的色度横坐标乘以2,纵坐标不变,4:2:0格式下的色度横坐标和纵坐标均乘以2;色度包括的Cb和Cr两个分量存放在相邻的两个亮度横坐标的位置上。
7.如权利要求1所述的基于AVS的视频硬件解码器的存储空间地址映射方法,其特征是,在步骤(f)中,在一个A矩形内部,如果是帧方式,按从左到右、从上到下的顺序给色度像素分配地址,如果是场方式,先给偶块分配地址,再给奇块分配地址;用该方法从左到右、从上到下地给全部的(W/s)×(H/t)个色度A矩形分配地址。
8.如权利要求1所述的基于AVS的视频硬件解码器的存储空间地址映射方法,其特征是,在步骤(g)中,DDR SDRAM的地址Addr按{Row,Bank,Col}构成,在帧方式下Addr=[(y/t)×Ws+(x/s)]×(s×tD/8)]]>+(y%t)×tD/8,]]>+(x%s)×1D/8]]>在场方式下Addr=[(y/t)×Ws+(x/s)]×(s×tD/8)]]>+(y%2)×s×(t/2)D/8,]]>+[(y%t)/2]×tD/8]]>+(x%s)×1D/8]]>最后亮度分量和色度分量在存储器中的物理地址将分别加上一个不同的基地址。
全文摘要
一种数字视频编解码技术领域的基于AVS的视频硬件解码器的存储空间地址映射方法。是一种按矩形折叠的地址映射方法,步骤为首先设定每个地址涉及的数据宽度,把图像划分成多个A矩形,如果是场方式还要把A矩形划分成偶块和奇块;然后分别对亮度和色度进行地址映射,帧方式下逐行映射,场方式下先映射偶块再映射奇块;最后得出存储地址坐标换算公式。本发明适用于各种大小的图像,同时支持4∶2∶0和4∶2∶2色度格式,利于硬件实现。它兼顾运动补偿模块、去块效应模块和显示模块的不同读写特点,通过减少ACTIVE命令数和充分利用猝发读写提高了DDR SDRAM的效率。本发明可以广泛应用在基于块的视频解码硬件系统中。
文档编号H04N9/64GK1874511SQ200610028320
公开日2006年12月6日 申请日期2006年6月29日 优先权日2006年6月29日
发明者陆泳, 刘佩林 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1