使用hrd信息共享和比特分配等待的多线程视频编码的制作方法

文档序号:7737466阅读:214来源:国知局
专利名称:使用hrd信息共享和比特分配等待的多线程视频编码的制作方法
技术领域
本发明涉及视频编码,更具体地,涉及使用HRD信息共享和比特分配等待来在具有多个线程的GOP(图片组)并行的单遍视频编码器中支持HRD(假想参考解码器)一致性。
背景技术
HRD—致性(conformance)是已编码视频比特流在实际的视频流系统中被成功递送的必要条件,在实际的视频流系统中,已编码比特流需要通过网络被发送到远程客户解码器并被解码器成功解码以用于平滑的视频播放。解码器具有将不停地从网络接收递送的视频比特流的有限大小的解码缓冲器。同时,解码模块将从缓冲器中取出每个编码单元 (例如,帧)的缓冲比特流,进行解码并播出重新构造的视频信号。在实际的视频流系统中, 解码器缓冲是必需的以便吸收现今网络的信道传输速率的不可避免的抖动,从而呈现不间断而平滑的解码视频播出。因此,HRD 一致性本质上是与满足对于已编码视频比特流的解码器缓冲约束相同的问题。通过在编码器处假设一组HRD参数并在对每个帧(或者一般地,H. 264中的片 (slice))进行编码时遵守所假设的HRD参数,产生的已编码比特流于是能够被同样遵守同一组HRD参数的任何解码器成功解码。这有助于来自视频编解码相关行业的不同制造商的编码器和解码器之间的合作。HRD —致性的重要性已被广泛认识到并在最新的H. 264/AVC 视频编码标准的附录C中被标准化。—般地,有关的HRD或解码器缓冲参数包括定义公知的漏桶模型的缓冲大小、初始缓冲水平(initial buffer level)和信道速率。HRD—致性意味着当将已编码比特流数据填充到缓冲器中以及取出用于每编码单元解码的比特流时,将不存在缓冲上溢或下溢。 因此,为了支持HRD—致性,视频编码器必须(i)在对每个单元(例如,帧或场)进行编码后准确跟踪当前缓冲水平;(ii)基于此,导出下一单元的编码比特的上界限和/或下界限; (iii)确保该单元的已编码比特不超过所述界限。实践中,缓冲约束问题是通过视频编码器的速率控制方案来解决的。在具有多个线程的GOP并行的单遍(single-pass)视频编码器中支持HRD —致性提出了一个要解决的难题。在实时视频编码系统的该通用体系结构中,多个GOP可分别通过多个编码线程来同时编码,并且每个GOP仅可被编码一次。虽然GOP并行和单遍编码容易地大大加快了编码处理,但是副作用是支持HRD —致性成为比在GOP串行单线程编码的传统情况中难得多的任务。在GOP串行视频编码中,当对GOP进行编码时,所有先前的帧都已被编码,它们的已编码比特因此可被容易地用来准确地跟踪当前缓冲水平和导出用于HRD 一致性编码的正确界限。然而,在GOP并行编码的情况中,当一个线程正要对当前GOP 进行编码时,其先前的GOP中的某些可能仍在被某些其他线程编码。这被示于图1,其中阴影区域表示GOP中的已编码部分。对于这些G0P,当对当前GOP进行编码时,准确的已编码比特是未知的,这使得HRD —致性编码不可能。一般地,在多遍系统(multi pass system)中,人们必须让每个GOP准确地消耗在其实际编码之前被分配给它的所有预算比特(budget bit)。这样,对于那些部分被编码的 G0P,人们只能将它们的分配比特假设为它们的最终已编码比特,并使用它们来跟踪缓冲状态。然而,在单遍实时视频编码场合中,准确地实现任一 GOP的预分配的比特对于速率控制而言是非常有挑战性的任务。注意,如果多遍编码被允许,则准确的GOP比特实现更容易也更直观(straightforward)。在这种情况下,即使GOP的预分配的比特可能未准确地被已编码的GOP实现,考虑到所有GOP —次被编码,人们也可以进行HRD —致性检查。如果发现了 HRD违反(violation) (S卩,缓冲上溢或下溢),则编码器可以用新分配的比特对故障GOP重新编码以防止违反。在第二遍编码之后,编码器可以再次进行HRD检查,依此类推,直至没有HRD违反产生。然而,该HRD调整在单遍视频编码中是不可能的,其中为了支持HRD —致性,准确地实现GOP分配的比特是唯一可行之路。解码器缓冲约束或HRD—致性问题长期以来被认为是开发用于视频流应用中的视频编码器的实用速率控制方案的重要问题。然而,到目前为止,大多数现有工作集中于 GOP串行单线程编码情况,其中满足缓冲约束在实践中通常不是什么难题。

发明内容
提供了一种对视频进行编码的方法,其中单遍地从缓冲器对多个线程的GOP并列地进行编码。在该缓冲器中,场景末尾的具有比低帧阈值少的帧的GOP与前一 GOP合并。用于每个GOP的假想参考解码器(HRD)信息被存储在缓冲器中,并且缓冲器中的相邻GOP的 HRD信息被合并。该方法还可包括为每个GOP分配若干比特,其中所述多个线程可在开始它们各自的编码之前等待所有未编码的GOP的比特分配,其中在完成编码后,每个已编码线程向每个等待线程发出相应的等待终止旗语。另外,每个等待线程可从已编码线程接收等待终止旗语。为了防止旗语等待死锁,每当一个等待线程在接收到等待终止旗语之后终止其等待并且然后立即建立用于等待在其GOP之前且尚未被分配比特的新的最早GOP的比特分配结果的新旗语时,该新的等待旗语是与等待终止旗语分开且不同的旗语。提供了视频编码器等,所述视频编码器等包含缓冲器;编码模块,所述编码模块单遍地从缓冲器对多个线程的图片组(GOP)并列地进行编码;合并模块,所述合并模块将场景末尾的具有比低帧阈值少的帧的GOP与缓冲器中的前一 GOP合并;以及HRD、HRD类型等信息监视模块,该模块为缓冲器中的每个GOP存储假想参考解码器(HRD)、HRD类型等信息,并合并缓冲器中的相邻GOP的信息。该编码器还可包括用于为每个GOP分配若干比特的分配模块,其中所述多个线程可在开始它们各自的编码之前等待所有未编码的GOP的比特分配。所述编码器可包括多个等待终止旗语,每个等待终止旗语被从已编码线程发送到相应的等待线程。每个等待线程可从已编码线程接收等待终止旗语。为了防止编码器中的旗语等待死锁,每当一个等待线程在接收到等待终止旗语之后终止其等待并且然后立即建立用于等待在其GOP之前且尚未被分配比特的新的最早GOP的比特分配结果的新旗语时,该新的等待旗语是与等待终止旗语分开且不同的旗语。


现在将以示例方式参考附图来描述本发明,附图中图1是示出根据本发明的通过实时视频编码器中的多个编码线程来进行的多个 GOP的并行编码的示图;图2是根据本发明的用于GOP并行多线程单遍实时视频编码的HRD —致性支持速率控制方案的总体框架的框图;图3是示出根据本发明的比特过剩(overshooting)补偿的MB级速率控制的框图;并且图4是示出在对GOP中的最后一帧进行编码后的填充单元添加的框图。
具体实施例方式本公开中的至少一个实施方式正好解决了这种GOP级准确比特实现的问题,并且提出了用于实现该目标的补偿性速率控制方案。所提议的方案主要包括场景末尾 (scene-end)短GOP合并,比特预算舍入(rounding),GOP和帧级比特保留,比特过剩补偿的MB级速率控制,填充单元添加,以及高效多线程编码信息缓冲和通信。利用具有多个线程的实际单遍实时视频编码器进行的广泛试验表明所提出的方案总是保证HRD—致性,其中失败总是罕见的。对于有关的GOP并行多线程视频编码情况,如果多遍GOP编码被允许,则支持HRD 一致性对于该方案的实施也显得直观而容易,即每当发现了违反,就通过HRD调整来对相关GOP重新编码直到整个已编码比特流通过指定的HRD —致性检查。因此,这种情况下,虽然精确的GOP比特实现是有用的技术,但是准确的GOP比特实现不是必须的。然而,在本公开中的至少一个实施方式中,考虑作为用于实时视频编码的重要而有效的体系结构的GOP并行和单遍视频编码。这种情况下,准确的GOP比特实现对于HRD 一致性支持是必须的,而这在实践中是个非常难的问题。这是因为视频信号是高度非静止的信号。然而,速率控制基于来自过去的已编码视频单元的估计模型来进行比特分配或实现。因此,过去的已编码视频单元和当前的编码视频单元的特性之间的不匹配或差别将导致速率控制的不准确,并因此导致不可避免的比特过剩或不足(undershooting)。对于有效的HRD —致性支持,人们必须开发使得速率控制对于视频信号的非静止性足够鲁棒并因此总是准确地实现用于每个GOP编码的预分配比特的技术。至少一个实施例给出了用于实现每个GOP的准确的预分配比特、因此在如前所讨论的具有多个线程的GOP并行单遍实时视频编码的情况中有效地支持HRD —致性的综合有效的速率控制方案。所提出的方案主要包括下面将更详细地描述的以下技术(i)场景末尾短GOP合并将场景末尾处的太短的GOP与其前一 GOP合并,以避免太短的GOP的可能高度不准确的速率控制。(ii)比特预算舍入用于GOP的预分配比特预算以及用于GOP中的最后一个编码帧的预分配比特预算都被舍入成用于比特准确的比特实现的字节。(iii)比特保留G0P级和帧级比特保留,以防止帧级和MB级比特分配中的短缺比特的情形。(iv)比特过剩补偿在MB级速率控制中,比特过剩影响被补偿以防止对帧进行编码的比特过剩。(ν)填充单元添加适当量的填充单元字节被添加到GOP中最后一个已编码帧之后以便最终用光所有剩余比特。(vi)多线程编码信息缓冲和通信其在所有编码线程之间缓冲和共享编码信息, 包括用于减小的缓冲器大小的有效的已编码GOP合并,以及具有两个旗语(semaphore)的线程间等待机制等等。所提出的方案的细节在图2中描述。首先,在步骤20,输入帧被分割成随后被缓冲到FIFO(先进先出)队列中的G0P。在步骤22,第一可用编码线程将从编码队列的顶部取出最早的可用G0P。注意,在GOP分割中,场景末尾的短GOP合并是优选的。 这是因为由于短GOP的有限的总比特预算,因此如(iii)所述的用于防止帧级比特分配中的比特短缺的GOP级保留比特也有限。因此,比特过剩比大GOP更难防止。因此,如果场景末尾的GOP太短(例如,小于5帧),则GOP将与前一 GOP合并以形成更大的G0P,这将减轻用于速率控制的准确GOP比特实现的负担。接着,在步骤M,对当前GOP进行编码的线程将检查当前GOP是否立即跟着该线程的上一已编码G0P。如果是,则该线程可以仅继续跟踪从上一已编码GOP产生的缓冲状态。 否则,在当前的和上一已编码GOP之间存在正在被或已被某些其他线程编码的一个或多个 G0P。这种情况下,当前线程需要基于HRD_inf0_bUffer(HRD信息缓冲器)中缓冲的所有线程的编码信息来更新当前缓冲器状态,这将在稍后详细说明。具体地,对于中间的G0P,它们的分配比特或者它们的实际已编码比特将被假设为它们的最终已编码比特以导出当前缓冲水平。如果存在甚至尚未被分配比特的G0P,则当前线程将在步骤25等待那些GOP的比特分配的完成。由于从GOP被指派给线程到GOP的比特分配完成的时间总是可以忽视的,因此该等待将不会在编码中产生严重的延迟。关于线程间的等待,另一个重要问题是避免等待死锁。在实践中,发现为了防止死锁,有必要拥有两个分开的等待旗语。考虑图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+l)的分配比特的新等待。因此,如果只有一个等待旗语,则由于比特分配的完成,新的等待将直接采用又一个等待终止旗语。这种情况下,线程2将不会从线程1 成功接收其期待的等待终止旗语,因此,等待死锁。因此,两个分开的旗语是必要的。这样, 线程2的新等待将不会采用来自线程1的等待终止旗语,并且因此,等待死锁将不会发生。从图2可以看出,线程随后继续移动到当前GOP编码。首先,在步骤26,当前GOP 的比特预算将经由GOP级速率控制被计算。这里,对于准确GOP分配比特实现的本目标,人们必须将分配比特预算舍入成字节,如在所有现今视频编码标准(例如,H. 264/AVC)中那样,每个编码单元(例如,片)将以整数个字节被编码到比特流中。因此,GOP比特预算舍入对于准确比特实现是必需的。类似地,每个帧的比特预算也被舍入成字节,如图2所示。当前线程随后会将当前GOP的分配比特记录到HRD_inf0_buffer中。如果如前所讨论存在等待当前GOP的比特分配结果的某些其他线程,则当前线程将发出相应数目的等待终止旗语以将结果通知给它们并终止它们的等待(步骤28)。然后,来到用于GOP级比特保留的步骤30。基本上,在对GOP进行编码之前,一定量的比特首先被保留,以防止剩余帧的比特分配中可能的比特短缺情形。由于速率控制的不准确,如果没有足够的比特来对某一帧进行编码,则对于该帧将很可能发生比特过剩,这可能使最终的GOP的准确比特实现失败。因此,比特保留是必需的。在当前的实施方式中, GOP级比特保留和保留比特的花费像下面这样被执行。注意,这里,分别为防止GOP的中间帧的比特短缺情形和对最后一帧的编码单独保留比特。这是因为防止比特过剩对于最终的准确GOP比特实现至关重要,并且因此绝对比其他中间帧重要得多。GOP级比特保留基于以下公式来在步骤30中完成reserved_bits_to_prevent_FBA_short_of_bits = Round_to_ 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.FBA(帧级比特分配)中的GOP级保留比特的花费在步骤32中被管理并基于以下公式和逻辑·如果当前帧不是GOP中的最后一帧,并且如果当为该帧分配比特时发生比特短缺,则在当前帧比特分配中使用目前剩余的reserved_bits_to_prevent_FBA_short_of_ bits的一半。如果仍然短缺比特,则继续花费剩余的保留比特的一半,直到没有比特短缺发生或没有剩余的保留比特。 如果当前帧是GOP中的最后一帧,则将所有剩余的保留比特、即reSerVed_bitS_ for_the_last_frame 力口上乘Ij余的 reserved_bits_to_prevent_FBA_short_of_bits (如果有的话)之后添加到其帧目标比特预算上。在实践中,FBA中的比特短缺应被适当地限定以帮助防止不受控的比特过剩进行帧编码。在我们目前的实施方式中,当对于帧的比特分配并且考虑到所有剩余比特和所有剩余帧,用于预测残余编码的估计剩余比特不代表总剩余比特的大部分(例如,小于15% ) 时,被认为是比特短缺。该用于预测残余编码的估计剩余比特是不包括估计总首部比特和运动向量等在内的总剩余比特,估计总首部比特包括NAL或VCL单元首部、图片首部和 MB(宏块)首部。由于在比特短缺的情况下,即使用于残余编码的预分配比特不够,实践中, 为了保持可接受的编码质量,最少数目的比特也仍将被用于对该残余进行编码,因此,对于已编码的帧,比特过剩。除了 GOP级比特保留,实践中,根据本发明的帧级比特保留技术被示于步骤50-60 并如下所述。对于 GOP 中的最后一中贞,curr_frm_target_bits = curr_frm_target_ bits*0. 8。否则,对于短GOP (即,GOP长度小于5)中的第一个I帧,curr_frm_target_bits =curr_frm_target_bits氺0. 9。虽然为帧分配了足够的比特,但是帧编码内的速率控制不准确仍可能使最终的已编码帧比特超过原始目标。为此,我们提出了用于有效的帧比特过剩防止的另一种技术,即比特过剩补偿的MB级速率控制,它在图3中被详细描述。这里,相关变量在步骤50被初始化并且检查点(步骤5 定义在MB级速率控制中多久进行一次比特过剩补偿。参考步骤M、56,在一个实施例中,每当额外数目(curr_frm_target_bits*10% )的比特被编码在帧中,就将被认为到达新的检查点。比特过剩比率将基于该新编码的10%的CUrr_frm_ target_bits的编码结果而被估计,并且被应用于剩余目标比特以补偿估计的比特过剩影响。从图3可以看出,如果一个帧不是GOP中的最后一帧,则松弛的(relaxed)比特过剩比率将被使用,因为这种情况中的比特过剩防止不像在最后一帧编码的情况中那么急迫。参考图4,最后,在对GOP中的所有帧进行编码后,编码器线程此时将检查是否所有的预分配GOP比特都已被使用。如果仍剩余了大量分配比特,则填充单元将在步骤73、 74处被添加到GOP中的最后一帧的已编码比特流之后,这将消耗所有剩余比特以便使GOP 的总的已编码比特与其预分配比特准确地相同,并因此成功地支持HRD —致性。填充单元是在H. 264/AVC中定义的只包含例如全1或全0比特的哑内容(dummy content)的哑单元。所提出的填充单元添加方案在图4中被描述。这里,对于H. 264定义的填充单元,其首部字节的数目为6。注意,在这里,Curr_frm_target_bytes表示帧级比特保留之前的原始当前帧目标字节。从图3可以看出,如果在步骤70中curr_frm_target_bytes本身与HRD 上界限和/或下界限冲突,则即使有了当前GOP的准确比特实现,HRD —致性也将失败(步骤 76)。如果对于最后一帧存在比特过乘Ij,即,curr_frm_target_bytes < curr_frm_coded_ bytes,或者如果剩余的未使用分配字节少于最小填充单元字节即步骤72所示的填充单元首部字节,则HRD —致性也将失败。在对GOP进行编码之后,已编码的GOP比特将被适当地记录在HRD_info_buffer 中。注意,与记录分配GOP比特不同,由于GOP编码花费大量时间,因此等待GOP已编码比特的线程在实时视频编码情况中不实用。此外,所提出的高效机制被引入以在多个编码线程之间缓冲和共享GOP编码信息。编码信息缓冲器被表示为HRD_info_buf f er。为了简洁,HRD_info_buf f er初始化未被包含在图2中。所提出的HRD_inf0_buffer由两部分构成(i) 一个用来缓冲从序列的第一个GOP开始可以被串接(concatenate)在一起的所有已编码GOP的HRD信息的单个CodedSeqHrcHnfo缓冲器;(ii)用于缓冲不能与CodedSeqHrcHnfo缓冲器中的最后一个GOP串接在一起的所有正在编码或已编码GOP的编码信息的(2*total_number_of_ threads)个CodedGOPHrdInfo缓冲器。如图1所例示,CodedGOPHrdInfo用于存储每个已编码的GOP(即,G0P_(i+2))或正在编码的GOP(即,G0P」,(i+Ι),(i+3),(i+4))的已分配和已编码的GOP比特,而CodedSeqHrcHnfo记录从序列的最开头起、可以与所有过去的已编码GOP连续串接在一起的、直到最后一个已编码GOP的缓冲器状态信息,即图1中标记的 “已编码序列”的信息。在实践中,用于高效地管理CodedGOPHrdInfo缓冲器的有效技术是相邻已编码 GOP合并,它是指如果在CodedGOPHrdInfo缓冲器中存在彼此相邻的两个已编码G0P,则这两个GOP已编码信息将被合并到一起。该合并在图2中的“更新HRD_inf0_buffer w/t GOP已编码比特”模块中被涉及,并且大大减小了所提出的CodedGOPHrdlnfo缓冲器的缓冲器大小。例如,在我们当前的实施方式中,人们可以安全地将其缓冲器大小设为(2*total_number_of_threads)。否贝缓冲器大小将会为 <;2*total_number_of_threads*max_G0P_ length),其中max_G0P_length在实践中可能非常大(例如,> 150)。最后,要重要强调的是,已针对所提出的HRD —致性支持方案利用实际的GOP并行单遍实时视频编码器进行了广泛试验。结果表明利用所提出的方案,HRD失败总是罕见的, 因此,HRD 一致性被有效地支持。提供了具有特定特征和方面的一个或多个实施方式。然而,所描述的实施方式的特征和方面还可适用于其他实施方式。虽然这里描述的实施方式可能是在特定语境中描述的,但是这种描述绝不应被理解为将所述特征和概念限制在该实施方式或语境上。这里描述的实施方式例如可以通过方法或处理、设备或软件程序来实现。即使仅在单一形式的实施方式的语境下讨论(例如,仅作为方法来讨论),所讨论的实施方式或特征也可以通过其他形式(例如,设备或程序)来实现。设备例如可以通过适当的硬件、软件和固件来实现。方法例如可以通过诸如计算机或其他处理设备之类的设备来实现。另外, 方法可以通过被处理设备或其他装置执行的指令来实现,并且这种指令可被存储在例如CD 或其他计算机可读存储设备之类的计算机可读介质或集成电路上。此外,计算机可读介质可存储由实施方式产生的数据值。本领域技术人员应该明白,实施方式还可产生被格式化以便承载例如可被存储或传送的信息的信号。该信息例如可包括用于执行方法的指令或由所描述的实施方式之一产生的数据。另外,很多实施方式可以通过编码器、编码器的预处理器、解码器或解码器的后处理器中的一个或多个来实现。所描述或构想的实施方式可用在各种不同的应用和产品中。 应用或产品的某些示例包括机顶盒、移动电话、个人数字助理(PDA)、电视、个人记录设备 (例如,PVR、计算机运行的记录软件、VHS记录设备)、摄录机(camcorder)、数据通过因特网或其他通信链路的流传输和点播视频。此外,其他实施方式可通过本公开来构想。例如,另外的实施方式可通过组合、删除、修改或补充所公开的实施例的各种特征来创建。以下列表提供了各种实施方式的短列表。该列表不打算成为穷尽性的,而仅打算提供多个可能的实施方式中的很小数目的简短描述。1. GOP并行多线程单遍视频编码器,采用所提出的综合速率控制方案来经由准确的GOP比特实现而支持HRD —致性。2.实施方式1,其中准确的GOP比特实现是通过包含以下提议的技术中的一个或多个来实现的⑴场景末尾短GOP合并以减少短GOP的出现;(ii)GOP级和帧级比特预算舍入成字节;(iii)GOP级比特保留,用于防止帧级比特分配中的比特短缺;(iv)帧级比特保留;(V)MB级速率控制中的比特过剩补偿;(vi)填充单元添加到对GOP进行编码的末尾; (vii)多线程编码信息缓冲和通信机制,具有用于减小缓冲器大小的相邻GOP合并,并使用两个分开的线程间等待旗语来防止等待死锁。3.实施方式2,其中在GOP级比特保留中,为GOP的中间帧和GOP的最后一帧分开保留比特,以防止GOP中间帧的帧级比特分配中的比特短缺情形和防止GOP最后一帧的比特过剩。4.实施方式3,其中帧级比特分配中的比特短缺被定义为没有足够的比特来进行帧的预测残余编码。5.实施方式2,其中MB级速率控制中的比特过剩补偿包括如图3所定义的周期性的比特过剩检查、自适应的比特过剩比率估计以及剩余目标比特调整。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的假想参考解码器(HRD)信息存储在所述缓冲器中;以及合并所述缓冲器中的相邻GOP的HRD信息。
2.根据权利要求1所述的方法,还包括为每个GOP分配若干比特的步骤,其中所述多个线程在开始它们各自的编码之前等待所有未编码的GOP的比特分配。
3.根据权利要求2所述的方法,其中在完成编码后,每个已编码线程向每个等待线程发出相应的等待终止旗语。
4.根据权利要求2所述的方法,其中每个等待线程从已编码线程接收等待终止旗语。
5.根据权利要求4所述的方法,其中为了防止旗语等待死锁,每当一个等待线程在接收到等待终止旗语之后终止其等待并且然后立即建立用于等待在其GOP之前且尚未被分配比特的新的最早GOP的比特分配结果的新旗语时,该新的等待旗语是与所述等待终止旗语分开且不同的旗语。
6.一种视频编码器,包括缓冲器;编码模块,所述编码模块单遍地从所述缓冲器对多个线程的图片组(GOP)并列地进行编码;合并模块,所述合并模块将场景末尾的具有比低帧阈值少的帧的GOP与所述缓冲器中的前一 GOP合并;以及HRD信息监视模块,所述HRD信息监视模块为所述缓冲器中的每个GOP存储假想参考解码器(HRD)信息,并合并所述缓冲器中的相邻GOP的HRD信息。
7.根据权利要求6所述的编码器,还包括用于为每个GOP分配若干比特的分配模块,其中所述多个线程在开始它们各自的编码之前等待所有未编码的GOP的比特分配。
8.根据权利要求7所述的编码器,还包括多个等待终止旗语,每个等待终止旗语被从已编码线程发送到相应的等待线程。
9.根据权利要求7所述的编码器,其中每个等待线程从已编码线程接收等待终止旗语。
10.根据权利要求9所述的编码器,其中为了防止旗语等待死锁,每当一个等待线程在接收到等待终止旗语之后终止其等待并且然后立即建立用于等待在其GOP之前且尚未被分配比特的新的最早GOP的比特分配结果的新旗语时,该新的等待旗语是与所述等待终止旗语分开且不同的旗语。
11.一种对视频进行编码的方法,包括以下步骤单遍地从缓冲器对多个线程的GOP并列地进行编码;在所述缓冲器中,将场景末尾的具有比低帧阈值少的帧的GOP与前一 GOP合并;将每个GOP的解码器信息存储在所述缓冲器中;以及合并所述缓冲器中的相邻GOP的信息。
12.根据权利要求11所述的方法,还包括为每个GOP分配若干比特的步骤,其中所述多个线程在开始它们各自的编码之前等待所有未编码的GOP的比特分配。
13.根据权利要求12所述的方法,其中在完成编码后,每个已编码线程向每个等待线程发出相应的等待终止旗语。
14.根据权利要求12所述的方法,其中每个等待线程从已编码线程接收等待终止旗语。
15.根据权利要求14所述的方法,其中为了防止旗语等待死锁,每当一个等待线程在接收到等待终止旗语之后终止其等待并且然后立即建立用于等待在其GOP之前且尚未被分配比特的新的最早GOP的比特分配结果的新旗语时,该新的等待旗语是与所述等待终止旗语分开且不同的旗语。
全文摘要
一种对视频进行编码的方法,其中单遍地从缓冲器对多个线程的GOP并列地进行编码。在该缓冲器中,场景末尾的具有比低帧阈值少的帧的GOP与前一GOP合并。用于每个GOP的假想参考解码器(HRD)信息被存储在缓冲器中,并且用于相邻GOP的HRD信息在缓冲器中被合并。
文档编号H04N7/12GK102217309SQ200980145477
公开日2011年10月12日 申请日期2009年11月12日 优先权日2008年11月13日
发明者杨华 申请人:汤姆逊许可证公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1