视频编码方法与视频编码装置制造方法

文档序号:7983780阅读:213来源:国知局
视频编码方法与视频编码装置制造方法
【专利摘要】本发明提供一种视频编码方法与视频编码装置,包括:决定第一宏块在参考图像上的第一搜索窗口,并且决定第二宏块在参考图像上的第二搜索窗口,其中第一搜索窗口至少部分地重叠于第二搜索窗口;从存储器中读取第一搜索窗口与第二搜索窗口并执行包括动作估测与二进制化编码的第一编码阶段;将第一编码阶段的编码结果储存在存储器中;以及,从存储器中读取编码结果,并且执行第二编码阶段;第二编码阶段包括情境熵值编码,情境熵值编码的编码顺序不同于动作估测的编码顺序,并且第二编码阶段与第一编码阶段是平行地被执行。藉此,可以降低存储器的带宽需求。
【专利说明】视频编码方法与视频编码装置
【技术领域】
[0001]本发明是有关于一种视频编码方法与使用此方法的视频编码装置。
【背景技术】
[0002]一般来说,要编码一段视频时,此视频会被分为多张图帧(frame),每张图帧包括多个切片(slice),每个切片包括多个宏块(macro block),而每个宏块可以再被分割为一或多个方块(block)。当要计算图巾贞之间在时间上的冗余(temporal redundancy)时,会计算一个目前图帧与一个参考图帧之间的动作向量。计算动作向量是要用参考图帧上的像素值来预测目前图巾贞的一个宏块。预测的结果会经过离散余弦转换(discrete cosinetransform)、量化、行程长度编码(run length coding)、以及熵值编码。其中,在计算目前图帧中一个宏块的动作向量时,会取得参考图帧上对应的一个搜索窗口内的像素值。通常,参考图帧是储存在一个存储器中,当要计算动作向量时,会从此存储器中读取对应的搜索窗P。
[0003]图1是读取搜索窗口的示意图。
[0004]请参照图1,目前图帧110包括宏块111与112。参考图帧120包括搜索窗口 121与122。当要计算宏块111的动作向量时,必须从存储器中读取搜索窗口 121。当要计算宏块112的动作向量时,必须从存储器中读取搜索窗口 122。其中,区域123是搜索窗口 121与搜索窗口 122之间重叠的部分。因此,在计算完宏块111的动作向量以后,只需要读取搜索窗口 122中没有与搜索窗口 121重叠的部分便可以计算宏块112的动作向量。当编码完同一列的宏块以后,搜索窗口 121可能已不在存储器当中。因此,当要对下一列的宏块执行动作估测时,必须再从存储器中读取一个搜索窗口,此搜索窗口可能会与搜索窗口 121部分地重叠。如此一来,搜索窗口中部分的像素值会被读取两次,造成存储器的带宽需求增加。
[0005]计算动作向量需要大量的计算能力与存储器带宽。因此,如何降低存储器的带宽需求并增加视频编码的速度,为此领域技术人员所关心的议题。

【发明内容】

[0006]本发明的实施例提供一种视频编码方法与视频编码装置,可以降低存储器的带宽需求。
[0007]本发明一实施例提供一种视频编码方法,用于一个视频编码装置。此视频编码方法包括:决定第一宏块在一个参考图像上的第一搜索窗口,并且决定第二宏块在参考图像上的第二搜索窗口,其中第一搜索窗口至少部分地重叠于第二搜索窗口 ;从一个存储器中读取第一搜索窗口与第二搜索窗口,并且对第一宏块与第二宏块执行第一编码阶段,其中第一编码阶段包括动作估测与二进制化编码;将第一编码阶段的编码结果储存在一存储器中;以及,从存储器中读取编码结果,并且对编码结果执行第二编码阶段,其中第二编码阶段包括情境熵值编码,情境熵值编码的编码顺序不同于动作估测的编码顺序,并且第二编码阶段与第一编码阶段是平行地被执行。
[0008]在一实施例中,第一图像包括多个宏块列。上述的第一宏块是被包括在这些宏块列中的第a个宏块列,并且第二宏块是被包括在宏块列中的第b个宏块列,其中a与b为正整数,并且a不同于b。
[0009]在一实施例中,上述的正整数a与b之间的绝对差大于等于2。
[0010]在一实施例中,上述的第a个宏块列包括多个第三宏块,第b个宏块列包括多个第四宏块,并且第二宏块是位于第四宏块中的第c个。上述对第一宏块与第二宏块执行第一编码阶段的步骤包括:对第三宏块中的第(c+d)个第三宏块执行动作估测以后才对第二宏块执行动作估测。其中C为正整数,并且d为大于等于2的正整数。
[0011]在一实施例中,上述的第a个宏块列包括多个第三宏块,并且第b个宏块列包括多个第四宏块。此视频编码方法还包括:由第一编码器依序地对第三宏块执行动作估测;当第一编码器对第三宏块中第e个第三宏块执行动作估测时,由第二编码器开始依序地对第四宏块执行动作估测,其中e为大于等于3的正整数。
[0012]在一实施例中,上述的第一图像包括多个宏块列群组,第a个宏块列与第b个宏块列同属于宏块列群组中的第一宏块列群组。第a个宏块列包括多个第三宏块,并且第b个宏块列包括多个第四宏块。第一图像还包括第二宏块列群组,第二宏块列群组包括第一宏块列与第二宏块列。第一宏块列包括多个第五宏块,并且第二宏块列包括多个第六宏块。上述对第一宏块与第二宏块执行第一编码阶段的步骤包括:由第一编码器交错地对第三宏块的其中之一与第四宏块的其中之一执行动作估测,并且同时由第二编码器交错地对第五宏块的其中之一与第六宏块的其中之一执行动作估测。
[0013]在一实施例中,上述的第一宏块是被包括在第一图像,第二宏块是被包括在第二图像,并且第一图像不同于第二图像。
[0014]在一实施例中,上述的情境熵值编码包括一运算编码。
[0015]以另外一个角度来说,本发明一实施例提供一种视频编码装置,包括第一编码器、第二编码器与存储器;存储器是耦接至第一编码器与第二编码器;第一编码器是用以决定第一宏块在一参考图像上的第一搜索窗口,并且决定第二宏块在参考图像上的第二搜索窗口 ;其中第一搜索窗口至少部分地重叠于第二搜索窗口 ;第一编码器也用以从存储器中读取第一搜索窗口与第二搜索窗口,并且对第一宏块与第二宏块执行第一编码阶段;此第一编码阶段包括动作估测与二进制化编码;第一编码器也用以将第一编码阶段的编码结果储存在存储器中。第二编码器用以从存储器中读取此编码结果,并且对编码结果执行第二编码阶段。第二编码阶段包括情境熵值编码。情境熵值编码的编码顺序不同于动作估测的编码顺序,并且第二编码阶段与第一编码阶段是平行地被执行。
[0016]在一实施例中,第一图像包括多个宏块列。第一宏块是被包括在这些宏块列中的第a个宏块列,并且第二宏块是被包括在宏块列中的第b个宏块列。其中a与b为正整数,并且a不同于b。
[0017]在一实施例中,上述的正整数a与b之间的绝对差大于等于2。
[0018]在一实施例中,上述的第a个宏块列包括多个第三宏块,第b个宏块列包括多个第四宏块,并且第二宏块是位于第四宏块中的第c个。第一编码器还用以对第三宏块中的第(c+d)个第三宏块执行动作估测以后才对第二宏块执行动作估测。其中c为正整数,并且d为大于等于2的正整数。
[0019]在一实施例中,上述的第a个宏块列包括多个第三宏块,并且第b个宏块列包括多个第四宏块。第一编码器还用以依序地对第三宏块执行动作估测。当第一编码器对第三宏块中第e个第三宏块执行动作估测时,由第三编码器开始依序地对第四宏块执行动作估测。其中e为大于等于3的正整数。
[0020]在一实施例中,上述的第一图像包括多个宏块列群组,第a个宏块列与第b个宏块列同属于第一宏块列群组。第a个宏块列包括多个第三宏块,并且第b个宏块列包括多个第四宏块。第一图像也包括第二宏块列群组,此第二宏块列群组包括第一宏块列与第二宏块列。第一宏块列包括多个第五宏块,并且第二宏块列包括多个第六宏块。第一编码器还用以交错地对第三宏块的其中之一与第四宏块的其中之一执行动作估测,并且同时由第三编码器交错地对第五宏块的其中之一与第六宏块的其中之一执行动作估测。
[0021]在一实施例中,上述的第一宏块是被包括在第一图像,第二宏块是被包括在第二图像,并且第一图像不同于第二图像。
[0022]在一实施例中,上述的情境熵值编码包括运算编码。
[0023]基于上述,本发明实施例所提供的视频编码方法与视频编码装置,可以降低存储器的带宽需求。
[0024]为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所示附图作详细说明如下。
【专利附图】

【附图说明】
[0025]图1是读取搜索窗口的示意图;
[0026]图2是根据一实施例说明视频编码装置的示意图;
[0027]图3A是根据一实施例说明运算编码的范例示意图;
[0028]图3B至3D是根据一实施例说明熵值编码的示意图;
[0029]图4是根据一实施例说明动作估测的顺序的范例示意图;
[0030]图5是根据一实施例说明编码器的管线排程的示意图;
[0031]图6A与图6B是根据另一实施例说明第一编码器执行动作估测的顺序的范例示意图;
[0032]图7是根据一实施例说明共享参考图像的范例示意图;
[0033]图8是根据一实施例说明视频编码方法的流程图;
[0034]图9是根据第二实施例说明视频编码装置的方块图;
[0035]图10是根据第二实施例说明动作估测的顺序的示意图;
[0036]图11是根据第二实施例说明两张图像共享参考图像的示意图;
[0037]图12是根据第二实施例说明编码不同宏块列群组的示意图;
[0038]附图标记说明:
[0039]110:目前图帧;
[0040]111、112、711 ?714,1001 ?1004、1211、1212:宏块;
[0041]120:参考图像;
[0042]121、122:搜索窗口;[0043]123:区域;
[0044]200、900:视频编码装置;
[0045]210、220、910、920、930、940:编码器;
[0046]211、221、911、921、931、941:暂存存储器;
[0047]212、912、922:第一编码模块;
[0048]213、913、923:第二编码模块;
[0049]214、914、924:第三编码模块;
[0050]215、915、925:第四编码模块;
[0051]216、223、916、926、933、943:存储器接口 ;
[0052]222、932、942:第五编码模块;
[0053]230,950:存储器;
[0054]301、302、311、312:范围;
[0055]321、322、323:信号;
[0056]331: 二进制化编码;
[0057]332,342:可变长度编码;
[0058]333、334、335、343、344:多工器;
[0059]341: 二进制运算编码;
[0060]410、701 ?704、1200:图像;
[0061]411 ?415:宏块;
[0062]420:参考图像;
[0063]421、422:搜索窗口;
[0064]423:区域;
[0065]501 ?503,721 ?725、1101:时间点;
[0066]601 ?602、1221 ?1224:宏块列;
[0067]S802、S804、S806、S808:视频编码方法的步骤;
[0068]1201?1203:宏块列群组。
【具体实施方式】
[0069][第一实施例]
[0070]图2是根据一实施例说明视频编码装置的示意图。
[0071]请参照图2,视频编码装置200包括编码器210、编码器220与存储器230。视频编码装置200是用以压缩一段视频,并产生此视频的位串(bitstream)。例如,视频编码装置200可以被配置在电视、数字摄影机、数字相机、数字手机、平板计算机、计算机、由一或多台计算机组成的服务器。
[0072]编码器210用以执行一个第一编码阶段。此第一编码阶段包括动作估测(motionestimation)、内部预测(intra prediction)、转换运算、量化运算与二进制化编码(binarization encoding)。编码器210包括暂存存储器211、第一编码模块212、第二编码模块213、第三编码模块214、第四编码模块215与存储器接口 216。本实施例中,编码器210中所有的编码模块是以宏块管线(macroblock pipeline)的方式来运作。换言之,编码器210 中的宏块管线深度(macroblock pipeline depth)为 4。
[0073]第一编码模块212是用以执行动作估测。例如,存储器接口 216从存储器230中读取一个搜索窗口内的像素值,并且储存在暂存存储器211。第一编码模块212会根据这些读取的像素值与一个宏块执行动作估测。执行完动作估测以后,第一编码模块212至少会产生一或多个动作向量以及多个残差值(residual)。
[0074]第二编码模块213是用以执行内部预测。内部预测是要用一个图像中的像素值来预测本身的像素值。执行完内部预测以后,第二编码模块213至少会产生多个残差值以及一个预测模式。
[0075]第三编码模块214是用以执行转换运算与量化运算。例如,执行转换运算时,第二编码模块214是将第一编码模块212或第二编码模块213所广生的残差值进行余弦尚散转换。然而,第三编码模块214也可以使用阿达玛转换(Hadamard transform)、重叠转换(lapped transform)、或其他空间至频率(spatial-to-frequency)的转换。执行量化运算(quantization operation)时,第三编码模块214是将转换运算产生的多个系数(coefficient)除以相同或不相同的量化参数。
[0076]第四编码模块215是用以执行二进制化编码。例如,第四编码模块215是对量化运算的结果执行一个可变长度编码(variable length coding),用以将一个符号(symbol)或一个系数(coefficient)转换为一或多个位。此可变长度编码可以为霍夫曼编码(Huffmancoding)或哥伦布编码(Golomb coding)。或者,第四编码模块215也可使用固定长度编码(fixed length coding)来编码系数或符号,本发明不对此作限定。
[0077]然而,本领域通常知识者应可理解,编码器210还可包括其他模块,用以执行其他编码运算。例如,编码器210也可用以执行行程长度编码、将一个宏块分割为一或多个方块来执行动作估测、预测一个方块的动作向量或是执行一个位控制算法。并且,编码器210所执行的这些编码运算(包括动作估测、二进制化编码等)可以被制作为更多或更少的模块,藉此增加或减少编码器210的管线深度。本发明并不对此作限定。
[0078]在此实施例中,编码器210会将第一编码阶段的编码结果(例如,二进制化编码所产生的位)储存在存储器230中。编码器220会读取这些编码结果并执行一个第二阶段编码。此第二阶段编码包括一个情境熵值编码(context entropy coding)。具体来说,编码器220包括暂存存储器221、第五编码模块222与存储器接口 223。存储器接口 223是用以从存储器230中读取第一编码阶段的编码结果并储存在暂存存储器221中。第五编码模块222是用以对这些编码结果执行情境熵值编码。在情境熵值编码中,若要编码一个符号或一个系数时,必须依照一个编码顺序参考前一个符号或系数的编码结果。此编码顺序是规定在一个编码标准(例如,H.264或是MPEG-4)当中。例如,情境熵值编码包括运算编码。
[0079]图3A是根据一实施例说明运算编码的范例示意图。
[0080]概念上,运算编码是用一个浮点数来表示多个欲被编码的符号。此浮点数是根据符号出现的机率的来产生。请参照图3A,符号“a”出现的机率是0.6,而符号“b”出现的机率是0.4。浮点数的初始范围为0?1,其中包括范围301(即0?0.6)以及范围302(即,
0.6?I)。若要编码符号“a”,则浮点数的范围会被更新为范围301,反之则是范围302。在此假设第一个符号是“a”。接着,若要编码第二个符号,则会从范围301中选择范围311 (即,0?0.36)或是范围312(0.36?0.6)。范围311表示第二个符号为“a”,并且范围312表示第二个符号是“b”。在此假设第二个符号是“b”。接着,编码器会从范围312中选择一个浮点数(例如0.5)传送给译码器,译码器可以根据此浮点数译码出符号“a”与“b”。等效地来说,一个符号可用少于一个位或是非整数个位来编码。特别的是,在运算编码中,必须先编码第一个符号才能编码第二个符号,如此才能得到正确的范围。
[0081]图3B至3D是根据一实施例说明熵值编码的示意图。
[0082]请参照图3B,本实施例中一个系数或符号会经过二进制化编码与情境熵值编码的运算。例如,信号321为系数“-35”,并且此系数是用16个位来表示。第四编码模块215对信号321执行二进制化编码以后,信号322只包括整数个位,例如为“1110”。信号322会被储存在存储器230中。第五编码模块215会对信号322执行情境熵值编码(例如,运算编码),以产生信号323。
[0083]请参照图3C,第四编码模块215包括二进制化编码331、可变长度编码332、多工器333?335。信号322会被执行二进制化编码331与可变长度编码322。多工器335会从多工器333与334中选择一个并输出成信号322。例如,在H.264的编码标准中,若要使用适应性情境二兀运算编码(Context-adaptive binary arithmetic coding, CABAC)来做熵值编码,则多工器355会选择多工器333的结果。反之,则多工器335会选择多工器334的结果。另一方面,多工器333会根据信号321的特性决定是否要输出二进制化编码331的结果。例如,当信号321表示一个预测模式时,此预测模式并不需要经过二进制化编码331的运算。类似地,多工器334也会根据信号321的特性来决定是否要输出可变长度编码332的结果。
[0084]请参照图3D,第五编码模块222包括二进制算术编码341、可变长度编码342、多工器343与344。若是使用适应性情境二元运算编码来做熵值编码,多工器344会选择二进制运算编码341的结果输出为信号323。反之,多工器344会选择多工器343的结果。另一方面,多工器343会判断是否要输出可变长度编码342的结果。在一实施例中,一个系数或符号可以由第四编码模块215来做可变长度编码332,也可以由第五编码模块222来做可变长度编码342,本发明并不对此作限定。
[0085]在另一实施例中,情境熵值编码也可以是适应性霍夫曼编码。在适应性霍夫曼编码中,编码器与译码器都会建立一个霍夫曼树。当编码器每编码一个系数或是符号以后,可能会更新此霍夫曼树。因此,编码器与译码器必须要依照相同的顺序来编码与译码,否则两着所建立的霍夫曼树并不会同步。在另一实施例中,情境熵值编码也可以是适应性哥伦布编码或其他适应性的编码算法,本发明并不对此作限定。
[0086]值得注意的是,由于编码器210与编码器220是独立运作,因此即使执行动作估测的顺序与执行情境熵值编码的顺序不同,编码器210与编码器220还是可以平行的运作。亦即,第一编码阶段与第二编码阶段是同时被执行。并且,储存在存储器中的是信号322而不是信号321,因此可以减少存储器230的带宽需求。
[0087]图4是根据一实施例说明动作估测的顺序的范例示意图。
[0088]请参照图4,图像410包括宏块411?415。视频编码装置200是要根据参考图像420来编码图像410上的宏块411?415。在此用第x行(column)第y列(row)说明一个宏块的位置。例如,宏块411、412与413是位于第y列,而宏块413是位于第x行。执行情境熵值编码的顺序是宏块411、412、413、与位于第y列且在宏块413之后的其他宏块;之后才会从位于第(y+1)列第I行的宏块开始进行情境熵值编码(持续到宏块414与415)。然而,第一编码模块212会先对宏块411执行动作估测,接着依序对宏块412、414、413与415执行动作估测。换言之,图像410中情境熵值编码的顺序与动作估测的顺序并不相同。一个图像中,同一列的多个宏块会组成一个宏块列(例如,宏块411、412与413属于同一个宏块列),而一个图像会包括多个宏块列。执行情境熵值编码时,第五编码模块222是编码完一个宏块列中的宏块以后才编码下一个宏块列中的宏块。然而,第一编码模块212是交错地对第a个宏块列中的一个宏块与第b个宏块列中的一个宏块执行动作估测。其中a与b为正整数,并且a不同于b。例如,在图4所示的实施例中,a与b的绝对差为I。然而,在其他实施例中,a与b的绝对差也可以大于等于2,本发明并不对此作限定。
[0089]执行动作估测时,第一编码模块212会决定宏块411在参考图像420上的搜索窗口 421,并且决定宏块414在参考图像420上的搜索窗口 422。其中,搜索窗口 421至少部分地重叠于视搜索窗口 422。因此,对应宏块411的动作估测与对应宏块414的动作估测可以共享部分的像素值。当要对宏块412与宏块415执行动作估测时,只要读取区域423内的像素值。在此实施例中,参考图像420是储存在存储器中230(如图2所示)。因此,依照图4所示的顺序来执行动作估测,可以减少对存储器230的带宽需求。具体来说,存储器接口 216会从存储器230中读取搜索窗口 421与搜索窗口 422内的像素值至暂存存储器211。当搜索窗口 421与搜索窗口 422被储存在暂存存储器211的期间,第一编码模块212会执行对应于宏块411与宏块414的动作估测。
[0090]在本实施例中,图像410与图像420为两个图帧(frame)。然而,在其他实施例中,图像410与图像420也可以为两个图场(field),本发明并不对此作限定。另一方面,以下假设图像410的编号为1,而图像420的编号为O。在此用向量(图像编号、宏块的行、宏块的列)来表示一个宏块的位置。举例来说,宏块411位置可以被表示为(l,x-2,y)的向量,而宏块412的位置可以被表示为(l,x_l,y)的向量,并且宏块414的位置可以被表示为(1,x-2,y+1)的向量。
[0091]图5是根据一实施例说明编码器的管线排程的示意图。
[0092]请参照图5,在时间点501时,第一编码模块212对位于(1,0,O)的宏块执行动作估测。此时,第五编码模块215对位于(0,0,0)的宏块执行情境熵值编码。
[0093]在时间点502,第一编码模块对位于(1,1,0)的宏块执行动作估测,第二编码模块对位于(1,0,0)的宏块执行内部预测(如果需要的话)。此时,第五编码模块对位于(0,1,O)的宏块执行情境熵值编码。
[0094]在时间点503,第一编码模块对位于(1,0,1)的宏块执行动作估测,第二编码模块对位于(1,1,0)的宏块执行内部预测(如果需要的话),并且第三编码模块对位于(1,0,0)的宏块执行转换运算与量化运算。此时,第五编码模块对位于(0,2,0)的宏块执行熵值情
境编码。
[0095]值得注意的是,编码器210中的编码模块(即,第一编码模块212、第二编码模块213、第三编码模块214、与第四编码模块215)是依照动作估测的顺序来运作。然而,第五编码模块222是依照情境熵值编码的顺序来运作。另一方面,第五编码模块222编码一个宏块所需的时间可能会不等于编码器210中编码一个宏块所需的时间。
[0096]图6A与图6B是根据另一实施例说明第一编码器执行动作估测的顺序的范例示意图。
[0097]在图6A所示的实施例中,图像中第a个宏块列601包括多个宏块,第b个宏块列602包括多个宏块,a与b的绝对误差为I。第一编码模块212是从第a列第c行的宏块开始执行动作估测。在第a列第c+d行的宏块以后,第一编码模块212才会执行第b列第c行的宏块。其中,c与d为正整数,且d大于等于2。在一实施例中,当编码第b列第c行的宏块时,必须取得第a列第c行与第a列第c+1行的宏块被执行动作估测的信息。因此,先对第a列第c+d行的宏块执行动作估测,可以减少宏块管线中发生数据危害(data hazard)的机率。
[0098]在图6B所示的实施例中,a与b的绝对差为2。在一实施例中,依照图6所示的顺序来执行动作估测,可以增加搜索窗口相互重叠的比率。因此,可以减少存储器230的带宽需求。
[0099]图7是根据一实施例说明共享参考图像的范例示意图。
[0100]请参照图7的上半部,执行动作估测时,图像702与703对应至图像701与704。具体来说,宏块712是对应至搜索窗口 711与714。宏块713是对应至搜索窗口 711与714。在图7所示的实施例中,第一编码模块212是交错的对图像702中的一个宏块与图像703的一个宏块执行动作估测。在此假设图像701?704的图像编号分别为0、2、3、与4。请参照图7的下半部。在时间点721时,第一编码模块212是对位置为(2,0,0)的宏块执行动作估测。在时间点722,第一编码模块212是对位置为(3,0,0)的宏块执行动作估测。在时间点723,第一编码模块212是对位置为(2,1,0)的宏块执行动作估测。在时间点724,第一编码模块212是位置为(3,1,0)的宏块执行动作估测。在时间点725,第一编码模块212是位置为(2,0,1)的宏块执行动作估测。值得注意的是,图像702与图像703中动作估测的编码顺序皆如图4所示,但第五编码模块215的执行顺序是情境熵值编码的编码顺序。
[0101]图8是根据一实施例说明视频编码方法的流程图。
[0102]请参照图8,在步骤S802中,编码器210会决定第一宏块在一个参考图像上的第一搜索窗口,并且决定第二宏块在此参考图像上的第二搜索窗口,其中第一搜索窗口至少部分地重叠于第二搜索窗口。
[0103]在步骤S804中,编码器210会从一个存储器中读取第一搜索窗口与第二搜索窗口,并且对第一宏块与第二宏块执行第一编码阶段,其中第一编码阶段包括动作估测与二进制化编码,但不包括情境熵值编码。
[0104]在步骤S806中,编码器210会将第一编码阶段的编码结果储存在存储器中。
[0105]在步骤S808中,编码器220会从存储器中读取编码结果,并且对编码结果执行第二编码阶段。其中第二编码阶段包括情境熵值编码,情境熵值编码的编码顺序不同于动作估测的编码顺序,并且第二编码阶段与第一编码阶段是平行地被执行。
[0106]然而,图8中各步骤已详细说明如上,在此便不再赘述。
[0107]在另一实施例中,第一编码模块212、第二编码模块213、第三编码模块214、第四编码模块215与第五编码模块222的功能可以被制作为多个程序代码。这些程序代码可以被储存在一个存储器中,由一个处理器来执行。本发明并不对此作限定。
[0108][第二实施例]
[0109]第二实施例与第一实施例类似,在此仅说明不同之处。[0110]图9是根据第二实施例说明视频编码装置的方块图。
[0111]请参照图9,视频编码装置900包括编码器910、920、930、940与存储器950。编码器910包括暂存存储器911、第一编码模块912、第二编码模块913、第三编码模块914、第四编码模块915与存储器接口 916。编码器920包括暂存存储器921、第一编码模块922、第二编码模块923、第三编码模块924、第四编码模块925与存储器接口 926。编码器930包括暂存存储器931、第五编码模块932与存储器接口 933。编码器940包括暂存存储器941、第五编码模块942与存储器接口 943。其中,编码器910与920的功能相同于第一实施例中的编码器210。编码器930与940的功能相同于第一实施例中编码器220。
[0112]图10是根据第二实施例说明动作估测的顺序的示意图。
[0113]在图10所示的实施例中,编码器910会依序地对图像中第a个宏块列中的宏块执行动作估测。当编码器910执行到第e行的宏块时,编码器920会开始依序地对第b个宏块列中的宏块执行动作估测。其中,e为大于等于3的正整数。宏块1001与宏块1002所对应的搜索窗口会彼此部分地重叠。宏块1003与宏块1004所对应的搜索窗口会彼此部分地重叠。因此,编码器910与编码器920可以分享存储器950的带宽。在一实施例中,暂存存储器911与921是在同一个暂存存储器当中,存储器接口 916与926是被制作为同一个存储器接口,并且编码器910和编码器920可以共享此暂存存储器与存储器接口。在另一实施例中,视频编码装置900也可包括另一个编码器。此另一个编码器会在编码器920对第e行的宏块执行动作估测以后,开始依序的对第b+Ι列的宏块执行动作估测。本发明并不限制视频编码装置900中编码器的个数。
[0114]图11是根据第二实施例说明两张图像共享参考图像的示意图。
[0115]请同时参照图7与图11。编码器910是交错地对图像702中的一个宏块与图像703中的一个宏块执行动作估测。并且,当编码器910编码到图像702与703第O列第I行的宏块以后(时间点1101),编码器920开始编码图像702与图像703中第I列的宏块。并且,当编码器910与编码器920在编码图像702与703时,编码器930与940平行地编码图像701与704。值得住意的是,当编码器930与940平行地编码图像701与704时,图像701与704已被重建出,因此并不会影响编码器910与920的运作。
[0116]图12是根据第二实施例说明编码不同宏块列群组的示意图。
[0117]请参照图12,图像1200包括宏块列群组1201、1202、与1203。一个宏块列群组(group of macroblock row)中会包括多个宏块列。例如,宏块列群组为切片(slice),但本发明并不对此作限定。宏块列群组1201包括宏块列1221 (亦称第a个宏块列)与1222(亦称第b个宏块列)。宏块列群组1202包括宏块列1223与1224。编码器910是交错地对宏块列1221中的一个宏块与宏块列1222中的一个宏块列执行动作估测。当编码器910对宏块1211执行动作估测时,编码器920开始对宏块列群组1202中的宏块执行动作估测。编码器920是交错地对宏块列1223中的一个宏块与宏块列1224中的一个宏块执行动作估测。在另一实施例中,视频编码装置900也可包括另一个编码器。此另一个编码器会在编码器920对宏块1212执行动作估测时,开始对宏块列群组1203中的宏块执行动作估测。
[0118]综上所述,本发明实施例所提供的视频编码方法与视频编码装置,是将二进制化编码与情境熵值编码制作在不同的编码器上。如此一来,动作估测的编码顺序与情境熵值编码的编码顺序可不相同,藉此可降低存储器的带宽需求。[0119]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁盘或者光盘等各种可以存储程序代码的介质。
[0120]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种视频编码方法,用于一视频编码装置,其特征在于,该视频编码方法包括: 决定一第一宏块在一参考图像上的一第一搜索窗口,并且决定一第二宏块在该参考图像上的一第二搜索窗口,其中该第一搜索窗口至少部分地重叠于该第二搜索窗口 ; 从一存储器中读取该第一搜索窗口与该第二搜索窗口,并且对该第一宏块与该第二宏块执行一第一编码阶段,其中该第一编码阶段包括一动作估测与一二进制化编码; 将该第一编码阶段的一编码结果储存在一存储器中;以及 从该存储器中读取该编码结果,并且对该编码结果执行一第二编码阶段,其中该第二编码阶段包括一情境熵值编码,该情境熵值编码的一编码顺序不同于该动作估测的一编码顺序,并且该第二编码阶段与该第一编码阶段是平行地被执行。
2.根据权利要求1所述的视频编码方法,其特征在于,一第一图像包括多个宏块列,该第一宏块是被包括在该些宏块列中的第a个宏块列,并且该第二宏块是被包括在该些宏块列中的第b个宏块列,其中a与b为正整数,并且a不同于b。
3.根据权利要求2所述的视频编码方法,其特征在于,该些正整数a与b之间的绝对差大于等于2。
4.根据权利要求2所述的视频编码方法,其特征在于,该第a个宏块列包括多个第三宏块,该第b个宏块列包括多个第四宏块,并且该第二宏块是位于该些第四宏块中的第c个,其中对该第一宏块与该第二宏块执行该第一编码阶段的步骤包括: 对该些第三宏块中的第(c+d)个第三宏块执行该动作估测以后,对该第二宏块执行该动作估测,其中c为正整数,并且d为大于等于2的正整数。
5.根据权利要求2所述的视频编码方法,其特征在于,该第a个宏块列包括多个第三宏块,并且该第b个宏块列包括多个第四宏块,该视频编码方法还包括: 由一第一编码器依序地对该些第三宏块执行该动作估测; 当该第一编码器对该些第三宏块中第e个第三宏块执行该动作估测时,由一第二编码器开始依序地对该些第四宏块执行该动作估测,其中e为大于等于3的正整数。
6.根据权利要求2所述的视频编码方法,其特征在于,该第一图像包括多个宏块列群组,该第a个宏块列与该第b个宏块列同属于该些宏块列群组中的一第一宏块列群组,该第a个宏块列包括多个第三宏块,并且该第b个宏块列包括多个第四宏块,该些宏块列群组包括一第二宏块列群组,该第二宏块列群组包括一第一宏块列与一第二宏块列,该第一宏块列包括多个第五宏块,并且该第二宏块列包括多个第六宏块,其中对该第一宏块与该第二宏块执行该第一编码阶段的步骤包括: 由一第一编码器交错地对该些第三宏块的其中之一与该些第四宏块的其中之一执行该动作估测,并且同时由一第二编码器交错地对该些第五宏块的其中之一与该些第六宏块的其中之一执行该动作估测。
7.根据权利要求1所述的视频编码方法,其特征在于,该第一宏块是被包括在一第一图像,该第二宏块是被包括在一第二图像,并且该第一图像不同于该第二图像。
8.根据权利要求1所述的视频编码方法,其特征在于,该情境熵值编码包括一运算编码。
9.一视频编码装置,其特征在于,包括: 一第一编码器,用以决定一第一宏块在一参考图像上的一第一搜索窗口,并且决定一第二宏块在该参考图像上的一第二搜索窗口,其中该第一搜索窗口至少部分地重叠于该第二搜索窗口; 一第二编码器;以及 一存储器,耦接至该第一编码器与该第二编码器, 其中,该第一编码器用以从该存储器中读取该第一搜索窗口与该第二搜索窗口,并且对该第一宏块与该第二宏块执行一第一编码阶段,其中该第一编码阶段包括一动作估测与一二进制化编码, 其中,该第一编码器用以将该第一编码阶段的一编码结果储存在该存储器中, 其中,该第二编码器用以从该存储器中读取该编码结果,并且对该编码结果执行一第二编码阶段,其中该第二编码阶段包括一情境熵值编码,该情境熵值编码的一编码顺序不同于该动作估测的一编码 顺序,并且该第二编码阶段与该第一编码阶段是平行地被执行。
10.根据权利要求9项所述的视频编码装置,其特征在于,一第一图像包括多个宏块列,该第一宏块是被包括在该些宏块列中的第a个宏块列,并且该第二宏块是被包括在该些宏块列中的第b个宏块列,其中a与b为正整数,并且a不同于b。
11.根据权利要求10所述的视频编码装置,其特征在于,该些正整数a与b之间的绝对差大于等于2。
12.根据权利要求10所述的视频编码装置,其特征在于,该第a个宏块列包括多个第三宏块,该第b个宏块列包括多个第四宏块,并且该第二宏块是位于该些第四宏块中的第c个, 该第一编码器还用以对该些第三宏块中的第(c+d)个第三宏块执行该动作估测以后,对该第二宏块执行该动作估测,其中c为正整数,并且d为大于等于2的正整数。
13.根据权利要求10所述的视频编码装置,其特征在于,该第a个宏块列包括多个第三宏块,并且该第b个宏块列包括多个第四宏块,该视频编码装置还包括: 一第三编码器, 其中,该第一编码器还用以依序地对该些第三宏块执行该动作估测, 当该第一编码器对该些第三宏块中第e个第三宏块执行该动作估测时,由该第三编码器开始依序地对该些第四宏块执行该动作估测,其中e为大于等于3的正整数。
14.根据权利要求10所述的视频编码装置,其特征在于,该第一图像包括多个宏块列群组,该第a个宏块列与该第b个宏块列同属于该些宏块列群组中的一第一宏块列群组,该第a个宏块列包括多个第三宏块,并且该第b个宏块列包括多个第四宏块,该些宏块列群组包括一第二宏块列群组,该第二宏块列群组包括一第一宏块列与一第二宏块列,该第一宏块列包括多个第五宏块,并且该第二宏块列包括多个第六宏块,该视频编码装置还包括: 一第三编码器, 其中,该第一编码器还用以交错地对该些第三宏块的其中之一与该些第四宏块的其中之一执行该动作估测,并且同时由该第三编码器交错地对该些第五宏块的其中之一与该些第六宏块的其中之一执行该动作估测。
15.根据权利要求9所述的视频编码装置,其特征在于,该第一宏块是被包括在一第一图像,并且该第二宏块是被包括在一第二图像,并且该第一图像不同于该第二图像。
16.根据权利要求9所述的视频编码装置,其特征在于,该情境熵值编码包括一运算编码。
【文档编号】H04N19/176GK103702129SQ201210370023
【公开日】2014年4月2日 申请日期:2012年9月27日 优先权日:2012年9月27日
【发明者】张育玮, 吕盈宏, 黄彦如 申请人:联咏科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1