使用画面组合并和位分配的多线程视频编码的制作方法

文档序号:7737448阅读:182来源:国知局
专利名称:使用画面组合并和位分配的多线程视频编码的制作方法
技术领域
本发明涉及视频编码,尤其涉及在使用GOP (画面组)合并和位分配的多个线程的 GOP并行单通道视频编码器中支持HRD (假设参考解码器)相容。
背景技术
HRD相容是在实际视频流化系统中成功输送编码视频位流的必要要求,其中编码位流需要在网络上发送给远程客户机解码器,并且被解码器成功解码,以便使视频流畅播出。解码器具有不间断地从网络接收所输送视频位流的大小有限的解码缓冲区。同时,解码模块将从缓冲区中取出每个编码单元(例如,帧)的缓冲位流,并且解码和播出重构视频信号。在实际视频流化系统中,解码器缓冲区是必要的,以便吸收当今网络的信道传输速率的不可避免抖动,因此使解码视频不间断地和流畅地播出。因此,HRD相容基本上是与满足编码视频位流的解码器缓冲区约束相同的问题。通过在编码器上采用一组HRD参数和在编码每个帧(或一般地说,像H. 264中那样的切片)时遵从采用的HRD参数,那么,所得编码位流就能够被也遵从该组相同HRD参数的任何解码器成功解码。这有助于来自视频编解码器相关行业的不同制造商的编码器和解码器之间的协作。HRD相容的重要性已经得到广泛认可,并且被标准化在最近H. ^4/AVC视频编码标准的附件C中。—般说来,有关HRD或解码器缓冲区参数包括定义众所周知漏桶模型的缓冲区大小、初始缓冲水平、和信道速率。HRD相容意味着,当将编码位流数据装入缓冲区中和为每个编码单元解码取出位流时,将不会有缓冲区溢出或下溢。因此,为了支持HRD相容,视频编码器必须(i)在编码每个单元(例如,帧或场)之后,精确跟踪当前缓冲水平;(ii)据此,在下一个单元的编码位上导出上界和/或下界;以及(iii)确保单位的编码位不会超越边界。实际上,缓冲区约束问题是通过视频编码器的速率控制方案解决的。在存在多个线程的GOP并行单通道视频编码器中支持HRD相容给出了要解决的挑战性问题。在这种实时视频编码系统中的常用架构下,可以通过多个编码线程同时分别编码多个G0P,并且每个GOP只能被编码一次。尽管GOP并行和单通道编码容易地显著加速编码过程,但副作用是,支持HRD相容变成一项比GOP顺序单线程编码的传统情况困难得多的任务。在GOP顺序视频编码中,当编码GOP时,所有前面的帧都已经被编码,因此,可以容易地将它们的编码位用于精确跟踪当前缓冲水平,和导出用于HRD相容编码的正确边界。但是,在GOP并行编码的情况下,当一个线程打算编码当前GOP时,它前面的一些GOP可能仍然处在被一些其它线程编码之中。这种情况例示在图1中,其中阴影区代表GOP中的已编码部分。对于那些G0P,当编码当前GOP时,还不知道其确切编码位,这使HRD相容编码变得不可能。一般说来,在多通道系统中,必须让每个GOP精确消耗在它的实际编码之前分配给它的所有预算位。那样,对于那些部分编码的G0P,只能假定它们的分配位就是它们的最终编码位,并且使用它们跟踪缓冲区状态。但是,在单通道实时视频编码情形中,精确达到任何GOP的预分配位是速率控制的高度挑战性任务。注意,如果允许多通道编码,那么精确 GOP位达到就更加容易和更加直截了当得多。在那种情况下,即使不能通过编码GOP精确达到GOP的预分配位,倘若所有GOP都是一次性编码的,也可以进行HRD相容检验。如果发现HRD冲突(即,缓冲区溢出或下溢),编码器就可以利用新分配位重新编码出问题GOP以防止冲突。在第二通道编码之后,编码器可以再次做HRD检验等,直到没有造成HRD冲突。 但是,这种HRD调整在单通道视频编码中是不可能的,其中支持HRD相容,即,精确达到GOP 分配位是唯一出路。解码器缓冲区约束或HRD相容问题长期以来被认为是在视频流化应用中为视频编码器开发实际速率控制方案的重要课题。但是,到目前为止,现有大多数努力都把重点放在GOP顺序单线程编码的情形上,其中满足缓冲区约束在实际中一般不是挑战性问题。

发明内容
一种检测情节的结尾,划分帧和合并画面组(GOP)的视频编码方法。在该方法中, 检测多个输入帧中的情节结尾。将输入帧划分成G0P。如果情节结尾上GOP的帧数低于下帧阈值,那么将那些帧与前一个GOP合并。缓存G0P,并且单通道地从缓冲区中并行编码GOP 的多个线程。可以为每个GOP分配位预算,为每个GOP将位预算取整成字节,为每个帧分配位预算,或为每个帧内的每个宏块分配位预算。另外,每个编码GOP中的位数可以等于为那个GOP分配的位预算。可以在编码GOP之前为GOP的中间帧和最后帧的位分配分别预留位预算当中的位的两个部分,以防止位短缺状况,并且可以将两个部分的每一个取整成等量的字节。对于GOP中的中间帧的位分配,如果检测到位短缺状况,那么为它们预留的GOP位预算可以用于防止位短缺,其中当预测残余编码的估计位与帧位预算之比小于阈值时,就定义帧的位分配的位短缺状况。该方法可以进一步包括将一个帧的预测残余编码的位估计成该帧的总位预算减去包括单元首标、画面首标、宏块首标、和运动向量编码位的未用在残余编码上的估计额外开销位。另外,对于GOP中的最后帧,可以将所有剩余预留GOP预算位用在它的位分配中。该方法可以进一步规定,对于GOP中的最后帧或在GOP尺寸小于阈值的GOP中的第一 I帧,在编码帧之前预留位预算当中的位的一部分,以防止帧的位过冲。提供了一种并行编码多个线程的单通道视频编码器等。该编码器包括检测模块, 用于检测多个输入帧中的情节结尾;GOP指定模块,适用于将输入帧划分成画面组(GOP); 设置下帧阈值;和将情节结尾上具有少于下帧阈值的帧的GOP与它的前一个GOP合并;以及缓冲区,用于存储G0P。该编码器另外可以包括为每个GOP分配位预算的分配模块、和为每个GOP将位预算取整成字节的取整模块。可以为每个帧分配位预算,也可以为每个帧内的每个宏块分配位预算。每个编码GOP中的位数可以等于为那个GOP分配的位预算。进一步提供了一种为编码准备视频的方法,该方法包含如下步骤将多个输入帧划分成画面组(GOP);设置下帧阈值;将具有少于下帧阈值的帧的最后GOP与它的前一个 GOP合并;以及缓存GOP。


现在参照附图,通过例子来描述本发明,在附图中图1是示出按照本发明的实时视频编码器中多个编码线程对多个GOP的并行编码的图形;图2是按照本发明的GOP并行多线程单通道实时视频编码的HRD相容支持速率控制解决方案的总体框架的方框图;图3是示出按照本发明的位过冲补偿MB级速率控制的方框图;以及图4是示出在编码了 GOP中的最后帧之后填充单元加入的方框图。
具体实施例方式本公开中的至少一种实现解决了这种极难GOP级精确位达到问题,并且提出了达到这个目标的综合速率控制解决方案。所提出的方案主要包括情节结尾短GOP合并,位预算取整,GOP和帧级位预留,位过冲补偿MB级速率控制,填充单元加入,以及有效多线程编码信息缓冲和通信。对存在多个线程的实际单通道实时视频编码器的广泛测试表明所提出的方案总能保证总是很少见到出问题的HRD相容。对于GOP并行多线程视频编码的有关情形,如果允许多通道GOP编码,则支持HRD 相容也承担着简明的和易于实现的解决方案,即,每当发现冲突时,就利用HRD调整重新编码相关G0P,直到整个编码位流通过特定HRD相容检验。因此,在那种情况下,尽管精确GOP 位达到是有益技术,但精确GOP位达到不是必须的。但是,在本公开中的至少一种实现中,我们将关注作为实时视频编码的重要和有效架构的GOP并行和单通道视频编码。在这种情况下,精确GOP位达到是支持HRD相容所必须的,这在实际中是高度挑战性问题。这是因为,视频信号是高度不稳定信号。但是,速率控制根据从过去编码视频单元的估计模型进行位分配或达到。因此,过去编码和当前编码视频单元的特性之间的失配或差异将导致速率控制不准确,因此,导致不可避免的位过冲和下冲。为了有效支持HRD相容,必须开发出使速率控制对于视频信号的不稳定足够健壮,并因此对于每次GOP编码总是精确达到预分配位的技术。至少一个实施例给出了精确达到每个GOP的预分配位的有效综合速率控制解决方案,因此,如前所述,在存在多个线程的GOP并行单通道实时视频编码的情况下,它有效地支持HRD相容。所提出的解决方案主要由下面将更详细描述的如下技术组成⑴情节结尾短GOP合并将情节结尾上太短的GOP与它的前一个GOP合并,以避免太短GOP的可能高度不准确速率控制。(ii)位预算取整为了精确位的位达到,将GOP的预分配位预算和GOP中的最后编码帧的预分配位预算两者取整成字节。(iii)位预留G0P级和帧级位预留,以防止帧级和MB级位分配中的位短缺状况。(iv)位过冲补偿在MB级速率控制中,补偿位过冲效应,以防止编码帧的位过冲。(ν)填充单元加入将适量填充单元字节加在GOP中的最后编码帧之后,以便最终用完所有剩余位。(vi)多线程编码信息缓冲和通信它缓存和在所有编码线程之间共享编码信息,包括为减小缓冲区大小的有效编码GOP合并、和具有两个信号量的线程间等待机制等。有关所提出解决方案的细节描绘在图2中。首先,在步骤20中,将输入帧划分成G0P,然后将 GOP缓存到FIFO(先进先出)队列中。在步骤22中,第一可用编码线程从队列的顶部取出最早可用GOP加以编码。注意,在GOP划分中,优选的是情节结尾短GOP合并。这是因为, 由于短GOP的有限总位预算,如(iii)所述在帧级位分配中防止位短缺的GOP级预留位也受到限制。因此,位过冲比大GOP更难防止。因此,如果情节结尾上的GOP太短(例如,<5 个帧),就将GOP与前一个GOP合并,以形成较大G0P,这将为速率控制减轻精确GOP位达到的负担。接着,在步骤M中,编码当前GOP的线程将检验当前GOP是否紧接在该线程最后编码的GOP之后。如果是,该线程只能继续跟踪从最后编码GOP中所得的缓冲区状态。否则,在当前和最后编码GOP之间存在由一些其它线程正在编码或已编码的一个或多个G0P。 在这种情况下,当前线程需要根据缓存在HRD_inf0_buffer中的所有线程的编码信息更新当前缓冲区状态,稍后将对此作详细描述。具体地说,对于中间G0P,假设它们的分配位或它们的实际编码位是它们的最终编码位,以便导出当前缓冲水平。如果存在还没有分配到位的G0P,在步骤25中当前线程将等待那些GOP的位分配完成。由于从GOP被指定给线程到GOP的位分配完成的时间总是可忽略不计,这种等待在编码中不会造成严重延迟。关于线程间等待,另一个重要课题是避免陷入等待僵局。实际上,发现为了防止陷入僵局,具有 2个分立等待信号量是有必要的。考虑图1,让我们假设,当线程2、3、4分别打算编码G0P_ (i+l)、(i+3)、(i+4)时,线程1仍然未处理完G0P_i的位分配。因此,线程2、3、4必须等待线程1对G0P_i的位分配。实际上,常用线程间通信机制被叫做信号量。因此,当线程1处理完G0P_i的位分配时,它将把3个信号量发送给那3个正在等待的线程。在接收到预期等待结束信号量之后,线程将结束它的等待状态。但是,在我们的情况中,如果线程3或4比线程2早接收到等待结束信号量,那么,它们将继续它们的处理,并且马上设置新等待G0P_ (i+1)的分配位。因此,如果只有一个等待信号量,那么该新等待将由于G0P_i的位分配的完成而再一次直接获取等待结束信号量。在这种情况下,线程2将不能成功地从线程1接收到它的预期等待结束信号量,因此陷入等待僵局。因此,2个分立信号量是必要的。这样, 对线程2的新等待将不从线程1获取等待结束信号量,因此,不会发生等待僵局。从图2中可以看出,线程接着转移到当前GOP编码。首先,在步骤沈中,经由GOP 级速率控制计算当前GOP的位预算。这里,对于精确GOP分配位达到的当前目标,像在所有当今视频编码标准(例如,H.264/AVC)中那样,必须将分配位预算取整成字节,每个编码单元(例如,切片)将被编码成具有整数个字节的位流。因此,GOP位预算取整对于精确位达到是必要的。类似地,如图2所示,每个帧的位预算也被取整成字节。然后,当前线程将当前GOP的分配位记录到HRD_inf0_buffer中。如果存在如前面所讨论的等待当前GOP的位分配结果的一些其它线程,当前线程将发出相应个数的等待结束信号量,以便将结果通知它们并结束它们的等待(步骤28)。然后,来到有关GOP级位预留的步骤30。基本上,在编码GOP之前,首先预留一定数量的位,以便在剩余帧的位分配中防止可能位短缺状况。由于速率控制不准确,如果没有足够的位用于编码某个帧,那么该帧最有可能发生位过冲,可能使GOP的最终精确位达到失败。因此,位预留是必要的。在当前实现中,按如下进行GOP级位预留和预留位的花费。注意,这里的位是分别为了防止GOP中的中间帧的short—of—bits状况和为了编码最后帧而分幵预留的。这是因为防止位过冲对于最终精确GOP位达到至关重要,因此,绝对比其它中间帧重要得多。在步骤30中根据如下公式完成GOP级位预留reserved_bits_to_prevent_FBA_short_of_bits = Round_t o_ bytes
。reserved_bits_for_the_last_frame = reserved_bits_to_prevent_FBA_ short_of—bits。curr_G0P_target_b its = curr_GOP_target_bits_reserved_bits_for_the_ last_frame_reserved—bits_to—prevent—FBA—short_of—bits ο在步骤32中管理FBA(帧级位分配)中GOP级预留位的花费,并且基于如下公式和逻辑 如果当前帧不是GOP中的最后帧,和如果Short_of_bitS发生在为帧分配位的时候,在当前帧位分配中使用当前剩余reserved_bits_to_prevent_FBA_short_of_bits的一半。如果仍然short_of_bits,继续花费剩余预留位的一半,直到不发生Short_of_bitS, 或没有剩余预留位。·如果当前帧是GOP中的最后帧,将所有剩余保留位,S卩,reserved_bits_for_ the_last_frame 以及如果有的话,乘Ij余 reserved_bits_to_prevent_FBA_short_of_bits 加入它的帧目标位预算中。实际上,应该适当定义FBA中的Short_of_bitS,以有助于防止帧编码失控位过冲。在我们的当前实现中,当针对帧的位分配以及考虑所有剩余位和所有剩余帧,预测残余编码的估计剩余位不代表总剩余位的重要部分,例如,< 15%时,认为Short_of_bitS。预测残余编码的估计剩余位是排除了估计总首标位和运动向量等的总剩余位,估计总首标位包括NAL或VCL单元首标、画面首标、和MB (宏块)首标。因为在short_of_bits的情况下, 即使残余编码的预分配位不够,但实际上,为了保持可接受编码质量,在编码残余时仍然使用最小数量的位,因此,造成编码帧的位过冲。除了 GOP级位预留之外,实际上,按照本发明的帧级位预留技术如步骤50-60所示以及如下。对于 GOP 中的最后中贞,curr_frm_target_bits = curr_frm_target_bits*0. 8。 否则,对于短 GOP 中的第一 I 帧,艮|],G0P_length < 5, curr_frm_target_bits = curr_frm_ target_bits氺0· 9。尽管为帧分配了足够位,但帧编码内部的速率控制不准确仍然可能使最终编码帧位超过原定目标。为此,我们提出了详细描述在图3中,用于有效帧位过冲防止,S卩,位过冲补偿MB级速率控制的另一种技术。这里,在步骤50中将相关变量初始化,和检验点(步骤 52)定义如何在MB级速率控制中进行频繁位过冲补偿。参照步骤M、56,在一个实施例中, 每当在一个帧中编码附加(curr_frm_target_bitS*10% )数量的位时,认为到达新检验点。根据这种Curr_frm_target_bitS的10%新编码的编码结果估计位过冲比,并且将其应用于剩余目标位,以补偿估计位过冲效应。从图3中可以看出,如果一个帧不是GOP中的最后帧,将使用松驰位过冲比,因为位过冲防止在这种情况下没有对于最后帧编码那么紧迫。
参照图4,最后,在编码了 GOP中的所有帧之后,编码器线程将检验此刻是否已经使用了所有预分配GOP位。如果仍然剩余相当数量的分配位,则在步骤73、74中将填充单元加在GOP中的最后帧的编码位流之后,这将消耗掉所有剩余位,以便使GOP的总编码位精确地与它的预分配位相同,因此,成功地支持HRD相容。填充单元是如H. 264/AVC中定义的虚假单元,它只包含虚假内容,例如,都是1或0的位。所提出的填充单元加入方案描述在图4 中。这里,对于H. 264定义的填充单元,它的首标字节的数量是6个。注意,在这里,curr_ frm_target_bytes代表帧级位预留之前的原定当前帧目标字节。从图3中可以看出,如果在步骤70中curr_frm_target_bytes本身与HRD上界和/或下界冲突,那么,即使当前GOP 是精确位达到的,HRD相容也将失败(步骤76)。如果存在最后帧的位过冲,即,curr_frm_ target_bytes < curr_ftm_coded_bytes,或如果如步骤72所示,剩余未用分配字节小于最小填充单元字节,即,填充单元首标字节,HRD相容也将失败。在编码了 GOP之后,在HRD_info_buffer中适当记录编码GOP位。注意,不同于记录分配GOP位,由于GOP编码花费很多时间,所以在实时视频编码情形中,让线程等待GOP 编码位是不切实际的。此外,所提出有效机制是为了缓存和在多个编码线程之间共享GOP编码信息而引入的。编码信息缓冲区被表示成HRD_inf0_buffer。为了简洁起见,在图2中未包括HRD_ inf0_buffer初始化。所提出HRD_inf0_buffer由两个部分组成(i)缓存可以从序列的第一 GOP开始并置在一起的所有编码GOP的HRD信息的单个CodedSeqHrcHnfo缓冲区;(ii) 缓存不能与CodedSeqHrcHnfo缓冲区中的最后GOP并置在一起的所有正在编码或已编码 GOP 的编码信息的 Q*total_number_of_threads)CodedGOPHrdInfo 缓冲区。如图 1 所示, CodedGOPHrdInfo用于存储每个已编码GOP (即,GOP (i+2))或正在编码GOP (即,G0P_i、 (i+1)、(i+3)、(i+4))的分配和编码GOP位,而CodedSeqHrcHnfo记录从序列的最开头开始直到可以连续地与所有过去编码GOP并置在一起的最后编码GOP的缓冲区状态信息,S卩,如图1所标记的“编码序列”的信息。实际上,有效管理CodedGOPHrdInfo缓冲区的有效技术是相邻编码GOP合并,意味着如果在CodedGOPHrdInfo缓冲区中存在彼此相邻的两个编码G0P,将这两个GOP的编码信息合并在一起。这种合并在图2中的“更新HRD_inf0_buffer w/t GOP编码位”模块中进行,并极大地减小了所提出CodedGOPHrdInfo缓冲区的缓冲区大小。例如,在我们的当前实现中,可以安全地将它的缓冲区大小设置成0*t0tal_number_0f_threadS)。否则,缓冲区大小将是(2*total_number_of_threads*max_G0P_length),其中 max_G0P_length 在实际中可以非常大(例如,> 150)。最后,重要的是,要强调一下已经利用实际GOP并行单通道实时视频编码器为所提出HRD相容支持方案进行了广泛测试。结果表明,对于所提出的方案,总是很少见到HRD 相容出问题,因此,有效支持了 HRD相容。提供了具有特定特征和方面的一种或多种实现。但是,所述实现的特征和方面也可以适用于其它实现。尽管本文所述的实现可能在特定背景下描述的,但这样的描述决不会使这些特征和概念局限于这样的实现或背景。本文所述的实现可以以例如方法或过程、装置、或软件程序的形式实现。即使只在单种实现形式的背景下讨论(例如,只作为方法来讨论),所讨论的实现或特征也可以以其它形式(例如,装置或程序)实现。装置可以以例如适当硬件、软件、和固件的形式实现。方法可以在例如像,例如,计算机或其它处理设备那样的装置中实现。另外,方法可以通过处理设备或其它装置执行指令来实现,并且这样的指令可以存储在像例如⑶(光盘)、或其它计算机可读存储设备那样的计算机可读媒体、或集成电路上。此外,计算机可读媒体可以存储一种实现产生的数据值。对于本领域的普通技术人员来说,显而易见,各种实现也可以产生格式化成携带可以例如存储或发送的信息的信号。该信息可以包括例如执行方法的指令、或所述实现之一产生的数据。另外,许多实现可以在编码器、预处理器到编码器、解码器、或后处理器到解码器之一或多种中实现。所描述的或所设想的实现可以用在多种多样的不同应用或产品中。应用或产品的一些例子包括机顶盒、蜂窝式电话、个人数字助理(PDA)、电视、个人记录设备 (例如,PVR、运行记录软件的计算机、VHS记录设备)、便携式摄像机、因特网或其它通信链路上数据的流化、和视频点播。并且,本公开还设想了其它实现。例如,可以通过组合、删除、修改或补充所公开实现的各种特征给出另外实现。如下列表提供了各种实现的简短列表。该列表不是打算穷举所有实现,而仅仅提供许多可能实现的一少部分的简要描述。1.采用所提出综合速率控制方案以便经由精确GOP位达到支持HRD相容的GOP并行多线程单通道视频编码器。2.经由包括如下所提出技术的任何一种或多种达到精确GOP位达到的实现1 ⑴ 情节结尾短GOP合并以减少短GOP的出现;(ii)将GOP级和帧级位预算取整成字节;(iii) 为在帧级位分配中防止short_of_bits而预留GOP级位;(iv)帧级位预留;(ν)MB级速率控制中的位过冲补偿;(vi)在编码GOP结束时加入填充单元;以及(vii)将相邻GOP合并以减小缓冲区大小和使用两个分立线程间等待信号量以防止等待僵局的多线程编码信息缓冲和通信机制。3.在GOP级位预留中,分开为GOP的中间帧预留位以便在它们的帧级位分配中防止Short_of_bitS状况,和为GOP的最后帧预留位以便防止它的位过冲的实现2。4.将帧级位分配中的sh0rt_0f_bits定义成具有不足的位用于帧的预测残余编码的实现3。5. MB级速率控制中的位过冲补偿牵涉到如图3所定义的周期性位过冲检验、自适应位过冲比估计、和剩余目标位调整的实现2。6.从本公开所述的任何一种实现中产生的信号。7.按照本公开所述的一种或多种实现,建立、组装、存储、发送、接收、和/或处理包括HRD信息在内的视频编码信息。8.能够按照所述实现之一操作或与所述实现之一通信的设备(像,例如,编码器、 解码器、预处理器、或后处理器)。9.按照本公开所述的一种或多种实现,存储一种或多种HRD相容机、或用于执行使HRD相容的一组指令的设备(像,例如,计算机可读媒体)。10.按照本公开所述的一种或多种实现,格式化成包括与HRD有关,或与HRD输出或操作有关的信息的信号。11.信号代表数字信息的实现10。12.信号代表电磁波的实现10。13.信号是基带信号的实现10。14.信息包括残余数据、运动向量数据、和基准指示符数据之一或多种的实现10。这些实现有利地给出了综合解决方案,以保证每个GOP在编码之后不多不少地精确使用预分配位,这有效地支持了单通道实时视频编码系统中的HRD相容。上文例示了实践本发明的一些可能性。在本发明的范围和精神内许多其它实施例也是可能的。因此,前面的描述被认为是例示性的,而不是限制性的,本发明的范围由所附权利要求书及其整个等效范围给出。
权利要求
1.一种编码视频的方法,包含如下步骤 检测多个输入帧中的情节结尾;将输入帧划分成画面组(GOP); 设置下帧阈值;将情节结尾上具有少于下帧阈值的帧的GOP与它的前一个GOP合并; 缓存GOP ;以及单通道地从缓冲区中并行编码GOP的多个线程。
2.如权利要求1所述的方法,其中,为每个GOP分配位预算。
3.如权利要求2所述的方法,其中,为每个GOP将位预算取整成字节。
4.如权利要求1所述的方法,其中,为每个帧分配位预算。
5.如权利要求1所述的方法,其中,为每个帧内的每个宏块分配位预算。
6.如权利要求2所述的方法,其中,每个编码GOP中的位数等于为那个GOP分配的位预笪弁。
7.如权利要求2所述的方法,其中,在编码GOP之前为GOP的中间帧和最后帧的位分配分别预留位预算当中的位的两个部分,以防止位短缺状况。
8.如权利要求7所述的方法,其中,将两个部分的每一个取整成等量的字节。
9.如权利要求2所述的方法,其中,对于GOP中的中间帧的位分配,如果检测到位短缺状况,那么为它们预留的GOP位预算将用于防止位短缺。
10.如权利要求9所述的方法,其中,当用于预测残余编码的估计位与帧位预算之比小于阈值时,定义帧的位分配的位短缺状况。
11.如权利要求10所述的方法,其中,将一个帧的预测残余编码的位估计成该帧的总预算位减去包括单元首标、画面首标、宏块首标、和运动向量编码位的未用在残余编码上的估计额外开销位。
12.如权利要求2所述的方法,其中,对于GOP中的最后帧,将所有剩余预留GOP预算位用在它的位分配中。
13.如权利要求4所述的方法,其中,对于GOP中的最后帧或在具有GOP尺寸小于阈值的GOP中的第一 I帧,在编码帧之前预留位预算当中的位的一部分,以防止帧的位过冲。
14.一种并行编码多个线程的单通道视频编码器,包含 检测模块,用于检测多个输入帧中的情节结尾;GOP指定模块,适用于将输入帧划分成画面组(GOP);设置下帧阈值;和将情节结尾上具有少于下帧阈值的帧的GOP与它的前一个GOP合并;以及缓冲区,用于存储G0P。
15.如权利要求14所述的编码器,进一步包含为每个GOP分配位预算的分配模块。
16.如权利要求15所述的编码器,进一步包含为每个GOP将位预算取整成字节的取整模块。
17.如权利要求15所述的编码器,其中,为每个帧分配位预算。
18.如权利要求15所述的编码器,其中,为每个帧内的每个宏块分配位预算。
19.如权利要求16所述的编码器,其中,每个编码GOP中的位数等于为那个GOP分配的位预算。
20.一种为编码准备视频的方法,包含如下步骤 将多个输入帧划分成画面组(GOP);设置下帧阈值;将具有少于下帧阈值的帧的最后GOP与它的前一个GOP合并;以及缓存GOP。
21.如权利要求20所述的方法,其中,为每个GOP分配位预算。
22.如权利要求21所述的方法,其中,为每个GOP将位预算取整成字节。
23.如权利要求20所述的方法,其中,为每个帧分配位预算。
24.如权利要求20所述的方法,其中,为每个帧内的每个宏块分配位预算。
全文摘要
一种检测情节的结尾、划分帧和可以合并画面组(GOP)的视频编码方法。在该方法中,检测多个输入帧中的情节结尾。将输入帧划分成GOP。如果情节结尾上GOP的帧数低于下帧阈值,那么将那些帧与前一个GOP合并。缓存GOP,并且单通道地从缓冲区中并行编码GOP的多个线程。
文档编号H04N7/12GK102217308SQ200980145217
公开日2011年10月12日 申请日期2009年11月12日 优先权日2008年11月13日
发明者杨华 申请人:汤姆森特许公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1