CN101466036A - 基于avs的运动矢量预测流水并行设计方法 - Google Patents
基于avs的运动矢量预测流水并行设计方法 Download PDFInfo
- Publication number
- CN101466036A CN101466036A CN 200710303731 CN200710303731A CN101466036A CN 101466036 A CN101466036 A CN 101466036A CN 200710303731 CN200710303731 CN 200710303731 CN 200710303731 A CN200710303731 A CN 200710303731A CN 101466036 A CN101466036 A CN 101466036A
- Authority
- CN
- China
- Prior art keywords
- macro block
- sub
- vector prediction
- block
- motion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于AVS视频编码标准的运动矢量预测流水并行设计方法。根据对外存数据的存取访问特点,AVS运动矢量预测可以设计成如下2部分来实现:(1)宏块模式解析,确定每个宏块的宏块模式对应的宏块划分方式下的各个子块进行运动矢量预测的具体运算过程;(2)子块运动矢量预测生成,完成每个子块运动矢量预测的实际运算。其优点在于,实现了读外存操作和写外存操作分离,使得运动矢量预测以宏块编码模式对应的宏块划分方式下的子块大小为单位进行流水并行处理。
Description
技术领域
本发明涉及数字视频编解码的集成电路设计领域,具体是一种基于AVS(数字音视频编解码技术标准)的动矢量预测流水并行设计方法。
背景技术
AVS是我国第一个具有自主知识产权的数字音视频信源标准,它的编码效率与国际标准MPEG-4/H.264相当,对比于传统的视频编码标准(如MPEG-2),AVS的编码复杂度显著增加,宏块编码类型和块大小都变得更加多样化。例如,AVS采用了可变块大小的运动补偿,即AVS可以采用16x16、16x8、8x16和8x8共四种宏块划分方式。每种划分方式下,每个子块都分配一组运动矢量(Motion vector,以下简称MV)。同时,不同宏块划分方式下的每个子块的运动矢量都是根据当前块空间上相邻块或者时间相邻块的运动矢量计算得到(具体细节请参考AVS标准文档)。
这些都使得在AVS视频硬件解码器设计与实现中,MV的预测和生成变得极其复杂,极大地增加了软硬件实现难度。例如,由于AVS采用了可变块大小运动补偿,导致进行运动补偿的块大小不一致,运动矢量预测在硬件实现上会带来控制复杂的问题。运动矢量预测的实现效率极大影响视频解码器的整体性能。
根据AVS标准中的运动矢量生成算法,我们知道,运动矢量预测是以宏块编码类型所规定的子块为单位进行的,同时每种宏块类型不同,其对应的运动矢量预测过程也不同。尤其对于采用B_8 x 8模式编码的宏块,每个宏块的4个8x8子块都有各自的子块类型。根据AVS标准内容可知,根据宏块编码类型以及对应的宏块划分方式,要生成一个宏块的全部子块的所有MV需要考虑多种组合,处理流程非常复杂。
如果直接采用AVS原始的MV预测生成算法来实现硬件模块,将导致很复杂的控制模块。原因在于如果从硬件实现上遵循AVS的运动矢量预测的原始算法,根据宏块类型来处理,会造成处理分支多,控制逻辑复杂,而且交互配合困难,无法实现流水处理,且并行度低,不利于实现AVS实时高清解码器。
发明内容
本发明要解决的技术问题是克服上述不足,提供一种基于AVS的运动矢量预测流水并行设计方法,使得运动矢量预测操作以宏块编码模式对应的宏块划分方式下的子块为单位流水并行,满足AVS实时高清视频解码的需求。
具体上本发明是一种基于AVS的运动矢量预测流水并行设计方法,包括两个部分:(1)宏块模式解析。读取存储于VLD_FIFO中每个宏块的模式信息,根据宏块模式确定该模式对应的宏块划分方式下的各个子块进行运动矢量预测的不同运算过程,具体分为两种:对于宏块编码模式不是B_8 x 8的宏块,只需要解析出与宏块编码模式对应的宏块划分方式下的各个子块进行运动矢量预测的具体运算过程。对于采用B_8 x 8模式编码的宏块,还需要根据当前宏块中每个8 x 8块的子块模式来进行解析;(2)子块运动矢量预测生成。读取存储与CMD_FIFO中每个子块的命令字,根据命令字来指示完成每个子块运动矢量预测的实际运算;
宏块模式解析与VLD模块之间采用一个宏块解码信息FIFO连接。该FIFO平衡VLD和宏块模式解析模块处理速度,形成宏块单位的流水并行处理。
对于宏块编码类型或者子块类型是跳过模式(Skip)、直接模式(Direct)或对称模式(Symmetric)的块,提前获得后向参考图像上与当前块位置相对应的块的编码方式,也就是提前进行外存的读操作。这样对所有的宏块编码类型或者子块类型,都可以解析它们进行运动矢量预测需要进行的运算过程。
采用以宏块编码模式对应的宏块划分方式下的子块为单位进行处理,不是固定地使用8 x 8块为单位进行处理。
采用命令字的方式来描述每个子块需要进行运动矢量预测的运算过程,简化了运动矢量预测的处理控制过程。
子块运动矢量预测生成模块与宏块模式解析模块之间采用一个命令字FIFO连接。该FIFO平衡宏块模式解析模块与子块运动矢量预测模块的处理速度,形成子块流水并行处理。
利用子块的命令字来指示状态机对功能模块进行控制,完成子块的运动矢量预测,便于运动矢量预测的控制模块实现。
采用以宏块编码模式对应的宏块划分方式下的子块为单位存储解码运动信息,即进行外存的写操作。实现了读外存操作和写外存操作的分离。
综上所述,该设计方案利于硬件实现,能够兼顾可变长解码模块和参考数据获取模块的不同处理速度,有效地实现了流水并行处理,提高了运动矢量预测的处理速度。在减少硬件实现复杂度和提高流水并行度上,都具有优势。
本发明主要面向AVS高清视频解码,但是不仅仅局限于解码AVS高清视频。改变宏块解析模块的解析过程和子块运动矢量预测模块的控制流程,可以使该流水实现方法适用于其他视频标准的解码器,例如H.264/AVC。
附图说明
图1是本发明实施实例使用的运动矢量预测总体结构图;
图2是宏块模式解析模块的组成图;
图3是子块运动矢量预测模块的组成图;
图4是本发明实施实例使用的子块运动矢量预测状态机示意图和命令字格式说明;
具体实施方式
本发明的具体实施过程如下:
如图1所示,运动矢量预测模块由两个FIFO:VLD_FIFO和CMD_FIFO,以及宏块模式解析模块和由状态机进行控制的子块运动矢量预测模块组成。
每个宏块经过VLD解码后,获得宏块在图像中的序号、宏块中每个子块的编码模式以及可能含有的参考图像索引和运动矢量残差等信息。VLD模块将每个解码后的宏块信息存入VLD_FIFO。子块模式解析模块从VLD_FIFO中获取每个宏块的解码信息,生成每个宏块编码模式对应的宏块划分方式下的子块的命令字,并将其存入CMD_FIFO。
宏块解析模块包括参考索引计算模块、后向参考图像读取模块、指令字存储地址计算模块和指令字填充等功能模块,如图2所示。因为宏块解析模块可能需要访问外存,例如当宏块编码模式为直接模式(Direct)时,这时宏块解析生成子块命令字的速度不确定。此时,VLD_FIFO可以起到缓冲调节VLD模块和子块模式解析速度的作用。开始工作后,宏块解析模块从VLD_FIF0中读取宏块类型信息,参考索引计算模块根据宏块类型计算参考索引。如果该宏块是B_Skip,B_Direct_16×16、SB_Direct_8×8类型,则需要通过后向参考图像读取模块从相关的RAM中读取参考图像的信息。同时指令字存储地址计算模块根据宏块类型计算指令字存储RAM中的地址并读取数据。之后指令字填充模块根据得到的信息生成指令字,并送到CMD_FIF0中。
CMD_FIFO用于存储子块的命令字。因为子块运动矢量预测模块在完成预测后,需要将运动矢量等信息写入外存,这样该模块速度不是确定的。此时,CMD_FIFO可以起到缓冲和调节子块模式解析速度和由状态极控制的子块运动矢量生成模块的速度。使得子块运动矢量生成模块可以子块为单位进行并行流水操作。
子块运动矢量预测模块为本发明的核心模块,由它来实际完成运动矢量预测的实际算法。它的功能模块包括主控制器、Read-ABCD-Flag、DirForm、Media、MVD-ADD、Sym、Copy、Store、Read-BorC、Distance、Pred-1和Scale功能子模块。各个功能子模块功能描述如下:
主控制器:解析从CMD-FIFO传输过来的命令字,根据命令字的内容来控制其它功能子模块的运行。
Read-ABCD-Flag:从片上内存读取相邻BCD块的标志信息。
DirForm:完成Direct模式的运动矢量生成。
Media:完成运动矢量预测操作中的准中值功能。
MVD-ADD:完成运动矢量预测值与运动矢量残差的相加。
Sym:完成对称模式中后向运动矢量生成。
Copy:检测和拷贝生成的子块运动信息到片上寄存器。
Store:存储前一个宏块的运动信息到片上内存。
Read-BorC:从片上内存中读取B或C位置的运动矢量信息到寄存器。
Distance:用于计算块距离。
Pred-I:完成运动矢量预测最前部分操作。
Scale:完成运动矢量预测中的缩放操作。
子块运动矢量预测利用状态机来进行控制各个功能子模块的执行,而状态机使用了命令字来指示状态机进行状态跳转,最终完成运动矢量的预测生成。每个子块的运动矢量预测不一定经过所有的状态,而是根据实际生成的状态字经过不同的状态。例如对前向或后向运动矢量的预测处理流程为:经过Read-ABCD-Flag和Pred-I模块后(1)如果判断“运动矢量预测值为相邻块A的值,或相邻块ABCD都不可用”,则状态机直接跳转到MVD_ADD状态;(2)如果判断“运动矢量预测值是相邻块B或C的值”,则状态机直接跳转到Median&ReadBorC状态,从片上RAM中读取B或C的值,然后跳转到MVD_ADD状态;(3)如果判断“运动矢量需要经过A、B、C进行缩放”,则状态机依次经过Pred_Scale_A、Pred_Scale_B、Pred_Scale_C和Median&ReadBorC状态,然后经过MVD_ADD和Copy&Store状态。
对于其它模式的处理方法与上面类似,只是根据宏块类型选择相关的处理流程和处理模块即可。
本发明根据宏块编码类型对应的宏块划分方式下的子块作为单位进行运动矢量预测。运动矢量预测模块分为两部分实现,它们之间采用命令字存储FIFO连接,形成了流水结构,使得宏块的运动矢量预测以块为单位进行流水并行操作,达到了很高的并行度,可以满足AVS高清码流解码器对运动矢量预测的速度需求。
Claims (6)
1.一种基于AVS的运动矢量预测流水并行设计方法,其特征在于将整个运动矢量的计算分成两部分,其一是宏块模式解析,主要用于确定每个宏块所需要的具体操作,另一是子块运动矢量预测生成,主要用于运动向量MV的生成,其中宏块模式解析模块负责读取存储于VLD_FIFO中每个宏块的模式信息,确定该模式对应的宏块划分方式下的各个子块进行运动矢量预测的具体运算过程,子块运动矢量预测生成模块,负责读取存储与CMD_FIFO中每个子块的命令字,根据命令字来指示状态机控制完成每个子块进行运动矢量预测的实际流程。
2.如权利要求1所述的基于AVS的运动矢量预测流水并行设计方法,其特征在于所述宏块模式解析与VLD模块之间采用一级FIFO进行连接,该FIFO缓存VLD解码得到的各个宏块中关于帧间预测的信息,使用FIFO进行缓存是为了平衡VLD和宏块模式解析模块处理速度上可能存在的波动,形成宏块单位的流水并行处理。
3.如权利要求1所述的基于AVS的运动矢量预测流水并行设计方法,其特征在于所述子块运动矢量预测生成模块与宏块模式解析模块之间使用FIFO进行连接宏块模式解析模块生成的各个宏块所需要进行运动矢量预测的操作命令字,这两个模块间使用FIFO进行缓存,其目的同样是为平衡宏块模式解析模块与子块运动矢量预测生成模块之间处理速度的不平衡,形成子块流水并行处理。
4.如权利要求1或2所述的基于AVS的运动矢量预测流水并行设计方法,其特征在于所述宏块模式解析模块对于宏块编码模式不是B_8x8的宏块,只需要解析出与宏块编码模式对应的宏块划分方式下的各个子块进行运动矢量预测的具体运算过程,对于采用B_8x8模式编码的宏块,还需要根据当前宏块中每个8x8块的子块模式来进行解析。
5.如权利要求1或2所述的基于AVS的运动矢量预测流水并行设计方法,其特征在于对于宏块编码类型或者子块类型是跳过模式(Skip)、直接模式(Direct)或对称模式(Symmetric)的块,提前获得后向参考图像上与当前块位置相对应的块的编码方式,也就是提前进行外存的读操作,这样对所有的宏块编码类型或者子块类型,都可以解析它们进行运动矢量预测需要进行的运算过程。
6.如权利要求1或3所述的基于AVS的运动矢量预测流水并行设计方法,其特征在于利用子块的命令字来指示状态机对功能模块进行流程控制,完成子块的运动矢量预测,将可能存在的访问外存的操作提前进行,与运动矢量的计算分开并行操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710303731 CN101466036A (zh) | 2007-12-21 | 2007-12-21 | 基于avs的运动矢量预测流水并行设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710303731 CN101466036A (zh) | 2007-12-21 | 2007-12-21 | 基于avs的运动矢量预测流水并行设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101466036A true CN101466036A (zh) | 2009-06-24 |
Family
ID=40806348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710303731 Pending CN101466036A (zh) | 2007-12-21 | 2007-12-21 | 基于avs的运动矢量预测流水并行设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101466036A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340660A (zh) * | 2010-07-23 | 2012-02-01 | 联合信源数字音视频技术(北京)有限公司 | 一种基于avs编码器的运动矢量预测装置 |
CN102447902A (zh) * | 2011-09-30 | 2012-05-09 | 曾志华 | 选择参考场及获取时域运动矢量的方法 |
CN103108183A (zh) * | 2013-02-01 | 2013-05-15 | 中国科学技术大学 | 一种三维视频中Skip和Direct模式运动矢量的预测方法 |
CN103907352A (zh) * | 2011-11-10 | 2014-07-02 | 索尼公司 | 图像处理设备和方法 |
CN104768004A (zh) * | 2009-10-23 | 2015-07-08 | 三星电子株式会社 | 用于确定运动矢量的设备 |
WO2016008408A1 (en) * | 2014-07-18 | 2016-01-21 | Mediatek Singapore Pte. Ltd. | Method of motion vector derivation for video coding |
CN107105272A (zh) * | 2011-01-12 | 2017-08-29 | 佳能株式会社 | 错误恢复改进的视频编码和解码 |
CN111050164A (zh) * | 2018-10-15 | 2020-04-21 | 华为技术有限公司 | 一种编解码的方法和装置 |
US11095878B2 (en) | 2011-06-06 | 2021-08-17 | Canon Kabushiki Kaisha | Method and device for encoding a sequence of images and method and device for decoding a sequence of image |
-
2007
- 2007-12-21 CN CN 200710303731 patent/CN101466036A/zh active Pending
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104768006A (zh) * | 2009-10-23 | 2015-07-08 | 三星电子株式会社 | 用于确定运动矢量的设备 |
CN104768006B (zh) * | 2009-10-23 | 2018-12-07 | 三星电子株式会社 | 用于确定运动矢量的设备 |
US9602828B2 (en) | 2009-10-23 | 2017-03-21 | Samsung Electronics Co., Ltd. | Method and apparatus for decoding video according to individual parsing or decoding in data unit level, and method and apparatus for encoding video for individual parsing or decoding in data unit level |
CN104780373B (zh) * | 2009-10-23 | 2016-11-23 | 三星电子株式会社 | 用于确定运动矢量的设备 |
CN104768004A (zh) * | 2009-10-23 | 2015-07-08 | 三星电子株式会社 | 用于确定运动矢量的设备 |
CN102340660A (zh) * | 2010-07-23 | 2012-02-01 | 联合信源数字音视频技术(北京)有限公司 | 一种基于avs编码器的运动矢量预测装置 |
CN102340660B (zh) * | 2010-07-23 | 2013-10-30 | 联合信源数字音视频技术(北京)有限公司 | 一种基于avs编码器的运动矢量预测装置 |
US10609380B2 (en) | 2011-01-12 | 2020-03-31 | Canon Kabushiki Kaisha | Video encoding and decoding with improved error resilience |
CN107105272A (zh) * | 2011-01-12 | 2017-08-29 | 佳能株式会社 | 错误恢复改进的视频编码和解码 |
US10499060B2 (en) | 2011-01-12 | 2019-12-03 | Canon Kabushiki Kaisha | Video encoding and decoding with improved error resilience |
US11146792B2 (en) | 2011-01-12 | 2021-10-12 | Canon Kabushiki Kaisha | Video encoding and decoding with improved error resilience |
US11095878B2 (en) | 2011-06-06 | 2021-08-17 | Canon Kabushiki Kaisha | Method and device for encoding a sequence of images and method and device for decoding a sequence of image |
CN102447902A (zh) * | 2011-09-30 | 2012-05-09 | 曾志华 | 选择参考场及获取时域运动矢量的方法 |
CN103907352A (zh) * | 2011-11-10 | 2014-07-02 | 索尼公司 | 图像处理设备和方法 |
CN103108183B (zh) * | 2013-02-01 | 2015-04-29 | 中国科学技术大学 | 一种三维视频中Skip和Direct模式运动矢量的预测方法 |
CN103108183A (zh) * | 2013-02-01 | 2013-05-15 | 中国科学技术大学 | 一种三维视频中Skip和Direct模式运动矢量的预测方法 |
US10582210B2 (en) | 2014-07-18 | 2020-03-03 | Mediatek Singapore Pte. Ltd. | Method of motion vector derivation for video coding |
US11109052B2 (en) | 2014-07-18 | 2021-08-31 | Mediatek Singapore Pte. Ltd | Method of motion vector derivation for video coding |
WO2016008408A1 (en) * | 2014-07-18 | 2016-01-21 | Mediatek Singapore Pte. Ltd. | Method of motion vector derivation for video coding |
WO2020078327A1 (zh) * | 2018-10-15 | 2020-04-23 | 华为技术有限公司 | 一种编解码的方法和装置 |
CN111050164A (zh) * | 2018-10-15 | 2020-04-21 | 华为技术有限公司 | 一种编解码的方法和装置 |
CN111050164B (zh) * | 2018-10-15 | 2022-05-17 | 华为技术有限公司 | 一种编解码的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101466036A (zh) | 基于avs的运动矢量预测流水并行设计方法 | |
CN101127902B (zh) | 具有用于运动向量存储的地址管理机制的帧间预测处理器 | |
CN104106264B (zh) | 元数据辅助的视频解码 | |
CN102098519B (zh) | 视频编码方法、解码方法、编码及解码装置 | |
CN102577389A (zh) | 运动图像编码装置和运动图像解码装置 | |
CN103260029A (zh) | 用于对运动矢量进行编码/解码的方法和设备 | |
CN108605137A (zh) | 利用仿射运动补偿的视频编码方法与装置 | |
CN101330617B (zh) | 基于模式映射的多标准帧内预测器的硬件实现方法及装置 | |
CN107105272A (zh) | 错误恢复改进的视频编码和解码 | |
CN102065290A (zh) | 视讯译码装置、存储运动矢量信息的方法及存储器分配方法 | |
KR20100080792A (ko) | 기하학적으로 분할된 쌍방 예측 모드 분할들을 비디오 인코딩 및 디코딩하기 위한 방법 및 장치 | |
CN103314581A (zh) | 使用列的图像分割方法和*** | |
CN103609125A (zh) | 用于对多视点视频的运动矢量进行编码和解码的方法和设备 | |
CN103493492A (zh) | 用于对多视点视频进行编码和解码的方法和设备 | |
CN102835111A (zh) | 使用先前块的运动矢量作为当前块的运动矢量来对图像进行编码/解码的方法和设备 | |
CN101710986A (zh) | 基于同构多核处理器的h.264并行解码方法和*** | |
CN105282558A (zh) | 帧内像素预测方法、编码方法、解码方法及其装置 | |
CN1306822C (zh) | 一种基于软硬件协同控制的视频解码器 | |
CN103947211B (zh) | 产生已分区比特流的视频编码装置及方法 | |
CN102932643B (zh) | 一种适用于hevc标准的扩展可变块运动估计电路 | |
CN105025298A (zh) | 对图像进行编码/解码的方法和设备 | |
CN102783148B (zh) | 用于视频编码的方法和装置 | |
WO2010062466A2 (en) | Device for decoding a video stream and method therof | |
CN100361152C (zh) | 检测水印的方法和设备 | |
CN106063268B (zh) | 转码方法、转码设备以及信息存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20090624 |