对视频数据帧编码的视频编码器和方法

文档序号:7659420阅读:310来源:国知局
专利名称:对视频数据帧编码的视频编码器和方法
技术领域
本发明涉及对视频数据进行帧编码,更具体地讲,涉及一种在视频编码器中跳过一些视频帧以控制比特率的设备和方法。

背景技术
通常,视频编码器可具有各种视频序列,以使视频编码器提供编码方法上的灵活性。然而,无线网络环境中的传输信道具有一些传输限制约束。例如,存在这样的约束在无线网络环境中被不变地使用的比特数量(例如,384[kb])。因此,在无线网络环境中发送端发送帧数据允许限制比特数量,然后执行帧编码。
此外,由于约束,传统的视频编码器配备有缓冲器,以限制可被发送到接收端的比特的数量。图1是示出传统视频编码器的示例的结构的框图。
参照图1,当从视频数据产生单元100创建了视频数据时,以按图像组(GOP)的形式被量化和存储的帧的形式将该视频数据输入到视频编码器102。如果上述情况发生,则视频编码器102将接收的视频数据的帧(以下,称为“视频数据帧”)提供给编码器106,以对接收的帧编码,所述编码器106将编码帧提供给用于存储按规定的比特率被发送到发送单元104的编码帧缓冲器108。原因在于当视频编码器在如上所述的视频编码器102的编码方法中提供灵活性时,比特的数量是可变的。因此,如上所述,一般的视频编码器102配备有缓冲器108,以对正被发送的编码帧中的每一帧保持恒定数量的比特(恒定比特率(CBR))。
为了如上所述的限制比特的数量,该传统视频编码器102使用用于改变每一视频数据帧的量化参数以产生视频数据的方法。尽管该方法控制在产生视频数据帧时创建的视频数据的比特数量,但是视频数据帧的比特数量随着量化参数的增加而减小,反之,视频数据帧的比特数量随量化参数的减小而增加。
通常对缓冲器108的存储容量有限制。因而,为了防止将被缓冲的视频数据帧的量超过缓冲器108的存储容量,在传统视频编码器102中限定了上界,以使创建的比特被控制在允许的限度范围内。
然而,如上所述,即使使用了用于改变量化参数的方法,仍可能发生如下情况根据当前设置的限制,编码帧的比特数量不适合环境。即,即使将量化参数设置为最大值,也可能发生如下情况编码的视频数据帧的比特数量超过缓冲器108的预设上界。例如,可发生如下情况随着在预测图像运动(图像运动是大运动并且复杂)之后残余数据的量增加,可能产生超过上界的比特数量。在这种情况下,为了满足恒定比特率的限制条件,传统视频编码器102跳过下一帧。然后,由于跳过了下一帧,所以当对有关帧编码时,产生的比特变成0,因此,缓冲器中的比特数量减小了被发送的比特数量。
然而,在传统视频编码器102中,在发生了缓冲器的存储容量超过上界的这种溢出情况下,根据缓冲器的比特数量来执行跳帧。因此,有关帧是I帧还是P帧对执行跳帧没有影响。通常,I帧和最初的P帧(以下,称为“第一P帧”)成为有关GOP中包括的其他帧的参考帧。因此,因为在包括I帧的GOP的开始部分中的P帧对以后的其他帧有很大影响,所以这些P帧非常重要。然而,由于传统视频编码器102不考虑I帧或第一P帧来执行跳帧,所以当情况需要时,重要帧(例如,I帧或与特定GOP的开始部分相应的P帧)可被跳过。在这种情况下,随着在预测被跳过的帧之后的运动期间误差变大,较大的误差被传播,并可对画面质量具有大的影响。
此外,在许多运动(例如,激烈的体育运动)出乎意料并同时发生的情况下,在特定时刻,一些帧被分配多个比特,但是可发生另外的连续跳帧。这里,存在许多运动的一部分对应于重要部分。在接连发生跳过的情况下,被跳过部分的内容不能被感知,并且连续的跳过降低了画面的整体质量。


发明内容
因此,通过提供一种通过有效指定跳过编码帧的位置以防止跳过参考帧来对视频数据帧编码的视频编码器和方法,做出本发明以解决在现有技术中发生的上述问题,并提供另外的优点。
本发明的另一方面在于提供一种在防止跳过重要参考帧的同时通过防止发生连续跳过来防止降低画面的整体质量的对视频数据帧编码的视频编码器和方法。
在一个实施例中,提供了一种根据本发明实施例的视频编码器,所述编码器包括编码器,用于在接收的视频数据帧被编码的情况下预测总编码容量,对从接收的视频数据帧中除去分别与确定跳过的位置相应的视频数据帧而产生的视频数据帧编码,并提供编码的视频数据帧;缓冲器,用于缓冲从编码器提供的编码的视频数据帧;可用容量测量单元,用于测量缓冲器的可用容量;溢出量测量单元,用于从编码器输入关于总编码容量的信息;用于从可用容量测量单元输入关于可用容量的信息;用于将关于总编码容量的信息与关于可用容量的信息进行比较;和用于预测溢出量;平均容量计算单元,用于检查关于从编码器提供的编码数据的容量的信息,以存储检查的信息,并用于计算存储的编码数据的平均容量;和P帧跳过估计单元,用于通过使用预测的溢出量和计算的平均容量来计算预料溢出的编码帧的数量,并根据计算的预料溢出的编码帧的数量来确定将被跳过编码的视频数据帧中每一帧的位置。
在另一实施例中,提供了一种根据本发明实施例的对视频数据帧编码的方法,所述方法包括以下步骤在与输入视频数据帧相应的整个图像组(GOP)的帧被编码的情况下,预测总编码容量;根据预设顺序来选择输入视频数据帧中的任何一帧,检查所选择的视频数据帧是否对应于GOP的I帧或与GOP的初始P帧相应的第一P帧,如果所选择的视频数据帧对应于I帧或第一P帧,则对所选择的视频数据帧编码;作为检查帧的结果,在当前选择的视频数据帧不对应于I帧或第一P帧的情况下,确定是否存在预设帧跳过位置;作为确定跳过位置的结果,在不存在预设帧跳过位置的情况下,根据从在所述GOP之前编码的GOP的P帧计算的平均容量和在视频编码器的缓冲器中的可用容量来设置跳过位置;和作为确定跳过位置的结果,在存在预设帧跳过位置的情况下,确定所选择的当前将被编码的视频数据帧是否对应于所述预设帧跳过位置,并根据确定的结果来执行对所选择的当前将被编码的视频数据帧的编码。



从下面结合附图进行的详细描述中,本发明的以上特征和优点将更清楚,其中 图1是示出传统视频编码器的示例的结构的框图; 图2是示出根据本发明示例性实施例的视频编码器的结构的框图; 图3是示出根据在根据本发明示例性实施例的视频编码器中的缓冲器的当前可用容量来跳过视频数据帧的示例性操作的流程图; 图4是根据本发明示例性实施例的视频编码器中对帧编码并存储关于容量的信息的示例性操作的流程图; 图5是示出在根据本发明示例性实施例的视频编码器中跳过帧并重置跳过计数值的示例性操作的流程图; 图6是示出在根据本发明示例性实施例的视频编码器中,如果当前选择的帧是紧在最后帧之前的帧,则根据缓冲器的可用容量不管预设跳过位置而跳过帧的示例性操作的流程图; 图7是示出根据本发明示例性实施例的如果当前选择的帧是I帧或第一P帧则对该帧编码的示例性操作的流程图;和 图8是示出在根据本发明示例性实施例的视频编码器中,如果当前选择的帧是紧在最后帧之前的帧,则在视频编码器中基于缓冲器的可用容量足以接受I帧和第一P帧来跳过该帧的示例性操作的流程图。

具体实施例方式 以下,将参照附图描述本发明的实施例。在下面的描述和附图中,相同的标号表示相同的部件,尽管所述相同部件在不同的附图中示出。因为对这里所包含的公知功能和结构的详细描述将使本发明的主题不清晰,所以为了简明和简单,将省略对这里所包含的公知功能和结构的详细描述。
首先将描述本发明的基本原理。在本发明中,视频编码器的编码器检查将被编码的视频数据帧的总容量,并通过使用从前一GOP中提取的P帧的平均容量根据检查的总容量来预测将被编码的P帧的数量。然后,根据缓冲器的可用容量从预测的P帧的数量来计算由于缓冲器溢出而将被跳过的帧的数量。接着,根据预测的P帧的数量和GOP的帧的数量把将被跳过的帧的位置设置为不连续。此外,当对视频数据帧执行编码的同时,在所选择的当前将被编码的视频数据帧被安排在与将被跳过的帧被安排的位置相同的位置的情况下,跳过对该视频数据帧的编码。这里,从视频数据帧中成为其他视频数据帧的参考帧的I帧或从除了第一P帧(成为另一视频数据帧的参考帧)之外的P帧来确定跳过的帧。
图2是示出根据本发明示例性实施例的视频编码器的结构的框图。
参照图2,视频编码器200从视频数据产生单元100接收构成帧的视频数据,并且该视频编码器200包括编码器250内的容量预测单元262、缓冲器252、可用容量测量单元256、溢出量测量单元254、P帧平均容量计算单元260、P帧数量预测单元264和P帧跳过位置估计单元258。容量预测单元262检查在所有的视频数据帧被编码的情况下的总编码容量。编码器250根据预设编码方案仅对接收的视频数据帧中的与预设跳过位置不相应的视频数据帧编码。缓冲器252从编码器250接收编码的视频数据帧,并输出规定数量的比特。可用容量测量单元256测量缓冲器的可用容量。溢出量测量单元254从可用容量测量单元256接收可用容量的测量结果,从编码器250接收总的编码容量,如果存在溢出的话,则测量溢出量。P帧平均容量计算单元260检查关于从编码器250提供的P帧的容量的信息(以下,称为“容量信息”),以存储检查的关于P帧的容量的信息,并计算存储的P帧的平均容量,并存储所计算的存储的P帧的平均容量。P帧数量预测单元264根据从P帧平均容量计算单元260接收的P帧的平均容量来计算从溢出量测量单元254接收的溢出量,并测量将被跳过的P帧的数量。P帧跳过位置估计单元258根据通过P帧数量预测单元264预测的P帧的数量来设置将被跳过的P帧的位置,并将设置的位置提供给编码器250。
更详细地描述,当根据本发明实施例的视频编码器200的编码器250从视频数据产生单元100接收视频数据帧时,编码器250通过容量预测单元262预测包括当前接收的视频数据帧的整个GOP的编码容量。然后,编码器250将预测的整个GOP的编码容量提供给溢出量测量单元254。
接着,在接收的视频数据帧对应于I帧或第一P帧的情况下,编码器250执行编码,以将编码帧提供给缓冲器252。然而,在接收的视频数据帧不对应于I帧或第一P帧的情况下,编码器250检查是否存在预设跳过位置。在存在预设跳过位置的情况下,编码器250检查当前选择的视频数据帧是否是对应于预设跳过位置的帧。这里,上述预设跳过位置可被设置为由P帧跳过位置估计单元258设置的跳过的计数值(以下,称为“跳过计数值”)。即,例如,在跳过计数值等于‘6’的情况下,每当一个视频数据帧被编码,跳过计数值减小1。当跳过计数值最终等于‘0’时,可跳过对随后所选择的将被编码的视频数据帧的编码。
此外,在所选择的当前将被编码的视频数据帧对应于紧在当前被执行编码的GOP的最后帧之前的P帧的情况下,通常,可不考虑跳过位置根据缓冲器252的可用容量来跳过对该所选择的当前将被编码的视频数据帧的编码。这是为了防止由于缓冲器252的容量限制而导致在对下一GOP的I帧或第一P帧编码时跳过下一GOP的I帧或第一P帧。
之后,缓冲器252顺序地将从编码器250提供的编码帧输出到发送单元104。接着,可用容量测量单元256连续地检查缓冲器252的当前可用容量,以将检查的可用容量提供给溢出量测量单元254。此时,溢出量测量单元254将编码器250的容量预测单元262测量的整个GOP的编码容量与可用容量测量单元256测量的缓冲器252的可用容量进行比较。结果,溢出量测量单元254确定是否产生溢出,并在预料发生溢出的情况下检查溢出量。
接着,P帧平均容量计算单元260检查从编码器250提供的P帧的容量,以将检查的P帧的容量存储在P帧平均容量计算单元260的存储单元266中。此外,在完成对一GOP编码的情况下,即,在从缓冲器252提供的P帧对应于与特定GOP的最后视频数据帧有关的编码的P帧(以下,称为“最后P帧”)的情况下,如果与该P帧有关的容量信息被存储在存储单元266中,则P帧平均容量计算单元260计算与有关最后P帧相应的有关GOP的P帧的平均容量(数量),并存储计算的P帧的平均数量。
之后,P帧跳过位置估计单元258从溢出量测量单元254接收由容量预测单元262预测的关于整个GOP的编码容量的信息。然后,P帧跳过位置估计单元258从P帧平均容量计算单元260接收P帧的平均容量信息。如果P帧的平均容量信息被输入,则P帧跳过位置估计单元258初始化预设跳过位置。如果通过使用跳过计数值来设置跳过位置,则跳过计数值被初始化。此外,如果P帧的容量与根据平均容量信息的容量相同,则P帧数量预测单元264根据整个GOP的编码容量来预测P帧的总数量。即,例如,在P帧的平均容量等于359K字节的情况下,如果整个GOP的编码容量等于10500K字节,则估计的P帧的数量是‘30’。
之后,P帧跳过位置估计单元258通过P帧数量预测单元264根据溢出量来预测P帧的数量。即,P帧数量预测单元264预测在计算的P帧之中与溢出量测量单元254测量的溢出量相应的P帧。即,例如,如果缓冲器的当前可用容量等于9800K字节,则溢出量测量单元254当前测量的溢出量变成700K字节,然后如上所述,如果P帧的平均容量等于350K字节,则计算可显示比容量大2个P帧。因此,P帧跳过位置估计单元258预测在还没有编码的视频数据帧之中大于所述容量的P帧的数量将是2。
因此,P帧跳过位置估计单元258根据预测的P帧的数量来设置将被跳过的P帧的跳过位置。即,例如,在上述情况(即,预测的P帧的数量等于‘2’)下,在还没有编码的P帧的数量等于‘28’时,基于‘28’除以2等于14的表述式,可设置帧的跳过位置为在每一第14 P帧跳过P帧。在这种情况下,跳过计数值可被设置为‘14’。在将该跳过计数值输入到编码器250的情况下,因为每当一个视频数据帧被编码时,当前设置的跳过计数值就减小1,所以如果跳过计数值最终被计数为‘0’,则可跳过对有关视频数据帧的编码。如果编码帧的计数值变成与从P帧跳过位置估计单元258提供的值相同,则可跳过对有关视频数据帧的编码。在跳过对有关视频数据帧的编码的情况下,编码器250初始化跳过计数值或编码帧的计数值,以跳过在下一跳过位置安排的视频数据帧。
图3是示出根据在根据本发明实施例的视频编码器中的缓冲器的当前可用容量来跳过视频数据帧的示例性操作的流程图。
参照图3,当将视频数据帧输入到视频编码器200的编码器250中时,编码器250进行到步骤300以接收视频数据帧。然后,编码器进行到步骤302,以从接收的视频数据帧检查在完成了对整个GOP的视频数据帧的编码的情况下的总编码容量。编码器250进行到步骤304,以在接收的视频数据帧中选择将被编码的视频数据帧。接着,编码器250进行到步骤306,以检查当前选择的视频数据帧是否对应于I帧或第一P帧。这里,编码器250可从关于接收的视频数据帧的头的信息来确定当前选择的视频数据帧是否对应于I帧或第一P帧。
如果当前选择的视频数据帧对应于I帧或第一P帧,则编码器250进行到步骤308,以无条件地对当前选择的视频数据帧执行编码。随着编码的完成,编码器250将编码的视频数据帧输出到缓冲器252。
尽管如此,但是毋庸置疑,缓冲器252的当前可用容量可能不足以接受I帧或第一P帧。因此,如果缓冲器252的当前可用容量不足以接受I帧或第一P帧,则跳过对与I帧或第一P帧相应的当前选择的视频数据帧的编码。
因此,为了防止发生这种情况,在步骤304,如果选择了将被编码的视频数据帧,则检查当前选择的视频数据帧是否对应于紧在最后帧之前的帧,然后可根据缓冲器252的可用容量跳过对当前选择的视频数据帧的编码。在这种情况下,如果当前选择的视频数据帧对应于紧在最后帧之前的帧,则视频编码器200检查缓冲器252的当前可用容量,以确定缓冲器252的当前可用容量是否足以接受随后的I帧或第一P帧。如果缓冲器252的当前可用容量足以接受I帧或第一P帧,则跳过对当前选择的视频数据帧的编码。
参照图6,将给出详细描述作为在如下情况下的操作的示例在缓冲器252的可用容量大于预设量的这种基础上,对当前选择的视频数据帧的编码执行跳过。此外,参照图8,将给出详细描述作为在下如情况下的操作的示例基于缓冲器252的可用容量大于通过将I帧的容量加上第一P帧的容量所得出的平均容量,对当前选择的视频数据帧的编码执行跳过,其中,所述I帧和第一P帧包括在已经完成编码的前一GOP中。
返回图3,如果在步骤306中当前选择的视频数据帧不对应于I帧或第一P帧,则编码器250进行到步骤310,以检查是否从P帧跳过位置估计单元258输入了跳过计数值,或检查是否存在当前测量的跳过位置。在存在当前测量的跳过位置的情况下,编码器250进行到步骤322,以检查当前选择的视频数据帧是否是与预设跳过位置相应的帧。如果当前选择的视频数据帧是与预设跳过位置相应的帧,则编码器250进行到步骤324,以跳过对选择的有关帧的编码。相反,如果当前选择的视频数据帧不是与预设跳过位置相应的帧,则编码器250进行到步骤326,以执行对当前选择的视频数据帧的编码。如果完成了步骤324或步骤326,则编码器250进行到步骤304,以选择在下一顺序中将被编码的视频数据帧。
然后,在步骤326,根据本发明实施例的视频编码器200通过P帧平均容量计算单元260检查当前已完成编码的P帧的容量,并还可执行存储P帧容量的过程。如上详细的描述,这是根据本发明描述的实施例的视频编码器200采用前一GOP的P帧的平均容量以设置将被跳过的帧的位置的原因。在当前编码的P帧对应于当前正被编码的GOP的最后P帧的情况下,还可执行以下过程在存储所述P帧的容量信息之后,计算当前已完成编码的GOP的P帧的平均容量,以存储计算的平均容量。还参照图4详细描述该操作。
返回图3,在步骤310,如果不存在预设并测量的跳过位置,则根据本发明实施例的视频编码器200进行到步骤312,以通过可用容量测量单元256来检查缓冲器252的当前可用容量。接着,如果通过可用容量测量单元256检查了缓冲器252的当前可用容量,则视频编码器200进行到步骤314,并将预测的总编码容量与缓冲器252的可用容量进行比较,以检查预料引起溢出的量。
之后,视频编码器200进行到步骤316,以加载关于P帧平均容量计算单元260中存储的前一GOP的P帧的平均容量的信息。接着,视频编码器200进行到步骤318,通过P帧跳过位置估计单元258根据加载的P帧的平均容量来预测当前引起溢出的P帧的数量。这里,P帧跳过位置估计单元258基于预测的总编码容量和加载的P帧的平均容量来预测所有P帧的数量,并可计算在预测的P帧之中根据溢出量的P帧数量。除此之外,在步骤314,P帧跳过位置估计单元258执行在步骤314中预测的溢出量和加载的P帧的平均容量的操作,并预测将引起溢出的P帧数量。
此外,作为步骤318的结果,如果将引起溢出的P帧数量被预测,则P帧跳过位置估计单元258执行还没有编码的P帧(除了第一P帧)和被预测引起溢出的P帧的数量的操作,并可设置那些将被跳过的P帧的位置。可依据从等式1找到的跳过计数值来设置该跳过位置。
SC=Tf/Pf,[1] 其中,跳过计数(SC)表示跳过计数值;总帧(Tf)表示还没有编码的所有帧;预测帧(Pf)表示预料引起溢出的P帧的数量。
即,例如,如上所详细描述的,在还没有编码的P帧的数量等于‘28’(GOP的帧的总数量等于‘30’的情况下除了I帧和第一P帧之外的帧的数量一因为在本发明中不管对跳过位置的设置对I帧和第一P帧无条件编码)的情况下,如果Pf等于‘2’,则可将SC设置为通过将‘28’除以‘2’所得到的‘14’。然后,P帧跳过位置估计单元258将SC发送到编码器250,然后,编码器250检查所选择的当前将被编码的视频数据帧是否对应于根据输入的SC被设置为编码跳过的帧。接着,如果有关视频数据帧对应于被设置为编码跳过的帧,则跳过对有关视频数据帧的编码。
即,例如,如果SC等于‘14’,编码器250每14个视频数据帧跳过‘1’个视频数据帧。从而,如果除了I帧和第一P帧之外的视频数据帧的数量等于‘28’,则在除了彼此不连续的两个视频数据帧(即,I帧和第一P帧)之外的视频数据帧之中可跳过对第14视频数据帧(第14P帧)和第28视频数据帧(第28P帧)的编码。
因此,根据本发明实施例的视频编码器可防止比其他帧重要的参考帧被跳过,并可通过防止发生连续跳过来防止画面的整体质量下降。
如上所述,图4是详细示出以下过程的流程图在当前被编码的P帧对应于当前正被编码的GOP的最后P帧的情况下,在存储了P帧的容量信息之后,计算当前已完成编码的GOP的P帧的平均容量,并存储计算的平均容量。以下,在图4的描述中,让我们假设使用了如下方法通过将跳过计数值从P帧跳过位置估计单元258提供给编码器250来为帧设置跳过编码的帧的位置。另外,在图4的描述中,让我们假设每当对一帧编码时,编码器250就从当前设置的跳过计数值减去‘1’,其后,如果跳过计数值被计数为‘0’,则跳过对有关视频数据帧的编码。然而,由于所述假设仅为本发明实施例的一部分,所以以下情况并不限定本发明的范围通过使用跳过计数值来设置将被编码的帧的跳过位置,或当通过从跳过计数值减去‘1’,跳过计数值等于‘0’时,跳过对帧的编码。
参照图4,在步骤322,如果当前选择的视频数据帧是对应于预设跳过位置的帧,则本发明的所描述的实施例的编码器250进行到步骤400,以对当前选择的视频数据帧执行编码。然后,编码器250进行到步骤402,以将从P帧跳过位置估计单元258接收的跳过计数值减去‘1’。如果从编码器250输出编码的P帧,则根据本发明的所描述的实施例的视频编码器200通过P帧平均容量计算单元260来检查输出的P帧的容量,并将检查的输出的P帧的容量存储在存储单元266中(步骤404)。
在步骤406,P帧平均容量计算单元260检查从编码器250提供的P帧是否对应于有关GOP的最后编码的帧。此时,为了检查从编码器250提供的P帧是否对应于有关GOP的最后编码的帧,P帧平均容量计算单元260不仅可使用用于检查关于当前输出帧的头的信息的方法,而且还可使用在从编码器250当前提供的帧对应于I帧的情况下识别出当前存储在存储单元266中的P帧为特定GOP的最后P帧的方法。
此时,作为在步骤406中的检查结果,如果当前输出的P帧不是所述特定GOP的最后P帧,则视频编码器200进行到步骤304(图3),以选择在下一顺序中将被编码的视频数据帧。作为在步骤406中的检查结果,如果当前输出的P帧对应于所述特定GOP的最后P帧,则视频编码器200进行到步骤408,以通过P帧平均容量计算单元260计算当前存储在存储单元266中的P帧的容量的平均值,并计算P帧的平均容量。
此外,在步骤410,视频编码器200的P帧平均容量计算单元260将计算的P帧的平均容量存储在P帧平均容量计算单元260的存储单元266中。接着,P帧平均容量计算单元260将计算的P帧的平均容量输入到P帧跳过位置估计单元258。当接收到计算的P帧的平均容量时,在步骤412,P帧跳过位置估计单元258响应于此初始化当前设置的跳过计数值。因此,如果对新的GOP的视频数据帧编码,则视频编码器200通过使用前一GOP的视频数据帧之中除了第一P帧之外的P帧和I帧的平均容量来设置新的跳过计数值,并估计新的跳过位置。
可选择地,不仅在对属于一个GOP的所有视频数据帧编码都被完成时,而且在发生跳过对任何视频数据帧的编码时,都可产生跳过计数值。在这种情况下,当一个GOP结束时,P帧平均容量计算单元260不计算前一GOP的P帧的平均容量,而是存储当前从编码器250输出的P帧的容量信息,然后,当产生跳过编码时,毋庸置疑,可计算在该时刻之前已完成编码的P帧的平均容量。
在发生了跳过对帧的编码的情况下,图5是详细示出重置跳过位置的操作过程的流程图。
参照图5,在步骤324(图3),在视频编码器200中包括的编码器250进行到步骤500,以在所选择的当前将被编码的视频数据帧是对应于预设跳过位置的帧的情况下,跳过对所选择的当前将被编码的视频数据帧的编码。编码器250进行到步骤502,以检查缓冲器252的可用容量。在步骤504,视频编码器200通过溢出量测量单元254将当前接收的视频数据帧之中将被编码的帧的剩余容量与缓冲器252的可用容量进行比较,并检查该时刻的溢出量。
接着,视频编码器200进行到步骤506,以通过P帧跳过位置估计单元258根据检查的溢出量来检查引起溢出的P帧的数量。这里,检查引起溢出的P帧的数量所必须的P帧的平均容量可以是在当前正被编码的GOP的P帧之中到目前为止已完成编码的P帧的平均容量。
随后,视频编码器200进行到步骤508,以根据检查的P帧的数量来重置跳过位置。这里,重置跳过位置的操作可以是重置跳过计数值的过程。因此,在这种情况下,如果跳过了对特定视频数据帧的编码,则可根据缓冲器252的当前可用容量来重置新的跳过计数值。因此,即使对视频数据帧编码时的容量与先前P帧的平均容量显著不同(这不符合初始预测),也可通过使用到目前为止编码的P帧的平均容量来更准确地估计溢出量,从而,可设置P帧的跳过位置。
图6是示出在步骤304通过检查当前选择的视频数据帧是否对应于最后帧之前的帧,在根据缓冲器252的当前可用容量跳过当前选择的视频数据帧的情况下的操作过程的流程图。如根据本发明实施例所详细描述和显示的,即使跳过了对帧的编码,在缓冲器252的当前可用容量不足以接受I帧和第一P帧的情况下,也可防止发生跳过I帧或第一P帧的情况。因此,在这种情况下,除了当前正被编码的GOP的P帧之中的最后帧之外,视频编码器200还可不管预设跳过位置根据缓冲器252的可用容量跳过另一P帧。这是通常最后帧变成与根据本发明优选实施例的跳过位置相应的帧的原因。
在这种情况下,如果在步骤302检查了将被编码的GOP的总编码容量,则视频编码器200的编码器250进行到步骤600,以按预设顺序选择将被编码的GOP的视频数据帧。然后,视频编码器200的编码器250进行到步骤602,以检查当前选择的视频数据帧是否对应于在将被编码的GOP的视频数据帧之中紧在最后帧之前的帧。此外,如果当前选择的视频数据帧不是在将被编码的GOP的视频数据帧之中紧在最后帧之前的帧,则编码器250进行到步骤310,其中,检查是否存在当前测量的跳过位置,即,例如,是否存在当前设置的跳过计数值。
然而,作为步骤602的结果,如果当前选择的视频数据帧对应于在将被编码的GOP的视频数据帧之中紧在最后帧之前的帧,则在步骤604,视频编码器200通过可用容量测量单元256来测量检查的缓冲器252的可用容量,并检查测量的缓冲器252的可用容量是否小于预设量。这里,可将为缓冲器252的可用容量预设的量用作从用于优化缓冲器252的可用容量的实验产生的值。
此外,作为在步骤604的检查结果,如果测量的缓冲器252的可用容量不小于所述预设量,则视频编码器200的编码器250进行到步骤310,以检查是否存在当前测量的跳过位置。然而,作为步骤604的检查结果,如果测量的缓冲器252的可用容量小于所述预设量,则视频编码器200的编码器250进行到步骤606,以跳过对所选择的当前将被编码的视频数据帧的编码。然后,视频编码器200返回步骤600,以选择用于编码的下一视频数据帧。
同时,参照图6,对以下情况给出了描述预先确定为缓冲器252的可用容量预设的量,响应于预设量跳过紧在最后帧之前的视频数据帧。毋庸置疑,不必预设用于缓冲器252的可用容量的量,可通过将已完成编码的前一GOP的I帧和第一P帧的容量与缓冲器252的当前可用容量进行比较来跳过紧在最后帧之前的视频数据帧。在这种情况下,如果从编码器250输出I帧和第一P帧,则P帧平均容量计算单元260检查输出的I帧和第一P帧的容量信息,还将所检查的输出的I帧和第一P帧的容量信息存储在P帧平均容量计算单元260的存储单元266中,还计算存储的I帧的平均容量和存储的第一P帧的平均容量。
以下,图7和图8是示出根据本发明的该优选实施例的在当前选择的帧对应于紧在最后帧之前的帧的情况下,基于缓冲器252的可用容量足以接受I帧和第一P帧,跳过编码的操作的流程图。这里,图7是示出如下处理的流程图如上所述,存储前一GOP的I帧和第一P帧的容量,以将前一GOP的I帧和第一P帧的容量与缓冲器252的可用容量进行比较,并计算存储的I帧和第一P帧的平均容量,以存储计算的I帧和第一P帧的平均容量。图8是示出如下操作过程的流程图在通过如图7所示的处理计算了I帧和第一P帧的容量或I帧和第一P帧的平均容量的情况下,通过使用I帧和第一P帧的容量或I帧和第一P帧的平均容量来跳过对紧在最后帧之前的帧的编码。
参照图7,如果当前选择的视频数据帧对应于I帧或第一P帧,则视频编码器200的编码器250进行到步骤700,以对当前选择的I帧或第一P帧编码。如果从编码器250输出已完成编码的I帧或第一P帧,则P帧平均容量计算单元260进行到步骤702,以检查输出的I帧或第一P帧的容量信息,并将检查的I帧或第一P帧的容量信息存储在存储单元266中。
此时,P帧平均容量计算单元260进行到步骤704,以计算存储在存储单元266中的I帧和第一P帧中的每一种的平均容量。接着,如果计算了I帧和第一P帧中每一种的平均容量,则P帧平均容量计算单元260进行到步骤706,以将通过将I帧的平均容量加上第一P帧的平均容量所求得的总平均容量存储在存储单元266中。其后,视频编码器200进行到步骤304,以选择将被编码的下一视频数据帧。
在这种情况下,根据本发明的所述实施例的视频编码器200现在具有通过将I帧的平均容量加上第一P帧的平均容量所求得的总平均容量。另外,如果所选择的当前将被编码的视频数据帧对应于紧在最后帧之前的帧,则根据总平均容量和缓冲器252的当前可用容量跳过对所选择的当前将被编码的视频数据帧的编码。可将全面示出根据本发明的操作的图8的流程图应用于这种情况。
参照图8,如果在步骤304检查了将被编码的GOP的总编码容量,则视频编码器200的编码器250进行到步骤800,以按预设顺序选择正好将被编码的GOP的视频数据帧。然后,视频编码器200的编码器250进行到步骤802,以确定当前选择的视频数据帧是否对应于在将被编码的GOP的视频数据帧之中紧在最后帧之前的帧。如果当前选择的视频数据帧不是在将被编码的GOP的视频数据帧之中紧在最后帧之前的帧,则视频编码器200进行到步骤310,在所述步骤310中,检查是否存在当前测量的跳过位置,即,例如,是否存在当前设置的跳过计数值。
相反,作为步骤802的确定结果,如果当前选择的视频数据帧对应于在将被编码的GOP的视频数据帧之中紧在最后帧之前的帧,则视频编码器200通过可用容量测量单元256测量检查的缓冲器252的可用容量。在步骤804,视频编码器200确定测量的缓冲器252的可用容量是否小于通过将I帧的平均容量加上第一P帧的平均容量所求得的总平均容量,其中,所述总平均容量已在图7示出的过程中被计算。
作为在步骤804中的确定结果,如果测量的缓冲器252的可用容量不小于总平均容量,则视频编码器200的编码器250进行到步骤310,以检查是否存在当前测量的跳过位置。相反,作为在步骤804中的确定结果,如果测量的缓冲器252的可用容量小于总平均容量,则视频编码器200的编码器250进行到步骤806,以跳过对所选择的当前将被编码的视频数据帧的编码。其后,视频编码器200的编码器250返回步骤800,以选择用于编码的下一视频数据帧。因此,在本发明中,尽可能地防止发生跳过I帧或第一P帧。
根据本发明的上述方法可被实现为硬件或软件,或者被实现为可被存储在记录介质(例如,CD ROM、RAM、软盘、硬盘或磁光盘)中或通过网络被下载的计算机代码,以使这里描述的方法可由通过使用通用计算机或专用计算机的这种软件或按可编程或专用硬件(例如,ASIC或FPGA)被实施。在本领域中应该理解,计算机、处理器或可编程硬件包括可存储或接收软件或计算机代码的存储部件(例如,RAM、ROM、闪存等),当计算机、处理器或硬件访问或执行所述软件并计算机代码时,所述软件或计算机代码实现这里描述的处理方法。加载有代码或访问了代码的计算机或处理器被表现为用于执行在这里描述的处理的设备。
还如下描述了在本发明中公开的实施例的优点和效果。
在本发明中,对帧指定跳过编码的位置,并防止跳过比其他帧重要的参考帧。此外,在防止跳过重要的参考帧的同时,防止连续跳过的发生,从而防止降低画面的整体质量。
尽管参照本发明的特定优选实施例显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离本发明的精神和范围的情况下,可在形式和细节方面进行各种修改。在本发明的实施例中,给出了使用跳过计数值以对帧设置跳过位置的示例,但是毋庸置疑,本发明不限于使用跳过计数值以设置跳过位置。例如,可为跳过位置直接选择帧号,然后可将选择的帧号输入到编码器250。另外,在本发明的其他实施例中,在测量溢出量之后,通过将预测的总编码容量除以P帧的平均容量来预测P帧的数量,并通过将引起溢出的量与预测的P帧的数量进行比较来预测引起溢出的P帧的数量。可选择地,如果测量了溢出量,则可通过将测量的溢出量除以P帧的平均容量来预测引起溢出的P帧的数量。因此,上述两种方法提供了相同效果的原因在于,在测量溢出量之后,通过将测量的溢出量除以P帧的平均容量来预测引起溢出的P帧的数量。因此,本发明的精神和范围不是必须由本发明的描述的实施例来限定,而是由权利要求和权利要求的等同物来限定。
权利要求
1.一种视频编码器,包括
编码器,用于在接收的视频数据帧被编码的情况下预测总编码容量,对从接收的视频数据帧中除去与确定跳过的位置相应的视频数据帧而产生的视频数据帧编码,并提供编码的视频数据帧;
缓冲器,用于缓冲从编码器提供的编码的视频数据帧;
可用容量测量单元,用于测量缓冲器的可用容量;
溢出量测量单元
用于从编码器输入关于总编码容量的信息;
用于从可用容量测量单元输入关于可用容量的信息;
用于将关于总编码容量的信息与关于可用容量的信息进行比较;和
用于预测溢出量;
平均容量计算单元,用于检查关于从编码器提供的编码数据的容量的信息,以存储检查的关于所述容量的信息,并用于计算存储的编码数据的平均容量;和
P帧跳过估计单元,用于通过使用预测的溢出量和计算的平均容量来计算预料引起溢出的编码帧的数量,并根据计算的预料溢出的编码帧的数量来确定将被跳过编码的视频数据帧中每一帧的至少一个位置。
2.如权利要求1所述的视频编码器,其中,与被确定跳过的位置相应的视频数据帧包括
从视频数据帧中的I帧和除去与最初P帧相应的第一P帧之外的剩余P帧中的至少一帧。
3.如权利要求2所述的视频编码器,其中,P帧跳过估计单元根据预测将引起溢出的编码帧的数量来对将被跳过的视频数据帧设置跳过计数的值。
4.如权利要求3所述的视频编码器,其中,当跳过计数等于‘0’时,编码器识别所选择的当前将被编码的视频数据帧为与确定跳过的位置相应的帧。
5.如权利要求4所述的视频编码器,其中,当跳过计数等于‘0’时,
可用容量测量单元检查缓冲器的当前可用容量;
溢出量测量单元将当前将被编码的视频数据帧的总编码容量与缓冲器的当前可用容量进行比较,并测量溢出量;和
P帧跳过估计单元,根据缓冲器的当前可用容量和当前将被编码的视频数据帧来预测溢出量,并根据预测的溢出量和到目前为止已编码的帧的平均容量来重新计算将被忽略的视频数据帧的跳过位置。
6.如权利要求1所述的视频编码器,其中,在所选择的将被编码的视频数据帧对应于紧在最后帧之前的帧的情况下,基于缓冲器的当前可用容量小于规定量,编码器跳过对所选择的将被编码的视频数据帧的编码。
7.如权利要求1所述的视频编码器,其中,平均容量计算单元存储从编码器提供的编码数据之中的I帧的容量和除了第一P帧之外的P帧的容量,并在将被编码的图像组的最后P帧被输出的情况下,计算I帧的容量和除了第一P帧之外的P帧的容量。
8.如权利要求1所述的视频编码器,其中,平均容量计算单元接收从编码器提供的编码数据之中的I帧的容量信息和除了第一P帧之外的P帧的容量信息,存储接收的I帧的容量信息和除了第一P帧之外的P帧的容量信息,并在将被编码的图像组的最后P帧被输出的情况下,计算I帧、第一P帧和除了第一P帧之外的其他P帧的平均容量。
9.如权利要求8所述的视频编码器,其中,在所选择的将被编码的视频数据帧对应于紧在所述最后帧之前的帧的情况下,如果缓冲器的当前可用容量小于通过将I帧的平均容量加上第一P帧的平均容量而求得的总平均容量,则编码器跳过对所选择的将被编码的视频数据帧的编码。
10.一种对视频数据帧编码的方法,所述方法包括以下步骤
(1)在与输入视频数据帧相应的整个图像组的帧被编码的情况下,预测总编码容量;
(2)根据预设编码顺序来选择输入视频数据帧中的任何一帧,检查所选择的视频数据帧是否对应于图像组的I帧或与图像组的初始P帧相应的第一P帧,如果所选择的视频数据帧对应于I帧或第一P帧,则对所选择的视频数据帧编码;
(3)作为检查帧的结果,在当前选择的视频数据帧不对应于I帧或第一P帧的情况下,确定是否存在预设帧跳过位置;
(4)作为确定跳过位置的结果,在不存在预设帧跳过位置的情况下,根据从在所述图像组之前编码的图像组的P帧计算的平均容量和在视频编码器的缓冲器中的可用容量来设置跳过位置;和
(5)确定所选择的当前将被编码的视频数据帧是否对应于所述预设帧跳过位置,并根据确定的结果来执行对所选择的当前将被编码的视频数据帧的编码。
11.如权利要求10所述的方法,其中,步骤(4)包括以下步骤
检查缓冲器的可用容量;
将检查的缓冲器的可用容量与总的编码容量进行比较,以预测预料引起溢出的量;
通过使用存储的平均值根据溢出量来预测预料引起溢出的编码帧的数量;和
对还没有编码的视频数据帧的数量和预料引起预测的溢出的帧的数量执行运算,并设置将被跳过的帧的位置。
12.如权利要求10所述的方法,其中,步骤(5)包括以下步骤
(5-1)作为确定跳过位置的结果,在存在预设帧跳过位置的情况下,确定所选择的当前将被编码的视频数据帧是否是对应于预设帧跳过位置的帧;
(5-2)如果所选择的当前将被编码的视频数据帧不是对应于预设帧跳过位置的帧,则对所选择的当前将被编码的视频数据帧编码;以及
(5-3)如果所选择的当前将被编码的视频数据帧是对应于预设帧跳过位置的帧,则跳过对所选择的当前将被编码的视频数据帧的编码。
13.如权利要求12所述的方法,其中,步骤(5-2)包括以下步骤
对当前选择的视频数据帧编码;
检查编码视频数据帧的容量,以存储检查的编码视频数据帧的容量;以及
检查当前编码的视频数据帧是否是在与接收的视频数据帧相应的图像组的视频数据帧之中被最后编码的帧;
作为检查编码帧的结果,如果当前编码的视频数据帧是在与接收的视频数据帧相应的图像组的视频数据帧之中被最后编码的帧,则计算存储的视频数据帧的编码容量的平均值;以及
存储计算的平均值,并通过使用存储的平均值来设置新的帧跳过位置。
14.如权利要求12所述的方法,其中,步骤(5-2)包括以下步骤
对当前选择的视频数据帧编码;
检查编码视频数据帧的容量,以存储检查的编码视频数据帧的容量;以及
计算与在存储的视频数据帧的编码容量之中当前正被编码的图像组的视频数据帧的编码容量有关的当前帧平均值。
15.如权利要求14所述的方法,其中,步骤(5-3)包括以下步骤
跳过对所选择的当前将被编码的视频数据帧的编码;
预测目前没有执行编码的视频数据帧的编码容量;
检查缓冲器的当前可用容量;
将当前编码容量与检查的当前可用容量进行比较,以预测预料引起溢出的量;
通过使用帧平均值根据当前溢出量来预测预料引起溢出的编码帧的数量;以及
对还没有编码的视频数据帧的数量和预料引起预测溢出的帧的数量执行运算,并设置帧跳过位置。
16.如权利要求10所述的方法,其中,步骤(2)包括以下步骤
(2-1)根据预设编码顺序来选择输入的视频数据帧中的任何一帧;
(2-2)检查所选择的视频数据帧是否对应于图像组的I帧或第一P帧;以及
(2-3)在所选择的视频数据帧对应于图像组的I帧或第一P帧的情况下,对所选择的视频数据帧编码。
17.如权利要求16所述的方法,其中,步骤(2-1)包括以下步骤
选择当前将被编码的视频数据帧;
检查当前选择的视频数据帧是否是对应于图像组的帧之中紧在最后帧之前的帧;
在当前选择的视频数据帧是对应于紧在所述最后帧之前的帧的情况下,检查视频编码器的缓冲器的当前可用容量是否小于预设量;以及
如果缓冲器的当前可用容量小于所述预设量,则跳过对当前选择的视频数据帧的编码。
18.如权利要求16所述的方法,其中,步骤(2-3)包括以下步骤
如果当前选择的视频数据帧对应于I帧或第一P帧,则对当前选择的视频数据帧编码;
基于编码视频数据帧对应于I帧或第一P帧,将I帧的容量信息或P帧的容量信息存储在编码视频数据帧的容量值中;
通过将I帧的容量信息中和P帧的容量信息中所包括的容量相加取平均值所求得的总容量的平均值;以及
存储所述总容量的平均值。
19.如权利要求18所述的方法,其中,步骤(2-1)包括以下步骤
选择当前将被编码的视频数据帧;
检查当前选择的视频数据帧是否对应于在图像组的帧之中紧在最后帧之前的帧;
在当前选择的视频数据帧对应于紧在所述最后帧之前的帧的情况下,检查视频编码器的缓冲器的当前可用容量是否小于总容量的平均值;以及
如果视频编码器的缓冲器的当前可用容量小于总容量的平均值,则跳过对当前选择的视频数据帧的编码。
全文摘要
公开了一种对视频数据帧编码的视频编码器和方法。视频编码器的编码器检查将被编码的视频数据帧的总容量,并通过使用从前一GOP提取的P帧的平均容量根据检查的总容量来预测随后将被编码的P帧的数量。根据缓冲器的可用容量从预测的P帧的数量来计算由于缓冲器溢出而将被跳过的帧的数量。根据预测的P帧的数量和GOP的帧的数量把将被跳过的那些帧的位置设置为不连续。此外,在对视频数据帧执行编码的同时,所选择的当前将被编码的视频数据帧被安排在与将被跳过的帧被安排的位置相同的位置,并跳过对该视频数据帧的编码。
文档编号H04N7/32GK101115203SQ20071013919
公开日2008年1月30日 申请日期2007年7月27日 优先权日2006年7月28日
发明者金锋坤, 李相祚, 周永勋 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1