位流检验方法、解码方法及其装置与流程

文档序号:21818856发布日期:2020-08-11 21:33阅读:168来源:国知局
位流检验方法、解码方法及其装置与流程

本发明涉及图像或视频压缩技术领域,更具体的说,尤其涉及位流缓存的检验方法。



背景技术:

1、传统视频编码方案

在现有视频序列处理中,为了使编码后的视频序列支持随机访问功能,视频序列被分割成多个具有随机访问功能的片段(简称为随机访问片段),如图1所示,一个视频序列包括至少一个随机访问片段,每个随机访问片段对应一个显示时段并包括一幅随机访问图像以及多幅非随机访问图像,每个图像拥有各自的显示时间以描述该图像被显示或播放的时间。一个随机访问片段中的图像可以进行帧内编码,或者,参考该随机访问片段中的其他图像利用帧间预测进行编码,其中,被参考的图像可以是要显示的图像、或者不能显示的合成图像等。然而在现有技术中,一个显示顺序在随机访问图像之后的图像(不包括leadingpictures)只能参考该图像所属的随机访问片段中的其他图像,而不能参考该图像所属随机访问片段之前或之后的随机访问片段中的图像,如图1所示。具体的,有如下几种方式描述当前图像和候选参考图像之间的依赖关系:

在现有的视频编码方案(如h.264\avc或h.265\hevc)中,当前图像和候选参考图像之间的依赖关系由视频压缩层的参考图像配置集描述,其中参考图像配置集描述了参考图像与当前图像之间的编号差值。之所以在参考图像配置集中仅描述编号差值,是因为现有的视频编码方案中,候选参考图像与当前图像从属于同一个独立可解码的随机访问片段,且候选参考图像与当前图像只能使用同一种编号规则,例如按照时间顺序编号,因此根据当前图像编号和候选参考图像编号差值可以准确定位候选参考图像。如果参考图像和当前图像使用不同的编号规则,由于现有视频编码方案没有提供在码流中描述不同编号规则的方法,同样的编号差值会指向不同的候选参考图像,导致编解码器不能使用正确的候选参考图像。

在可伸缩视频编码方案(scalablevideocoding,svc)和多视点视频编码方案(multiviewvideocoding,mvc)中,如图2所示,在已有帧间预测(仅使用同层/同视点内的候选参考图像)的基础上,svc/mvc使用层间/视点间预测为当前图像扩展了候选参考图像的范围,其中扩展的候选参考图像与当前图像拥有相同的编号(例如,相同时间戳)且不属于独立可解码片段的同一层级。svc/mvc在视频压缩层使用层级标识描述不同层/视点的码流的依赖关系,并联合使用图像的同一编号描述层间/视点间图像的依赖关系。

在avs2的背景帧技术中,如图3所示,编码图像和场景图像的依赖关系由视频压缩层中参考图像类型的标识来描述。具体的,avs2使用标识描述特别的场景图像类型(即,g图像和gb图像),并使用特定的参考缓存(即场景图像缓存)管理g/gb图像,同时,使用标识描述当前图像是否参考g/gb图像,并使用特定的参考图像队列构建方法(即,默认将g/gb图像放入参考图像队列的最后一个参考图像位),最终,使得按照规则编号的当前图像能够参考不按照规则编号的候选参考图像(即gb图像)、或与当前图像使用同一规则编号但编号差值超出约束范围的候选参考图像(即g图像)。但该技术限制任意时刻场景图像缓存中只能存在一个候选参考图像,且该候选参考图像仍然与当前图像属于同一独立可解码片段。

2、基于知识库的视频编码方案

现有技术的上述机制会限制待编码图像的可用参考图像数量,不能有效提升图像编码和图像解码的效率。

为了挖掘和利用多个随机访问片段之间的图像在编码时相互参考的信息,在编码(或解码)一幅图像时,编码器(或解码器)可以从数据库中选择与当前编码图像(或解码图像)纹理内容相近的图像作为参考图像,这种参考图像称为知识库图像,存储上述参考图像的集合的数据库称为知识库,这种视频中至少一幅图像参考至少一幅知识库图像进行编解码的方法称为基于知识库的视频编码(英文:library-basedvideocoding)。采用基于知识库的视频编码对一个视频序列进行编码会产生一个包含知识库图像编码码流的知识码流和一个包含视频序列各帧图像参考知识库图像编码得到的码流的主码流。这两种码流分别类似于可伸缩视频编码(英文:scalablevideocoding,svc)产生的基本层码流和增强层码流,即主码流依赖于知识码流,且知识码流可以穿插入主码流以组成拼接码流。然而,基于知识库的视频编码的双码流组织方式与svc的分级码流组织方式的层级码流之间的依赖关系不同,不同之处在于,svc的双码流层级之间是按照一定的对齐时间段依赖的,而基于知识库的视频编码的双码流中视频层依赖知识层是按照非对齐时间段依赖的。

在利用知识图像的编解码技术中,知识图像被获取并用于为图像的编解码提供额外的候选参考图像,图4展示了利用知识图像的编解码技术中,序列图像与知识图像之间的依赖关系。知识图像使得序列图像能够利用大跨度的相关信息,提升了编解码效率。但是,现有的技术方案并不能有效地支持序列图像和知识图像依赖关系的描述及对知识图像进行高效的管理。

3、现有的位流缓存检验方法

在现有技术中,位流检验方法对假设位流缓存(bitstreambuffer)中的位流进行检验,例如在图5中,位流数据逐渐进入假设位流缓存中,并在解码时刻t(n)从位流缓存中移出数据以进行解码。符合检验的位流应该保持假设位流缓存中的数据充满程度不超过假设位流缓存的大小,即不导致假设位流缓存上溢,也不应该少于当前时刻需要解码的图像数据的大小,即不导致假设位流缓存的下溢。



技术实现要素:

为克服现有技术上述缺陷,本发明公开一种检验位流的方法,在编码端通过在假设位流缓存中对包含知识码流和主码流的拼接位流中的编码图像数据进行不同的操作,来模拟位流缓存中数据的填充程度,以检验假设位流缓存中的数据充满度是否发生了假设位流缓存的上溢或假设位流缓存的下溢,从而检验位流的合格性。目的是为了判断编码器生产的位流是否合格。

为此,本发明第一目的提供一种检验位流的方法,包括:

1)对于主码流和知识流拼接得到的位流中的一幅图像的编码数据执行以下操作方法之一:

a、如果该图像为主码流中的图像,根据该图像的解码时刻和此前已解码的主码流中的图像的显示时刻的差值大小,决定是否将所述图像的编码数据移出假设位流缓存;

b、如果该图像为知识流中的图像,根据该图像的解码时刻,将所述图像的编码数据移出假设位流缓存;

2)检验假设位流缓存的数据充满度,根据数据充满度是否超过假设位流缓存的容量上限和下限,判断所述被检验位流是否合格。

作为优选,所述根据图像的解码时刻和此前已解码的主码流中的图像的显示时刻的差值大小,决定是否将所述图像的图像数据移出假设位流缓存,按以下操作方法之一执行:

1)如果所述图像的解码时刻不早于该图像之前最临近解码的第二个图像的显示时刻,则在所述图像的解码时刻,将所述图像的编码数据移出假设位流缓存;

2)如果所述图像的解码时刻早于该图像之前最临近解码的第二个图像的显示时刻,则在所述图像的解码时刻,不从假设位流缓存中移出数据。

本发明第二目的,在解码端采用相应的位流操作的机制,对拼接位流中穿插的知识图像进行适时的解码,但同时要保证在有限容量的位流缓存中既不上溢且不下溢的效果,并且解码器能够按正确的时序解码并显示主流中的图像。本发明的解码方法使用有限容量的缓存即可串行地实现知识图像和主流图像的解码,一方面避免主流图像播放的卡顿,同时还避免了占用过多的解码图像缓存大小。

为此,提供一种解码方法,对于存储于位流缓存的位流中的一幅图像的编码数据,按以下操作方法之一执行,其中所述位流由主码流和知识流拼接得到:

a、如果该图像为主码流中的图像,根据该图像的解码时刻和此前已解码的主码流中的图像的显示时刻的差值大小,决定是否将所述图像的编码数据移出位流缓存以解码所述图像;

b、如果该图像为知识流中的图像,根据该图像的解码时刻,将所述图像的编码数据移出位流缓存以解码所述图像。

作为优选,所述根据该图像的解码时刻和此前已解码的主码流中的图像的显示时刻的差值大小,决定是否将所述图像的编码数据移出位流缓存以解码所述图像,按以下操作方法之一执行:

1)如果所述图像的解码时刻不早于该图像之前最临近解码的第二个图像的显示时刻,则在所述图像的解码时刻,将所述图像的编码数据移出位流缓存以解码所述图像,并将所述解码图像放入待显示缓存;

2)如果所述图像的解码时刻早于该图像之前最临近解码的第二个图像的显示时刻,则在所述图像的解码时刻,不从位流缓存中移出编码数据。

作为优选,所述将解码图像放入显示缓存,按以下操作方法之一执行:

1)如果所述图像的解码时刻不早于该图像之前最临近解码的第一个图像的显示时刻,将所述解码图像放入第一待显示缓存;

2)如果所述图像的解码时刻不早于该图像之前最临近解码的第二个图像的显示时刻且早于该图像之前最临近解码的第一个图像的显示时刻,将第二待显示缓存中的图像移入所述第一待显示缓存,并将所述解码图像放入所述第二待显示缓存。

作为优选,如果所述图像为知识流中的图像,将所述解码图像放入知识缓存。

本发明第三目的在于提供一种检验位流的装置,包括,

处理器;

存储器;以及

一个或多个程序用于完成以下方法:

1)处理器对于存储器中由主码流和知识流拼接得到的位流中的一幅图像的编码数据执行以下操作方法之一:

a、如果该图像为主码流中的图像,处理器根据该图像的解码时刻和此前已解码的主码流中的图像的显示时刻的差值大小,决定是否将所述图像的编码数据移出假设位流缓存;

b、如果该图像为知识流中的图像,处理器根据该图像的解码时刻,将所述图像的编码数据移出假设位流缓存;

2)处理器检验假设位流缓存的数据充满度,根据数据充满度是否超过假设位流缓存的容量上限和下限,判断所述被检验位流是否合格。

作为优选,所述处理器根据图像的解码时刻和此前已解码的主码流中的图像的显示时刻的差值大小,决定是否将所述图像的图像数据移出假设位流缓存,按以下操作方法之一:

1)如果所述图像的解码时刻不早于该图像之前最临近解码的第二个图像的显示时刻,则在所述的图像的解码时刻,处理器将所述图像的编码数据移出假设位流缓存;

2)如果所述图像的解码时刻早于该图像之前最临近解码的第二个图像的显示时刻,则在所述的图像的解码时刻,处理器不从假设位流缓存中移出数据。

本发明第四目的在于提供一种解码的装置,包括,

处理器;

存储器;以及

一个或多个程序用于完成以下方法:

处理器对于进入存储器中的位流缓存的位流中的一幅图像的编码数据执行以下操作之一,其中所述位流由主码流和知识流拼接得到:

a、如果该图像为主码流中的图像,处理器根据该图像的解码时刻和此前已解码的主码流中的图像的显示时刻的差值大小,决定是否将所述图像的编码数据移出位流缓存以解码所述图像;

b、如果该图像为知识流中的图像,处理器根据该图像的解码时刻,将所述图像的编码数据移出位流缓存以解码所述图像。

作为优选,所述处理器根据该图像的解码时刻和此前已解码的主码流中的图像的显示时刻的差值大小,决定是否将所述图像的编码数据移出位流缓存以解码所述图像,按以下操作方法之一执行:

1)如果所述图像的解码时刻不早于该图像之前最临近解码的第二个图像的显示时刻,则在所述图像的解码时刻,处理器将所述图像的编码数据移出位流缓存以解码所述图像,并将所述解码图像放入存储器中的待显示缓存;

2)如果所述图像的解码时刻早于该图像之前最临近解码的第二个图像的显示时刻,则在所述图像的解码时刻,处理器不从位流缓存中移出编码数据。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1被分割为随机访问片段的视频序列使用现有技术一的图像依赖关系示意图;

图2被分割为随机访问片段的视频序列使用现有技术二的图像依赖关系示意图;

图3被分割为随机访问片段的视频序列使用现有技术三的图像依赖关系示意图;

图4被分割为随机访问片段的视频序列使用现有技术四的图像依赖关系示意图;

图5现有位流缓存检验方法的位流缓存数据变化示意图;

图6本发明实施例提供的一种位流检验方法的位流缓存数据变化示意图;

图7本发明实施例提供的另一种位存检验方法的位流缓存数据变化示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。

名词定义:

在说明实施例之前,先声明必要的名词定义:

知识图像:知识图像为当前图像所属的随机访问片段及其之前最邻近的一个随机访问片段中的需要显示的图像集之外的图像,知识图像是一种参考图像,用于为待编码图像或待解码图像提供参考。

rl(referencetolibrary)图像:仅参考知识图像进行编码或解码的图像。在一种实现方式中,rl图像紧跟在序列头数据之后,通过先解码外部的知识图像再解码rl图像以实现随机访问功能;在一种实现方式中,rl图像紧跟在序列头数据、知识图像数据之后,通过先解码知识图像再解码rl图像以实现随机访问功能;在一种实现方式中,rl图像跟在序列头数据之后,其间存在辅助增强信息或扩展信息或用户信息等数据,通过先解码知识图像再解码rl图像以实现随机访问功能。

知识流:又叫知识码流,指仅包含知识图像的位流。

主流:又叫主码流,指参考知识图像的图像所属的位流,该位流不包含知识图像的数据。在一种实现方式中,知识流和主流穿插拼接为一个码流。

位流缓存:解码端用于存储输入的位流数据的缓存。在一种实现方式中,位流缓存的容量大小由位流中档次、级别决定。

假设位流缓存:编码端为了模拟解码端的位流缓存存储输入的位流数据的状态而构建的虚拟缓存,该假设位流缓存不实际存储位流数据。在一种实现方式中,假设位流缓存通过模拟位流数据的输入和移出,以记录数据变化量并估计解码端位流缓存的充满程度。

实施例1

在一种位流检验(bitstreambufferverifier)的方法中,假设给定的拼接位流中主流图像的帧率为每t(t>0)秒n(n>0)幅图像,即图像的显示时间间隔为t/n,则编码器假设存在一个在t秒内至少能解码n+1帧图像的假设编码器(即下述解码操作并没有真正执行,只是由编码器模拟假设图像数据被移出假设位流缓存器,所述假设位流缓存器不需要进行实际的缓存和移出操作,只需要记录图像数据的变化以及假设位流缓存中的数据量即可),并执行如下操作:

1、假设解码器以t(k)表示第k(k>=0)次解码时刻,其中t(k)=k*t/(n+1);以t`(m)表示第m(m>=0)次显示时刻,其中t(m)=m*t/n;

2、记跳过解码的次数为s(s>=0),且令s=0;记已解码的知识图像的个数为b(b>=0),且另b=0;

3、将所述拼接位流的序列头、跟在序列头之后的扩展和用户数据、视频编辑码等数据以rbit/s的速度输入假设位流缓存,其中r>0;在一种实施方式中,r保持不变;在一种实施方式中,r在不同时间段中为不同的速率值;

4、将拼接位流中从第0幅图像的图像头数据开始的数据以rbit/s的速度输入假设位流缓存;并在给定时刻对假设位流缓存进行如下检测操作;

1)在t(0)时刻将第0幅图像的编码数据移出假设位流缓存,其中所述第0幅图像为知识图像,该图像不显示;并令b=b+1;

2)在t(1)时刻将第1幅图像的编码数据移出假设位流缓存,其中所述第1幅图像为rl图像,该图像被暂存在第一假设待显示缓存(所述第一假设待显示缓存并不实际存储图像,仅表示所述图像的显示属性,即所述图像为在下一显示时刻显示输出的图像,所述显示输出也不表示实际的显示输出,仅表示所述图像已经完成处理操作,且不再被标记为第一假设待显示缓存中的图像。在一种实现方式中,第一假设待显示缓存仅能包含一个图像)中,并在t`(0)时刻显示;

3)进行循环操作,对于第k(k>1)幅图像,

a、如果该图像是主码流中的图像,则判断该图像的解码时刻与显示时刻的差值的值域范围(在另一种实现方式中,判断该图像的解码时刻与所述图像之前解码的图像的显示时刻的前后关系),即判断t(k+s)时刻和t`(k-b)时刻的差值d的大小,

i、如果d<t/n,那么在t(k+s)时刻将第k幅图像的编码数据移出假设位流缓存,其中所述第k幅图像被放入第一假设待显示缓存中,并在t`(k-b)时刻显示;

ii、如果t/n<=d<2*t/n,那么在t(k+s)时刻,

a、如果d=t/n,将第一假设待显示缓存中存储的图像显示输出,并

b、如果t/n<d<2*t/n,则第一假设待显示缓存中存储的图像已经被显示输出,并

将第二假设待显示缓存(所述第二假设待显示缓存的属性与所述第一假设待显示缓存类似)中的图像移动到第一假设待显示缓存中,并将第k幅图像的图像数据移出假设位流缓存,其中所述第k幅图像被放入第二假设待显示缓存中,并在t`(k-b)时刻显示;

iii、如果d>=2*t/n,那么在t(k+s)时刻,不从假设位流缓存中移出数据,不进行解码,并将累积跳过解码的次数,即s=s+1;并令k=k-1,即等待下一时刻再对本图像进行检验操作;

b、如果该图像是知识图像,那么在t(k+s)时刻将第k幅图像的编码数据移出假设位流缓存以进行解码,其中所述第k幅图像被放入假设知识缓存(所述假设知识缓存的属性与所述第一假设待显示缓存类似)中,该图像不显示;并令b=b+1;

4)令k=k+1,并再次进行操作3),直到所有位流数据检验完为止。

实施例2

在一种位流检验(bitstreambufferverifier)的方法中,在解码端采用相应的位流操作的机制,对拼接位流中穿插的知识图像进行适时的解码,但同时要保证在有限容量的位流缓存中既不上溢且不下溢的效果,并且解码器能够按正确的时序解码并显示主流中的图像。假设给定的位流中主流图像的帧率为每t秒n幅图像,即图像的显示时间间隔为t/n,则对于一个在t秒内至少能解码n+1帧图像的解码器,解码器执行如下操作:

1、解码器以t(k)表示第k(k>=0)次解码时刻,其中t(k)=k*t/(n+1);以t`(m)表示第m(m>=0)次显示时刻,其中t(m)=m*t/n;

2、记跳过解码的次数为s(s>=0),且令s=0;记已解码的知识图像的个数为b(b>=0),且另b=0;

3、选择位流中的一个随机访问点作为起始点;

4、将所述随机访问点后的拼接位流的序列头、跟在序列头之后的扩展和用户数据、视频编辑码等数据以rbit/s的速度输入位流缓存(bitstreambuffer),其中r>0;在一种实施方式中,r保持不变;在一种实施方式中,r在不同时间段中为不同的速率值;

5、将拼接位流中从第0幅图像的图像头数据开始的数据以rbit/s的速度输入位流缓存;并在给定时刻对位流缓存进行如下检测操作;

1)在t(0)时刻将第0幅图像的编码数据移出位流缓存以进行解码,其中所述第0幅图像为知识图像,该图像不显示;并令b=b+1;

2)在t(1)时刻将第1幅图像的编码数据移出位流缓存以进行解码,其中所述第1幅图像为rl图像,该图像被暂存在第一待显示缓存中,并在t`(0)时刻显示;

3)进行循环操作,对于第k(k>1)幅图像,

a、如果该图像不是知识图像,则判断该图像的解码时刻与显示时刻的差值的值域范围(在另一种实现方式中,判断该图像的解码时刻与所述图像之前解码的图像的显示时刻的前后关系),即判断t(k+s)时刻和t`(k-b)时刻的差值d的大小,

i、如果d<t/n,那么在t(k+s)时刻将第k幅图像的编码数据移出位流缓存以进行解码,其中所述第k幅图像被暂存在第一待显示缓存中,并在t`(k-b)时刻显示;

ii、如果t/n<=d<2*t/n,那么在t(k+s)时刻,

a、如果d=t/n,将第一待显示缓存中存储的图像显示输出,并

b、如果t/n<d<2*t/n,则第一待显示缓存中存储的图像已经被显示输出,并

将第二待显示缓存中的图像移动到第一待显示缓存中,并将第k幅图像的编码数据移出位流缓存以进行解码,其中所述第k幅图像被暂存在第二待显示缓存中,并在t`(k-b)时刻显示;

iii、如果d>=2*t/n,那么在t(k+s)时刻,不从位流缓存中移出数据,不进行解码,并将累积跳过解码的次数,即s=s+1;并令k=k-1,即等待下一时刻再对本图像进行检验或解码操作;

b、如果该图像是知识图像,那么在t(k+s)时刻将第k幅图像的编码数据移出位流缓存以进行解码,其中所述第k幅图像被暂存在知识缓存中,该图像不显示;并令b=b+1;

4)令k=k+1,并再次进行本操作,直到所有位流数据检验完为止。

实施例3

对于实施例2所述方法,一种示例性的具体检验操作以及位流缓存中数据的变化结果如图6所示,在该示例性的操作中,令拼接位流的帧率为n=f(f>0),t=1秒,即图像的显示时间间隔为t/n,并令解码器的解码能力为t秒至少解码m=f+1个图像,解码器执行以下操作:

1、解码器以t(k)表示第k(k>=0)次解码时刻解码的图像,其中t(k)=k*t/(n+1);以t`(k)表示第k次显示时刻,其中t(k)=k*t/n;并以t(k,p)表示在t(k)时刻解码的图像将在第t`(p)时刻显示,当p的值为’l’时,表示该图像为不显示的知识图像,当p的值为’sk’时,表示该解码时刻被跳过,没有进行图像解码;

2、记跳过解码的次数为s(s>=0),且令s=0;记已解码的知识图像的个数为b(b>=0),且另b=0;

3、选择位流中的一个随机访问点作为起始点;

4、将所述随机访问点后的拼接位流的序列头、跟在序列头之后的扩展和用户数据、视频编辑码等数据以rbit/s的速度输入位流缓存(bitstreambuffer),其中r>0;

5、将拼接位流中从第0幅图像的图像头数据开始的数据以rbit/s的速度输入位流缓存;并在给定时刻对位流缓存进行如下检测操作;

1)在t(0,l)时刻将第0幅图像的编码数据移出位流缓存以进行解码,其中所述第0幅图像为知识图像,该图像不显示;并令b=b+1,此时b=1;

2)在t(1,0)时刻将第1幅图像的编码数据移出位流缓存以进行解码,其中所述第1幅图像为rl图像,该图像被暂存在第一待显示缓存中,并在t`(0)时刻显示;

3)进行循环操作,对于第k(k>1)幅图像,

a、对于第2幅图像,该图像不是知识图像,且d=t(k+s)-t`(k-b)=t(2)-t`(1)<t/n,因此,在t(2,1)时刻将第2幅图像的编码数据移出位流缓存以进行解码,其中所述第2幅图像被暂存在第一待显示缓存中,并在t`(1)时刻显示;

b、(省略中间一部分非知识图像的操作);

c、对于第m幅图像,该图像不是知识图像,且d=t(k+s)-t`(k-b)=t(m)-t`(m-1)=t(m)-t`(f)<t/n,因此,在t(m,f)时刻将第m幅图像的编码数据移出位流缓存以进行解码,其中所述第m幅图像被暂存在第一待显示缓存中,并在t`(f)时刻显示;

d、对于第m+1幅图像,该图像不是知识图像,且d=t(k+s)-t`(k-b)=t(m+1)-t`(m)=t(m+1)-t`(f+1)=t/n,因此,在t(m+1,f+1)时刻,由于d=t/n,第一待显示缓存中存储的在t`(f)时刻显示输出,并由于第二待显示缓存此时为空缓存,没有缓存图像,并将第m+1幅图像的编码数据移出位流缓存以进行解码,其中所述第m+1幅图像被暂存在第二待显示缓存中,并在t`(f+1)时刻显示;

e、对于第m+2幅图像,该图像不是知识图像,且d=t(k+s)-t`(k-b)=t(m+2)-t`(m+1)=t(m+2)-t`(f+2)>t/n,因此,在t(m+2,f+2)时刻,将第二待显示缓存中的图像移动到第一待显示缓存中,并将第m+2幅图像的编码数据移出位流缓存以进行解码,其中所述第m+2幅图像被暂存在第二待显示缓存中,并在t`(f+2)时刻显示;

f、对于第m+3幅图像,该图像不是知识图像,且d=t(k+s)-t`(k-b)=t(m+3)-t`(m+2)=t(m+3)-t`(f+3)>t/n,因此,在t(m+3,f+3)时刻,将第二待显示缓存中的图像移动到第一待显示缓存中,并将第m+3幅图像的编码数据移出位流缓存以进行解码,其中所述第m+3幅图像被暂存在第二待显示缓存中,并在t`(f+3)时刻显示;g、(省略中间一部分非知识图像的操作);

h、对于第2m幅图像,该图像不是知识图像,且d=t(k+s)-t`(k-b)=t(2m)-t`(2m-1)=t(2m)-t`(2f+1)>t/n,因此,在t(2m,2f+1)时刻,将第二待显示缓存中的图像移动到第一待显示缓存中,并将第2m幅图像的编码数据移出位流缓存以进行解码,其中所述第2m幅图像被暂存在第二待显示缓存中,并在t`(2f+1)时刻显示;

i、对于第2m+1幅图像,该图像不是知识图像,且d=t(k+s)-t`(k-b)=t(2m+1)-t`(2m)=t(2m+1)-t`(2f+2)=2*t/n,因此,在t(2m+1,sk)时刻,不从位流缓存中移出数据,不进行解码,并将累积跳过解码的次数,即s=s+1,此时s=1;并令k=k-1,即等待下一时刻再对本图像进行检验或解码操作;

j、对于第2m+1幅图像再次进行操作,该图像不是知识图像,且d=t(k+s)-t`(k-b)=t(2m+2)-t`(2m)=t(2m+2)-t`(2f+2)>t/n,因此,在t(2m+1,sk)时刻,将第二待显示缓存中的图像移动到第一待显示缓存中,并将第2m+1幅图像的编码数据移出位流缓存以进行解码,其中所述第2m+1幅图像被暂存在第二待显示缓存中,并在t`(2f+2)时刻显示;

k、重复执行循环操作,直到所有位流数据检验完为止。

实施例4

一种示例性的具体检验操作以及位流缓存中数据的变化结果如图7所示,在该示例性的操作中,与上述示例性实施例3不同的是:

对于第2m+1幅图像,该图像是知识图像,因此,在t(2m+1,l)时刻将第2m+1幅图像的编码数据移出位流缓存以进行解码,其中所述第2m+1幅图像被暂存在知识缓存中,该图像不显示;并令b=b+1。

实施例5

本实施例与上述所有实施例1~4不同的是,解码器在拼接位流中从主流图像的图像头信息中解析得到主流图像的编号,例如poc(pictureordercount)编号、doi(decodingorderindex)编号、poi(presentationorderindex)编号,并根据主流图像的编号计算解码图像的顺序,因此位流中穿插的知识图像不会影响主流图像的编号,也就不会影响解码器计算主流图像的显示时刻t`(n)。在这种实现方式中,不需要执行累积当前图像以前已经解码过的知识图像的数目b的操作,即解码器不需要执行“记已解码的知识图像的个数为b,且另b=0”的操作,在处理知识图像时,也不需要执行“令b=b+1”的操作。

实施例6

本实施例与上述所有实施例1~5不同的是,在一种实现方式中,拼接位流中的图像使用低延时的参考结构,t`(n)表示主流图像的显示时刻。在另一种实现方式中,拼接位流中的图像使用非低延时的参考结构,例如分层编码结构,拼接位流中的图像的实际显示时刻等于t`(n)所表示的显示时刻加上延迟显示时长,此时,解码器的解码图像缓存将存储这些延迟显示的图像以保证图像的正确顺序显示。

实施例7

本实施例在上述所有实施例1~6的基础上,再进行拼接位流中图像数据的大小调控。在一种实现方式中,在某一解码时刻出现跳过图像解码的操作之后,对于进入位流缓存中的数据,通过增大后续图像的数据大小(例如为图像分配更高的质量或更高的码率),以增大位流缓存数据移出的速率,从而避免位流缓存的上溢。在另一种实现方式中,在某一解码时刻出现解码知识图像的操作之后,对于进入位流缓存中的数据,通过减小后续图像的数据大小(例如为图像分配更低的质量或更低的码率),以降低位流缓存数据移出的速率,从而避免位流缓存的下溢。

实施例8

在一种实现方式中,与上述所有实施例1~7不同的是,解码器能够在t(t>0)秒内至少能解码n+c帧图像的解码器,其中所述变量n(n>0)表示t秒内需要显示输出的主码流中的图像的个数,所述c(c>0)表示t秒内需要额外解码的知识图像的数目,例如c=1或c=2等。在这种实现方式中,解码器以t(k)表示第k次解码时刻,其中t(k)=k*t/(n+c);以t`(m)表示第m次显示时刻,其中t(m)=m*t/n。

实施例9

本实施例结合avs3标准,对位流检验方法进行具体的实现。

在一种实现方式中,位流缓存中存储的位流的属性为单一位流或拼接位流,具体的,对librarypictureenableflag的值为0的主位流,上述位流指由该主位流构成的单一位流;对librarypictureenableflag的值为1的主位流,上述位流指由该主位流及该主位流所参考的知识位流穿插而成的拼接位流。其中所述主位流表示不包含知识图像的位流,所述librarypictureenableflag表示主位流是否参考知识位流,值为1表示主位流参考知识位流,即所述主位流为本发明中的主码流,值为0表示主位流不参考知识位流。

在一种实现方式中,对于非低延时的拼接位流,位流缓存中数据移出的方法为:

如果第n幅图像是知识图像,则该图像的解码时刻t(n)是前一幅图像的解码时刻t(n-1)加上一个检测时间间隔delta(n),该图像的t’(n)=t’(n-1)。

如果第n幅图像不是知识图像,该图像的参考解码时刻t’(n)=t’(n-1)+delta’(n):

——如果t(n-1)+delta(n)小于参考解码时刻t’(n)(在一种实现方式中,所述参考解码时刻为上述所有实施例1~8所述的显示时刻),则该图像的解码时刻t(n)是前一幅图像的解码时刻t(n-1)加上两倍的检测时间间隔delta(n),

——否则,则该图像的解码时刻t(n)是前一幅图像的解码时刻t(n-1)加上一个检测时间间隔delta(n),

其中t’(0)=t(0)。其中所述检测时间间隔的值由位流中图像的数据决定,在一种实现方式中,所述检测时间间隔的值等于帧率的倒数,在一种实现方式中,所述检测时间间隔的值等于帧率的倒数的n倍(所述n为非零数,例如n为2、1.5、0.5等)。

在一种实现方式中,对于低延时的拼接位流,位流缓存中数据移出的方法为:

如果第n幅图像是知识图像,则该图像的解码时刻t(n)是前一幅图像的解码时刻t(n-1)加上一个检测时间间隔delta(n),再加上bbvchecktimes乘以图像周期的积,该图像的t’(n)=t’(n-1)。

如果第n幅图像不是知识图像,该图像的参考解码时刻t’(n)=t’(n-1)+delta’(n):

——如果t(n-1)+delta(n)小于参考解码时刻t’(n),则该图像的解码时刻t(n)是前一幅图像的解码时刻t(n-1)加上两倍的检测时间间隔delta(n),再加上bbvchecktimes乘以图像周期的积;

——否则,则该图像的解码时刻t(n)是前一幅图像的解码时刻t(n-1)加上一个检测时间间隔delta(n),再加上bbvchecktimes乘以图像周期的积。

其中t’(0)=t(0)。其中所述检测时间间隔的值由位流中图像的数据决定,在一种实现方式中,所述检测时间间隔的值等于帧率的倒数,在一种实现方式中,所述检测时间间隔的值等于帧率的倒数的n倍(所述n为非零数,例如n为2、1.5、0.5等)。其中,bbvchecktimes根据位流中的数据计算得到,表示位流缓存的检验次数。

在一种实现方式中,对于拼接码流,所述检测时间间隔的计算方式为:

记帧率加1的和的倒数为t,记帧率的倒数为t'。

bbv缓冲区检测时间间隔delta(n)等于t,delta'(n)由解码完前一幅图像后输出的非知识图像确定。

当progressive_sequence的值为‘1’且field_coded_sequence的值为‘0’时:

——如果该输出图像的repeat_first_field的值为‘0’,则delta'(n)等于t。

——如果该输出图像的repeat_first_field的值为‘1’且top_field_first的值为‘0’,则delta'(n)等于2t。

——如果该输出图像的repeat_first_field的值为‘1’且top_field_first的值为‘1’,则delta'(n)等于3t。

当progressive_sequence的值为‘0’且field_coded_sequence的值为‘0’时:

——如果该输出图像的repeat_first_field的值为‘0’,则delta'(n)等于t;

——如果该输出图像的repeat_first_field的值为‘1’,则delta'(n)等于1.5t。

当progressive_sequence的值为‘0’且field_coded_sequence的值为‘1’时,delta'(n)等于0.5t。

其中所述progressive_sequence、field_coded_sequence、repeat_first_field、top_field_first为位流中描述位流属性的语法元素,其值通过解析位流得到。其中progressive_sequence表示所述位流中的图像是否使用逐行扫描方式,field_coded_sequence表示所述位流中的图像是否使用隔行扫描方式,即图像由场图像构成,repeat_first_field表示所述位流中是否重复第一场图像,top_field_first表示所述位流中第一场图像是否为顶场图像。

实施例10

本实施例结合avs3标准,对位流检验方法进行具体的实现,本实施例相较于实施例9,使用了不同的判断依据。

在一种实现方式中,位流缓存中存储的位流的属性为不包含知识位流的解码位流或包含知识位流的解码位流,具体的,对librarypictureenableflag的值为0的主位流,上述位流指由该主位流构成的不包含知识位流的解码位流;对librarypictureenableflag的值为1的主位流,上述位流在一种实现方式下,指由该主位流及该主位流所参考的知识位流穿插而成的包含知识位流的解码位流,在另一种实现方式下,指由该主位流及该主位流所参考的知识位流以知识流在前主位流在后组合而成的包含知识位流的解码位流。其中所述主位流表示不包含知识图像的位流,所述librarypictureenableflag表示主位流是否参考知识位流,值为1表示主位流参考知识位流,即所述主位流为本发明中的主码流,值为0表示主位流不参考知识位流。

位流中第n幅图像的编码数据移出bbv缓冲区的时间为第n幅图像的解码时刻。视频序列的第1幅图像的解码时刻t(0)等于序列第1幅图像的图像起始码进入bbv缓冲区的时刻加上τ(0),所述τ(0)为第1幅图像的图像起始码进入bbv缓冲区的时刻与第1幅图像的解码时刻的时间间隔。第n幅图像的解码时刻t(n)和编码数据的移出bbv缓冲区的方式有如下几种示例,其他实施方式可以使用类似的方式和不同的描述或判断条件。

在一种实现方式中,对于非低延时的拼接位流,位流缓存中数据移出的方法为:

对于不包含知识位流的解码位流,第n幅图像的解码时刻t(n)是前一幅图像的解码时刻t(n-1)加上一个检测时间间隔delta(n)。

对于包含知识位流的解码位流,如果第n幅图像是知识图像,则该图像的参考解码时刻t’(n)=t’(n-1),其中t’(0)=t(0);该图像的解码时刻t(n)是前一幅图像的解码时刻t(n-1)加上一个检测时间间隔delta(n)。

对于包含知识位流的解码位流,如果第n幅图像不是知识图像,则该图像的参考解码时刻t’(n)=t’(n-1)+delta’(n),其中t’(0)=t(0);该图像的解码时刻t(n):

——如果t(n-1)+delta(n)小于参考解码时刻t’(n)-delta’(n)-delta’(n-1),则t(n)是前一幅图像的解码时刻t(n-1)加上两倍的检测时间间隔delta(n),

——否则,则t(n)是前一幅图像的解码时刻t(n-1)加上一个检测时间间隔delta(n)。

上述检测时间间隔delta(n)和假设检测时间间隔delta'(n)在下文定义。

在每幅图像的解码时刻t(n),bbv缓冲区充满度应小于bbs。并且bbv缓冲区充满度b(n)应大于等于f(n),所述f(n)为第n个图像的码流数据大小,否则发生下溢,符合本实施方法的码流不应发生下溢。

在每幅图像的解码时刻t(n)瞬时移出该幅图像的编码数据并解码。

在一种实现方式中,对于低延时的拼接位流,位流缓存中数据移出的方法为:

对于不包含知识位流的解码位流,第n幅图像的解码时刻t(n)是前一幅图像的解码时刻t(n-1)加上一个检测时间间隔delta(n),再加上bbvchecktimes乘以图像周期的积。

对于包含知识位流的解码位流,如果第n幅图像是知识图像,则该图像的参考解码时刻t’(n)=t’(n-1),其中t’(0)=t(0);该图像的解码时刻t(n)是前一幅图像的解码时刻t(n-1)加上一个检测时间间隔delta(n),再加上bbvchecktimes乘以图像周期的积,其中,bbvchecktimes根据位流中的数据计算得到,表示位流缓存的检验次数。

对于包含知识位流的解码位流,如果第n幅图像不是知识图像,则该图像的参考解码时刻t’(n)=t’(n-1)+delta’(n),其中t’(0)=t(0);该图像的解码时刻t(n):

——如果t(n-1)+delta(n)小于参考解码时刻t’(n)-delta’(n)-delta’(n-1),t(n)是前一幅图像的解码时刻t(n-1)加上两倍的检测时间间隔delta(n),再加上bbvchecktimes乘以图像周期的积;

——否则,t(n)是前一幅图像的解码时刻t(n-1)加上一个检测时间间隔delta(n),再加上bbvchecktimes乘以图像周期的积。

检测时间间隔delta(n)和假设检测时间间隔delta'(n)在下文定义。如果field_coded_sequence的值为‘1’,则图像周期为帧率倒数的0.5倍,如果field_coded_sequence的值为‘0’,则图像周期为帧率的倒数。

在每幅图像的解码时刻t(n)bbv缓冲区充满度应小于bbs,该图像的所有编码数据均应在缓冲区中,然后该图像被瞬时移出。

如果bbvchecktimes大于0,当前解码图像定义为大图像。一个视频序列的最后一幅图像不应是大图像。

检测时间间隔delta(n)和假设检测时间间隔delta'(n)的定义如下:

记帧率的倒数为t,记帧率加1的和的倒数为d,在另一种实施方式中,d为帧率加k的和的倒数,k为解码器在1秒内比帧率数量能够更多进行解码的图像的个数。如果解码位流中不包含知识位流,则p等于t;如果解码位流中包含知识位流,则p等于d。

bbv缓冲区检测时间间隔delta(n)和假设检测时间间隔delta'(n)由解码完前一幅图像后输出的非知识图像确定。

当progressive_sequence的值为‘1’且field_coded_sequence的值为‘0’时:

——如果该输出图像的repeat_first_field的值为‘0’,则delta(n)等于p,delta'(n)等于t。

——如果该输出图像的repeat_first_field的值为‘1’且top_field_first的值为‘0’,则delta(n)等于2p,delta'(n)等于2t。

——如果该输出图像的repeat_first_field的值为‘1’且top_field_first的值为‘1’,则delta(n)等于3p,delta'(n)等于3t。

当progressive_sequence的值为‘0’且field_coded_sequence的值为‘0’时:

——如果该输出图像的repeat_first_field的值为‘0’,则delta(n)等于p,delta'(n)等于t;

——如果该输出图像的repeat_first_field的值为‘1’,则delta(n)等于1.5p,delta'(n)等于1.5t。

当progressive_sequence的值为‘0’且field_coded_sequence的值为‘1’时,delta(n)等于0.5p,delta'(n)等于0.5t。

其中所述progressive_sequence、field_coded_sequence、repeat_first_field、top_field_first为位流中描述位流属性的语法元素,其值通过解析位流得到。其中progressive_sequence表示所述位流中的图像是否使用逐行扫描方式,field_coded_sequence表示所述位流中的图像是否使用隔行扫描方式,即图像由场图像构成,repeat_first_field表示所述位流中是否重复第一场图像,top_field_first表示所述位流中第一场图像是否为顶场图像。

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