CN110191339B - 码率估计核心单元、码率估计装置及码率估计方法 - Google Patents
码率估计核心单元、码率估计装置及码率估计方法 Download PDFInfo
- Publication number
- CN110191339B CN110191339B CN201910430467.2A CN201910430467A CN110191339B CN 110191339 B CN110191339 B CN 110191339B CN 201910430467 A CN201910430467 A CN 201910430467A CN 110191339 B CN110191339 B CN 110191339B
- Authority
- CN
- China
- Prior art keywords
- code rate
- rate estimation
- context
- residual
- sub
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及视频编码领域,提供了一种码率估计装置,包括提供初始状态的上下文初始化装置,控制码率估计启停的码率估计控制装置,头信息码率估计装置,头信息上下文维护装置,残差信息码率估计装置,残差信息上下文维护装置,头信息码率统计装置和码率统计装置。所述残差信息码率估计装置和所述头信息码率估计装置输出的码率估计由所述码率统计装置分类统计后得出最后的码率估计。本发明提供了一种切实可行的硬件实现方案及处理过程,从硬件的层面为编码器提供了压缩率高、准确率高的码率估计功能。
Description
技术领域
本发明涉及视频编码领域,尤其涉及一种码率估计核心单元、码率估计装置及码率估计方法。
背景技术
2013年1月份,JCT-VC(Joint Collaborative Team on Video Coding,视频编码联合组)发布了新一代视频压缩编码标准H.265,与上一代视频编码标准H.264 相比,其性能提升近50%左右。
视频编码标准常用于两类场景:1)非实时的电视节目、电影等场景,这种情况可以不在乎压缩编码时间,在满足视频标准的前提下,尽可能地去做模式搜索,通过不断迭代得到一个满意的压缩率,这类编码器通常用软件实现;2) 电视直播、监控等场景,这些场景有很严格的实时压缩编码要求,常用的帧率为24帧/秒、30帧/秒等,软件编码器受限于压缩算法计算复杂度和后台硬件的约束,通常很难达到这个要求,因此往往只能通过硬件加速来满足这些需求。
随着各种安全城市、智能城市等概念的普及,监控对实时视频编码的需求越来越多,也越来越高。在某些场景下,譬如办公考勤监控,监控录像需要存储一段时间,为此良好的压缩率能够极大的压缩存储代价;在某些场景下,譬如运动摄像机,电池容量有限,功耗低的编码器能够提升摄像机的使用时间;在某些场景下,譬如无线传输摄像装备,因数据传输的信道容量有限,一般要求编码器输出的码率非常平稳。不同的场景对编码器的要求五花八门,为此设计编码器的总体思路还是在于用尽可能小的计算量得到尽可能高的压缩率。硬件编码器最后都是要集成到芯片中去的,其硬件资源的开销同样是需要考量的一个重要指标,如何尽可能减少使用硬件资源、使用尽可能少的运算量得到一个压缩性能尽可能好的编码器是一项非常具有挑战的工作。
H.265标准由全世界的工程师提案,并在其官方模型上做测试,以测试压缩性能指标为准,最后确定每项提案是否被纳入标准或者官方模型。此模型为一个软件模型,它的计算量巨大,是上一代视频编码标准H.264官方模型运算量的5倍以上,而通常对硬件编码器来说,运算量往往决定了最后的功耗状况,从硬件编码器的实现角度来看,H.265的官方模型是不适合硬件实现的。虽然视频标准发展了20多年,但视频编码最底层的模式判决标准——经典的率失真函数——一直沿用至今,率失真函数计算包含三个变量:码率、失真和一个平衡这两者在最后的代价中权重的参数,它与量化步长有关。率失真函数中的每个变量对最后的代价计算影响都非常大,并且会影响到模式选择,进而影响到整个编码器的编码性能,其中失真部分的计算相对稳定。近20年来计算公式都未做调整,平衡码率和失真的参数跟更高层的应用息息相关(应用层面可以在更好的压缩率还是更好的图像质量之间做平衡)。最后剩下码率估计,对一个硬件编码器来说,码率估计算法和实现方案的优劣直接决定了编码器的好坏。H.264 标准支持两种不同熵编码模式,基于上下文的算术编码(CABAC)和基于上下文的变长编码(CAVLC),针对这两种不同编码方式,H.264官方模型也采用了两种不同的码率估计方案;而H.265标准只支持基于上下文的算术编码 (CABAC),为此H.265的官方模型中也只有针对基于上下文的算术编码 (CABAC)的码率估计,其基本思路是,在模式搜索过程中,将每种模式需要的语法元素做一遍编码再确定码率,硬件编码器通常是所有模式并行搜索,如果照着H.265的官方模型实现其码率估计方案,其硬件开销、运算量和功耗将会是巨大的。
发明内容
本发明的目的在于提供一种使用硬件较少、运算量较小从而功耗更低的硬件装置及其实现方法,以实现基于H.265编码标准的码率估计的硬件。
本发明提供了一种码率估计核心单元,包括一上下文更新装置和一码率查表装置,其中:
所述上下文更新装置通过查表的方式更新上下文状态;
所述码率查表装置通过查表的方式得到对当前输入的二值化串的码率估计。
上述的码率估计核心单元,其中,使用多个所述上下文更新装置对一编码单元进行状态更新。
上述的码率估计核心单元,其中,所述多个上下文更新装置通过串行或并行或串并结合的方式构成一复合更新装置。
上述的码率估计核心单元,其中,对于一个4×4残差块,所述复合更新装置包括:
4个所述上下文更新装置;
4个串行2次的上下文更新装置;
1个串行3次上下文更新装置;并且
上述的9个上下文更新装置并行。
上述的码率估计核心单元,其中,对于一个4×4子块,所述复合更新装置包括:
1个所述上下文更新装置;
1个串行5次的上下文更新装置;
1个串行10次上下文更新装置;
1个串行16次上下文更新装置;并且
上述的4个上下文更新装置并行。
本发明的另一目的在于提供一种码率估计装置,包括:
上下文初始化装置,对所有语法元素进行初始化,以输出上下文的原始状态;
码率估计控制装置,接收来自模式判决装置的编码启动信号和模式选择信号,生成模式选择信息、码率估计指令及Bypass码率估计;
头信息码率估计装置,通过查表的方式得到头信息的上下文更新状态、通过查表的方式得到对当前输入的二值化串的Regular码率估计;
头信息上下文维护装置,接收所述原始状态、所述头信息的上下文更新状态、所述模式选择信息、所述码率估计指令,进而生成输出至所述头信息码率估计装置的上下文的初始状态、二值化串、旁路使能信号。
残差信息码率估计装置,接收一量化数据,通过查表的方式得到残差信息的上下文更新状态、通过查表的方式得到该量化数据的码率估计;
残差信息上下文维护装置,接收所述原始状态、所述模式选择信息、所述残差信息的上下文更新状态,生成输出至所述残差信息码率估计装置的残差信息的初始状态;
头信息码率统计装置,接收所述Bypass码率估计及所述Regular码率估计,根据编码单元的尺寸和模式对所述Bypass码率估计及所述Regular码率估计进行累计统计,得到头信息码率;
码率统计装置,接收所述残差信息码率和所述头信息码率,生成最终的码率估计,输出至所述模式判决装置。
上述的码率统计装置,其中,所述残差信息码率估计装置包括:
残差信息二值化装置,接收所述量化数据,从中提取变换跳过标志、最后一个非零系数相关坐标和4×4子块是否非全零标志,并转换为二值化串;同时,对于采用Bypass编码模式的二值化串直接输出Bypass码率估计;
4×4子块码率估计装置,接收所述量化数据和残差信息的所述初始状态,通过查表的方式得到4×4子块的上下文更新状态和4×4子块码率估计;
4×4子块上下文中间状态维护装置,接收所述4×4子块码率估计装置输出的所述4×4子块的上下文更新状态并保存,在下一次对4×4子块进行码率估计时返回所述4×4子块码率估计装置,作为下一个4×4子块的上下文初始状态使用;
TSF码率估计装置,接收所述变换跳过标志和残差信息上下文维护装置输出的初始状态,通过查表的方式完成上下文更新和TSF码率估计;
LSC码率估计装置,接收所述最后一个非零系数相关坐标和残差信息上下文维护装置输出的初始状态,通过查表的方式完成上下文更新和LSC码率估计;
CSBF码率估计装置,接收4×4子块是否非全零标志和残差信息上下文维护装置输出的初始状态,通过查表的方式完成上下文更新和CSBF码率估计;
残差信息码率统计装置,接收所述Bypass码率估计、4×4子块码率估计、 TSF码率估计、LSC码率估计和CSBF码率估计,将其累加,从而获得残差信息码率并输出。
上述的码率统计装置,其中,所述4×4子块码率估计装置包括:
4×4子块二值化装置,接收所述量化数据,从中提取残差系数非零标志、残差系数大于1标志、残差系数大于2标志、残差系数余数和残差系数符号标志,并将其转化为二值化串;
SCF码率估计装置,接收所述残差系数非零标志的二值化串和所述初始状态通过查表的方式完成上下文更新和SCF码率估计;
GTR1码率估计装置,接收所述残差系数大于1标志的二值化串和所述初始状态通过查表的方式完成上下文更新和GTR1码率估计;
GTR2码率估计装置,接收所述残差系数大于2标志的二值化串和所述初始状态通过查表的方式完成上下文更新和GTR2码率估计;
CSF码率估计装置,接收所述4×4子块二值化装置转发的所述量化数据并计算CSF码率估计;
CALR码率估计装置,接收所述4×4子块二值化装置输出的CALR数据并计算CALR码率估计。
上述的码率统计装置,其中,所述CALR码率估计装置中,计算所述CALR 的步骤为:
P1、计算CALR_SHIFT的值;
P2、计算CALR_SUFFIX的值;
P3、获取所述CALR_SUFFIX的二进制值的最高非零位CALR_POS;
P4、若所述CALR_SHIFT大于等于4,则所述CALR的码率等于所述CALR_POS 乘以2,加cRiceParam,再加6;
否则,所述CALR的码率等于所述CALR_SHIFT对4取模,加cRiceParam,再加1;其中
CALR_SHIFT表示第一中间变量,CALR_SUFFIX表示第二中间变量, cRiceParam表示截断式莱斯二值化参数。
本发明还提出了一种码率估计方法,包括如下步骤:
S1、上下文初始化装置将上下文索引的原始状态分别输出给头信息上下文维护装置和残差信息上下文维护装置;
S2、通过查表的方式,分别对头信息和残差信息进行码率估计,得到头信息码率和残差信息码率;
S3、码率统计装置对所述头信息码率和残差信息码率按编码单元的大小和模式的不同进行分类和统计,并将统计得出的码率发送到模式判决装置。
上述的码率估计方法,其中,步骤S2中包括:
S21、对来自编码器其他装置的量化数据分类,并按该分类分别计算4×4子块码率、Bypass码率和Regular码率;
S22、对步骤S21中计算出的4×4子块码、Bypass码率和Regular码率进行统计,从而得出残差信息码率。
上述的码率估计方法,其中,步骤S21中包括:
S211、对输入的量化数据进行二值化处理;
S212、对二值化后的串分别进行码率估计;
S213、将步骤S212中获得的码率求和,得到4×4子块的码率。
与现有技术相比,本发明的技术方案提供了一种切实可行的硬件实现方案及处理过程,从硬件的层面为编码器提供了压缩率高、准确率高的码率估计功能。并且由于采取了查表的方式进行码率估计,既节省了大量的硬件计算资源,又提高了计算的速度。通过对码率估计核心单元的不同串并行组合,本发明还能适用于不同的上下文索引,灵活性较高,为H.265的硬件编码器的实现提供了很好的解决方案。
附图说明
图1是本发明中码率估计装置的一种结构框图;
图2是本发明中残差信息码率估计装置的一种结构框图;
图3是本发明中4×4子块码率估计装置的一种结构框图;
图4是本发明中码率估计核心单元的一种结构框图;
图5~图7d是一个4×4子块内可能出现的SCF串的所有上下文索引分布图,其中
图5是4×4残差块SCF串的上下文索引分布图,
图6a~6d是不包含DC分量的4×4子块SCF串的上下文索引分布图,
图7a~7d是包含DC分量的4×4子块SCF串的上下文索引分布图;
图8是本发明中2个上下文更新装置串行结构的上下文更新装置;
图9是本发明中5个上下文更新装置A1串、并混合的上下文更新装置;
图10~13是发明中多个上下文更新装置A1串、并混合的上下文更新装置的示例;
图14是本发明中GTR1串的上下文索引分布图。
具体实施方式
为使本发明的目的、特征更明显易懂,下面结合附图对本发明的具体实施方式作进一步的说明。然而,本发明可以用不同的形式实现,不应只是局限在所述的实施例。且,在不冲突的情况下,本申请中的实施例及实施例中的特征允许相互组合或替换。结合以下的说明,本发明的优点和特征将更清楚。
需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
还需声明的是,本发明中对步骤编号的目的在于便于引用,而非限定先后顺序。对于个别需强调顺序的步骤,文中将以专门文字进行特别说明。
众所周知,在视频传输,尤其是实时视频传输中,网络带宽和画面清晰度是一对矛盾。为了平衡这一矛盾,科学家尝试在视频的传输过程中对视频的传输码率进行动态的控制,以求实现“以更低带宽传输更清晰图像”的愿望。由于视频是连续变化的图像集合,那么相邻的图像或者说连续的一组图像之间就存在大量的时域和空域(空间)的冗余。视频编码器就是利用这一特性,将视频图像分组,取其中一帧图像为标准帧,组中其余帧只记录与标准帧的差别,那么,这一组视频图像的编码就从完整的X帧编码压缩成完整的一帧图像的编码和若干帧图像差异(即,只记录了差别部分信息的帧)的编码,从而大大减少需编码的信息(即剔除了冗余)。解码端只需反向计算即可得到完整、连续的视频图像。
在本文所述的硬件解决方案中,编码器包含了码率估计这一功能。在编码器生成用于网络传输的数据流之前,对每一组视频图像中的每一帧的每一个编码单元的每种模式进行码率估计,结合每种模式的失真程度,平衡网络带宽和编码失真,选择最优模式进行编码。
进一步来说,在现有的科研数据库中,有很多论文尝试在计算量和编码压缩性能上做各种权衡和取舍,以平衡在码率估计过程中的硬件复杂程度和编码效果之间的矛盾。但是这些研究还是基于遍历每种模式,通过对所有语法元素进行完整的基于上下文的算术编码来确认每种模式的每个语法元素的码率,因此并不能从根本上解决大计算量的问题。本发明在H.265的官方模型的基础上,提出一种基于查表的上下文码率估计算法,其编码压缩性能几乎不受影响,运算量降低了1%~5%(其实质就是减少了硬件的使用量/复杂度),最重要的是这种方案对硬件实现更友好,不需要为每种模式单独设计一套熵编码,只需要设置一些表格用于查表即可以完成码率估计。
本发明的码率估计方案只处理与模式判决相关的slice_segment_data()内的语法元素码率估计,这些语法元素主要包括两部分:头信息和残差信息。无论是头信息语法元素还是残差信息语法元素,都需要先执行二值化生成0/1串之后,再对这些0/1串进行编码。在执行这些0/1串的编码时,主要有Regular Mode (普通模式)和Bypass Mode(旁路模式)两种模式。其中1)Regular Mode需要对语法元素的串做上下文建模,再根据当前上下文的状态和算术编码引擎的状态确定输出;2)Bypass Mode不需要上下文建模,0/1串的内容加上算术编码引擎当前的状态可直接确定编码输出。H.265的官方标准(201304版)规定的头信息语法元素如表1所示,残差信息语法元素如表2所示。
表1头信息语法元素串编码模式
表2残差信息语法元素串编码模式
除去选用Terminate模式编码的end_of_slice_segment_flag(表1中第一项)、end_of_subset_one_bit(表1中第二项)和pcm_flag(表1中第十七项)外,任何一种模式只要包含表1或表2中的某个语法元素,那么该语法元素必须执行码率统计并加入该模式码率估计结果中,最后参与模式判决。如前文所述,本发明试图通过查表和统计串长度来分别对Regular和Bypass模式的串进行码率估计。
对于Regular模式编码的串,码率通过查阅表3获得,不再需要通过算术编码进行计算。表项的内容基于以下公式获得:
其中,LPS的含义为Least Probable Symbol,即最不可能符号;MPS的含义为MostProbable Symbol,即最可能的符号。它们是Regular模式编码的串在上下文状态的维护和更新过程中的概念,具体来说,若LPS为0则MPS为1,或者,LPS为1则MPS为0;在满足某种特殊条件时,LPS/MPS取值可以在0和 1之间切换。一个串进行编码前需要做检查,若串取值等于LPS,则isLPS为1, isMPS为0;否则isLPS为0,isMPS为1。
其中P为当前上下文状态取LPS的概率,计算公式为:
其中,state的取值范围为0~63,与表3中的初始状态(state)相对应。
表3码率估计速查表
表3中,isLPS和isMPS对应的数值包含15比特的二进制小数,真实码率等于表项内容除以32768,单位是比特(此处需声明的是,图像领域所称的“码率”,其直接指向的是码长,因此本申请中所有码率的单位为比特)。
查表过程需要输入2个变量,state和isLPS/isMPS,其中1)state是指上下文建模的状态,它的更新过程如表4所示,取值0~63;2)isLPS/isMPS是对当前串内容的判断。
对于Bypass模式编码的串,其码率等于串的长度,单位是比特。
表4单个串上下文更新状态转移表
表4中,旁路状态是LPS状态和MPS状态之外的另一个状态,可理解为维持态(无更新),因此,若更新状态为旁路状态,则下一状态维持与上一状态相同,即维持表格中的初始状态。
首先参照图4来说明一下本发明最基本的功能单元:码率估计核心单元A。单个码率估计核心单元A一次完成一个二值化串的上下文更新和Regular码率的估计。在具体应用环境中可将多个码率估计核心单元A串和/或并行,以求在一个工作周期完成多个二值化串的上下文更新和码率估计。图4所示的码率估计核心单元A接收一个二值化串的初始状态/中间状态,通过上下文更新装置A1 对前一上下文状态进行更新;码率估计核心单元A还接收一子块二值化后的串,通过码率查表装置A2得到估计的Regular码率。该码率查表装置A2进一步的,码率查表装置A2还受一旁路使能信号的控制,当所述旁路使能信号有效时,更新状态直接等于初始状态(如表4所示),不需要再经过查表操作。此时能节约一部分处理时间。
上下文更新装置A1负责完成表4所示的上下文更新状态转移功能,输入一个二值化串的初始状态/中间状态(相当于输入前一上下文状态)、串和旁路使能信号,输出上下文的更新状态。旁路开关打开时,所述更新状态等于前一上下文状态(初始状态/中间状态)。
码率查表装置A2中保存有如表3所示的码率估计速查表,结合二值化串的初始状态state和最不可能/可能符号isLps/isMPS的值,以查询的方法得到一码率数值。需说明的是,表3中的码率包含15比特二进制小数,真实码率值应等于表格内容除以32768。
图8所示是将2个上下文更新装置A1串行,从而可以实现上下文的快速更新。图8所示的串行2次上下文更新装置中的两个上下文更新装置A1在一次查询中同时进行上下文更新。作为一个总的更新装置来说,后一级(右边)的更新装置输出的是最终的上下文更新状态,而前一级(左边)的更新装置可以理解为“预更新”,即,前一级更新装置的本次输出是后一级更新装置的下一次的输入。那么,当下一次运行所述串行2次上下文更新装置时所输出的更新状态就是已经更新了2次的上下文状态。通过这样的类似于“流水线”的连续更新,在每个工作周期都能得到一个最新的上下文更新状态,而不必等到下一工作周期才能再更新一次上下文。另外,该装置的每个串有单独的旁路开关,旁路打开时该串对应的状态不做更新,当两个旁路开关都打开时,整个装置不做任何更新,更新状态等于初始状态。
同理,根据应用环境的需求,还可以按图8所示的思路,继续多串行几个上下文更新装置A1,形成串行3次、4次、5次……的上下文更新装置。具体示例可参看图9~图13。其中,图11~图13为使画面简洁,进行了部分简化。发明人在图11~图13中采用了若干个串行x次上下文更新装置再次串行的组合方法,其优点在于缩短“流水线”时间;另外,对于硬件设计来说也提高了设计效率(仅设计串行2、3、4次的上下文更新装置的硬件模块,其后的设计通过调用所述硬件模块实现,而不用完全重新设计)。
图1所示的是使用了上述的最基本功能单元的一种通过查表方式实现码率估计的硬件结构框图。图1所示的码率估计装置包括:头信息码率估计装置1、头信息上下文维护装置2、码率估计控制装置3、残差信息上下文维护装置4、上下文初始化装置5、头信息码率统计装置6、码率统计装置7和残差信息码率估计装置8。所述码率估计装置由模式判决装置9启动。模式判决装置9向所述码率估计装置中的码率估计控制装置3输入编码启动指令和模式选择指令,从而开始一次码率估计过程。所述码率估计装置中的码率统计装置9最终得出本次码率估计的结果,并将该结果输出到模式判决装置9,以进行下一步的编/解码处理。
具体的,上下文初始化装置5负责初始化头信息上下文维护装置1和残差信息上下文维护装置4。所述的初始化包括对所有语法元素进行初始化,以为每种语法元素的每个上下文索引提供一个上下文的原始状态作为上下文维护的起点,这部分与H.265官方标准的熵编码部分的初始化完全一致。具体的,初始化内容至少包括:配置的Slice类型、初始化类型、Slice量化参数和初始化表格。
码率估计控制装置3接收到编码启动指令后开始计算头信息语法元素中二值化后采用Bypass编码模式的串的码率,调用头信息上下文维护装置2完成头信息语法元素中二值化后采用Regular编码模式的串的码率估计;此外,码率估计控制装置3接收到模式选择指令后,筛选和整理出模式判决信息输出到头信息上下文维护装置2和残差信息上下文维护装置4,完成上下文的选择和更新。
头信息上下文维护装置2负责输出头信息Regular编码模式的串的上下文的初始状态、串和旁路使能信号到头信息码率估计装置1;同时,头信息上下文维护装置2也接收头信息码率估计装置1输出的更新状态。头信息上下文维护装置2维护上下文的“最优状态”,将其作为初始状态输出。在执行码率估计的过程中,头信息码率估计装置1反馈回来的更新状态根据不同的编码模式分开保存,收到模式选择信息后,头信息上下文维护装置2才将相应的更新状态作为初始状态输出。“串”和“旁路使能”在执行码率估计过程中,根据每个不同的语法元素的具体二值化结果确定。头信息码率估计装置1负责完成Regular编码模式的串的码率估计和上下文状态更新。具体的,头信息码率估计装置1根据系统需求调用一套或者多套图4所示的码率估计核心单元来得到一次或多次上下文更新的状态和估计的码率值。
综合头信息上下文维护装置2和头信息码率估计装置1来说,由于单个编码单元的一种模式的头信息的所有语法元素取值是确定的,也就是说完成以上描述的码率估计过程之后,单个编码单元的一种模式的码率估计结果是确定的。但是对一个编码器来说,它往往不只需要执行一种模式的码率估计,它需要完成帧内预测模式和帧间预测模式搜索,其中帧内预测模式搜索需要单独完成亮度和色度的帧内预测模式搜索,帧间模式搜索包括普通的帧间预测模式、不需要编码运动矢量差的Merge(混合)模式以及不需要编码运动矢量差和残差数据的Skip(跳跃)模式搜索等。因此,在设计头信息上下文维护装置2和头信息码率估计装置1时,不能仅局限在一种编码单元的一种模式上,而必须将可能覆盖的模式所对应的语法元素的码率估计遍历一次,并且将所有码率输出到头信息码率统计装置6,从而对不同模式和编码单元进行汇总。因此,头信息上下文维护装置2可以采取两种实施方案:1)设置两套上下文,一套用于存储最优上下文,另一套用于存储可选择模式的上下文,从最优上下文中读取初始状态并生成串,从而完成码率估计;同时,头信息上下文维护装置2接收头信息码率估计装置1返回的更新状态,保存到可选择模式的上下文中,等接收到模式判决信息之后,将可选择模式的上下文中对应被选择的模式的上下文更新到最优上下文中;2)设置一套上下文,只存储最优上下文,从最优上下文中读取初始状态并生成串,从而完成码率估计,等接收到模式判决信息之后,将最优模式所需要的语法元素的初始状态和串发送到头信息码率估计装置1中,进行一次上下文更新,返回的更新状态存入最优上下文中。以上两种方案中,方案2 硬件开销会更小,上下文更新的次数也更少(只需要执行最优模式的上下文更新),但是它需要等模式判决结束之后才能启动,为此会需要占用额外的流水时间,在实施此装置时可根据系统条件和需求做选择。
头信息码率统计装置6负责接收来自头信息码率估计装置1的Regular编码模式的串的码率和来自码率估计控制装置3的Bypass编码模式的串的码率,针对不同尺寸编码单元的不同模式分别做累加统计,统计完毕之后,将该码率作为头信息码率输出到码率统计装置7。
残差信息上下文维护装置4负责输出残差信息的Regular编码模式的串的上下文的初始状态到残差信息码率估计装置8;并接收残差信息码率估计装置8输出的更新状态。类似于头信息上下文维护装置2,对于一个编码单元的一种模式来说,残差信息的所有语法元素取值都是确定的,也就是说完成一次码率估计过程之后,之后的码率估计结果是确定的。但是编码器往往不只需要执行一种模式的码率估计,它需要完成帧内预测模式和帧间预测模式搜索,其中帧内预测模式搜索需要单独完成亮度和色度的帧内预测模式搜索,帧间模式搜索包括普通的帧间预测模式、不需要编码运动矢量差的Merge(混合)模式以及不需要编码运动矢量差和残差数据的Skip(跳跃)模式搜索等,以上这些模式对应的残差数据都各不相同,码率估计和上下文更新之后的状态自然也有差异,且残差数据的码率估计通常都是需要得到残差数据之后才开始码率估计的,不像头信息语法元素取值有限,可以遍历所有分支来覆盖所有模式而不浪费资源。同样,此装置残差信息上下文维护装置4也可以采取两种实施方案:1)设置两套上下文,一套用存储最优上下文,一套用于存储可选择模式的上下文,从最优上下文中读取初始状态并生成串完成码率估计,同时接收头信息码率估计装置返回的上下文更新状态,保存到可选择模式的上下文中,等接收到模式判决信息之后,将可选择模式的上下文中对应被选择的模式的上下文更新到最优上下文中;2)设置一套上下文,只存储最优上下文,从最优上下文中读取初始状态并生成串完成码率估计,等接收到模式判决信息之后,将最优模式所需要的语法元素的初始状态和串发送到头信息码率估计进行一次上下文更新,返回的更新状态存入最优上下文中。以上两种方案中,方案2的硬件开销会更小,上下文更新的次数也更少(只需要执行最优模式的上下文更新和码率估计过程中部分中间结果的上下文更新),但是它需要等模式判决结束之后才能启动,而且需要重新读取一遍量化数据,需要占用额外的流水时间,在实施此装置时可根据系统条件和需求做选择。
残差信息码率估计装置8负责完成各种不同尺寸的变换单元的残差数据的码率估计,并将估计得到的残差信息码率发送到码率统计装置7中。残差信息码率估计装置8接收编码器(是本申请所述的码率估计装置的更上一层的硬件,即存在于图1虚框以外,包括图1的虚框)的残差量化装置(未图示,其与本申请的连接关系可比照模式判决装置9)输出的量化数据,根据当前执行码率估计的残差数据块类型,从残差信息上下文维护装置4输出的上下文初始状态中选择需要的部分内容执行码率估计,完成残差数据块的码率估计,将残差信息码率输出到码率统计装置7。在执行码率估计的过程中,同时完成上下文状态更新,保存和更新上下文中间状态直到完成一个残差数据块的码率估计,将最终的更新状态返回残差信息上下文维护装置4。
码率统计装置7负责整合来自头信息码率统计装置1的头信息码率和来自残差信息码率估计装置8的残差信息码率,从而获取不同编码单元的不同模式的最终码率,输出至模式判决装置9。
以上为对图1的说明,厘清了码率估计装置最顶层的硬件结构。接下来,对图1中的残差信息码率估计装置8进行说明。根据对前文的理解可知,残差信息码率估计装置8和头信息码率估计装置1是可以相互参照的,因此对于头信息码率估计装置1的硬件结构不再专门介绍。
图2所示为残差信息码率估计装置8的一种结构框图。图中,残差信息二值化装置81和4×4子块码率估计装置85同时接收外部的所述残差量化装置输入的量化数据。残差信息二值化装置81从所述量化数据中提取变换跳过标志 (TSF,transform_skip_flag)、最后一个非零系数相关坐标(LSC,具体包括:最后一个非零系数横坐标前缀last_sig_coeff_x_prefix、最后一个非零系数纵坐标前缀last_sig_coeff_y_prefix、最后一个非零系数横坐标后缀 last_sig_coeff_x_suffix和最后一个非零系数纵坐标后缀last_sig_coeff_y_suffix) 和4×4子块是否非全零标志(CSBF,coded_sub_block_flag),并根据H.265标准的规定对这些语法元素执行二值化处理,从而确定TSF串、LSC串和CSBF 串的内容和长度,并将各语法元素的Regular编码模式的串分别输出到TSF码率估计装置82、LSC码率估计装置83和CSBF码率估计装置84。对于采用Bypass 编码模式的最后一个非零系数横坐标后缀last_sig_coeff_x_suffix和最后一个非零系数纵坐标后缀last_sig_coeff_y_suffix的串只统计其长度,将其码率信息输出到残差信息码率统计装置87。
TSF码率估计装置82接收残差信息二值化装置81输出的所述TSF串和残差信息上下文维护装置4输出的初始状态,并且从所述初始状态中提取TSF的初始状态,从而完成码率估计和上下文更新。并分别将更新状态发送到残差信息上下文维护装置4、TSF码率发送到残差信息码率统计装置87。其中,码率估计和上下文更新的具体执行由一码率估计核心单元A完成。由于一个残差数据块最多只会有一个串,因此TSF码率估计装置82中只需包括一个码率估计核心单元A(可参见图4,具体内容见后文)。
LSC码率估计装置83接收残差信息二值化装置81输出的所述LSC串和残差信息上下文维护装置4输出的初始状态,并且从所述初始状态中选择最后一个非零系数横坐标前缀last_sig_coeff_x_prefix和最后一个非零系数纵坐标前缀 last_sig_coeff_y_prefix的初始状态,完成码率估计和上下文更新,并分别将更新状态发送到残差信息上下文维护装置4、LSC码率到残差信息码率统计装置87。 H.265标准支持的残差块大小为4×4、8X8、16X16和32X32,对应的最后一个非零系数横坐标前缀last_sig_coeff_x_prefix和最后一个非零系数纵坐标前缀 last_sig_coeff_y_prefix的串的长度最大为3、5、7和9不等,实施此装置时可根据残差信息码率估计装置8的设计需求,串行设置若干套码率估计核心单元A。譬如:1)如果所有不同尺寸的残差数据共用一套LSC码率估计装置83并且要求在一个周期之内算完LSC的码率,那么总共需要18套码率估计核心单元A; 2)如果不同尺寸的残差块单独使用一套LSC码率估计装置83并且要求在一个周期之内算完LSC的码率,那么4×4的残差块需要6套码率估计核心单元A、 8×8的残差块需要10套码率估计核心单元A、16×16的残差块需要14套码率估计核心单元A、32×32的残差块需要18套码率估计核心单元A;3)如果所有不同尺寸的残差块共用一套LSC码率估计装置83并且对运算时间没有要求,那么设置1套码率估计核心单元A甚至共用TSF码率估计装置82中的码率估计核心单元A都可以。
CSBF码率估计装置84接收残差信息二值化装置81输出的所述CSBF串和残差信息上下文维护装置4输出的初始状态,并且从所述初始状态中选择CSBF 的初始状态,完成码率估计和上下文更新,并分别将更新状态发送到残差信息上下文维护装置4、CSBF码率发送到残差信息码率统计装置87。对于一个残差块来说,CSBF串的长度等于需要执行码率估计的4×4块个数减2,而对于一般的设计而言,一个周期完成一个4×4块的码率估计速度已经足够快,因此, CSBF码率估计装置84中设置1套码率估计核心单元A即可。若需要匹配更高的码率估计速度,可参见之前关于码率估计核心单元A的说明,串行几份码率估计核心单元A。
4×4子块码率估计装置85接收外部的所述残差量化装置输出的所述量化数据和残差信息上下文维护装置4输出的初始状态,负责完成各种不同尺寸的残差块内的4×4子块的码率估计,它按照熵编码的扫描顺序,从所述量化数据中抽取4×4子块,根据当前4×4子块的位置,从初始状态或4×4子块上下文中间状态维护装置中抽取对应的上下文状态,若是第一个4×4子块,则从初始状态中选取上下文状态,否则,从4×4子块上下文中间状态维护装置中抽取对应的上下文状态,完成码率估计和上下文更新,输出4×4子块码率到残差信息码率统计装置87,输出更新状态到残差信息上下文维护装置5和4×4子块上下文中间状态维护装置86。
4×4子块上下文中间状态维护装置86负责维护执行一个残差块码率估计过程中的上下文中间状态。H.265标准支持的残差块大小为4×4、8×8、16×16 和32×32,它们包含的4×4子块的个数分别为1、4、16和64个,同一个残差块内的不同4×4子块可能会使用相同的上下文,为此需要一个中间状态维护装置,用于存储4×4子块码率估计装置85输出的更新状态,并将该更新状态在之后的执行周期中作为中间状态提供给其他4×4子块使用,直到一个残差块完成码率估计。
残差信息码率统计装置87接收TSF码率估计装置82输出的TSF码率、LSC 码率估计装置83输出的LSC码率、CSBF码率估计装置84输出的CSBF码率、残差信息二值化装置81输出的Bypass码率和4×4子块码率估计装置85输出的 4×4子块码率,并将这些码率累加,从而获得残差信息码率之后输出到码率统计装置7。
以上部分对残差信息码率估计装置8进行了专门的说明。其中,4×4子块码率估计装置85的结构框图如图3所示。
4×4子块二值化装置851从外部的所述残差量化装置输出的所述量化数据中提取SCF(残差系数非零标志,sig_coeff_flag)、GTR1(残差系数大于1标志, coeff_abs_level_greater1_flag)、GTR2(残差系数大于2标志,coeff_abs_level_greater2_flag)、CALR(残差系数余数,coeff_abs_level_remaining)、 CSF(残差系数符号标志,coeff_sign_flag),并根据H.265标准中的规定对这些语法元素执行二值化处理,从而确定SCF串、GTR1串、GTR2串内容和长度,并分别将之输出到下一相应处理装置。
SCF码率估计装置852负责接收4×4子块二值化装置851输出的SCF串,并从残差信息上下文维护装置4输出的初始状态中选择SCF的初始状态,完成码率估计和上下文更新,输出SCF码率到4×4子块码率统计装置857,输出更新状态到残差信息上下文维护装置4或者4×4子块上下文中间状态维护装置 86。上下文更新的状态转移如前文的表4所示,在硬件编码器中若要求一个周期完成一个4×4子块的码率估计,这将要求一个周期完成16个上下文的更新。图5~图7d所示是一个4×4子块内可能出现的所有SCF串的上下文索引分布图。以图7d为例,图中的16个位置的上下文索引全等于2,在对角扫描方式下,这 16个上下文需要按照顺序串行更新。也就是说,需要按照前文关于码率估计核心单元A串行使用的方式进行,共串行16次。对一个硬件编码器来说,工作的最高频点通常决定了它的吞吐率上限,而在确定芯片工艺库时,上下文更新的时间确定了,那么串行16次上下文更新的时间就确定了,实验表明,这个时间比较长,进而导致工作频率不能太高,从而限制编码器的吞吐率,这是实施整个码率估计方案的最大的缺陷和挑战所在。
由于前文的表4一次只能查询一个串的上下文更新,因而限制了编码器的吞吐率。为了解决此问题,本发明将查表工作进行合并(或者说扩展),以求加速。合并的方法可以如表5所示,即,将表4所示的单个串的更新表格扩展为2 个串(或者可以更多)的更新表格,一次查表可以直接查到串行的2个串的更新状态,而不必通过2次查阅表4得出更新状态,可以省略一半(或者更多) 的查表时间。表5还可以与图8所示的串行2次上下文更新装置搭配使用。以进一步提高查表的效率。
表5两个串上下文更新状态转移表
根据表5的思路类推,可以将3个串、4个……甚至16个串合并,只不过表中的更新状态项将变得很长,即,将占用较多的存储空间。以16个串为例, isMPS的状态将有131071个,整个表格共有64×131072个选项。毫无疑问这样做查表所耗费的时间肯定最短,但是面积也将变得巨大,实施此装置时可根据系统需求和条件选择并行更新点个数。在28nm工艺下,4个串行4次上下文更新装置串联,可综合到600MHz的工作频率,足够满足绝大多数编码器的需求。
在实施SCF码率估计装置852时可根据当前系统的需求,做不同的设计。
1)设置16套图4所示的码率估计核心单元A,每套对应图5~图7d所示的一个4×4子块内的一个位置(4×4子块内共16个位置),在执行码率估计之前先将SCF串按照位置排列好,根据当前4×4子块在残差块中的位置和相邻块的状态,从图5~图7d共9种上下文索引状态中选择一种执行码率估计,按照扫描顺序,将其中索引号相同的前级输出的更新状态作为后级输入的初始状态串行起来,任何一个索引号在扫描顺序上第一次出现时的初始状态从SCF码率估计装置输入的初始状态中选取。
2)为解决前面描述的串行16次的上下文更新装置的工作频率问题,如图 9~图13所示例的那样,可以将上下文更新操作做适当的合并,为图5~图7d中的9种情况挑选合适的组合。例如,图5可以用1个串行3次上下文更新装置、 4个串行2次上下文更新装置再加4个单次的上下文更新装置组合起来处理上下文索引DC,1~8。为兼容图6a~图7d共8种情况,可以用1个串行16上下文更新装置、1个串行10次上下文更新装置、1个串行5次上下文更新装置和1个单个的上下文更新装置的并行组合来处理上下文索引0~2和DC。上下文使用以上方式进行更新,每个串的上下文更新状态确定后,只需要设置16套图4所示的码率查表装置即可。
GTR1码率估计装置853接收4×4子块二值化装置851输出的GTR1串,并从残差信息上下文维护装置4输出的初始状态中选择残差系数大于1标志 coeff_abs_level_greater1_flag的初始状态,完成码率估计和上下文更新,输出GTR1码率到4×4子块码率统计装置857;同时,输出更新状态到残差信息上下文维护装置4和4×4子块上下文中间状态维护装置86。
一个4×4子块内GTR1串的长度最大为8,图14所示为每个位置的可能发生的索引取值情况。与前文关于SCF码率估计装置852的说明相雷同,在实施 GTR1码率估计装置853时可根据当前系统的需求,做不同的设计,譬如:1)设置8套图4所示的码率估计核心单元A,每套对应图14中所示的8个串,根据当前4×4子块的GTR1串的长度和取值情况,将其中索引号相同的前级输出的更新状态作为后级输入的初始状态串行起来,任何一个索引号在扫描顺序上第一次出现时的初始状态从GTR1码率估计装置853输入的初始状态中选取;2) 类似SCF码率估计装置852做法,可以用2个串行6次上下文更新装置和2个单个的上下文更新装置组合来处理上下文索引0~3。上下文使用以上方式进行更新,每个串的上下文状态确定后,只需要设置8套图4所示的码率估计核心单元A即可。
GTR2码率估计装置854接收4×4子块二值化装置851输出的GTR2串,并从残差信息上下文维护装置4输出的初始状态中选择残差系数大于2标志 coeff_abs_level_greater2_flag的初始状态,完成码率估计和上下文更新;并输出GTR2码率到4×4子块码率统计装置857,输出更新状态到残差信息上下文维护装置4和4×4子块上下文中间状态维护装置86。一个4×4子块最多只有一个GTR2串,为此设置一套图4所示的码率估计核心单元A即可。
CSF码率估计装置855接收4×4子块二值化装置851转发的量化数据并统计出4×4子块内非零数据个数,该数据个数就等于CSF码率。CSF码率估计装置855将所述CSF码率输出到4×4子块码率统计装置857。
CALR码率估计装置856接收4×4子块二值化装置851输出的CALR数据,其中,共有16个CALR值。CALR码率估计装置856累加其中需要执行码率估计的CALR的码率之后输出到4×4子块码率统计装置857。CALR串全部使用Bypass 编码模式,为此只需要关注每个CALR二值化之后的长度即可。CALR二值化后分为前缀和后缀两部分,它们采用的二值化规则不相同,但都需要用到一个参数cRiceParam(取值范围0~4)辅助二值化过程。此参数的维护局限在一个4×4 子块内部,取值范围为0~4,具体维护过程可参考H.265官方标准201304版9.3.3.9节,最后每个CALR二值化之后的长度(即码率)可以用如下步骤计算获得:
P1、计算第一中间变量CALR_SHIFT的值。CALR_SHIFT为一计算过程中的中间变量。具体的,所述CALR_SHIFT等于CALR的二进制值右移cRiceParam位;
P2、计算第二中间变量CALR_SUFFIX的值。同样的,CALR_SUFFIX也是计算过程中的一个中间变量。具体的,所述CALR_SUFFIX等于所述CALR_SHIFT除以 2后取整并减1;
P3、获取所述CALR_SUFFIX的二进制值的最高非零位CALR_POS;
P4、若所述CALR_SHIFT大于等于4,则CALR的码率等于所述CALR_POS乘以2,加cRiceParam,再加6;
否则,CALR的码率等于所述CALR_SHIFT对4取模,加cRiceParam,再加1。
4×4子块码率统计装置857接收来自SCF码率估计装置852输出的SCF码率、GTR1码率估计装置853输出的GTR1码率、GTR2码率估计装置854输出的 GTR2码率、4×4子块二值化装置855输出的CSF码率和CALR码率估计装置856 输出的CALR码率,并将这些码率累加,从而获得4×4子块码率,之后将4×4 子块码率输出至残差信息码率统计装置87。
本发明还提供了一种基于图1所示的码率估计装置的码率估计方法。码率估计是H.265视频编码过程中的一个必不可少的步骤,也就是说,码率估计装置是编码器中的必要部件。码率估计装置接受编码器中的模式判决装置9输出的编码启动信号和模式选择信息,进而开始一个编码单元(一般为一个子块) 的码率估计。而码率估计装置输出的码率(估计出的码率)又输入模式判决装置9,由模式判决装置9结合失真信息得到最后的代价,根据该代价进行模式选择。
所述的码率估计方法包括如下步骤:
S1、上下文初始化装置5将上下文索引的原始状态分别输出给头信息上下文维护装置2和残差信息上下文维护装置4;
S2、分别对头信息和残差信息进行码率估计,得到头信息码率和残差信息码率;
S3、码率统计装置7对所述头信息码率和残差信息码率按编码单元的大小和模式的不同进行分类和统计,并将统计得出的码率发送到模式判决装置9。
具体的,步骤S1为编码正式启动之前的初始化过程,上下文初始化装置5 要对头信息上下文维护装置2和残差信息上下文维护装置4进行初始化,初始化的内容是将所有语法元素的所有上下文索引的原始状态分别写入头信息上下文维护装置2和残差信息上下文维护装置4。
具体的,步骤S2中,码率估计控制装置3在收到编码启动信号后对Bypass 编码模式和Regular编码模式的串分别进行处理。一方面,根据当前编码单元所支持的模式种类和所需要执行码率估计的头信息语法元素,将Regular编码模式的串的码率估计指令和模式判决信息发送到头信息上下文维护装置2;另一方面,将Bypass编码模式的串的码率在码率估计控制装置3内计算好后直接输出到头信息码率统计装置6。
进一步地,头信息上下文维护装置2接收到码率估计控制装置3输出的码率估计指令后,将对应的语法元素的上下文和串内容输出到头信息码率估计装置1,同时保存头信息码率估计装置1返回的更新状态。
而头信息码率估计装置1接收头信息上下文维护装置2的初始状态、串和旁路使能等信号,返回更新状态到头信息上下文维护装置2,同时将通过查阅表 3获得的Regular码率输出到头信息码率统计装置6。
头信息码率统计装置6根据码率估计控制装置3和头信息码率估计装置1 发送的码率统计得出头信息码率。具体的,头信息码率统计装置6为每种模式分别设置码率统计寄存器,通过提取(或者说判断)码率估计控制装置3发送的Bypass码率和头信息码率估计装置1发送的Regular码率中所包含的模式信息,将这些码率累加到不同的模式中,在所有模式的所有头信息码率统计结束之后,将这些模式的头信息码率依次发送到码率统计装置7。
另外,步骤S2中,残差信息上下文维护装置4把当前编码单元的所有残差语法元素的上下文的初始状态输出到残差信息码率估计装置8,并保存残差信息码率估计装置8返回的更新状态。
进一步地,残差信息码率估计装置8由编码器中其他装置输出的量化数据驱动,在接收到一个残差数据块时,通过判断当前残差数据块的尺寸、亮度色度分类和预测模式等信息,从残差信息上下文维护装置4输出的初始状态中选取当前码率估计所需要的内容执行码率估计,完成码率估计之后,返回更新状态到残差信息上下文维护装置4,同时输出残差信息码率到码率统计装置7。
具体的,步骤S3中,码率统计装置7将所述头信息码率和所述残差信息码率按照当前编码单元的不同尺寸和不同模式分类,完成所有信息的统计之后,将这些码率发送到编码器的模式判决装置9。
总的来说,步骤S1到步骤S3是一个码率估计的过程,将这3个步骤做完之后等待模式判决装置9广播模式选择信息,码率估计控制装置3接收到该模式选择信息之后,将这些模式选择信息转换成头信息的模式选择信息和残差信息的模式选择信息分别发送到头信息上下文维护装置2和残差信息上下文维护装置4,将被选中的模式在执行码率估计过程中反馈回来的更新状态(也就是附图中多处标注的初始状态/中间状态中的中间状态),作为下一个编码单元的初始状态。
图2更进一步的示出了残差信息码率估计装置8的硬件结构,其详细的残差估计方法包括如下步骤:
S21、对来自编码器其他装置的量化数据分类,并按该分类分别计算4×4子块码率、Bypass码率和Regular码率。具体的,根据残差数据块的语法元素类型分类,计算transform_skip_flag、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix 和coded_sub_block_flag的Regular码率;计算last_sig_coeff_x_suffix和 last_sig_coeff_y_suffix的Bypass码率;其他语法元素全部放在4×4子块码率估计装置内完成。
S22、通过查表的方式,对步骤S21中计算出的4×4子块码、Bypass码率和 Regular码率进行统计,从而得出残差信息码率。
具体地,步骤S21中,残差信息二值化装置81接收一量化数据,并根据该量化数据分别生成TSF串发送到TSF码率估计装置82、生成LSC串发送到LSC 码率估计装置83、生成CSBF串发送到CSBF码率估计装置84;同时,将TSF、 LSC和CSBF中采用Bypass编码模式的码率直接输出到残差信息码率统计装置 87。进一步地,TSF码率估计装置82利用TSF相关的初始状态,接收残差信息二值化装置81发送来的TSF串,完成上下文更新和码率估计,输出更新状态,并将TSF码率输出到残差信息码率统计装置87;LSC码率估计装置83利用LSC 相关的初始状态,接收残差信息二值化装置81发送来的LSC串,完成上下文更新和码率估计,输出更新状态,并将LSC码率输出到残差信息码率统计装置87; CSBF码率估计装置84利用CSBF相关的初始状态,接收残差信息二值化装置 81发送来的CSBF串,完成上下文更新和码率估计,输出更新状态,并将CSBF 码率输出到残差信息码率统计装置87。
另一方面,4×4子块码率估计装置85接收所述量化数据和来自残差信息上下文维护装置4的初始状态,并根据4×4子块上下文中间状态维护装置86提供的中间状态对4×4子块进行码率估计,将得到的4×4子块码率输出给残差信息码率统计装置87。进一步地,4×4子块上下文中间状态维护装置86接收4×4 子块码率估计装置85输出的更新状态,并保存,以备作为下一个4×4子块的初始状态。更详细的说,4×4子块码率估计装置85与4×4子块上下文中间状态维护装置86之间交换的更新状态和中间状态是SCF、GTR1和GTR2状态,完成的是SCF、GTR1和GTR2的上下文更新和码率估计。
具体地,步骤S22中,残差信息码率统计装置87统计来自残差信息二值化装置81输出的Bypass码率、TSF码率估计装置82输出的TSF码率、LSC码率估计装置83输出的LSC码率、CSBF码率估计装置84输出CSBF码率和4×4 子块码率估计装置85输出的4×4子块码率,将这些码率求和获得残差信息码率输出至码率统计装置7。
进一步地,4×4子块码率估计装置85的细化硬件结构如图3所示,其中所执行的估计方法包括如下步骤:
S211、对输入的量化数据进行二值化处理;
S212、对二值化后的串分别进行码率估计;
S213、将步骤S212中获得的码率求和,得到4×4子块的码率。
具体的,步骤S211中,4×4子块二值化装置851收到量化数据后,一方面生成GTR1串发送到GTR1码率估计装置853、SCF串发送到SCF码率估计装置852、GTR2串发送到GTR2码率估计装置854、CALR数据到CALR码率估计装置856;另一方面,由于所述量化数据中还包含不需要二值化处理的数据,这部分数据直接发送至CSF码率估计装置855。
具体的,步骤S212中,SCF码率估计装置852利用SCF相关的初始状态,接收残差信息二值化装置851发送来的SCF串,通过查阅表3和表4完成上下文更新和码率估计,输出更新状态,并将SCF码率输出到4×4子块码率统计装置857;GTR1码率估计装置853利用GTR1相关的初始状态,接收残差信息二值化装置851发送来的GTR1串,完成上下文更新和码率估计,输出更新状态,并将GTR1码率输出到4×4子块码率统计装置857;GTR2码率估计装置854利用GTR2相关的初始状态,接收残差信息二值化装置851发送来的GTR2串,完成上下文更新和码率估计,输出更新状态,并将GTR2码率输出到4×4子块码率统计装置857;CSF码率估计装置855接收4×4子块二值化装置851转发的量化数据,完成CSF码率计算输出到4×4子块码率统计装置857;CALR码率估计装置856接收4×4子块二值化装置851发送来的CALR数据,完成CALR 码率计算输出到4×4子块码率统计装置857。
具体的,步骤S212中,4×4子块码率统计装置857对接收到的SCF码率、 GTR1码率、GTR2码率、CSF码率和CALR码率进行求和计算,从而得到4× 4子块码率,并且将其输出至残差信息码率统计装置87。
上述的码率估计装置及估计方法提供了一种切实可行的硬件实现方案及处理过程,从硬件的层面为编码器提供了压缩率高、准确率高的码率估计功能。并且由于采取了查表的方式进行码率估计,既节省了大量的硬件计算资源,又提高了计算的速度。通过对码率估计核心单元的不同串并行组合,本发明还能适用于不同的上下文索引,灵活性较高,为H.265的硬件编码器的实现提供了很好的解决方案。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (7)
1.一种码率估计装置,其特征在于,包括:
上下文初始化装置,对所有语法元素进行初始化,以输出上下文的原始状态;
码率估计控制装置,接收来自模式判决装置的编码启动信号和模式选择信号,生成模式选择信息、码率估计指令及Bypass码率估计;
头信息码率估计装置,通过查表的方式得到头信息的上下文更新状态、通过查表的方式得到对当前输入的二值化串的Regular码率估计;
头信息上下文维护装置,接收所述原始状态、所述头信息的上下文更新状态、所述模式选择信息、所述码率估计指令,进而生成输出至所述头信息码率估计装置的上下文的初始状态、二值化串、旁路使能信号;
残差信息码率估计装置,接收一量化数据,通过查表的方式得到残差信息的上下文更新状态、通过查表的方式得到该量化数据的码率估计;
残差信息上下文维护装置,接收所述原始状态、所述模式选择信息、所述残差信息的上下文更新状态,生成输出至所述残差信息码率估计装置的残差信息的初始状态;
头信息码率统计装置,接收所述Bypass码率估计及所述Regular码率估计,根据编码单元的尺寸和模式对所述Bypass码率估计及所述Regular码率估计进行累计统计,得到头信息码率;
码率统计装置,接收所述残差信息码率和所述头信息码率,生成最终的码率估计,输出至所述模式判决装置。
2.如权利要求1所述的码率估计装置,其特征在于,所述残差信息码率估计装置包括:
残差信息二值化装置,接收所述量化数据,从中提取变换跳过标志、最后一个非零系数相关坐标和4×4子块是否非全零标志,并转换为二值化串;同时,对于采用Bypass编码模式的二值化串直接输出Bypass码率估计;
4×4子块码率估计装置,接收所述量化数据和残差信息的所述初始状态,通过查表的方式得到4×4子块的上下文更新状态和4×4子块码率估计;
4×4子块上下文中间状态维护装置,接收所述4×4子块码率估计装置输出的所述4×4子块的上下文更新状态并保存,在下一次对4×4子块进行码率估计时返回所述4×4子块码率估计装置,作为下一个4×4子块的上下文初始状态使用;
TSF码率估计装置,接收所述变换跳过标志和残差信息上下文维护装置输出的初始状态,通过查表的方式完成上下文更新和TSF码率估计;
LSC码率估计装置,接收所述最后一个非零系数相关坐标和残差信息上下文维护装置输出的初始状态,通过查表的方式完成上下文更新和LSC码率估计;
CSBF码率估计装置,接收4×4子块是否非全零标志和残差信息上下文维护装置输出的初始状态,通过查表的方式完成上下文更新和CSBF码率估计;
残差信息码率统计装置,接收所述Bypass码率估计、4×4子块码率估计、TSF码率估计、LSC码率估计和CSBF码率估计,将其累加,从而获得残差信息码率并输出。
3.如权利要求2所述的码率估计装置,其特征在于,所述4×4子块码率估计装置包括:
4×4子块二值化装置,接收所述量化数据,从中提取残差系数非零标志、残差系数大于1标志、残差系数大于2标志、残差系数余数和残差系数符号标志,并将其转化为二值化串;
SCF码率估计装置,接收所述残差系数非零标志的二值化串和所述初始状态通过查表的方式完成上下文更新和SCF码率估计;
GTR1码率估计装置,接收所述残差系数大于1标志的二值化串和所述初始状态通过查表的方式完成上下文更新和GTR1码率估计;
GTR2码率估计装置,接收所述残差系数大于2标志的二值化串和所述初始状态通过查表的方式完成上下文更新和GTR2码率估计;
CSF码率估计装置,接收所述4×4子块二值化装置转发的所述量化数据并计算CSF码率估计;
CALR码率估计装置,接收所述4×4子块二值化装置输出的CALR数据并计算CALR码率估计。
4.如权利要求3所述的码率估计装置,其特征在于,所述CALR码率估计装置中,计算所述CALR的步骤为:
P1、计算CALR_SHIFT的值;
P2、计算CALR_SUFFIX的值;
P3、获取所述CALR_SUFFIX的二进制值的最高非零位CALR_POS;
P4、若所述CALR_SHIFT大于等于4,则所述CALR的码率等于所述CALR_POS乘以2,加cRiceParam,再加6;
否则,所述CALR的码率等于所述CALR_SHIFT对4取模,加cRiceParam,再加1;其中
CALR_SHIFT表示第一中间变量,CALR_SUFFIX表示第二中间变量,cRiceParam表示截断式莱斯二值化参数。
5.一种码率估计方法,其特征在于,包括如下步骤:
S1、上下文初始化装置将上下文索引的原始状态分别输出给头信息上下文维护装置和残差信息上下文维护装置;
S2、通过查表的方式,分别对头信息和残差信息进行码率估计,得到头信息码率和残差信息码率;
S3、码率统计装置对所述头信息码率和残差信息码率按编码单元的大小和模式的不同进行分类和统计,并将统计得出的码率发送到模式判决装置。
6.如权利要求5所述的码率估计方法,其特征在于,步骤S2中包括:
S21、对来自编码器其他装置的量化数据分类,并按该分类分别计算4×4子块码率、Bypass码率和Regular码率;
S22、对步骤S21中计算出的4×4子块码、Bypass码率和Regular码率进行统计,从而得出残差信息码率。
7.如权利要求6所述的码率估计方法,其特征在于,步骤S21中包括:
S211、对输入的量化数据进行二值化处理;
S212、对二值化后的串分别进行码率估计;
S213、将步骤S212中获得的码率求和,得到4×4子块的码率。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910430467.2A CN110191339B (zh) | 2019-05-22 | 2019-05-22 | 码率估计核心单元、码率估计装置及码率估计方法 |
PCT/CN2020/075923 WO2020233179A1 (zh) | 2019-05-22 | 2020-02-20 | 码率估计核心单元、码率估计装置及码率估计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910430467.2A CN110191339B (zh) | 2019-05-22 | 2019-05-22 | 码率估计核心单元、码率估计装置及码率估计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110191339A CN110191339A (zh) | 2019-08-30 |
CN110191339B true CN110191339B (zh) | 2021-04-02 |
Family
ID=67717278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910430467.2A Active CN110191339B (zh) | 2019-05-22 | 2019-05-22 | 码率估计核心单元、码率估计装置及码率估计方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110191339B (zh) |
WO (1) | WO2020233179A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110191339B (zh) * | 2019-05-22 | 2021-04-02 | 上海富瀚微电子股份有限公司 | 码率估计核心单元、码率估计装置及码率估计方法 |
WO2021237518A1 (zh) * | 2020-05-27 | 2021-12-02 | 深圳市大疆创新科技有限公司 | 数据存储的方法、装置、处理器及计算机存储介质 |
CN114071163A (zh) * | 2020-08-04 | 2022-02-18 | 阿里巴巴集团控股有限公司 | 码率估计方法、装置、电子设备及存储介质 |
CN112418424A (zh) * | 2020-12-11 | 2021-02-26 | 南京大学 | 一种具有极高压缩比的剪枝深度神经网络的分层稀疏编码方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100568952C (zh) * | 2007-03-29 | 2009-12-09 | 上海大学 | 基于h.264实时精细粒度可伸缩编码方法 |
CN100566427C (zh) * | 2007-07-31 | 2009-12-02 | 北京大学 | 用于视频编码的帧内预测编码最佳模式的选取方法及装置 |
KR101377530B1 (ko) * | 2009-08-21 | 2014-03-27 | 에스케이텔레콤 주식회사 | 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치 |
WO2012134421A1 (en) * | 2011-03-31 | 2012-10-04 | Thomson Licensing | Techniques for context-adaptive binary data arithmetic coding (cabac) decoding |
CN103220509B (zh) * | 2012-01-21 | 2017-12-15 | 中兴通讯股份有限公司 | 自适应控制算术编码bin数量的方法、编码器和解码器 |
CN103929642B (zh) * | 2014-04-24 | 2017-04-12 | 北京航空航天大学 | 一种hevc变换系数的熵编码上下文模型偏移值快速计算方法 |
CN108063945B (zh) * | 2017-12-21 | 2021-07-09 | 西北工业大学 | 一种基于元素类别的线性码率估计方法 |
CN110191339B (zh) * | 2019-05-22 | 2021-04-02 | 上海富瀚微电子股份有限公司 | 码率估计核心单元、码率估计装置及码率估计方法 |
-
2019
- 2019-05-22 CN CN201910430467.2A patent/CN110191339B/zh active Active
-
2020
- 2020-02-20 WO PCT/CN2020/075923 patent/WO2020233179A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN110191339A (zh) | 2019-08-30 |
WO2020233179A1 (zh) | 2020-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110191339B (zh) | 码率估计核心单元、码率估计装置及码率估计方法 | |
US11843794B2 (en) | CABAC decoder with decoupled arithmetic decoding and inverse binarization | |
CN114900690B (zh) | 视频解码方法、视频编码方法、装置、设备及存储介质 | |
US7932843B2 (en) | Parallel CABAC decoding for video decompression | |
US7301485B2 (en) | Decoding device or encoding device having intermediate buffer interposed between an arithmetic code decoder or encoder and a reverse binarization device or binarization device | |
CN104221373B (zh) | 用于采样自适应偏移代码化和/或信号通知的设备和方法 | |
US10623742B2 (en) | Method of determining binary codewords for transform coefficients | |
US8422552B2 (en) | Entropy coding for video processing applications | |
US9270988B2 (en) | Method of determining binary codewords for transform coefficients | |
CN104041053A (zh) | 用于视频的算术编码的方法和装置以及用于视频的算术解码的方法和装置 | |
CN102088603B (zh) | 用于视频编码器的熵编码器及其实现方法 | |
CN102090065A (zh) | 图像编码装置、图像解码装置、图像编码方法以及图像解码方法 | |
EP2764692A1 (en) | Entropy coding buffer arrangement | |
CN109819250B (zh) | 一种多核全组合方式的变换方法和系统 | |
CN110365982B (zh) | 一种多用途编码中帧内编码的多变换选择加速方法 | |
US20130188729A1 (en) | Method of determining binary codewords for transform coefficients | |
KR102165070B1 (ko) | 콘텍스트 트리를 사용한 비디오 신택스 엘리먼트들의 코딩 | |
WO2020009758A9 (en) | Context-based binary arithmetic encoding and decoding | |
CN102017636B (zh) | 影像的解码 | |
CN115996214A (zh) | 多媒体数据处理方法、装置、设备及存储介质 | |
CN105120275B (zh) | 帧内模式决策中并行cabac-r算法的实现方法 | |
WO2024007450A1 (zh) | 一种候选列表构建方法、视频编解码方法、装置和系统 | |
JP3491001B1 (ja) | 信号符号化方法、信号復号方法、信号符号化装置、信号復号装置、信号符号化プログラム、及び、信号復号プログラム | |
Ahmadvand et al. | A new pipelined architecture for JPEG2000 MQ-coder | |
CN114079780B (zh) | 视频解码方法、视频编码方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |