帧场视频解码中运动矢量存取的控制装置及其方法

文档序号:7596344阅读:160来源:国知局
专利名称:帧场视频解码中运动矢量存取的控制装置及其方法
技术领域
本发明涉及数字视频编/解码技术领域中的一种帧场视频解码中运动矢量存取的控制方法及其装置,尤其是当出现帧场混合解码时运动矢量写入和读取的控制方法及其装置。
背景技术
数字电视、新一代移动通信、宽带网络通信、家庭消费电子这些高技术产业群的共性技术集中在以视音频为主要内容的多媒体信息处理技术上,特别是数据压缩技术上。高效的视频编解码技术是实现高质量、低成本多媒体数据存储与传输的关键。
在整个视频编码中,大部分的编码效率来自于帧间预测使用预测模块来解决视频序列时间上的冗余。运动矢量(Motion Vector,简称MV)在帧间编码中记录块的运动趋势,每个块通过MV所指来获得已经解码重构块,这样只需要编码这两个块的残差即可。
直接模式是B图像编码中最高效的模式,采用直接模式,其前后向运动矢量由后向参考图像的运动矢量推导得到,在码流中可以不对运动矢量信息进行编码(只用一位来标识即可),因此可以减少编码运动矢量信息的比特,有效地提高编码效率。但是由于直接模式的当前帧前后向运动矢量要通过后向参考帧运动矢量根据当前帧与参考帧以及参考帧之间的时域距离来推导,所以在导出直接模式运动矢量必须用到其后向参考图像的运动矢量信息。在软硬件实现时,每个P图像宏块处理完毕,必须将其各个子块的MV存储起来;而对于B图像的直接模式宏块,需要取出对应位置的MV用于导出计算。特别是对于硬件实现,因为整帧的MV数据量较大,是不可能放在视频解码芯片内的,这样就会带来访问解码芯片外部存储器的操作。外部访存是一项耗时的操作,而且,因为外部存储器并不是只为MV预测生成模块服务,所以完成时间不定。传统的方法是需要的时候去取所需MV,当外存控制器不能及时响应时,解码流程停下来等待参考MV取回,从而使整个解码器的解码流程都受到影响,致使解码效率低下。
在现有的视频标准中(如MPEG系列和H.26x系列),MPEG4中的B图像存在直接模式编码。新的H.264标准和我国自主知识产权的AVS Video1.0标准(Audio Video coding Standard Workgroup of China,简称AVS)中也有直接模式编码。对于AVS 1.0,它允许帧场自适应编码,即可以在同一码流中,某些图像采用帧编码,而另一些采用场编码,这样能够自适应的选择最优的编码方式,充分利用帧场编码的优点。但是,帧场自适应编码也带来了直接模式存取的问题,因为当前B图像可能是帧编码,而它的后向参考P图像则可能是场编码,这时B的直接模式帧宏块需要到P的对应场宏块处去取参考MV。
对MV进行存储最直接的方法是不论帧场把参考MV挨个存储到外部存储器缓冲区中。当码流都是确定的帧编码或场编码时,这种方式能够正常工作,直接模式宏块的对应参考宏块都是确定位置的,帧的在后向参考帧同一位置,场的在后向参考场同一位置(第一场的对应后向参考第一场,第二场的对应后向第二场)。然而在对帧场自适应编码的码流进行解码时,这种方法虽然也能工作,但它生成的用于参考MV的地址将不规律,会出现跨行现象,造成外存控制器不能通过突发方式来快速读取,从而影响整体外部存储器使用的效率。
从对外部存储器访问的处理来看,完成访存操作非常耗时,并且外部存储器并不单为MV生成模块服务,可能需要等待对其它模块的服务完成后才能轮到MV生成模块,这样读写操作的时间是不能保证的。频繁向外存控制器发出请求也会影响其它模块的工作效率,应该更好地利用外存的突发读写模式,批量进行操作以提高效率,所以迫切需要新的更有效的技术来解决MV存取带来的问题。

发明内容
本发明所要解决的技术问题在于,针对现有技术的不足,提供一种帧场视频解码中运动矢量存取的控制装置,用于解码时控制直接模式的图像的运动矢量的存取,使外存控制器可以以突出的方式一次读取或写入多个参考MV,缓解了视频解码时MV存取处理对外部存储器的压力,结构简单,易于实现;本发明所要解决的另一个技术问题在于,针对现有技术的不足,提供一种帧场视频解码中运动矢量存取的控制方法,使外存控制器可以以突出的方式一次读取或写入多个参考MV,缓解了视频解码时MV存取处理对外部存储器的压力,提高整体外部存储器的使用效率。
本发明通过如下的技术方案实现视频解码时,无论帧编码还是场编码,P图像各个宏块的MV按照解码次序依次存储,但每奇偶两行的MV交叉并存入一行。这样存储操作不必关心帧场编码,可以按照统一的方式处理。为了避免频繁请求外部存储器响应,采用类似cache缓存的方式,在内部保留一定的存储空间,依次存入MV。当到达一定数量后,一次请求外存控制器,这样外部存储器可以通过突发操作一次写入。
B图像解码时,不论是否是直接模式宏块,按照帧场地址映射关系,采用预取的方法,一次突发读取多个参考MV。每处理一个宏块弹出一个参考MV,如果当前解码块不是直接模式这个参考MV不使用,如果当前解码块是直接模式,则可以直接进行导出计算,通过图像及块间距离的比例关系来计算出前后向MV。
由于外部存储器不只是为MV生成模块服务,还需要为其他的模块服务,所以,响应主控模块的请求进行读写的操作有可能需要等待对其他模块的服务完成才能进行,所以,通过预存和预取的办法,可以使外部存储器读写的操作与正常解码的处理并行进行,尽可能减少MV生成模块等待外存操作的时间。也就是说,当外部存储器对内部缓冲区模块进行读写操作的同时,也在进行解码。对于P图像,解码得到的MV存储到缓冲区模块,对于B图像,为使用过的MV增加脏标识。
本发明所述的装置结构示意图如图1所示一种帧场视频解码中运动矢量存取的控制装置,包括外存控制器、主控模块、地址生成模块、缓冲区模块,其中,所述的地址生成模块用于解码每个图像的起始时确定对当前图像处理的地址生成方式,并将生成的地址送到主控模块;主控模块接收地址生成模块发送来的地址,判断是对于P图像解码时生成的写入地址还是对于B图像解码时生成的读取地址,如是写入地址,则根据该写入地址将P图像的MV写入缓冲区模块,并根据缓冲区模块存入数据的预设数据量,向外存控制器发出向外部存储器请求数据的读取信息;如是读取地址,向外存控制器发出从外部存储器读取数据的请求信息。
外存控制器响应主控模块的请求信息,将缓冲区模块中的数据写入外部存储器,或者将外部存储器中的数据写入缓冲区模块。
在本发明中,因为读取和写入操作在不同的图像解码中发生,每单一图像其操作方式是确定的,这样可将前述预取和预读两个FIFO统一到一个通用FIFO中,根据图像类型来决定其工作方式,所以所述的缓冲区模块可以是一个缓冲区模块,也可以是用于P图像的缓冲区模块和用于B图像的预取缓冲区模块。
另外,本发明所述的缓冲区模块为FIFO模块。
步骤10、主控模块分析当前解码操作图像,如果是I图像,不进行任何处理,等待下一个解码图像;如果是P图像,执行步骤20;如果是B图像,执行步骤30;步骤20、按照解码次序进行P图像宏块解码,每解码完成一个宏块,其对应的MV存入内部缓存中;执行步骤21、22;步骤21、主控模块判断当前存入内部缓数目是否达到预设值,如果没有达到,返回步骤20,如果达到,向外存控制器发送写入请求,外存控制器将内部缓存的数据一次写入外部存储器;步骤22、判断当前P图像处理是否完成,如果没有完成,返回步骤20,如果完成,将内部缓存的剩余MV全部请求写入外部存储器储器;执行步骤10;步骤30、外存控制器将外部存储器中特定数目的P图像的MV读取到内部缓存中;步骤31、按解码次序进行B图像宏块解码,每完成一个宏块的解码,对缓存中的参考MV增加脏标识以标识其使用情况;执行步骤32、33;步骤32、判断内部缓存中具有脏标识的参考MV数目是否达到预设数目,如果达到,则向外存控制器发送请求写入下一组数据的请求,外存控制器向内部缓存中写入下一组参考图像的MV,如果没有达到,返回步骤31;步骤33、判断当前图像所有宏块是否都已处理完毕,如果是,返回步骤10,如果否,返回步骤31。
步骤21中所述的向外部存储器存储数据的请求信息至少包括请求存储信息、存储数量信息所述步骤20中的对应MV存入内部缓存之前,地址生成模块将当前P图像解码宏块位置的地址转换成需要存储MV的地址,P图像宏块解码得到的MV按上述地址存入内部缓存。因为直接模式是取当前解码宏块位置的后向参考图像同一位置宏块的MV来做参考,所以存取MV的地址信息是从宏块的位置获得的所述的转换算法为,若当前P图像解码宏块的地址为(i,j)(即该宏块对应的行、列坐标),则需要存储的MV地址为(i×2+j%2,j/2),也就是说,每奇偶两行当前P图像宏块解码的MV交叉并存入一行。这里%表示求余计算,j%2表示j为偶数行,存储MV的行列坐标为(2i,j/2);若j为奇数行,存储MV的行列坐标为(2i+1,j/2)。
所述用于P图像和B图像解码处理时的内部缓存均可为FIFO缓冲存储器。
所述步骤32中写入下一组数据的请求信息至少包括请求读取信息、读取数量信息。
在所述步骤30包括如下步骤步骤A、判断当前B图像的编码类型及其参考图像的编码类型,如果当前B图像是帧编码,参考图像是帧编码,执行步骤B;如果当前B图像是场编码,参考图像是场编码,执行步骤C;如果当前B图像是帧编码,参考图像是场编码,执行步骤D;如果当前B图像是场编码,参考图像是帧编码,执行步骤E;步骤B若当前宏块地址为(i,j),则需要从外部存储器读取的地址为(i×2+j%2,j/2)。这里的地址生成方式与P图像时存储MV的地址生成方式对应。当处理下一宏块时,即地址变为(i+1,j),需要从外部存储器读取地址即在前一地址基础上加2即可得到。这样将当前宏块地址依次加2即可按照帧-帧地址生成方式获得需要读取的参考MV地址,外存控制器按照得到的地址,根据主控模块请求的写入个数,以突发方式将MV读入;步骤C前场后场参考的地址生成方法与步骤B类似,根据当前解码宏块地址计算得到需要读取的地址后,将当前地址依次加2即可按照场-场地址生成方式获得参考MV的地址,外存控制器按照得到的地址以及主控模块请求的写入个数,以突发方式将外部存储器中P图像的MV写入内部缓存中;
步骤D按照如下的对应关系得到参考MV的地址若当前宏块地址为(i,j),则需要从外部存储器读取的地址为(i×2+(j%4)/2,j/4),外存控制器按照得到的地址以及主控模块请求的写入个数,将外部存储器中P图像的MV写入内部缓存中;步骤E按照如下的对应关系得到参考MV的地址若当前宏块地址为(i,j),则需要从外部存储器读取的地址为第一场为(i×2j),第二场为(i×2,j-mb_height_fld)或者,第一场为(i×2+1,j),第二场为(i×2+1,j-mb_height_fld)。外存控制器按照得到的地址以及主控模块请求的写入个数,将外部存储器中P图像的MV写入内部缓存中。
所述增加的脏标识的过程如下,判断B图像的解码模块,如果按照直接模式进行解码,则从内部缓存获得参考MV进行解码,并对使用的参考MV增加脏标识;如果不是按照直接模式进行解码,则直接为当前参考MV增加脏标识。
综上所述,本发明通过缓存和预取的方式,缓解了视频解码时MV存取处理对外部存储器的压力,能够有效改善整个系统的性能;结合帧场自适应的需求,采用简单的地址映射方式,满足帧编码、场编码以及帧场自适应编码的应用,硬件装置结构简洁,可用标准的FIFO实现。


图1是本发明所述装置的结构示意图;图2是本发明所述方法的流程图;图3是AVS 1.0视频帧编码P图像参考图像示意图;图4是AVS 1.0视频帧编码B图像参考图像示意图;图5是AVS 1.0视频前帧后帧直接模式处理示意图;图6是AVS 1.0视频前场后场直接模式处理示意图;
图7是AVS 1.0视频前帧后场直接模式处理示意图;图8是AVS 1.0视频前场后帧直接模式处理示意图;图9是AVS 1.0视频MV隔行存储组织的示意图;图10是AVS 1.0视频MV光栅扫描存储组织的示意图;图11是AVS 1.0视频前帧后帧地址转换示意图;图12是AVS 1.0视频前帧后场地址转换示意图;图13是AVS 1.0视频前场后帧地址转换示意图。
具体实施例方式
以下结合附图和具体的实施例对本发明进行详细的说明。
以下结合具体的实施例对本发明做进一步详细的说明(以AVS Video1.0编码标准为例)本发明提供了一种用于视频解码的运动矢量存入读取的方法及其装置,特别是考虑帧场混合编解码时,根据其特点采用的地址生成策略,能够更有效的利用外部存储器带宽,在运动矢量生成模块需求更复杂的情况下进一步改善系统的性能。所提供的存取装置设计简单,能够运用标准的FIFO实现其控制操作,便于硬件的实现。
本发明所述的装置结构示意图如图1所示一种帧场视频解码中运动矢量存取的控制装置,包括外存控制器1、主控模块2、地址生成模块3、内部缓冲区模块4,其中,所述的地址生成模块3用于每个图像解码起始时确定对当前图像处理的地址生成方式,并将生成的地址送到主控模块2;主控模块2接收地址生成模块3发送来的地址,判断是对于P图像解码时生成的写入地址还是对于B图像解码时生成的读取地址,如是写入地址,则根据该写入地址将P图像的MV写入内部缓冲区模块4,并根据内部缓冲区模块4存入数据的预设数据量,向外存控制器1发出向外部存储器存储数据的请求信息;如是读取地址,向外存控制器1发出从外部存储器读取数据的请求信息。
外存控制器1响应主控模块2的请求信息,将内部缓冲区模块4中的数据写入外部存储器,或者将外部存储器1中的数据写入内部缓冲区模块4。
在本发明中,所述的内部缓冲区模块4为FIFO模块,该FIFO模块可以是一个,也可以是针对P图像的预存FIFO模块,也可以是针对B图像的预读模块。
在本发明中,因为读取和写入操作在不同的图像解码中发生,每单一图像操作方式是确定的,这样可将前述预存和预读两个FIFO统一为一个通用FIFO,根据图像类型来决定其工作方式,所以所述的缓冲区模块可以是一个缓冲区模块,也可以是用于P图像的预存FIFO模块和用于B图像的预读FIFO模块。
本发明所述方法的流程参见图2所示步骤10、主控模块分析当前解码操作图像,如果是I图像,不进行任何处理,等待下一个解码图像;如果是P图像,执行步骤100;如果是B图像,执行步骤200;步骤100、按照解码次序进行P图像宏块解码;步骤101、地址生成模块将当前P图像宏块解码的宏块地址转换成需要存储的MV地址,所述的转换算法为,若当前P图像宏块解码的MV地址为(i,j),则需要存储的地址为(i×2+j%2,j/2),也就是说,每奇偶两行当前P图像宏块解码的MV交叉并存入一行;步骤102、将P图像宏块解码得到的MV按上述地址存入内部缓冲区模块;并行执行步骤103、105;步骤103、主控模块判断当前存入内部缓冲区模块的数量是否达到预设值,如果没有达到,返回步骤100,如果达到,向外存控制器发送向外部存储器存储数据的请求信息,所述的请求信息至少包括请求存储信息、存储数量信息;步骤104、外存控制器将内部缓存的数据一次写入外部存储器;步骤105、判断当前P图像处理是否完成,如果没有完成,返回步骤100,如果完成,将内部缓冲区中的剩余MV全部请求写入外部存储器,返回步骤10。
步骤200、判断当前B图像的编码类型及其参考图像的编码类型,如果当前B图像是帧编码,参考图像是帧编码,执行步骤201;如果当前B图像是场编码,参考图像是场编码,执行步骤202;如果当前B图像是帧编码,参考图像是场编码,执行步骤203;如果当前B图像是场编码,参考图像是帧编码,执行步骤204;步骤201将当前地址依次加2即可获得按照帧-帧地址生成方式得到参考MV的地址,外存控制器按照得到的地址,将外部存储器中P图像的MV写入内部缓冲区模块中。
步骤202将当前地址依次加2即可获得按照无场-场地址生成方式得到参考MV的地址,外存控制器按照得到的地址,将外部存储器中P图像的MV写入内部缓冲区模块中。
步骤203按照如下的对应关系得到参考MV的地址若当前宏块地址为(i,j),则需要存储的地址为(i×2+(j%4)/2,j/4),外存控制器按照得到的地址,将外部存储器中P图像的MV写入内部缓冲区模块中。
步骤204按照如下的对应关系得到参考MV的地址若当前宏块地址为(i,j),则需要存储的地址为第一场为(i×2,j),第二场为(i×2,j-mb_height_fld)或者,第一场为(i×2+1,j),第二场为(i×2+1,j-mb_height_fld)。外存控制器按照得到的地址,将外部存储器中P图像的MV写入内部缓冲区模块中。
步骤205、按解码次序进行B图像宏块解码,每完成一个宏块的解码,对缓存中的参考MV增加脏标识以标识其使用情况;并行执行步骤206、207;步骤206、判断内部缓冲区模块中具有脏标识的参考MV数目是否达到特定数目,如果达到,则向外存控制器发送请求写入下一组数据的请求,所述的请求信息至少包括请求读取信息、读取数量信息,外存控制器向内部缓存中写入下一组参考图像的MV,如果没有达到,返回步骤205;步骤207、判断当前图像所有宏块是否都已处理完毕,如果否,返回步骤205,如果是,返回步骤10。
AVS 1.0视频标准支持单纯的帧编码、场编码,以及帧场自适应编码(即Picture Adaptive Frame Field,简称PAFF)。AVS 1.0中两个非B图像间最多可以有2个B图像,参考图像个数对于P图像是前面第一帧和前面第二帧(图3所示帧编码情形),而B图像是前后各一帧(图4所示帧编码情形)。
对于直接模式的处理,因为帧场混合编码,可以有下面四种方式前帧后帧方式(当前B图像帧编码,后向P图像帧编码)处理方式见图5。当前帧直接模式宏块的参考MV从后向帧同一宏块位置处取得。当前解码宏块位置为(i,j),则其参考宏块就在后向参考图像的同一位置(i,j)。就是说当前是哪个位置的宏块,那么它的参考宏块就是在后向参考图像的同一位置处。注意这里的坐标,因为这里是说明原理,并没有交错来存储,故地址是完全对应的。
前场后场方式(当前B图像场编码,后向P图像场编码)处理方式见图6。当前场直接模式宏块的参考MV从后向同场的同一宏块位置处取得,即当前第一场对应后向第一场,当前第二场对应后向第二场。与前帧后帧的方式相似,但其分别是按各自场来对应参考。
前帧后场方式(当前B图像帧编码,后向P图像场编码)处理方式见图7。当前帧直接模式宏块的参考MV从后向第一场的同一宏块水平位置但一半的宏块垂直位置处取得。这是因为在帧中8×16的块实际上是由上下两场各一个8×8块按行交叉而成的。前帧后场即当前是帧,但后向参考为场,后向顶底场各有一个对应位置的8×8块,与当前8×16块对应。此时有2个参考MV可供选择,按照统一的方式都选择第一场即可。因为一帧对应两场,单场的高度是帧的一半,所以取垂直地址一半处。
前场后帧方式(当前B图像场编码,后向P图像帧编码)处理方式见图8。当前场直接模式宏块的参考MV从后向帧的同一宏块水平位置但两倍的宏块垂直位置处取得。与前帧后场方式相反,此时需从帧位置读取,故垂直地址为场坐标的2倍。因为后向帧的一个8×16块,对应前向第一和第二场的两个8×8块,帧中16×16宏块只能拆成场中16×8的子块,下半部分需要从帧中下一宏块位置(垂直方下面)处得到。此时每场的一个宏块需要读取参考帧对应两个宏块数据。
对外部存储器的读写操作分别通过预存FIFO和预读FIFO,批量操作能够提高读写效率。但是因为读写处理是在不同的图像分别处理的,在P图像只写不读,在B图像只读不写,所以这里只需要一个FIFO来完成预取和缓存操作。
为了有效的访问外部存储器,尽可能地通过突发方式来连续读取数据,MV数据存储采用偶奇行数据交错存储方式,两行合并成一个存储行。因为外存控制器能够支持有规律的地址增加,这里的每次地址增2方式存储是可行的。
如果不采用这种交错的方式,当“前帧后场”参考的时候,需要每处理一个宏块,读取逻辑上隔行的两个宏块数据,这将不利于突发方式处理。而改为交错可以避免这一问题,对其他读取的影响是原来的连续取数,变为间隔取数。这对外存控制器的影响很小,只需将原有的突发处理时地址每次自动增一,变为自动增二。
下面详细分析存储和读取操作的地址生成方式
存储MV(P图像)帧存储按照解码顺序依次存储,但每两行并入一行存储。

Current MB pos表示当前解码宏块的坐标。Store MB pos表示需要存储MV的地址。下面各表表头意义相同。
存储如图9所示,阴影块表示偶行宏块MV,白色块表示奇行宏块MV。
场存储按照解码顺序依次存储,从first field到second field,先存first field的MV,然后是second field的MV。同样是每两行并入一行存储。

这里的(i,j)表示从解码次序来看,第一场和第二场先后依次解码,其各个宏块的坐标数值是连续的。虽然都是(i,j),但在各自场意义不是相同的。用mb_height_fld表示场中垂直方向的宏块数值。对于第一场,(i,j)的垂直坐标j一定在1到mb_height_fld范围之内,而对于第二场,其垂直坐标在mb_height_fld到2×mb_height_fld范围之内。
因为存储时,第一场的奇偶行拼成一行,如图10所示存储区的1部分,处理完毕,接着将第二场的奇偶行继续往下写入,即存储区的2部分,其写入地址实际上也是连续的。所以按照这种奇偶交叉写入的方式对帧编码和场编码都是一致的,P图像处理时只需统一按奇偶交叉方式写入即可。
读取MV(B图像)因为PAFF有4种情况出现,读取操作也随之对应变化,根据前后帧场的不同,地址生成也有4种不同方式。
解码当前图像时,当已获知当前编码方式后,结合后向参考图像的编码方式,可以确定当前图像取MV的地址生成方式。每一个解码图像按照同一地址生成方式进行处理。
图10示意连续存储(非交叉存储)后取数的操作过程。可以看到在d)前场后帧情况时需要逻辑上隔行处理。改为按行交叉存储后a),b),c)三种情况都需要跳着取数,而d)情况可以连续取数。
前帧后帧当前宏块与参考宏块一一对应,地址挨个加2即可获得。

MV地址转换的示意见图11。
位置一一对应,但因为是奇偶交叉存储,故存在转换关系。垂直地址变为一半,水平地址根据奇偶行进行偏移。
如图11所示,每个小格为一个8×8子块,①②③④表示偶行一个宏块的4个子块,其坐标(i,j),⑤⑥⑦⑧表示对应同一个i坐标的下一垂直位置处宏块的4个子块,其坐标(i,j+1)。解码时需要按图11左侧图所示从后向参考图像中取对应的参考MV。但因为交叉存储,实际的存储是按图11右侧进行的。所以地址转换时,垂直位置变为一半(即j/2),水平位置坐标根据奇偶行来进行偏移(交叉后水平坐标变为2i,如果是奇行则需要偏移1,即2i+1)。
前场后场当前宏块与参考宏块一一对应,地址挨个加2即可获得。但因为此时第二场参考MV是存储在第二场参考MV之后的,其垂直位置需要加上垂直偏移,即每场垂直方向有mb_height_fld大小的偏移。

这里的(i,j)是从解码次序来看,这两场依次进行解码,地址依次增加,并不是在各自场中的绝对地址。以垂直方向mb_height_fld为界,大于则为第二场,小于则为第一场。因为垂直坐标j已经包含偏移信息,在地址转换计算时可以直接参与运算。
前帧后场根据前面的分析,帧所有宏块都只需读取后向参考第一场的MV数据。当前解码帧的垂直方向两个MB对应后向第一场的一个MB,也就是说解码帧中奇偶两行读取后向第一场的同一行。当解码偶数行结束,读取地址指针不需要移到后向第一场的下一行,当前参考行的MV需要重新读取;而当解码奇数行结束,读取地址指针移到后向第一场的下一行。

MV地址转换的示意见图12。图12中每个方格代表8×8子块。图12左侧4个宏块坐标为(i,j),(i,j+1),(i,j+2),(i,j+3)。因为帧中8×16对应顶底两场各一个8×8子块,也就是说(i,j)宏块对应场中两个8×8子块。如图右侧所示,交叉存储两个宏块,8×8子块①的MV提供给左侧垂直两个①标识的8×16子块使用,后面的圆圈数字同样方式分别对应。可以看到4行宏块所需MV在后向参考图像一行中,所以垂直地址按1/4值计算。水平位置如果是在4行中的前两行,取参考的第一个宏块(即2i),否则取后一个宏块(即2i+1),这也是模4再除2的原因(即(j%4)/2)。
前场后帧场中8×8子块参考MV来自帧中8×16宏块,这样场中一个16×16宏块的参考MV需要帧中16×32大小的块,即垂直两个宏块。因为交叉存储,参考MV数据挨个读取即可得到垂直两个宏块的参考MV数据。顶底场所需参考MV是来自相同的垂直两个宏块,但它们处理的时间不相同,这样需要分两次重复读取,顶底场各一次操作。先对于第一场的请求,依次读取每一行的MV参考数据,然后对于第二场的请求,回到第0行,重新再逐行读取所有数据。

转换公式因为第二场的j是大于mb_height_fld的,而交叉存储后存储区域垂直方向mb_height_fld个宏块MV数据,这样减去mb_height_fld得到在场中的绝对地址,从使读取操作回到第0行再逐行进行。因为每个宏块需要两个后向参考宏块的信息,所以此时有两个地址,它们是连续的。
MV地址转换的示意见图13。左侧两个宏块分别表示顶底场的宏块,它们的参考MV来自同一位置。右侧表示交叉存储的两个宏块。帧中8×16的子块即(①③)为场中8×8子块提供参考MV,即左侧的两场中①子块。同理可知其它的对应关系。
通过分析各种情况下地址转换的方式,可以在每一图像处理的开始确定性地选择当前帧场处理的地址转换模块,从而可以解决帧场混编所带来的直接模式参考地址转换的问题。
最后所应说明的是以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种帧场视频解码中运动矢量存取的控制装置,包括外存控制器,其特征在于,还包括主控模块、地址生成模块、内部缓冲区模块,其中,所述的地址生成模块用于在每个图像解码起始时确定对当前图像处理的地址生成方式,并将生成的地址送到主控模块;所述的主控模块接收地址生成模块发送来的地址,判断是对于P图像解码时生成的写入地址还是对于B图像解码时生成的读取地址,如是写入地址,则根据该写入地址将P图像的MV写入内部缓冲区模块,并根据内部缓冲区模块存入数据的预设数据量,向外存控制器发出向外部存储器存储的请求信息;如是读取地址,向外存控制器发出从外部存储器读取数据的请求信息。外存控制器响应主控模块的请求信息,将缓冲区模块中的数据写入外部存储器,或者将外部存储器中的数据写入内部缓冲区模块。
2.根据权利要求1所述的帧场视频解码中运动矢量存取的控制装置,其特征在于,所述的内部缓冲区模块包括用于P图像的预存缓冲区模块和用于B图像的预取缓冲区模块。
3.根据权利要求1或2所述的帧场视频解码中运动矢量存取的控制装置,其特征在于,所述的内部缓冲区模块为FIFO模块。
4.一种帧场视频解码中运动矢量存取的控制方法,其特征在于,包括如下步骤步骤10、主控模块分析当前解码操作图像,如果是I图像,不进行任何处理,等待下一个解码图像;如果是P图像,执行步骤20;如果是B图像,执行步骤30;步骤20、按照解码次序进行P图像宏块解码,每解码完成一个宏块,其对应的MV存入内部缓冲区模块;并行执行步骤21、22;步骤21、判断当前存入内部缓冲区的MV数量是否达到预设值,如果没有达到,返回步骤20,如果达到,向外存控制器发送向外部存储器存储数据的请求信息,外存控制器根据请求信息将内部缓冲区模块中的数据一次写入外部存储器;步骤22、判断当前P图像处理是否完成,如果没有完成,返回步骤20,如果完成,将内部缓冲区模块的剩余MV全部请求写入外部存储器;执行步骤10;步骤30、外存控制器将外部存储器中预设数量的P图像的MV读取到内部缓冲区模块;步骤31、按解码次序进行B图像宏块解码,每完成一个宏块的解码,对内部缓冲区模块中的参考MV增加脏标识以标识其使用情况;并行执行步骤32、33;步骤32、判断内部缓存中具有脏标识的参考MV数量是否达到预设数量,如果达到,则向外存控制器发送写入下一组数据的请求信息,外存控制器根据请求信息向,内部缓冲区模块中写入下一组参考图像的MV,如果没有达到,返回步骤31;步骤33、判断当前图像所有宏块是否都已处理完毕,如果是,返回步骤10,如果否,返回步骤31。
5.根据权利要求4所述的帧场视频解码中运动矢量存取的控制方法,其特征在于,所述步骤20中的将对应MV存入内部缓冲区模块之前,地址生成模块将当前P图像解码宏块位置的地址转换成需要存储MV的对应地址,主控模块将P图像宏块解码得到的MV按上述地址存入内部缓冲区模块。
6.根据权利要求5所述的帧场视频解码中运动矢量存取的控制方法,其特征在于,所述的转换算法为,若当前P图像解码宏块的地址为(i,j),需要存储的MV地址为(i×2+j%2,j/2)。
7.根据权利要求4所述的帧场视频解码中运动矢量存取的控制方法,其特征在于,所述步骤21中用于主控模块判断当前存入内部缓存数量是否达到的预设值为内部缓冲区模块容量的一半。
8.根据权利要求4所述的帧场视频解码中运动矢量存取的控制方法,其特征在于,所述步骤21中向外部存储器存储数据的请求信息至少包括请求存储信息、存储数量信息。
9.根据权利要求4所述的帧场视频解码中运动矢量存取的控制方法,其特征在于,所述步骤30包括如下步骤步骤A、判断当前B图像的编码类型及其参考图像的编码类型,如果当前B图像是帧编码,参考图像是帧编码,执行步骤B;如果当前B图像是场编码,参考图像是场编码,执行步骤C;如果当前B图像是帧编码,参考图像是场编码,执行步骤D;如果当前B图像是场编码,参考图像是帧编码,执行步骤E;步骤B若当前宏块地址为(i,j),则需要从外部存储器读取的地址为(i×2+j%2,j/2),当处理下一宏块时,即地址变为(i+1,j),存储地址即在前一从外部存储器读取的地址基础上加2即可得到。这样将当前宏块地址依次加2即可按照帧-帧地址生成方式获得需要读取的参考MV地址,外存控制器按照得到的地址,根据主控模块的请求信息,以突发方式将MV读入;步骤C若当前宏块地址为(i,j),则需要从外部存储器读取的地址为(i×2+j%2,j/2),根据当前解码宏块地址计算得到需要读取的地址后,将当前地址依次加2即可按照场-场地址生成方式获得参考MV的地址,外存控制器按照得到的地址以及主控模块的请求信息,以突发方式将外部存储器中P图像的MV写入缓冲区模块中;步骤D按照如下的对应关系得到参考MV的地址若当前宏块地址为(i,j),则需要从外部存储器读取的地址为(i×2+(j%4)/2,j/4),外存控制器按照得到的地址以及主控模块的请求信息,将外部存储器中P图像的MV写入内部缓存中;步骤E按照如下的对应关系得到参考MV的地址若当前宏块地址为(i,j),则需要从外部存储器读取的地址为第一场为(i×2,j),第二场为(i×2,j-mb_height_fld)或者,第一场为(i×2+1,j),第二场为(i×2+1,j-mb_height_fld),这里所述的mb_height_fld表示单场垂直方向的宏块数目;外存控制器按照得到的地址以及主控模块的请求信息,将外部存储器中P图像的MV写入内部缓存中。
10.根据权利要求4所述的帧场视频解码中运动矢量存取的控制方法,其特征在于,所述步骤31中增加脏标识的过程如下主控模块判断B图像的解码模式,如果按照直接模式进行解码,则从缓冲区模块获得参考MV进行解码,并对使用的参考MV增加脏标识;如果不是按照直接模式进行解码,则直接为当前参考MV增加脏标识。
11.根据权利要求4或9所述的帧场视频解码中运动矢量存取的控制方法,其特征在于,所述步骤骤32中写入下一组数据的请求信息至少包括请求读取信息、读取数量信息。
12.根据权利要求4所述的帧场视频解码中运动矢量存取的控制方法,其特征在于,所述步骤32中用于判断内部缓存中具有脏标识的参考MV数目是否达到的预设数量为内部缓冲区模块容量的一半。
13.根据权利要求4-10任一所述的帧场视频解码中运动矢量存取的控制方法,其特征在于,所述的内部缓冲区模块为FIFO模块。
全文摘要
本发明公开了一种帧场视频解码中运动矢量存取的控制装置和方法,所述的装置包括外存控制器、主控模块、地址生成模块、内部缓冲区模块,其中,所述的地址生成模块用于每个图像解码起始时根据帧场参考信息确定对当前图像处理的地址生成方式,并将生成的地址送到主控模块;主控模块接收地址生成模块发送来的地址,根据该地址将P图像的MV写入内部缓冲区模块,或者向外存控制器发出从外部存储器读取所述地址中数据的请求信息;外存控制器响应主控模块的请求信息,将外部存储器中的数据写入缓冲区模块,或者将内部缓冲区模块中的数据写入外部存储器储存;本发明缓解了视频解码时MV存取处理对外部存储器的压力,能够有效改善整个系统的性能,硬件装置结构简洁。
文档编号H04N7/26GK1589019SQ200410070029
公开日2005年3月2日 申请日期2004年8月5日 优先权日2004年8月5日
发明者解晓东, 吴迪, 贾惠柱, 生滨, 郑俊浩, 张鹏, 邓磊, 张力, 张帧睿, 王忠立, 高文 申请人:联合信源数字音视频技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1