一种视频编码器及视频编码方法与流程

文档序号:16519499发布日期:2019-01-05 09:51阅读:223来源:国知局
一种视频编码器及视频编码方法与流程

本申请主张在2017年06月28日提出申请的申请号为62/525,801的美国临时申请的权利,且上述美国专利申请以引用方式并入本文中。



背景技术:

本发明涉及编码视频帧,且更具体而言,涉及一种执行具有切片边界预测的固定尺寸切片编码的方法及装置。

传统的视频编解码标准通常采用基于块(或者基于编码单元)的编解码技术,以利用空间冗余。例如,基本的方式是将整个源帧分割成多个块(编码单元),对每个块(编码单元)执行预测,变换每个块(编码单元)的残差,以及执行量化和熵编码。此外,已重构帧在编解码环中被生成,以提供用于编解码后续块(编码单元)的参考像素数据。对于某些视频编解码标准,环路滤波器可以用于增强已重构帧的图像质量。

将视频帧分割成多个切片在一些应用中是基础的,例如,差错回弹(errorresilience)、网络传输、低延迟编解码器设计等。具体地,切片可以在编码器侧处被单独编码,从而可以在解码器侧处被单独解码。对于某些应用,例如视频电话会议(例如,lte上的视频(videooverlte,vilte))和视频流服务(例如,视频点播(videoondemand,vod))或单播/多播互联网协议电视(internetprotocoltelevision,iptv),固定尺寸切片编码主要用于使得切片的比特流尺寸受最大编码切片尺寸的约束。也就是说,其中i是帧中每个编码单元的索引,mbsize是每个编码单元的比特流尺寸,slicesizemax是切片的最大比特流尺寸。然而,当视频编码器编码当前编码单元时,当前编码单元的比特计数信息不可用,是因为编码器所采用的流水线结构的硬件限制。因此,在编码为当前切片的最后一个编码单元的当前编码单元之后,编码切片尺寸可能超过最大编码切片尺寸。如果编码切片尺寸超过最大编码切片尺寸,则重新编码最后一个编码单元,以使得编码切片尺寸受最大编码切片尺寸的约束在硬件实现中是不可行的。



技术实现要素:

所要求保护的本发明的目的之一在于,提供一种执行具有切片边界预测的固定尺寸切片编码的方法及装置。

根据本发明的第一方面,公开一种示例性视频编码器。该示例性视频编码器包括视频编码电路和切片确定电路。视频编码电路用于根据帧中的第一切片的终点与第二切片的起点之间的第一编码单元边界,编码帧中的第一切片,并输出第一切片的第一比特流,其中帧中的每个切片包括多个编码单元,且每个编码单元包括多个像素。切片确定电路用于在第一切片的最后一个编码单元的比特流由视频编码电路生成之前,预测第一编码单元边界,并通知视频编码电路第一编码单元边界,其中视频编码电路参考由切片确定电路所预测的第一编码边界以保证第一比特流的比特流尺寸受预设比特流尺寸阈值的约束。

根据本发明的第二方面,公开一种示例性视频编码方法。该示例性视频编码方法包括:视频编码电路根据帧中的第一切片的终点与第二切片的起点之间的第一编码单元边界,编码帧中的第一切片,并输出第一切片的第一比特流,其中帧中的每个切片包括多个编码单元,且每个编码单元包括多个像素;以及在第一切片的最后一个编码单元的比特流由视频编码电路生成之前,预测第一编码单元边界,并通知视频编码电路第一编码单元边界,其中视频编码电路参考预测的第一编码边界以保证第一比特流的比特流尺寸受预设比特流尺寸阈值的约束。

本发明的有益效果有:本发明通过切片确定电路在切片的最后一个编码单元的比特流由视频编码电路生成之前,预测编码单元边界,并通知视频编码电路所述编码单元边界,使得视频编码电路参考所述编码边界,从而保证比特流的比特流尺寸受预设比特流尺寸阈值的约束,能够在硬件中可行。

在阅读以下对各图及附图中所示出的优选实施例的详细说明之后,本发明的这些及其它目标无疑将对所属领域的技术人员显而易见。

附图说明

图1是示出根据本发明实施例的视频编码器的示意图。

图2是示出根据本发明实施例的被分割成多个切片的视频帧的示意图。

图3是示出根据本发明实施例的视频编码电路的示意图。

图4是示出根据本发明实施例的第一基于流水线视频编码器的示意图。

图5是示出根据本发明实施例的属于使用固定尺寸切片编码方案所编码的不同切片的编码单元的一排列的示意图。

图6是示出根据本发明实施例的用于确定固定尺寸切片编码下所处理的切片的起点/终点的第一切片边界预测方法的流程图。

图7是示出根据本发明实施例的第二基于流水线视频编码器的示意图。

图8是示出根据本发明实施例的属于使用固定尺寸切片编码方案所编码的不同切片的编码单元的另一排列的示意图。

图9是示出根据本发明实施例的用于确定固定尺寸切片编码下所处理的切片的起点/终点的第二切片边界预测方法的流程图。

图10是示出根据本发明实施例的为宏块自适应帧域编解码模式下所预测的宏块对边界的切片边界的示意图。

具体实施方式

本说明书及权利要求书通篇中所用的某些用语指代特定部件。如所属领域的技术人员可以理解的是,电子设备制造商可利用不同名称来指代同一个部件。本文并非以名称来区分部件,而是以功能来区分部件。在以下说明书及权利要求书中,用语“包括”是开放式的限定词语,因此其应被解释为意指“包括但不限于…”。另外,用语“耦合”旨在意指间接电连接或直接电连接。因此,当一个装置耦合到另一装置时,则这种连接可以是直接电连接或通过其他装置及连接部而实现的间接电连接。

图1是示出根据本发明实施例的视频编码器的示意图。视频编码器100包括切片确定电路102和视频编码电路104。视频编码器100将一个视频帧img分割成多个切片。例如,视频编码器100可以单独编码同一视频帧img中的切片。因此,每个切片的编码数据可以在视频解码器(未示出)处单独可解码。然而,这仅用于示意目的,并不用于限制本发明。图2是示出根据本发明实施例的被分割成多个切片的视频帧的示意图。视频帧img202包括多个编码单元行,即r0-rm-1。编码单元行r0-rm-1中的每个包括多个编码单元(codingunit,cu)204。每个编码单元204包括多个像素206。例如,基于实际编码标准,编码单元204可以是宏块(macroblock,mb)、超级块(superblock,sb)、编码树块(codetreeblock,ctb)或宏块对。在本示例中,视频帧img被分割成多个切片(例如切片#0,切片#1,…,切片#k-1),其中这些切片均由视频编码电路104进行编码。在切片被编码之后,该切片的比特流bsslc自视频编码电路104输出。对于一些应用,一个切片的比特流bsslc可以被存储在存储设备116中。对于其他应用,一个切片的比特流bsslc可以被转发到发送器112。发送器112将一个切片的比特流bsslc封装到网络包pkt中,并将网络包pkt通过网络114发送到一个或多个目标设备。例如,网络包pkt可以是实时传输协议(real-timetransportprotocol,rtp)包。

视频编码电路104是视频编码器100的核心部分,并具有符合编解码标准的编码器架构。图3是示出根据本发明实施例的视频编码电路的示意图。图1中所示的视频编码电路104可以使用图3中所示的视频编码电路300来实现。应注意的是,图3中所示的编码器架构仅用于示意目的,并不用于限制本发明。例如,不同编码器架构可以分别在不同的编解码标准下进行使用。在本实施例中,视频编码器300包括残差计算电路302、变换电路(由“t”表示)303、量化电路(由“q”表示)304、熵编码电路(例如,可变长编码器)305、逆量化电路(由“iq”表示)306、逆变换电路(由“it”表示)307、重构电路308、至少一个环路滤波器309、参考帧缓存器310、帧内预测电路(由“ip”表示)311、帧间预测电路312(其包括运动估计电路(由“me”表示)313和运动补偿电路(由“mc”表示)314)和模式确定电路315。由于视频编码电路300中所实现的这些电路模块的基本功能和操作对本领域的技术人员而言是已知的,因此为了简洁,在此处省略进一步的说明。

在本实施例中,切片确定电路102用于在当前切片的最后一个编码单元(例如,最后一个mb/sb/ctb/mb对)的比特流由视频编码电路104生成之前,预测当前切片与下一切片之间的编码单元边界(例如,mb/sb/ctb/mb对边界)。切片确定电路102还用于通知视频编码电路104预测的编码单元边界,使得视频编码电路104可以参考由切片确定电路102所预测的编码单元边界,以保证当前切片的比特流的比特流尺寸受预设比特流尺寸阈值slicesizemax的约束。在固定尺寸切片编码由视频编码电路104使用的情况中,预设比特流尺寸阈值slicesizemax可以是固定值,其是由视频编码电路104所编码的每个切片的最大比特流尺寸。可选地,预设比特流尺寸阈值slicesizemax可以被自适应地调整。例如,预设比特流尺寸阈值slicesizemax可以由用作由视频编码电路104所编码的第一切片的最大比特流尺寸的第一值来设置,并且预设比特流尺寸阈值slicesizemax可以由用作由视频编码电路104所编码的第二切片的最大比特流尺寸的第二值来设置,其中第一值和第二值无需相同。

更具体地,视频编码电路104根据同一视频帧img中的当前切片的终点(例如当前切片的最后一个编码单元)与下一切片的起点(例如下一切片的第一个编码单元)之间的编码单元边界,编码视频帧img中的当前切片,并输出当前切片的比特流(即当前切片的编码结果)。在本实施例中,在当前编码单元的比特流(即编码结果)由视频编码电路104生成之前,切片确定电路102确定当前编码单元是否是当前切片的最后一个编码单元。当在当前切片的编码完成之前编码单元边界被预测时,下一切片中的第一个编码单元的位置和当前切片中的最后一个编码单元的位置可以提前被确定。当当前编码单元被判断为当前切片的最后一个编码单元(或者下一编码单元被判断为下一切片的第一个编码单元)时,视频编码电路104可以适当地控制当前编码单元的编码尺寸,以使得当前切片的比特流的比特流尺寸(即当前切片的编码尺寸)受预设比特尺寸阈值slicesizemax的约束(例如,)。由于在编码为当前切片的最后一个编码单元的当前编码单元之后编码切片尺寸超过最大编码切片尺寸的条件可以通过由切片确定电路102所作出的切片边界预测(即切片终点预测/切片起点预测)来避免,所以当前切片中没有编码单元需要由视频编码电路104来重新编码,以用于使得当前切片的比特流的比特流尺寸受预设比特流尺寸阈值slicesizemax的约束。这样,固定尺寸切片编码的硬件实现可以成功地在视频编码器100中实现。下面描述所提出的切片边界预测(即切片终点预测/切片起点预测)的进一步说明。

图4是示出根据本发明实施例的第一基于流水线视频编码器的示意图。图1中所示的视频编码器100可以使用图4中所示的基于流水线视频编码器400来实现。在本实施例中,基于流水线视频编码器400具有切片确定电路402和视频编码电路(其包括熵编码电路404和特定视频编码功能所需的其他电路模块(未示出)),其被配置在具有多个级联的流水线阶段的多阶段流水线架构中。基于流水线视频编码器400的切片确定电路402可以用作图1中所示的切片确定电路102。此外,基于流水线视频编码器400的视频编码电路可以用作图1中所示的视频编码电路104。

如图4所示,切片确定电路402位于第1流水线阶段401,熵编码电路404位于第n流水线阶段403,其中l<n。应注意的是,视频编码电路可以具有除了熵编码电路404之外的电路模块,并且这些电路模块可以位于多阶段流水线架构的某些流水线阶段。此外,流水线寄存器411耦接于第1流水线阶段401与先前流水线阶段(即第(l-1)流水线阶段)之间,以及流水线寄存器412耦接于第1流水线阶段401与下一流水线阶段(即第(l+1)流水线阶段)之间。同样地,流水线寄存器413耦接于第n流水线阶段403与先前流水线阶段(即第(n-1)流水线阶段)之间,以及流水线寄存器414耦接于第n流水线阶段403与下一流水线阶段(即第(n+1)流水线阶段)之间。

视频帧img的编码单元可以以流水线方式进行处理。也就是说,一个编码单元顺序地由不同流水线阶段来处理,并且不同的流水线阶段同时处理不同的编码单元。此外,视频帧的编码单元可以以光栅扫描顺序进行编码。同一视频帧中的编码单元以光栅扫描顺序被馈入到多阶段流水线架构。也就是说,同一编码单元行中的编码单元从最左侧编码单元到最右侧编码单元进行处理,并且同一视频帧中的编码单元行从最上编码行到最小编码行进行处理。因此,属于同一切片的编码单元cui被顺序地馈入到多阶段流水线架构中,其中i是切片中的编码单元索引,并且该切片开始于cu0(即,i=0的cui)。

请结合参考图5和图4。图5是示出根据本发明实施例的属于使用固定尺寸切片编码方案所编码的不同切片的编码单元的一排列的示意图。由于同一视频帧img中的不同切片的比特流的比特流尺寸(即同一视频帧img中的不同切片的编码尺寸)需要受相互相等或不同的各个的预设比特流尺寸阈值(即最大编码切片尺寸)slicesizemax的约束,所以相邻切片之间的编码单元边界(例如,当前切片的终点与下一切片的起点之间的边界)应该事先由切片确定电路402来确定,以避免在编码为当前切片的最后一个编码单元的当前编码单元之后,编码切片尺寸超过最大编码切片尺寸的条件。

如图5所示,切片确定电路402用于确定编码单元502是切片slc_1的最后一个编码单元,编码单元506是切片slc_2的最后一个编码单元,以及编码单元508是切片slc_3的最后一个编码单元。由于编码单元502是切片slc_1的最后一个编码单元,所以下一编码单元(即编码单元503)被识别为下一切片的第一个编码单元(即切片slc_2的cu0)。由于编码单元506是切片slc_2的最后一个编码单元,所以下一编码单元(即编码单元507)被识别为下一切片的第一个编码单元(即切片slc_3的cu0)。由于编码单元508是切片slc_3的最后一个编码单元,所以下一编码单元(即编码单元509)被识别为下一切片的第一个编码单元(即切片slc_4的cu0)。

切片slc_1开始于编码单元501,并结束于编码单元502。切片slc_2开始于编码单元503,并结束于编码单元506。切片slc_3开始于编码单元507,并结束于编码单元508。应注意的是,如果相同的预设比特流阈值slicesizemax由不同切片的编码来使用,则同一视频帧中的不同切片(例如,slc_1-slc_4)可以具有不同数量的编码单元(即不同的未编码切片尺寸),但应具有固定尺寸切片编码下的相同的比特流尺寸(即相同的编码切片尺寸)。

如上所述,同一视频帧中的编码单元以光栅扫描顺序被馈入到多阶段流水线架构中。当当前编码单元进入切片确定电路402所在的第1流水线阶段401时,切片确定电路402用于确定当前编码单元是否是当前切片的最后一个编码单元。假设切片slc_1的终点和切片slc_2的起点之间的编码单元边界由切片确定电路402来识别,则编码单元506是切片slc_2中的第n个编码单元cun(即i=n的cui),以及编码单元504是切片slc_2中的第(n+l-n)个编码单元cun+l-n(即i=n+l-n的cui)。当编码单元506是进入第1流水线阶段401的当前编码单元时,由第1流水线阶段401已处理且现在进入第n流水线阶段403(n>l)的先前编码单元是编码单元504。由于多阶段流水线架构的内在特性,0≦i≦n+l-n的所有编码单元cui已由熵编码电路404顺序处理。在编码单元504(即切片slc_2中的cun+l-n)的比特流由熵编码电路404生成之后,由熵编码电路404所确定的0≦i≦n+l-n的所有编码单元cui的比特流的实际比特计数均对切片确定电路402可用。每当编码单元的比特流由熵编码电路404生成时,切片确定电路402可以获取并存储编码单元的比特流的实际比特计数。

此时,由于多阶段流水线架构的内在特性,n+l-n+1≦i≦n的所有编码单元cui还没有由熵编码电路404处理。因此,n+l-n+1≦i≦n的所有编码单元cui的比特流的实际比特计数对切片确定电路402不可用。本发明提出在切片确定电路402处所执行的切片边界预测(即切片终点预测/切片起点预测)中使用参数cubitemp,其中cubitemp表示还没经历涉及编码单元cui(n+l-n+1≦i≦n)的编码的熵编码的流水线中n+l-n+1≦i≦n的所有编码单元cui的已预测比特计数。

在第一示例性参数设置设计中,由切片确定电路402所使用的参数cubitemp可以从预设经验常量值来推导。

在第二示例性参数设置设计中,由切片确定电路402所使用的参数cubitemp可以从自视频编码器获取的信息中来推导。例如,自视频编码器获取的信息可以包括熵编码电路404所确定的先前处理编码单元的比特流的实际比特计数。因此,参数cubitemp可以基于从自视频编码器获取的信息中推导的最大比特计数或平均比特计数来设置。

在第三示例性参数设置设计中,由切片确定电路402所使用的参数cubitemp可以从视频编码器的设置来推导。例如,图3中所示的量化电路304根据量化参数(quantizationparameter,qp)设置对变换系数执行量化,并且逆量化电路306根据由量化电路304所使用的相同的qp设置对已量化变换系数执行逆量化。当基于流水线视频编码器400的视频编码电路使用视频编码电路300来实现时,视频编码器的设置可以包括qp设置。因此,参数cubitemp的设置取决于qp设置。

在第四示例性参数设置设计中,由切片确定电路402所使用的cubitemp可以从切片确定电路402的设置来推导。例如,阈值slcthr由切片确定电路402来使用以判断当前编码单元是否是当前切片的最后一个编码单元。因此,参数cubitemp的设置取决于阈值slcthr。

在第五示例性参数设置设计中,由切片确定电路402所使用的cubitemp可以从发送由熵编码电路404生成的比特流的网络(例如,图1中所示的网络114)的容量来推导。

在第六示例性参数设置设计中,由切片确定电路402所使用的cubitemp可以从宏块自适应帧域(macroblock-adaptiveframe-field,mbaff)编解码的可用性来推导。mbaff编解码使得在单个帧内的帧与域编解码之间自适应切换成为可能,例如,以最大化编码效率。由于宏块按照由mbaff编解码下的两个垂直相邻的宏块所组成的对进行处理,所以当前切片的终点与下一切片的起点之间的编码单元边界应是两个宏块对之间的边界,其中每个宏块对由两个垂直相邻的宏块组成。因此,参数cubitemp应该适当地被设置以保证固定长度切片编码下的切片边界预测(即切片终点预测/切片起点预测)的正确性。图10是示出根据本发明实施例的为mbaff编解码模式下所预测的宏块对边界的切片边界的示意图。mbaff编解码模式下的宏块的编码顺序由顺序索引值“1”,“2”,“3”,“4”,…“19”,“20”,“21”,“22”,“23”,“24”,“25”和“26”来表示。如图10所示,具有索引值“1”和“2”的宏块形成一个宏块对,具有索引值“3”和“4”的宏块形成一个宏块对,具有索引值“19”和“20”的宏块形成一个宏块对,具有索引值“21”和“22”的宏块形成一个宏块对,具有索引值“23”和“24”的宏块形成一个宏块对,以及具有索引值“25”和“26”的宏块形成一个宏块对。由于每个宏块对由两个垂直相邻的宏块组成,所以一个切片slc_1的最后一个宏块(即具有索引值“24”的宏块)和下一切片slc_2的第一个宏块(即具有索引值“25”的宏块)相互不垂直相邻。

应注意的是,上述参数设置设计仅用于示意目的,并不用于限制本发明。实际上,参数cubitemp的设置可以基于实际设计考虑而变化。

当编码单元506(即切片slc_2中的cun)是进入切片确定电路402所在的第1流水线阶段401的当前编码单元时,切片确定电路402计算切片的比特和bitsumn以确定编码单元506(即切片slc_2中的cun)是否是固定尺寸切片编码下的切片slc_2的最后一个编码单元。例如,比特和bitsumn的计算可以使用如下公式来表达。

在上述公式(1)中,i是切片中编码单元索引,cubiti是由熵编码电路404所确定的编码单元cui的比特流的实际比特计数,slchdr是切片头的预设比特计数,以及cubitemp是表示还没有经历熵编码的流水线中至少一个编码单元的已预测比特计数的参数。

在使用上述公式(1)获得切片slc_2的估计的比特和bitsumn之后,切片确定电路402比较估计的比特和bitsumn与阈值slcthr以生成比较结果,并参考比较结果来确定编码单元506(即切片slc_2中的cun)是否是固定尺寸切片编码下的切片slc_2的最后一个编码单元。如果估计的比特和bitsumn超过阈值slcthr,则切片确定电路402确定编码单元506(即切片slc_2中的cun)是固定尺寸切片编码下的切片slc_2的最后一个编码单元,并将切片的终点指示给视频编码电路。在本发明一些实施例中,切片的终点语法被发信在从熵编码电路404生成的切片slc_2的比特流中。如果估计的比特和bitsumn还没有超过阈值slcthr,则切片确定电路402确定编码单元506(即切片slc_2中的cun)不是固定尺寸切片编码下的切片slc_2的最后一个编码单元。

应注意的是,基于为流水线中已预测比特计数的参数cubitemp的设置,阈值slcthr的设置可以是可调整的。例如,阈值slcthr可以小于或等于预设比特流尺寸阈值slicesizemax。此外,相同的公式(1)可以用于识别固定尺寸切片编码下的其他切片的最后一个编码单元(例如切片slc_1的编码单元502和切片slc_3的编码单元508)。

图6是示出根据本发明实施例的用于确定固定尺寸切片编码下所处理的切片的起点/终点的第一切片边界预测方法的流程图。假设结果本质上是相同的,则这些步骤无需按照图6中所示的确切顺序来执行。切片边界预测方法可以包括如下步骤。

步骤602:第1流水线阶段401执行当前切片中当前编码单元cun的处理,其中切片确定电路402位于第1流水线阶段401。

步骤604:切片确定电路402从视频编码电路(具体地,熵编码电路404所在的第n流水线阶段403)获取并存储编码单元cun+l-n的比特流的实际比特计数cubitn+l-n。

步骤606:切片确定电路402根据实际比特计数cubiti(0≤i≤n+l-n)、切片头slchdr的比特计数和推导的参数cubitemp计算当前切片的比特和bitsumn。

步骤608:切片确定电路402检测估计的比特和bitsumn是否超过阈值slcthr。

步骤610:切片确定电路402通过确定当前编码单元cun是固定尺寸切片编码下的当前切片的最后一个编码单元,预测当前切片与下一切片之间的编码单元边界。

步骤612:切片确定电路402将切片的终点指示给视频编码电路。

步骤614:切片确定电路402确定当前编码单元cun不是固定尺寸切片编码下的当前切片的最后一个编码单元。

步骤616:第1流水线阶段401继续当前切片中的下一编码单元cun+1的处理。

由于在阅读上述关于图4中所示的基于流水线视频编码器400的段落之后,本领域的技术人员可以很容易理解图6中所示的切片边界预测方法的细节,所以为了简洁,此处省略进一步的说明。

在上述切片边界预测设计中,当当前编码单元cun进入切片确定电路402所在的第1流水线阶段401时,切片确定电路402所使用的参数cubitemp被设置以表示还没有经历涉及编码单元cui(n+l-n+1≦i≦n)的编码的熵编码的流水线中所有编码单元cui(n+l-n+1≦i≦n)的已预测比特计数。可选地,第1流水线阶段与第n流水线阶段之间的中间流水线阶段所提供的辅助比特信息也可以由切片边界预测来使用。

图7是示出根据本发明实施例的第二基于流水线视频编码器的示意图。图1中所示的视频编码器100可以使用图7中所示的基于流水线视频编码器700来实现。在本实施例中,基于流水线视频编码器700具有切片确定电路702和视频编码电路(其包括比特估计电路704、熵编码电路706和特定视频编码功能所需的其他电路模块(未示出)),其被配置在具有多个级联的流水线阶段的多阶段流水线架构中。基于流水线视频编码器700的切片确定电路702可以用作图1中所示的切片确定电路102。此外,基于流水线视频编码器700的视频编码电路可以用作图1中所示的视频编码电路104。

如图7所示,切片确定电路702位于第1流水线阶段701,比特估计电路704位于第m流水线阶段703,以及熵编码电路706位于第n流水线阶段705,其中l<m<n。应注意的是,视频编码电路可以具有除了比特估计电路704和熵编码电路706之外的电路模块,并且这些电路模块可以位于多阶段流水线架构的某些流水线阶段。此外,流水线寄存器711耦接于第1流水线阶段701与先前流水线阶段(即第(l-1)流水线阶段)之间,以及流水线寄存器712耦接于第1流水线阶段701与下一流水线阶段(即第(l+1)流水线阶段)之间。同样地,流水线寄存器713耦接于第m流水线阶段703与先前流水线阶段(即第(m-1)流水线阶段)之间,以及流水线寄存器714耦接于第m流水线阶段703与下一流水线阶段(即第(m+1)流水线阶段)之间;以及流水线寄存器715耦接于第n流水线阶段705与先前流水线阶段(即第(n-1)流水线阶段)之间,以及流水线寄存器716耦接于第n流水线阶段705与下一流水线阶段(即第(n+1)流水线阶段)之间。

视频帧img的编码单元可以以流水线方式进行处理。也就是说,一个编码单元顺序地由不同流水线阶段来处理,并且不同的流水线阶段可以同时处理不同的编码单元。此外,视频帧的编码单元可以以光栅扫描顺序进行编码。因此,同一视频帧中的编码单元以光栅扫描顺序被馈入到多阶段流水线架构。也就是说,同一编码单元行中的编码单元从最左侧编码单元到最右侧编码单元进行处理,并且同一视频帧中的编码单元行从最上编码行到最小编码行进行处理。例如,属于同一切片的编码单元cui被顺序地馈入到多阶段流水线架构中,其中i是切片中的编码单元索引,并且该切片开始于cu0(即,i=0的cui)。

请结合参考图8和图7。图8是示出根据本发明实施例的属于使用固定尺寸切片编码方案所编码的不同切片的编码单元的另一排列的示意图。由于同一视频帧img中的不同切片的比特流的比特流尺寸(即同一视频帧img中的不同切片的编码尺寸)需要受相互相等或不同的各个的预设比特流尺寸阈值(即最大编码切片尺寸)slicesizemax的约束,所以相邻切片之间的编码单元边界(例如,当前切片的终点与下一切片的起点之间的边界)应该事先由切片确定电路702来确定,以避免在编码为当前切片的最后一个编码单元的当前编码单元之后编码切片尺寸超过最大编码切片尺寸的条件。如图8所示,切片确定电路702用于确定编码单元502是切片slc_1的最后一个编码单元,编码单元506是切片slc_2的最后一个编码单元,以及编码单元508是切片slc_3的最后一个编码单元。由于编码单元502是切片slc_1的最后一个编码单元,所以下一编码单元(即编码单元503)被识别为下一切片的第一个编码单元(即切片slc_2的cu0)。由于编码单元506是切片slc_2的最后一个编码单元,所以下一编码单元(即编码单元507)被识别为下一切片的第一个编码单元(即切片slc_3的cu0)。由于编码单元508是切片slc_3的最后一个编码单元,所以下一编码单元(即编码单元509)被识别为下一切片的第一个编码单元(即切片slc_4的cu0)。

切片slc_1开始于编码单元501,并结束于编码单元502。切片slc_2开始于编码单元503,并结束于编码单元506。切片slc_3开始于编码单元507,并结束于编码单元508。应注意的是,如果相同的预设比特流阈值slicesizemax由不同切片的编码来使用,则同一视频帧中的不同切片(例如,slc_1-slc_4)可以具有不同数量的编码单元(即不同的未编码切片尺寸),但应具有固定尺寸切片编码下的相同的比特流尺寸(即相同的编码切片尺寸)。

如上所述,同一视频帧中的编码单元以光栅扫描顺序被馈入到多阶段流水线架构中。当当前编码单元进入切片确定电路702所在的第1流水线阶段701时,切片确定电路702用于确定当前编码单元是否是当前切片的最后一个编码单元。假设切片slc_1的终点和切片slc_2的起点之间的编码单元边界由切片确定电路702来识别,则编码单元506是切片slc_2中的第n个编码单元cun(即i=n的cui),编码单元505是切片slc_2中的第n个编码单元cun+l-m(即i=n+l-m的cui),以及编码单元504是切片slc_2中的第(n+l-n)个编码单元cun+l-n(即i=n+l-n的cui)。当编码单元506是进入第1流水线阶段701的当前编码单元时,由第1流水线阶段701和第m流水线阶段703已处理且现在进入第n流水线阶段705(n>m>l)的一个先前编码单元是编码单元504,以及由第1流水线阶段701已处理且现在进入第m流水线阶段703(m>l)的另一个先前编码单元是编码单元505。

比特估计电路704用于在编码单元的比特流由熵编码电路706生成之前,计算该编码单元的比特流的估计的比特计数。例如,基于流水线视频编码器700的视频编码电路使用图3中所示的视频编码电路300来实现,其中熵编码电路305用作熵编码电路706。在本发明的一些实施例中,模式确定电路315可以用作比特估计电路704。模式确定电路315可以执行率失真优化(rate-distortionoptimization,rdo),以从候选帧内预测模式和候选帧间预测模式中选择具有最低率失真成本的最佳编码模式。例如,率失真成本函数j=d+λ×r由模式确定电路315来使用,其中j是率失真成本,d是应用于编码单元的帧内/帧间预测之后的像素失真,r表示编码单元的编码结果所需的估计的比特数量(即估计的编码单元的编码尺寸),以及λ表示拉格朗日成子(lagrangemultiplier)。因此,在编码单元经历率失真优化之后,r的值可以用作提供给切片确定电路702的估计的比特计数,以用于切片边界预测。

由于多阶段流水线架构的内在特性,0≦i≦n+l-n的所有编码单元cui已由熵编码电路706顺序处理,并且n+l-n+1≦i≦n+l-m的所有编码单元cui已由比特估计电路704顺序处理。在编码单元504(即切片slc_2中的cun+l-n)的比特流由熵编码电路706生成之后,由熵编码电路706所确定的0≦i≦n+l-n的所有编码单元cui的比特流的实际比特计数均对切片确定电路702可用。在本实施例中,每当编码单元的比特流由熵编码电路706生成时,切片确定电路702可以获取并存储编码单元的比特流的实际比特计数。此外,在编码单元505(即切片slc_2中的cun+l-m)由比特估计电路704处理之后,由比特估计电路704所确定的n+l-n+1≦i≦n+l-m的所有编码单元cui的比特流的估计的比特计数对切片确定电路702可用。在本实施例中,每当比特估计电路704完成编码单元的rdo以用于选择编码单元的最佳编码模式时,切片确定电路702可以获取并存储编码单元的比特流的估计的比特计数。

此时,由于多阶段流水线架构的内在特性,n+l-m+1≦i≦n的所有编码单元cui还没有由比特估计电路704和熵编码电路706中的任何进行处理。因此,n+l-m+1≦i≦n的所有编码单元cui的比特流的实际比特计数和n+l-m+1≦i≦n的所有编码单元cui的比特流的估计的比特计数均对切片确定电路702不可用。此外,由于多阶段流水线架构的内在特性,所以n+l-n+1≦i≦n+l-m的所有编码单元cui还没有由熵编码电路706处理。因此,n+l-n+1≦i≦n+l-m的所有编码单元cui的比特流的实际比特计数对切片确定电路702不可用。然而,在位于第1流水线阶段701与第n流水线阶段705之间的第m流水线阶段703处的比特估计电路704的帮助下,n+l-n+1≦i≦n+l-m的所有编码单元cui的比特流的估计的比特计数对切片确定电路702可用。简言之,由比特估计电路704所计算的每个编码单元cui(n+l-n+1≦i≦n+l-m)的估计的比特计数和由熵编码电路706所确定的每个cui(0≦i≦n+l-n)的实际比特计数可以被用在切片确定电路702处所执行的切片边界预测(即切片终点预测/切片起点预测)中。关于n+l-m+1≦i≦n的编码单元cui,本发明提出在切片确定电路702处所执行的切片边界预测(即切片终点预测/切片起点预测)中使用参数cubitemp,其中cubitemp表示还没经历涉及编码单元cui(n+l-m+1≦i≦n)的编码的率失真优化和熵编码的流水线中所有编码单元cui(n+l-m+1≦i≦n)的已预测比特计数。

在第一示例性参数设置设计中,由切片确定电路702所使用的参数cubitemp可以从预设经验常量值来推导。

在第二示例性参数设置设计中,由切片确定电路702所使用的参数cubitemp可以从自视频编码器获取的信息中推导。例如,自视频编码器获取的信息可以包括熵编码电路706所确定的先前处理编码单元的比特流的实际比特计数。因此,参数cubitemp可以基于从自视频编码器获取的信息中推导的最大比特计数或平均比特计数来设置。

在第三示例性参数设置设计中,由切片确定电路702所使用的参数cubitemp可以从视频编码器的设置来推导。例如,图3中所示的量化电路304根据量化参数(quantizationparameter,qp)设置对变换系数执行量化,并且逆量化电路306根据由量化电路304所使用的相同的qp设置对已量化变换系数执行逆量化。当基于流水线视频编码器700的视频编码电路使用视频编码电路300来实现时,视频编码器的设置可以包括qp设置。因此,参数cubitemp的设置取决于qp设置。

在第四示例性参数设置设计中,由切片确定电路702所使用的cubitemp可以从切片确定电路702的设置来推导。例如,阈值slcthr由切片确定电路702来使用以判断当前编码单元是否是当前切片的最后一个编码单元。因此,参数cubitemp的设置取决于阈值slcthr。

在第五示例性参数设置设计中,由切片确定电路702所使用的cubitemp可以从发送由熵编码电路706生成的比特流的网络(例如,图1中所示的网络114)的容量来推导。

在第六示例性参数设置设计中,由切片确定电路702所使用的cubitemp可以从宏块自适应帧域编解码的可用性来推导。mbaff编解码使得在单个帧内的帧与域编解码之间自适应切换成为可能,例如,以最大化编码效率。如图10所示,由于宏块按照由mbaff编解码下的两个垂直相邻的宏块所组成的对进行处理,所以当前切片的终点与下一切片的起点之间的编码单元边界应是两个宏块对之间的垂直边界,其中每个宏块对由两个垂直相邻的宏块组成。因此,参数cubitemp应该适当地被设置以保证固定长度切片编码下的切片边界预测(即切片终点预测/切片起点预测)的正确性。

应注意的是,上述参数设置设计仅用于示意目的,并不用于限制本发明。实际上,由切片确定电路702所使用的参数cubitemp的设置可以基于实际设计考虑而变化。

当编码单元506(即切片slc_2中的cun)是进入切片确定电路702所在的第1流水线阶段701的当前编码单元时,切片确定电路702计算切片的比特和bitsumn以确定编码单元506(即切片slc_2中的cun)是否是固定尺寸切片编码下的切片slc_2的最后一个编码单元。例如,比特和bitsumn的计算可以使用如下公式来表达。

在上述公式(2)中,i是切片中编码单元索引,cubiti是由熵编码电路706所确定的编码单元cui的比特流的实际比特计数,estcubiti是由比特估计电路704所计算的编码单元cui的比特流的估计比特计数,slchdr是切片头的预设比特计数,以及cubitemp是表示还没有经历率失真和熵编码的流水线中至少一个编码单元的已预测比特计数的参数。应注意的是,参数cubitemp可以在上述公式(1)和公式(2)可以具有不同的比特计数值。

在使用上述公式(2)获得切片slc_2的估计的比特和bitsumn之后,切片确定电路702比较估计的比特和bitsumn与阈值slcthr以生成比较结果,并参考比较结果来确定编码单元506(即切片slc_2中的cun)是否是固定尺寸切片编码下的切片slc_2的最后一个编码单元。如果估计的比特和bitsumn超过阈值slcthr,则切片确定电路702确定编码单元506(即切片slc_2中的cun)是固定尺寸切片编码下的切片slc_2的最后一个编码单元,并将切片的终点指示给视频编码电路。在本发明一些实施例中,切片的终点语法被发信在从熵编码电路706生成的切片slc_2的比特流中。如果估计的比特和bitsumn还没有超过阈值slcthr,则切片确定电路702确定编码单元506(即切片slc_2中的cun)不是固定尺寸切片编码下的切片slc_2的最后一个编码单元。

应注意的是,基于为流水线中已预测比特计数的参数cubitemp的设置,阈值slcthr的设置可以是可调整的。例如,阈值slcthr可以小于或等于预设比特流尺寸阈值slicesizemax。此外,相同的公式(2)可以用于识别固定尺寸切片编码下的其他切片的最后一个编码单元(例如切片slc_1的编码单元502和切片slc_3的编码单元508)。

图9是示出根据本发明实施例的用于确定固定尺寸切片编码下所处理的切片的起点/终点的第二切片边界预测方法的流程图。假设结果本质上是相同的,则这些步骤无需按照图9中所示的确切顺序来执行。本切片边界预测方法可以包括如下步骤。

步骤902:第1流水线阶段701执行当前切片中当前编码单元cun的处理,其中切片确定电路702位于第1流水线阶段701处。

步骤904:切片确定电路702从视频编码电路(具体地,熵编码电路706所在的第n流水线阶段705)获取并存储编码单元cun+l-n的比特流的实际比特计数cubitn+l-n。

步骤906:切片确定电路702从视频编码电路(具体地,比特估计电路704所在的第m流水线阶段703)获取并存储编码单元cun+l-m的比特流的估计的比特计数esmcubitn+l-n。

步骤908:切片确定电路702根据实际比特计数cubiti(0≤i≤n+l-n)、估计的比特计数estcubiti(n+l-n+1≤i≤n+l-m)、切片头slchdr的比特计数和推导的参数cubitemp计算当前切片的比特和。

步骤910:切片确定电路702检测估计的比特和bitsumn是否超过阈值slcthr。

步骤912:切片确定电路702通过确定当前编码单元cun是固定尺寸切片编码下的当前切片的最后一个编码单元,预测当前切片与下一切片之间的编码单元边界。

步骤914:切片确定电路702将切片的终点指示给视频编码电路。

步骤916:切片确定电路702确定当前编码单元cun不是固定尺寸切片编码下的当前切片的最后一个编码单元。

步骤918:第1流水线阶段701继续当前切片中的下一编码单元cun+1的处理。

由于在阅读上述关于图7中所示的基于流水线视频编码器700的段落之后,本领域的技术人员可以很容易理解图9中所示的切片边界预测方法的细节,所以为了简洁,此处省略进一步的说明。

所属领域的技术人员易知,可在保持本发明的教示内容的同时对装置及方法作出诸多修改及变动。因此,以上公开内容应被视为仅受随附权利要求书的范围的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1