媒体文件封装方法、装置、设备及存储介质转让专利

申请号 : CN202111241064.7

文献号 : CN113973210B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡颖

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请提供了一种媒体文件封装方法、装置、设备及存储介质,该方法包括:文件封装设备通过获取视频位流,视频位流包括至少一个序列头,根据至少一个序列头,确定视频位流对应的序列头信息,对视频位流进行封装,得到视频轨道,该视频轨道中包括视频位流对应的序列头信息。这样文件解封装设备获得视频轨道后,解析视频轨道中的序列头信息,并根据序列头信息对视频位流进行解码,可以提高视频位流的解码效率。

权利要求 :

1.一种媒体文件封装方法,其特征在于,应用于文件封装设备,包括:获取视频位流,所述视频位流包括至少一个序列头;

根据所述至少一个序列头,确定所述视频位流对应的序列头信息;

对所述视频位流进行封装,得到视频轨道,所述视频轨道的轨道头中包括所述视频位流中非重复序列头对应的序列头信息;

所述方法还包括:若所述视频位流中包括多个重复的序列头时,将所述多个重复的序列当作一个非重复序列头,其中,所述非重复序列头的个数为所述视频位流所包括的多个序列头中不是重复的序列头的个数。

2.根据权利要求1所述的方法,其特征在于,所述序列头信息包括非重复序列头的个数或重复序列头的个数。

3.根据权利要求2所述的方法,其特征在于,所述根据所述至少一个序列头,确定所述视频位流对应的序列头信息,包括:若所述视频位流包括主位流和知识位流,且所述主位流的序列头中除知识位流标志、知识图像允许标志和知识位流重复序列头标志外的所有语法元素的值均与所述主位流所参考的知识位流的序列头中对应语法元素的值相同时,则确定所述视频位流对应的非重复序列头的个数为1,且所述非重复序列头为所述知识位流的序列头。

4.根据权利要求2所述的方法,其特征在于,所述序列头信息还包括档次标识、级别标识、色度格式、样本精度、帧率代码中的至少一个;

若所述非重复序列头的个数N大于1时,则所述档次标识字段的取值为N个非重复序列头中档次标识字段的最大值;或者,若所述非重复序列头的个数N大于1时,则所述级别标识字段的取值为所述N个非重复序列头中级别标识字段的最大值;或者,若所述非重复序列头的个数N大于1时,则所述N个非重复序列头中的色度格式字段的取值相同;或者,若所述非重复序列头的个数N大于1时,则所述样本精度字段取值为所述N个非重复序列头中样本精度字段的最大值;或者,若所述非重复序列头的个数N大于1时,则所述帧率代码字段取值基于所述视频轨道中所有样本集合的帧率信息确定。

5.根据权利要求1所述的方法,其特征在于,所述序列头信息还包括序列头的长度、序列头的标识、序列头语法元素信息、所述视频位流对应的编码标志中的至少一个,所述编码标志用于指示所述视频位流在编码时所采用的编码扫描方式。

6.根据权利要求1‑5任一项所述的方法,其特征在于,所述序列头信息位于所述视频轨道的数据入口处,并位于当前解码器配置记录信息中。

7.根据权利要求2‑5任一项所述的方法,其特征在于,若所述非重复序列头的个数N大于1时,则所述视频轨道还包括参考关系信息,所述参考关系信息用于指示参考每个序列头的样本,所述参考关系信息包括参考每个序列头的样本的索引范围。

8.根据权利要求7所述的方法,其特征在于,所述参考关系信息位于序列头依赖样本群组信息中。

9.根据权利要求2‑5任一项所述的方法,其特征在于,若所述视频轨道包括主位流样本和知识图像样本,则所述视频轨道还包括用于区分所述主位流样本和所述知识图像样本的样本区分信息,所述样本区分信息包括所述主位流样本和所述知识图像样本中任意一类样本的索引范围。

10.根据权利要求9所述的方法,其特征在于,所述样本区分信息位于知识图像样本群组信息中。

11.根据权利要求2‑5任一项所述的方法,其特征在于,若所述视频轨道中的至少一个样本在编码时依赖知识图像样本,则所述视频轨道还包括知识样本依赖信息,所述知识样本依赖信息用于指示所述至少一个样本所依赖的知识图像样本所在的轨道信息,所述知识样本依赖信息包括知识图像轨道指示信息,所述知识图像轨道指示信息用于指示所述至少一个样本所依赖的知识图像样本是否位于所述视频轨道中。

12.根据权利要求11所述的方法,其特征在于,

若所述知识图像轨道指示信息的取值为第一数值时,则指示所述至少一个样本所依赖的知识图像样本位于所述视频轨道中;

若所述知识图像轨道指示信息的取值为第二数值时,则所述知识样本依赖信息还包括知识图像轨道标识,所述知识图像轨道标识用于指示所述至少一个样本所依赖的知识图像样本所在的轨道的标识。

13.一种媒体文件解封装方法,其特征在于,应用于文件解封装设备,包括:获取视频轨道,所述视频轨道中包括轨道头和视频位流,所述轨道头中包括所述视频位流中非重复序列头对应的序列头信息,若所述视频位流包括多个重复的序列头时,则所述多个重复的序列头被当作一个非重复序列头,其中所述非重复序列头的个数为所述视频位流所包括的多个序列头中不是重复的序列头的个数;

对所述视频轨道进行解封装,得到所述序列头信息和所述视频位流;

根据所述序列头信息,对所述视频位流进行解码,得到解码后的视频。

14.根据权利要求13所述的方法,其特征在于,所述序列头信息包括非重复序列头的个数或重复序列头的个数。

15.根据权利要求14所述的方法,其特征在于,若所述视频轨道既包含主位流,又包含知识位流,且所述主位流的序列头中除知识位流标志、知识图像允许标志和知识位流重复序列头标志外的所有语法元素的值均与所述主位流所参考的知识位流的序列头中对应语法元素的值相同时,则所述序列头信息所包括的非重复序列头个数为1,且所述非重复序列头为所述知识位流的序列头。

16.根据权利要求14所述的方法,其特征在于,所述序列头信息还包括档次标识、级别标识、色度格式、样本精度、帧率代码中的至少一个;

若所述非重复序列头的个数N大于1时,则所述档次标识字段的取值为N个非重复序列头中档次标识字段的最大值;或者,若所述非重复序列头的个数N大于1时,则所述级别标识字段的取值为所述N个非重复序列头中级别标识字段的最大值;或者,若所述非重复序列头的个数N大于1时,则所述N个非重复序列头中的色度格式字段的取值相同;或者,若所述非重复序列头的个数N大于1时,则所述样本精度字段取值为所述N个非重复序列头中样本精度字段的最大值;或者,若所述非重复序列头的个数N大于1时,则所述帧率代码字段取值基于所述视频轨道中所有样本集合的帧率信息确定。

17.根据权利要求13‑16任一项所述的方法,其特征在于,所述序列头信息还包括序列头的长度、序列头的标识、序列头语法元素信息、所述视频位流对应的编码标志中的至少一个,所述编码标志用于指示所述视频位流在编码时所采用的编码扫描方式。

18.根据权利要求13‑16任一项所述的方法,其特征在于,所述序列头信息位于所述视频轨道的数据入口处。

19.根据权利要求13‑16任一项所述的方法,其特征在于,所述序列头信息位于当前解码器配置记录信息中。

20.根据权利要求14‑16任一项所述的方法,其特征在于,若所述非重复序列头的个数N大于1时,则所述视频轨道还包括参考关系信息,所述参考关系信息用于指示参考每个序列头的样本;

所述根据所述序列头信息,对所述视频位流进行解码,得到解码后的视频,包括:解封装所述视频轨道,得到所述参考关系信息;

针对N个序列头中的每个序列头,根据所述参考关系信息,确定参考所述序列头的样本;

根据所述序列头对应的序列头信息,对参考所述序列头的样本进行解码,得到解码后的视频。

21.根据权利要求20所述的方法,其特征在于,所述参考关系信息包括参考每个序列头的样本的索引范围;

所述根据所述参考关系信息,确定参考所述序列头的样本,包括:

根据参考所述序列头的样本的索引范围,确定参考所述序列头的样本。

22.根据权利要求20所述的方法,其特征在于,所述参考关系信息位于序列头依赖样本群组信息中。

23.根据权利要求14‑16任一项所述的方法,其特征在于,若所述视频轨道包括主位流样本和知识图像样本时,则所述视频轨道还包括用于区分所述主位流样本和所述知识图像样本的样本区分信息;

所述根据所述序列头信息,对所述视频位流进行解码,得到解码后的视频,包括:解封装所述视频轨道,得到所述样本区分信息;

根据所述样本区分信息,得到所述知识图像样本和所述主位流样本;

根据所述知识图像样本对应的序列头信息,对所述知识图像样本进行解码,得到知识图像;

根据所述主位流样本对应的序列头信息和所述知识图像,对所述主位流样本进行解码,得到解码后的视频。

24.根据权利要求23所述的方法,其特征在于,所述样本区分信息包括所述主位流样本和所述知识图像样本中任意一类样本的索引范围,所述样本区分信息位于知识图像样本群组信息中。

25.根据权利要求14‑16任一项所述的方法,其特征在于,若所述视频轨道中的至少一个样本在编码时依赖知识图像样本,则所述视频轨道还包括知识样本依赖信息,所述知识样本依赖信息用于指示所述至少一个样本所依赖的知识图像样本所在的轨道信息,所述知识样本依赖信息包括知识图像轨道指示信息,所述知识图像轨道指示信息用于指示所述至少一个样本所依赖的知识图像样本是否位于所述视频轨道中;

所述根据所述序列头信息,对所述视频位流进行解码,得到解码后的视频,包括:解封装所述视频轨道,得到所述知识样本依赖信息;

根据所述知识样本依赖信息中的知识图像轨道指示信息,确定所述至少一个样本所依赖的知识图像样本所在的目标轨道;

对所述目标轨道进行解封装,得到所述至少一个样本所依赖的知识图像样本;

对所述至少一个样本所依赖的知识图像样本进行解码,得到所述至少一个样本所依赖的知识图像;

根据所述至少一个样本对应的序列头信息,以及所述至少一个样本所依赖的知识图像,对所述至少一个样本进行解码,得到解码后的视频。

26.根据权利要求25所述的方法,其特征在于,所述根据所述知识样本依赖信息中的知识图像轨道指示信息,确定所述至少一个样本所依赖的知识图像样本所在的目标轨道,包括:若所述知识图像轨道指示信息的取值为第一数值,则将所述视频轨道确定为所述目标轨道,所述第一数值用于指示所述至少一个样本所依赖的知识图像样本位于所述视频轨道;

若所述知识图像轨道指示信息的取值为第二数值,则根据所述知识样本依赖信息所包括知识图像轨道标识,确定所述目标轨道,所述知识图像轨道标识用于指示所述至少一个样本所依赖的知识图像样本所在的轨道的标识。

27.根据权利要求25所述的方法,其特征在于,所述知识样本依赖信息位于依赖知识样本的样本群组信息中。

28.一种媒体文件封装装置,其特征在于,应用于文件封装设备,所述装置包括:获取单元,用于获取视频位流,所述视频位流包括至少一个序列头;

确定单元,用于根据所述至少一个序列头,确定所述视频位流对应的序列头信息;

封装单元,用于对所述视频位流进行封装,得到视频轨道,所述视频轨道中包括所述视频位流中非重复序列头对应的序列头信息;

所述封装单元,还用于若所述视频位流中包括多个重复的序列头时,将所述多个重复的序列当作一个非重复序列头,其中,所述非重复序列头的个数为所述视频位流所包括的多个序列头中不是重复的序列头的个数。

29.一种媒体文件解封装装置,其特征在于,应用于文件解封装设备,所述装置包括:获取单元,用于获取视频轨道,所述视频轨道中包括轨道头和视频位流,所述轨道头中包括所述视频位流中非重复序列头对应的序列头信息,若所述视频位流包括多个重复的序列头时,则所述多个重复的序列头被当作一个非重复序列头,其中所述非重复序列头的个数为所述视频位流所包括的多个序列头中不是重复的序列头的个数;

解封装单元,用于对所述视频轨道进行解封装,得到所述序列头信息和所述视频位流;

解码单元,用于根据所述序列头信息,对所述视频位流进行解码,得到解码后的视频。

30.一种文件封装设备,其特征在于,包括:

处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至12中任一项所述的方法。

31.一种文件解封装设备,其特征在于,包括:

处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求13至27中任一项所述的方法。

32.一种电子设备,其特征在于,包括:

处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至12或13至27中任一项所述的方法。

33.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1至12或13至27中任一项所述的方法。

说明书 :

媒体文件封装方法、装置、设备及存储介质

技术领域

[0001] 本申请实施例涉及视频处理技术领域,尤其涉及一种媒体文件封装方法、装置、设备及存储介质。

背景技术

[0002] 数字视频技术可以并入多种视频装置中,例如数字电视、智能手机、计算机、电子阅读器或视频播放器等。随着视频技术的发展,视频数据所包括的数据量较大,为了便于视频数据的传输,视频装置执行视频压缩技术,以使视频数据更加有效的传输或存储。
[0003] 在对视频进行压缩形成码流,对码流进行封装,得到媒体文件,将媒体文件发送给解码端进行解码消费。其中,为了便于解码端准确解码码流,在码流中可以存在一个或多个序列头。
[0004] 但是,目前的封装技术,当码流中存在多个序列头时,存在解码效率低的问题。

发明内容

[0005] 本申请提供一种媒体文件封装方法、装置、设备及存储介质,以提高视频文件的解码效率。
[0006] 第一方面,本申请提供一种媒体文件封装方法,应用于文件封装设备,文件封装设备可以理解为视频封装设备或编码设备,该方法包括:
[0007] 获取视频位流,所述视频位流包括至少一个序列头;
[0008] 根据所述至少一个序列头,确定所述视频位流对应的序列头信息;
[0009] 对所述视频位流进行封装,得到视频轨道,所述视频轨道的轨道头中包括所述视频位流中非重复的序列头对应的序列头信息。
[0010] 第二方面,本申请提供一种媒体文件解封装方法,应用于文件解封装设备,文件解封装设备可以理解为视频解封装设备或解码设备,该方法包括:
[0011] 获取视频轨道,所述视频轨道中包括轨道头和视频位流,所述轨道头中包括所述视频位流中非重复的序列头对应的序列头信息;
[0012] 对所述视频轨道进行解封装,得到所述序列头信息和所述视频位流;
[0013] 根据所述序列头信息,对所述视频位流进行解码,得到解码后的视频。
[0014] 第三方面,本申请提供一种媒体文件封装装置,应用于文件封装设备,该装置包括:
[0015] 获取单元,用于获取视频位流,所述视频位流包括至少一个序列头;
[0016] 确定单元,用于根据所述至少一个序列头,确定所述视频位流对应的序列头信息;
[0017] 封装单元,用于对所述视频位流进行封装,得到视频轨道,所述视频轨道中包括所述视频位流中非重复的序列头对应的序列头信息。
[0018] 第四方面,本申请提供一种媒体文件解封装装置,应用于文件解封装设备,该装置包括:
[0019] 获取单元,用于获取视频轨道,所述视频轨道中包括轨道头和视频位流,所述轨道头中包括所述视频位流中非重复的序列头对应的序列头信息;
[0020] 解封装单元,用于对所述视频轨道进行解封装,得到所述序列头信息和所述视频位流;
[0021] 解码单元,用于根据所述序列头信息,对所述视频位流进行解码,得到解码后的视频。
[0022] 第五方面,本申请提供一种文件封装设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,以执行第一方面的方法。
[0023] 第六方面,本申请提供一种文件解封装设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,以执行第二方面的方法。
[0024] 第七方面,提供了一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,以执行第一方面和/或第二方面的方法。
[0025] 第八方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序使得计算机执行第一方面和/或第二方面的方法。
[0026] 综上,在本申请中,文件封装设备通过获取视频位流,视频位流包括至少一个序列头,根据至少一个序列头,确定视频位流对应的序列头信息,对视频位流进行封装,得到视频轨道,该视频轨道中包括视频位流对应的序列头信息。这样文件解封装设备获得视频轨道后,解析视频轨道中的序列头信息,并根据序列头信息对视频位流进行解码,可以提高视频位流的解码效率。例如,当视频位流包括多个重复序列头时,可以解码一个序列头实现后续视频位流的解码,进而避免重复解码序列头的问题。再例如,当视频位流包括多个不同的序列头时,文件解封装设备在解码视频位流之前,事先根据这多个不同的序列头判断解码器是否具备解码这多个不同的序列头对应的视频位流的能力,进而避免解码部分视频位流后,发现部分视频位流无法解码的问题,进而提高了视频解码效率。

附图说明

[0027] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0028] 图1为本申请实施例涉及的一种视频编解码系统的示意性框图;
[0029] 图2是本申请实施例提供的视频编码器的示意性框图;
[0030] 图3是本申请实施例提供的视频解码器的示意性框图;
[0031] 图4是本申请实施例提供的视频传输过程的示意性框图;
[0032] 图5为本申请实施例涉及的图像边界与显示边界示意图;
[0033] 图6为本申请一实施例提供的媒体文件封装方法的流程图;
[0034] 图7为本申请一实施例提供的媒体文件的解封装方法流程图;
[0035] 图8为本申请一实施例提供的媒体文件封装装置的结构示意图;
[0036] 图9为本申请一实施例提供的媒体文件解封装装置的结构示意图;
[0037] 图10是本申请实施例提供的电子设备的示意性框图。

具体实施方式

[0038] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0039] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0040] 本申请可应用于图像编解码领域、视频编解码领域、硬件视频编解码领域、专用电路视频编解码领域、实时视频编解码领域等。例如,本申请的方案可结合至音视频编码标准(audio video coding standard,简称AVS),例如,H.264/音视频编码(audio video coding,简称AVC)标准,H.265/高效视频编码(high efficiency video coding,简称HEVC)标准以及H.266/多功能视频编码(versatile video coding,简称VVC)标准。或者,本申请的方案可结合至其它专属或行业标准而操作,所述标准包含ITU‑TH.261、ISO/IECMPEG‑1Visual、ITU‑TH.262或ISO/IECMPEG‑2Visual、ITU‑TH.263、ISO/IECMPEG‑4Visual,ITU‑TH.264(还称为ISO/IECMPEG‑4AVC),包含可分级视频编解码(SVC)及多视图视频编解码(MVC)扩展。应理解,本申请的技术不限于任何特定编解码标准或技术。
[0041] 为了便于理解,首先结合图1对本申请实施例涉及的视频编解码系统进行介绍。
[0042] 图1为本申请实施例涉及的一种视频编解码系统的示意性框图。需要说明的是,图1只是一种示例,本申请实施例的视频编解码系统包括但不限于图1所示。如图1所示,该视频编解码系统100包含编码设备110和解码设备120。其中编码设备用于对视频数据进行编码(可以理解成压缩)产生码流,并将码流传输给解码设备。解码设备对编码设备编码产生的码流进行解码,得到解码后的视频数据。
[0043] 本申请实施例的编码设备110可以理解为具有视频编码功能的设备,解码设备120可以理解为具有视频解码功能的设备,即本申请实施例对编码设备110和解码设备120包括更广泛的装置,例如包含智能手机、台式计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机等。
[0044] 在一些实施例中,编码设备110可以经由信道130将编码后的视频数据(如码流)传输给解码设备120。信道130可以包括能够将编码后的视频数据从编码设备110传输到解码设备120的一个或多个媒体和/或装置。
[0045] 在一个实例中,信道130包括使编码设备110能够实时地将编码后的视频数据直接发射到解码设备120的一个或多个通信媒体。在此实例中,编码设备110可根据通信标准来调制编码后的视频数据,且将调制后的视频数据发射到解码设备120。其中通信媒体包含无线通信媒体,例如射频频谱,可选的,通信媒体还可以包含有线通信媒体,例如一根或多根物理传输线。
[0046] 在另一实例中,信道130包括存储介质,该存储介质可以存储编码设备110编码后的视频数据。存储介质包含多种本地存取式数据存储介质,例如光盘、DVD、快闪存储器等。在该实例中,解码设备120可从该存储介质中获取编码后的视频数据。
[0047] 在另一实例中,信道130可包含存储服务器,该存储服务器可以存储编码设备110编码后的视频数据。在此实例中,解码设备120可以从该存储服务器中下载存储的编码后的视频数据。可选的,该存储服务器可以存储编码后的视频数据且可以将该编码后的视频数据发射到解码设备120,例如web服务器(例如,用于网站)、文件传送协议(FTP)服务器等。
[0048] 一些实施例中,编码设备110包含视频编码器112及输出接口113。其中,输出接口113可以包含调制器/解调器(调制解调器)和/或发射器。
[0049] 在一些实施例中,编码设备110除了包括视频编码器112和输入接口113外,还可以包括视频源111。
[0050] 视频源111可包含视频采集装置(例如,视频相机)、视频存档、视频输入接口、计算机图形系统中的至少一个,其中,视频输入接口用于从视频内容提供者处接收视频数据,计算机图形系统用于产生视频数据。
[0051] 视频编码器112对来自视频源111的视频数据进行编码,产生码流。视频数据可包括一个或多个图像(picture)或图像序列(sequence of pictures)。码流以比特流的形式包含了图像或图像序列的编码信息。编码信息可以包含编码图像数据及相关联数据。相关联数据可包含序列参数集(sequence parameter set,简称SPS)、图像参数集(picture parameter set,简称PPS)及其它语法结构。SPS可含有应用于一个或多个序列的参数。PPS可含有应用于一个或多个图像的参数。语法结构是指码流中以指定次序排列的零个或多个语法元素的集合。
[0052] 视频编码器112经由输出接口113将编码后的视频数据直接传输到解码设备120。编码后的视频数据还可存储于存储介质或存储服务器上,以供解码设备120后续读取。
[0053] 在一些实施例中,解码设备120包含输入接口121和视频解码器122。
[0054] 在一些实施例中,解码设备120除包括输入接口121和视频解码器122外,还可以包括显示装置123。
[0055] 其中,输入接口121包含接收器及/或调制解调器。输入接口121可通过信道130接收编码后的视频数据。
[0056] 视频解码器122用于对编码后的视频数据进行解码,得到解码后的视频数据,并将解码后的视频数据传输至显示装置123。
[0057] 显示装置123显示解码后的视频数据。显示装置123可与解码设备120整合或在解码设备120外部。显示装置123可包括多种显示装置,例如液晶显示器(LCD)、等离子体显示器、有机发光二极管(OLED)显示器或其它类型的显示装置。
[0058] 此外,图1仅为实例,本申请实施例的技术方案不限于图1,例如本申请的技术还可以应用于单侧的视频编码或单侧的视频解码。
[0059] 下面对本申请实施例涉及的视频编码框架进行介绍。
[0060] 图2是本申请实施例提供的视频编码器的示意性框图。应理解,该视频编码器200可用于对图像进行有损压缩(lossy compression),也可用于对图像进行无损压缩(lossless compression)。该无损压缩可以是视觉无损压缩(visually lossless compression),也可以是数学无损压缩(mathematically lossless compression)。
[0061] 该视频编码器200可应用于亮度色度(YCbCr,YUV)格式的图像数据上。
[0062] 例如,该视频编码器200读取视频数据,针对视频数据中的每帧图像,将一帧图像划分成若干个编码树单元(coding tree unit,CTU),在一些例子中,CTB可被称作“树型块”、“最大编码单元”(Largest Coding unit,简称LCU)或“编码树型块”(coding tree block,简称CTB)。每一个CTU可以与图像内的具有相等大小的像素块相关联。每一像素可对应一个亮度(luminance或luma)采样及两个色度(chrominance或chroma)采样。因此,每一个CTU可与一个亮度采样块及两个色度采样块相关联。一个CTU大小例如为128×128、64×64、32×32等。一个CTU又可以继续被划分成若干个编码单元(Coding Unit,CU)进行编码,CU可以为矩形块也可以为方形块。CU可以进一步划分为预测单元(prediction Unit,简称PU)和变换单元(transform unit,简称TU),进而使得编码、预测、变换分离,处理的时候更灵活。在一种示例中,CTU以四叉树方式划分为CU,CU以四叉树方式划分为TU、PU。
[0063] 视频编码器及视频解码器可支持各种PU大小。假定特定CU的大小为2N×2N,视频编码器及视频解码器可支持2N×2N或N×N的PU大小以用于帧内预测,且支持2N×2N、2N×N、N×2N、N×N或类似大小的对称PU以用于帧间预测。视频编码器及视频解码器还可支持2N×nU、2N×nD、nL×2N及nR×2N的不对称PU以用于帧间预测。
[0064] 在一些实施例中,如图2所示,该视频编码器200可包括:预测单元210、残差单元220、变换/量化单元230、反变换/量化单元240、重建单元250、环路滤波单元260、解码图像缓存270和熵编码单元280。需要说明的是,视频编码器200可包含更多、更少或不同的功能组件。
[0065] 可选的,在本申请中,当前块(current block)可以称为当前编码单元(CU)或当前预测单元(PU)等。预测块也可称为预测图像块或图像预测块,重建图像块也可称为重建块或图像重建图像块。
[0066] 在一些实施例中,预测单元210包括帧间预测单元211和帧内估计单元212。由于视频的一个帧中的相邻像素之间存在很强的相关性,在视频编解码技术中使用帧内预测的方法消除相邻像素之间的空间冗余。由于视频中的相邻帧之间存在着很强的相似性,在视频编解码技术中使用帧间预测方法消除相邻帧之间的时间冗余,从而提高编码效率。
[0067] 帧间预测单元211可用于帧间预测,帧间预测可以参考不同帧的图像信息,帧间预测使用运动信息从参考帧中找到参考块,根据参考块生成预测块,用于消除时间冗余;帧间预测所使用的帧可以为P帧和/或B帧,P帧指的是向前预测帧,B帧指的是双向预测帧。运动信息包括参考帧所在的参考帧列表,参考帧索引,以及运动矢量。运动矢量可以是整像素的或者是分像素的,如果运动矢量是分像素的,那么需要再参考帧中使用插值滤波做出所需的分像素的块,这里把根据运动矢量找到的参考帧中的整像素或者分像素的块叫参考块。有的技术会直接把参考块作为预测块,有的技术会在参考块的基础上再处理生成预测块。
在参考块的基础上再处理生成预测块也可以理解为把参考块作为预测块然后再在预测块的基础上处理生成新的预测块。
[0068] 目前最常用的帧间预测方法包括:VVC视频编解码标准中的几何划分模式(geometric partitioning mode,GPM),以及AVS3视频编解码标准中的角度加权预测(angular weighted prediction,AWP)。这两种帧内预测模式在原理上有共通之处。
[0069] 帧内估计单元212只参考同一帧图像的信息,预测当前码图像块内的像素信息,用于消除空间冗余。帧内预测所使用的帧可以为I帧。
[0070] HEVC使用的帧内预测模式有平面模式(Planar)、DC和33种角度模式,共35种预测模式。VVC使用的帧内模式有Planar、DC和65种角度模式,共67种预测模式。AVS3使用的帧内模式有DC、Plane、Bilinear和63种角度模式,共66种预测模式。
[0071] 在一些实施例中,帧内估计单元212可以采用帧内块复制技术和帧内串复制技术实现。
[0072] 残差单元220可基于CU的像素块及CU的PU的预测块来产生CU的残差块。举例来说,残差单元220可产生CU的残差块,使得残差块中的每一采样具有等于以下两者之间的差的值:CU的像素块中的采样,及CU的PU的预测块中的对应采样。
[0073] 变换/量化单元230可量化变换系数。变换/量化单元230可基于与CU相关联的量化参数(QP)值来量化与CU的TU相关联的变换系数。视频编码器200可通过调整与CU相关联的QP值来调整应用于与CU相关联的变换系数的量化程度。
[0074] 反变换/量化单元240可分别将逆量化及逆变换应用于量化后的变换系数,以从量化后的变换系数重建残差块。
[0075] 重建单元250可将重建后的残差块的采样加到预测单元210产生的一个或多个预测块的对应采样,以产生与TU相关联的重建图像块。通过此方式重建CU的每一个TU的采样块,视频编码器200可重建CU的像素块。
[0076] 环路滤波单元260可执行消块滤波操作以减少与CU相关联的像素块的块效应。
[0077] 在一些实施例中,环路滤波单元260包括去块滤波单元和样点自适应补偿/自适应环路滤波(SAO/ALF)单元,其中去块滤波单元用于去方块效应,SAO/ALF单元用于去除振铃效应。
[0078] 解码图像缓存270可存储重建后的像素块。帧间预测单元211可使用含有重建后的像素块的参考图像来对其它图像的PU执行帧间预测。另外,帧内估计单元212可使用解码图像缓存270中的重建后的像素块来对在与CU相同的图像中的其它PU执行帧内预测。
[0079] 熵编码单元280可接收来自变换/量化单元230的量化后的变换系数。熵编码单元280可对量化后的变换系数执行一个或多个熵编码操作以产生熵编码后的数据。
[0080] 图3是本申请实施例提供的视频解码器的示意性框图。
[0081] 如图3所示,视频解码器300包含:熵解码单元310、预测单元320、反量化/变换单元330、重建单元340、环路滤波单元350及解码图像缓存360。需要说明的是,视频解码器300可包含更多、更少或不同的功能组件。
[0082] 视频解码器300可接收码流。熵解码单元310可解析码流以从码流提取语法元素。作为解析码流的一部分,熵解码单元310可解析码流中的经熵编码后的语法元素。预测单元
320、反量化/变换单元330、重建单元340及环路滤波单元350可根据从码流中提取的语法元素来解码视频数据,即产生解码后的视频数据。
[0083] 在一些实施例中,预测单元320包括帧内预测单元321和帧间预测单元322。
[0084] 帧内预测单元321可执行帧内预测以产生PU的预测块。帧内预测单元321可使用帧内预测模式以基于空间相邻PU的像素块来产生PU的预测块。帧内预测单元321还可根据从码流解析的一个或多个语法元素来确定PU的帧内预测模式。
[0085] 帧间预测单元322可根据从码流解析的语法元素来构造第一参考图像列表(列表0)及第二参考图像列表(列表1)。此外,如果PU使用帧间预测编码,则熵解码单元310可解析PU的运动信息。帧间预测单元322可根据PU的运动信息来确定PU的一个或多个参考块。帧间预测单元322可根据PU的一个或多个参考块来产生PU的预测块。
[0086] 反量化/变换单元330可逆量化(即,解量化)与TU相关联的变换系数。反量化/变换单元330可使用与TU的CU相关联的QP值来确定量化程度。
[0087] 在逆量化变换系数之后,反量化/变换单元330可将一个或多个逆变换应用于逆量化变换系数,以便产生与TU相关联的残差块。
[0088] 重建单元340使用与CU的TU相关联的残差块及CU的PU的预测块以重建CU的像素块。例如,重建单元340可将残差块的采样加到预测块的对应采样以重建CU的像素块,得到重建图像块。
[0089] 环路滤波单元350可执行消块滤波操作以减少与CU相关联的像素块的块效应。
[0090] 视频解码器300可将CU的重建图像存储于解码图像缓存360中。视频解码器300可将解码图像缓存360中的重建图像作为参考图像用于后续预测,或者,将重建图像传输给显示装置呈现。
[0091] 视频编解码的基本流程如下:在编码端,将一帧图像划分成块,针对当前块,预测单元210使用帧内预测或帧间预测产生当前块的预测块。残差单元220可基于预测块与当前块的原始块计算残差块,即预测块和当前块的原始块的差值,该残差块也可称为残差信息。该残差块经由变换/量化单元230变换与量化等过程,可以去除人眼不敏感的信息,以消除视觉冗余。可选的,经过变换/量化单元230变换与量化之前的残差块可称为时域残差块,经过变换/量化单元230变换与量化之后的时域残差块可称为频率残差块或频域残差块。熵编码单元280接收到变化量化单元230输出的量化后的变化系数,可对该量化后的变化系数进行熵编码,输出码流。例如,熵编码单元280可根据目标上下文模型以及二进制码流的概率信息消除字符冗余。
[0092] 在解码端,熵解码单元310可解析码流得到当前块的预测信息、量化系数矩阵等,预测单元320基于预测信息对当前块使用帧内预测或帧间预测产生当前块的预测块。反量化/变换单元330使用从码流得到的量化系数矩阵,对量化系数矩阵进行反量化、反变换得到残差块。重建单元340将预测块和残差块相加得到重建块。重建块组成重建图像,环路滤波单元350基于图像或基于块对重建图像进行环路滤波,得到解码图像。编码端同样需要和解码端类似的操作获得解码图像。该解码图像也可以称为重建图像,重建图像可以为后续的帧作为帧间预测的参考帧。
[0093] 需要说明的是,编码端确定的块划分信息,以及预测、变换、量化、熵编码、环路滤波等模式信息或者参数信息等在必要时携带在码流中。解码端通过解析码流及根据已有信息进行分析确定与编码端相同的块划分信息,预测、变换、量化、熵编码、环路滤波等模式信息或者参数信息,从而保证编码端获得的解码图像和解码端获得的解码图像相同。
[0094] 上述是基于块的混合编码框架下的视频编解码器的基本流程,随着技术的发展,该框架或流程的一些模块或步骤可能会被优化,本申请适用于该基于块的混合编码框架下的视频编解码器的基本流程,但不限于该框架及流程。
[0095] 图4是本申请实施例提供的视频传输过程的示意性框图。如图4所示,采用上述图3所示的视频编码器对采集的视频进行编码,得到码流,码流也称为数据流或位流或比特流。对编码得到的码流进行封装,得到视频文件,将视频文件发送给上述视频解码器,视频解码器对视频文件进行解封装,得到视频码流,再对视频码流进行解码,得到解码后的视频,对解码后的视频进行呈现,进而实现视频的传输和显示。
[0096] 为了便于解码,在码流中包括序列头,序列头包括的内容如表1所示:
[0097] 表1
[0098]
[0099]
[0100]
[0101]
[0102]
[0103] 上述表1的语义如下:
[0104] 其中,video_sequence_start_code为视频序列起始码,例如位串‘0x000001B0’,标识视频序列的开始。
[0105] profile_id为档次标号,为8位无符号整数,表示位流符合的档次。
[0106] level_id为级别标号,为8位无符号整数,表示位流符合的级别。
[0107] library_stream_flag为知识位流标志,为二值变量。值为‘1’表示当前位流是知识位流;值为‘0’表示当前位流是主位流。LibraryStreamFlag的值等于library_stream_flag的值。
[0108] library_picture_enable_flag为知识图像允许标志,为二值变量。值为‘1’表示视频序列中可存在使用知识图像作为参考图像的帧间预测图像;值为‘0’表示视频序列中不应存在使用知识图像作为参考图像的帧间预测图像。LibraryPictureEnableFlag的值等于library_picture_enable_flag的值。如果位流中不存在library_picture_enable_flag,LibraryPicutreEnableFlag的值等于0。
[0109] duplicate_sequence_header_flag为知识位流重复序列头标志,为二值变量。值为‘1’表示当前主位流的序列头中除library_stream_flag、library_picture_enable_flag和duplicate_sequence_header_flag外的所有语法元素的值均应与当前主位流所参考的知识位流的序列头中对应语法元素的值相同;值为‘0’表示当前主位流的序列头中除library_stream_flag、library_picture_enable_flag和duplicate_sequence_header_flag外的其它语法元素的值可与当前主位流所参考的知识位流的序列头中对应语法元素的值不同。
[0110] progressive_sequence为逐行序列标志,为二值变量。规定视频序列的扫描格式。值为‘1’表示编码视频序列只包含逐行扫描的帧图像;值为‘0’表示编码视频序列只包含逐行扫描图像,或表示编码视频序列只包含隔行扫描图像。
[0111] 如果progressive_sequence的值为‘1’,相邻两个显示时刻间隔为帧周期。如果progressive_sequence的值为‘0’,相邻两个显示时刻间隔为场周期。
[0112] field_coded_sequence为场图像序列标志,为二值变量。值为‘1’表示编码视频序列中的图像是场图像;值为‘0’表示编码视频序列中的图像是帧图像。如果progressive_sequence的值为‘1’,则field_coded_sequence的值应为‘0’。
[0113] horizontal_size为水平尺寸,为14位无符号整数。规定图像亮度分量可显示区域(该区域与图像的左侧边缘对齐)的宽度,即水平方向样本数。
[0114] PictureWidthInMinBu和PictureWidthInMinCu的计算如表2所示:
[0115] 表2
[0116]
[0117] horizontal_size不应为‘0’。horizontal_size的单位应是图像每行样本数。可显示区域的左上角样本应与解码图像左上角样本对齐。
[0118] vertical_size为垂直尺寸,为14位无符号整数。规定图像亮度分量可显示区域(该区域与图像的顶部边缘对齐)的高度,即垂直方向扫描行数。
[0119] 在视频序列位流中,当progressive_sequence和field_coded_sequence的值均为‘0’时,PictureHeightInMinBu和PictureHeightInMinCu的计算如表3所示:
[0120] 表3
[0121]
[0122] 在其他情况下,PictureHeightInMinBu和PictureHeightInMinCu的计算如表4所示:
[0123] 表4
[0124]
[0125] vertical_size不应为0。vertical_size的单位应是图像样本的行数。
[0126] MiniSize的值由档次规定。
[0127] horizontal_size、vertical_size与图像边界的关系见图5所示中,实线表示图像可显示区域边界,其宽度和高度分别由horizontal_size和vertical_size决定;虚线表示图像边界,其宽度和高度分别由PictureWidthInMinBu和PictureHeightInMinBu决定。PicWidthInLuma的值等于PictureWidthInMinBu乘以MiniSize的积,PicHeightInLuma的值等于PictureHeightInMinBu乘以MiniSize的积。例如horizontal_size的值为1920,vertical_size的值为1080,则当progressive_sequence和field_coded_sequence的值均为‘0’时,PictureWidthInMinBu×MiniSize等于1920,PictureHeightInMinBu×MiniSize等于1088;否则PictureWidthInMinBu×MiniSize等于1920,PictureHeightInMinBu×MiniSize等于1080。
[0128] chroma_format为色度格式,2位无符号整数。规定色度分量的格式如表5所示:
[0129] 表5:色度格式
[0130] chroma_format的值 含义00 保留
01 4:2:0
10 保留
11 保留
[0131] sample_precision为样本精度,为3位无符号整数。规定亮度和色度样本的精度,见表6所示。如果sample_precision的值为‘001’,SamplePrecision的值为8;如果sample_precision的值为‘010’,SamplePrecision的值为10。
[0132] 表6:样本精度
[0133]sample_precision的值 含义
000 禁止
001 亮度和色度均为8bit精度
010 亮度和色度均为10bit精度
011~111 保留
[0134] encoding_precision为编码样本精度,3位无符号整数。规定亮度和色度样本的编码精度,见表7所示。如果encoding_precision的值为‘001’,BitDepth的值为8;如果encoding_precision的值为‘010’,BitDepth的值为10。如果位流中不存在encoding_precision,BitDepth的值为8。BitDepth的值不应小于SamplePrecision的值。
[0135] 表7:编码样本精度
[0136]encoding_precision的值 含义
000 禁止
001 亮度和色度均为8bit精度
010 亮度和色度均为10bit精度
011~111 保留
[0137] aspect_ratio为宽高比,为4位无符号整数。规定重建图像的样本宽高比(SAR)或显示宽高比(DAR),见表8所示。
[0138] 表8:宽高比
[0139]
[0140]
[0141] 如果位流中没有序列显示扩展,那么整个重建图像将要映射到整个活动显示区域。样本宽高比为:
[0142] SAR=DAR*vertical_size÷horizontal_size
[0143] 在这种情况下,horizontal_size和vertical_size受源图像的样本宽高比和选定的显示宽高比限制。
[0144] 如果位流中有序列显示扩展出现,样本宽高比为:
[0145] SAR=DAR*display_vertical_size÷display_horizontal_size
[0146] frame_rate_code为帧率代码,4位无符号整数。规定帧率,见表9所示。
[0147] 表9:帧率代码
[0148]
[0149]
[0150] 连续两帧之间的时间间隔是帧率的倒数。隔行扫描帧中两场之间的时间间隔是帧率的倒数的1/2。
[0151] 如果progressive_sequence的值为‘1’,帧周期等于帧率的倒数。
[0152] 如果progressive_sequence的值为‘0’,场周期等于帧率的倒数的1/2。
[0153] bit_rate_lower为比特率低位,BitRate的低18位。
[0154] bit_rate_upper为比特率高位,BitRate的高12位。BitRate为:
[0155] BitRate=(bit_rate_upper<<18)+bit_rate_lower
[0156] BitRate以400bit/s为单位计算视频位流的比特率,并向上取整。BitRate不应为0。对LibraryPictureEnableFlag的值为1的主位流,视频位流的比特率包含了该主位流以及所参考的知识位流的总比特率。
[0157] low_delay为低延迟,二值变量。值为‘1’表示参考图像队列0和参考图像队列1中均不包含显示顺序上将来的图像,不存在图像重排序延时,位流中可能包含所谓“大图像”;值为‘0’表示参考图像队列0或参考图像队列1中可包含显示顺序上将来的图像,存在图像重排序延时,位流中不包含所谓“大图像”。
[0158] temporal_id_enable_flag为时间层标识允许标志,二值变量。值为‘1’表示视频序列允许使用时间层标识;值为‘0’表示视频序列不使用时间层标识。
[0159] bbv_buffer_size为位流缓冲区尺寸,18位无符号整数。规定了位流参考解码器对视频序列解码的位流缓冲区尺寸。BBS是位流参考解码器对视频序列解码所需的位流缓冲区最小尺寸(按位计算):
[0160] BBS=16*1024*bbv_buffer_size
[0161] max_dpb_minus1为最大解码图像缓冲区大小,4位无符号整数。表示解码当前位流所需要的最大的解码图像缓冲区的大小(以单幅图像存储缓冲区大小为单位)。max_dpb_size_minus1的值应大于0,小于16且小于当前位流的level_id对应的最大DPB值。MaxDpbSize的值等于max_dpb_size_minus1加1。
[0162] rpl1_index_exist_flag为参考图像队列1索引存在标志,二值变量。值为‘0’表示位流中不应出现ref_pic_list_set_flag[1]和ref_pic_list_set_index[1];值为‘1’表示可出现。Rpl1IndexExistFlag的值等于rpl1_index_exist_flag的值。
[0163] rpl1_same_as_rpl0_flag为参考图像队列相同标志,二值变量。值为‘0’表示位流中应出现num_ref_pic_list_set[1]和reference_picture_list_set(1,rplsIndex);值为‘1’表示不应出现。Rpl1SameAsRpl0Flag值等于rpl1_same_as_rpl0_flag的值。
[0164] 如果rpl1_same_as_rpl0_flag的值为‘1’,则num_ref_pic_list_set[1]值等于num_ref_pic_list_set[0]值,且参考图像队列配置集reference_picture_list_set(1,rplsIndex)中每个语法元素的值与参考图像队列配置集reference_picture_list_set(0,rplsIndex)中对应语法元素的值相同,其中rplsIndex的取值范围是0~(num_ref_pic_list_set[0]–1)。
[0165] num_ref_pic_list_set[0]、num_ref_pic_list_set[1]为参考图像队列配置集数,表示参考图像队列配置集的数量。取值范围是0~64。NumRefPicListSet[0]的值等于num_ref_pic_list_set[0]值。如果Rpl1SameAsRpl0Flag的值为1,NumRefPicListSet[1]的值等于num_ref_pic_list_set[0]的值;否则NumRefPicListSet[1]的值等于num_ref_pic_list_set[1]值。
[0166] num_ref_default_active_minus1[0]、num_ref_default_active_minus1[1]为默认活跃参考图像数,表示解码图像时,参考图像队列中参考索引(pu_reference_index_l0、pu_reference_index_l1)默认的最大值。取值范围是0~14。
[0167] log2_lcu_size_minus2为最大编码单元尺寸,3位无符号整数。表示最大编码单元的大小,取值范围是3~5。LcuSizeInBit的值等于log2_lcu_size_minus2的值加2。LcuSizeInBit
MaxQtSize的值等于2 。
[0168] log2_min_cu_size_minus2为最小编码单元尺寸,2位无符号整数。表示最小编码log2单元的大小,取值范围是0~2。MinCuSize、MinBtSize和MinEqtSize的值均等于2_min_cu_size_minus2+2

[0169] log2_max_part_ratio_minus2为划分单元最大比例,2位无符号整数。表示最大编log2_max_part_ratio_minus2+2码单元宽比高或者高比宽的比值,MaxPartRatio的值等于2 。
[0170] max_split_times_minus6为编码树最大划分次数,为3位无符号整数。表示所允许的编码单元最大划分次数。四叉树、二叉树、扩展四叉树每划分一次,编码单元划分深度加1。MaxSplitTimes的值等于max_split_times的值加6。
[0171] log2_min_qt_size_minus2为最小四叉树尺寸,3位无符号整数。表示所允许的四log2_min_qt_size_minus2+2叉树划分最小编码单元尺寸,取值范围是0~5。MinQtSize的值等于2 。
[0172] log2_max_bt_size_minus2为最大二叉树尺寸,3位无符号整数。表示所允许的二log2_max_bt_size_minus2+2叉树划分最大编码单元尺寸,取值范围是0~5。MaxBtSize的值等于2 。
[0173] log2_max_eqt_size_minus3为最大扩展四叉树尺寸,2位无符号整数。表示所允许log2的扩展四叉树最大编码单元尺寸,取值范围是0~3。MaxEqtSize的值等于2_max_eqt_size_minus3+3

[0174] weight_quant_enable_flag为加权量化允许标志,二值变量。值为‘1’表示视频序列允许使用加权量化;值为‘0’表示视频序列不使用加权量化。WeightQuantEnableFlag的值等于weight_quant_enable_flag的值。
[0175] load_seq_weight_quant_data_flag为加权量化矩阵加载标志,二值变量。值为‘1’表示4×4和8×8变换块的加权量化矩阵。从序列头中加载;值为‘0’表示4×4和8×8变换块的加权量化矩阵。LoadSeqWeightQuantDataFlag的值等于load_seq_weight_quant_data_flag的值。如果位流中不存在load_seq_weight_quant_data_flag,LoadSeqWeightQuantDataFlag的值等于0。
[0176] st_enable_flag为二次变换允许标志,二值变量。值为‘1’表示可使用二次变换;值为‘0’表示不应使用二次变换。StEnableFlag的值等于st_enable_flag的值。
[0177] sao_enable_flag为样值偏移补偿允许标志,二值变量。值为‘1’表示可使用样值偏移补偿;值为‘0’表示不应使用样值偏移补偿。SaoEnableFlag的值等于sao_enable_flag的值。
[0178] ccsao_enable_flag为跨分量样值偏移补偿允许标志位,二值变量。值为‘1’表示可使用跨分量样值偏移补偿;值为‘0’表示不应使用跨分量样值偏移补偿。CcsaoEnableFlag的值等于ccsao_enable_flag的值。如果位流中不存在ccsao_enable_flag,CcsaoEnableFlag的值等于0。
[0179] alf_enable_flag为自适应修正滤波允许标志,二值变量。值为‘1’表示可使用自适应修正滤波;值为‘0’表示不应使用自适应修正滤波。AlfEnableFlag的值等于alf_enable_flag的值。
[0180] affine_enable_flag为仿射运动补偿允许标志,二值变量。值为‘1’表示可使用仿射运动补偿;值为‘0’表示不应使用仿射运动补偿。AffineEnableFlag的值等于affine_enable_flag的值。
[0181] asr_enable_flag为仿射预测样本改善允许标志,二值变量。值为‘1’表示可使用仿射预测样本改善;值为‘0’表示不应使用仿射预测样本改善。AsrEnableFlag的值等于asr_enable_flag的值。如果位流中不存在asr_enable_flag,AsrEnableFlag的值为0。
[0182] smvd_enable_flag为对称运动矢量差模式允许标志,二值变量。值为‘1’表示可使用对称运动矢量差模式;;值为‘0’表示不应使用对称运动矢量差模式。SmvdEnableFlag的值等于smvd_enable_flag的值。
[0183] ipcm_enable_flag为脉冲编码调制模式允许标志,二值变量。值为‘1’表示可使用脉冲编码调制模式;值为‘0’表示不应使用脉冲编码调制模式。IpcmEnableFlag的值等于ipcm_enable_flag的值。
[0184] amvr_enable_flag为自适应运动矢量精度允许标志,二值变量。值为‘1’表示可使用自适应运动矢量精度;值为‘0’表示不应使用自适应运动矢量精度。AmvrEnableFlag的值等于amvr_enable_flag的值。
[0185] num_of_hmvp_cand为帧间预测候选历史运动信息数,4位无符号整数。NumOfHmvpCand的值等于num_of_hmvp_cand的值,取值范围是0~8。NumOfHmvpCand的值为0表示进行帧间预测时不应使用历史运动信息。
[0186] intra_pf_enable_flag为帧内预测滤波允许标志,二值变量。值为‘1’表示可使用帧内预测滤波;值为‘0’表示不应使用帧内预测滤波。IntraPfEnableFlag的值等于intra_pf_enable_flag。
[0187] umve_enable_flag为高级运动矢量表达模式允许标志,二值变量。值为‘1’表示可使用高级运动矢量表达模式;值为‘0’表示不应使用高级运动矢量表达模式。UmveEnableFlag的值等于umve_enable_flag的值。
[0188] emvr_enable_flag为运动矢量精度扩展模式允许标志,二值变量。值为‘1’表示可使用运动矢量精度扩展模式;值为‘0’表示不应使用运动矢量精度扩展模式。EmvrEnableFlag的值等于emvr_enable_flag的值。
[0189] tscpm_enable_flag为跨分量两步预测模式允许标志,二值变量。值为‘1’表示可使用跨分量两步预测模式;值为‘0’表示不应使用跨分量两步预测模式。TscpmEnableFlag的值等于tscpm_enable_flag的值。
[0190] dt_enable_flag为帧内衍生模式允许标志,二值变量。值为‘1’表示可使用帧内衍生模式;值为‘0’表示不应使用帧内衍生模式。DtEnableFlag的值等于dt_enable_flag的值。
[0191] log2_max_dt_size_minus4为衍生模式待划分边长最大尺寸,2位无符号整数。表log2示所允许的衍生模式待划分边长的最大值。取值范围是0~2。DtMaxSize的值等于2_max_dt_size_minus4+4
。DtMinSize的值等于16。
[0192] pbt_enable_flag为基于位置的变换允许标志,为二值变量。值为‘1’表示可使用基于位置的变换;值为‘0’表示不应使用基于位置的变换。PbtEnableFlag的值等于pbt_enable_flag的值。
[0193] obmc_enable_flag为重叠块运动补偿允许标志,为二值变量。值为‘1’表示可使用重叠块运动补偿模式;值为‘0’表示不应使用重叠块运动补偿模式。ObmcEnableFlag的值等于obmc_enable_flag的值。如果位流中不存在obmc_enable_flag,ObmcEnableFlag的值为0。
[0194] inter_pf_enable_flag为帧间预测滤波允许标志,二值变量。值为‘1’表示可使用帧间预测滤波;值为‘0’表示不应使用帧间预测滤波。InterPfEnableFlag的值等于inter_pf_enable_flag的值。如果位流中不存在inter_pf_enable_flag,InterPfEnableFlag的值为0。
[0195] inter_pc_enable_flag为帧间预测修正允许标志,二值变量。值为‘1’表示可使用帧间预测修正;值为‘0’表示不应使用帧间预测修正。InterPcEnableFlag的值等于inter_pc_enable_flag的值。如果位流中不存在inter_pc_enable_flag,InterPcEnableFlag的值为0。
[0196] ist_enable_flag为隐择变换允许标志,二值变量。值为‘1’表示可使用隐择变换;值为‘0’表示不应使用隐择变换。IstEnableFlag的值等于ist_enable_flag。如果位流中不存在ist_enable_flag,IstEnableFlag的值为0。
[0197] ibc_enable_flag为块复制帧内预测允许标志,二值变量。值为‘1’表示可使用块复制帧内预测;值为‘0’表示不应使用块复制帧内预测。IbcEnableFlag的值等于ibc_enable_flag的值。如果位流中不存在ibc_enable_flag,IbcEnableFlag的值为0。
[0198] isc_enable_flag为串复制帧内预测允许标志,二值变量。值为‘1’表示可使用串复制帧内预测;值为‘0’表示不应使用串复制帧内预测。IscEnableFlag的值等于isc_enable_flag的值。如果位流中不存在isc_enable_flag,IscEnableFlag的值为0。
[0199] num_of_intra_hmvp_cand为帧内预测候选历史运动信息数,4位无符号整数。NumOfIntraHmvpCand的值等于num_of_intra_hmvp_cand的值,取值范围是0~12。
NumOfIntraHmvpCand的值为0表示进行帧内预测时不应使用历史运动信息。
[0200] fimc_enable_flag为基于频数信息的帧内编码允许标志,二值变量。值为‘1’表示可使用基于频数信息的帧内编码;值为‘0’表示不应使用基于频数信息的帧内编码。FimcEnableFlag的值等于fimc_enable_flag的值。如果位流中不存在fimc_enable_flag,FimcEnableFlag的值等于0。
[0201] sbt_enable_flag为子块变换允许标志,二值变量。值为‘1’表示可使用子块变换。值为‘0’表示不应使用子块变换。SbtEnableFlag的值等于sbt_enable_flag的值。如果位流中不存在sbt_enable_flag,SbtEnableFlag的值为0。
[0202] bio_enable_flag为双向光流允许标志,二值变量。值为‘1’表示可使用双向光流;值为‘0’表示不应使用双向光流。BioEnableFlag的值等于bio_enable_flag的值。如果位流中不存在bio_enable_flag,BioEnableFlag的值为0。
[0203] dmvr_enable_flag为解码端运动矢量改良允许标志,二值变量。值为‘1’表示可使用解码端运动矢量改良;值为‘0’表示不应使用解码端运动矢量改良。DmvrEnableFlag的值等于dmvr_enable_flag的值。如果位流中不存在dmvr_enable_flag,DmvrEnableFlag的值为0。
[0204] bgc_enable_flag为双向梯度修正允许标志,二值变量。值为‘1’表示可使用双向梯度修正;值为‘0’表示不应使用双向梯度修正。BgcEnableFlag的值等于bgc_enable_flag的值。如果位流中不存在bgc_enable_flag,BgcEnableFlag的值为0。
[0205] enhanced_tscpm_enable_flag为增强的跨分量两步预测模式允许标志,二值变量。值为‘1’表示可使用增强的跨分量两步预测模式;值为‘0’表示不应使用增强的跨分量两步预测模式。EnhancedTscpmEnableFlag的值等于enhanced_tscpm_enable_flag的值。如果位流中不存在enhanced_tscpm_enable_flag,EnhancedTscpmEnableFlag的值为0。
[0206] pmc_enable_flag为跨多分量预测允许标志,二值变量。值为‘1’表示可使用跨多分量预测;值为‘0’表示不应使用跨分量预测。PmcEnableFlag的值等于pmc_enable_flag的值。如果位流中不存在pmc_enable_flag,PmcEnableFlag的值为0。
[0207] iip_enable_flag为改进型帧内预测允许标志,二值变量。值为‘1’表示可使用改进型帧内预测;值为‘0’表示不应使用改进型帧内预测。IipEnableFlag的值等于iip_enable_flag。如果位流中不存在iip_enable_flag,IipEnableFlag的值为0。
[0208] sawp_enable_flag为空域角度加权预测模式允许标志,二值变量。值为‘1’表示可使用空域角度加权预测模式;值为‘0’表示不应使用空域角度加权预测模式。SawpEnableFlag的值等于sawp_enable_flag的值。如果位流中不存在sawp_enable_flag,SawpEnableFlag的值为0。
[0209] awp_enable_flag为角度加权预测模式允许标志,二值变量。值为‘1’表示可使用角度加权预测模式;值为‘0’表示不应使用角度加权预测模式。AwpEnableFlag的值等于awp_enable_flag的值。如果位流中不存在awp_enable_flag,AwpEnableFlag的值为0。
[0210] esao_enable_flag为增强样值偏移补偿允许标志,二值变量。值为‘1’表示可使用增强样值偏移补偿;值为‘0’表示不应使用增强样值偏移补偿。EsaoEnableFlag的值等于esao_enable_flag的值。如果位流中不存在esao_enable_flag,EsaoEnableFlag的值为0。如果EsaoEnableFlag的值为1,SaoEnableFlag的值应为0。
[0211] etmvp_mvap_enable_flag为增强时域运动矢量预测和运动矢量角度预测允许标志,二值变量。值为‘1’表示可使用增强时域运动矢量预测和运动矢量角度预测;值为‘0’表示不应使用增强时域运动矢量预测和运动矢量角度预测。EtmvpMvapEnableFlag的值等于etmvp_mvap_enable_flag的值。如果位流中不存在etmvp_mvap_enable_flag,EtmvpMvapEnableFlag的值为0。如果EtmvpMvapEnableFlag的值为1,NumOfMvapCand的值等于5;否则NumOfMvapCand的值等于0。
[0212] ealf_enable_flag为增强自适应修正滤波允许标志,二值变量。值为‘1’表示应使用增强自适应修正滤波;值为‘0’表示不应使用增强自适应修正滤波。EalfEnableFlag的值等于ealf_enable_flag的值。如果位流中不存在ealf_enable_flag,EalfEnableFlag的值为0。
[0213] nn_tools_set_hook为神经网络工具集,8位无符号整数。标识是否使用神经网络的工具。如果位流中不存在nn_tools_set_hook,nn_tools_set_hook的值应为‘00000000’。解码处理应该忽略这些位。
[0214] nn_tools_set_hook最低位的值为‘1’表示可使用神经网络滤波;nn_tools_set_hook最低位的值为‘0’表示不应使用神经网络滤波。NnFilterEnableFlag的值等于nn_tools_set_hook&0x01的值。如果位流中不存在nn_tools_set_hook,NnFilterEnableFlag的值等于0。其他位保留。
[0215] num_of_nn_filter_minus1为神经网络滤波模型数,表示神经网络滤波可使用的滤波模型数量。NumOfNnFilter的值等于num_of_nn_filter_minus1的值加1。如果位流中不存在num_of_nn_filter_minus1,NumOfNnFilter的值等于0。解码处理应该忽略这些位。
[0216] output_reorder_delay为图像重排序延迟,5位无符号整数。由于图像编解码顺序与显示顺序不一致带来的重排序延迟,以解码图像为单位。由于一幅解码图像的显示时间和progressive_sequence、progressive_frame、repeat_first_field、picture_structure等语法元素的值有关,所以这段时间的绝对长度是不固定的,但是在这段时间内显示的解码图像数是固定的。low_delay值为‘0’时,OutputReorderDelay的值等于output_reorder_delay的值;low_delay值为‘1’时,OutputReorderDelay的值为0。
[0217] cross_patch_loop_filter_enable_flag为跨片环路滤波允许标志,二值变量。值为‘1’时表示可跨越片边界进行去块效应滤波、样本偏移补偿及自适应修正滤波;值为‘0’表示不应跨越片边界进行去块效应滤波、样本偏移补偿及自适应修正滤波。CplfEnableFlag的值等于cross_patch_loop_filter_enable_flag的值。
[0218] stable_patch_flag为片划分一致性标志,二值变量。值为‘1’时表示当前视频序列中所有图像划分为片的方式均应相同;值为‘0’表示当前视频序列中图像划分为片的方式可不相同。
[0219] ref_colocated_patch_flag为参考同位置片标志,二值变量。值为‘1’时表示进行帧间预测时只使用参考图像同位置片边界内的采样值进行参考;值为‘0’表示进行帧间预测时可使用参考图像同位置片边界外的采样值进行参考。
[0220] uniform_patch_flag为统一片大小标志,二值变量。值为‘1’时表示除最右边和最下边的片外,图像中其他片的大小应相同;值为‘0’表示片的大小可不同。
[0221] patch_width_minus1为片宽度。
[0222] patch_height_minus1为片高度。
[0223] 片的宽度和高度,以LCU为单位。patch_width_minus1的值应小于256,patch_height_minus1的值应小于144。图像中各个片以LCU为单位的宽度、高度和位置按以下表10方法获得:
[0224] 表10
[0225]
[0226]
[0227] MinPatchWidthInPixel的值等于Min(2LcuSizeInBit+1,horizontal_size)。任何片以像素为单位的宽度不应小于MinPatchWidthInPixel的值。
[0228] EipmEnableFlag的值为0表示不应使用亮度帧内预测扩展模式;值为1表示应使用亮度帧内预测扩展模式。
[0229] MipfEnableFlag的值为0表示不应使用多组合帧内预测滤波;值为1表示应使用多组合帧内预测滤波。
[0230] IntraPfChromaEnableFlag的值为0表示不应使用帧内色度预测滤波;值为1表示应使用帧内色度预测滤波。
[0231] UmveEnhancementEnableFlag的值为0表示不应使用高级运动矢量表达增强模式;值为1表示可使用高级运动矢量表达增强模式。
[0232] AffineUmveEnableFlag的值为0表示不应使用仿射高级运动矢量表达模式;值为1表示可使用仿射高级运动矢量表达模式。
[0233] SbTmvpEnableFlag的值为0表示不应使用子块时域运动信息预测;值为1表示应使用子块时域运动信息预测。
[0234] SrccEnableFlag的值为0表示不应使用基于扫描区域的系数编码;值为1表示应使用基于扫描区域的系数编码。
[0235] MaecEnableFlag的值为0表示不应使用多假设概率模型高级熵编码;值为1表示应使用多假设概率模型高级熵编码。
[0236] EnhancedStEnableFlag的值为0表示不应使用增强二次变换;值为1表示应使用增强二次变换。
[0237] EnhancedTscpmEnableFlag的值为0表示不应使用增强的跨分量两步预测模式;值为1表示可使用增强的跨分量两步预测模式。
[0238] 在一些实施例中,媒体文件中还包括解码器配置记录,解码器配置记录用于定义视频的解码器配置记录,包括如下内容:
[0239] 语法
[0240] class Avs3DecoderConfigurationRecord{
[0241] unsigned int(8)configurationVersion;
[0242] unsigned int(8)profile_id;
[0243] unsigned int(8)level_id;
[0244] bit(6)reserved='111111'b;
[0245] unsigned int(2)chroma_format;
[0246] bit(5)reserved='11111'b;
[0247] unsigned int(3)sample_precision;
[0248] bit(4)reserved='1111'b;
[0249] unsigned int(4)frame_rate_code;
[0250] bit(6)reserved='111111'b;
[0251] unsigned int(2)library_dependency;
[0252] bit(5)reserved='11111'b;
[0253] unsigned int(3)temporal_layer_num;
[0254] }
[0255] 语义
[0256] configurationVersion指示当前解码器配置记录的版本。当解码器无法识别当前版本号时,解码器不对该轨道包含的视频编码位流进行解码。
[0257] profile_id包含AVS3视频标准中定义的profile_id字段的匹配值,指示当前解码器配置记录适用的AVS3视频编码位流的档次信息。
[0258] level_id包含AVS3视频标准中定义的level_id字段的匹配值,指示当前解码器配置记录适用的AVS3视频编码位流的级别信息。
[0259] chroma_format包含AVS3视频标准中定义的chrome_format字段的匹配值,指示当前解码器配置记录适用的AVS3视频编码位流的色度格式。
[0260] sample_precision包含AVS3视频标准中定义的sample_precision字段的匹配值,指示当前解码器配置记录适用的AVS3视频编码位流的样本精度。
[0261] frame_rate_code包含AVS3视频标准中定义的frame_rate_code字段的匹配值,指示当前解码器配置记录适用的AVS3视频编码位流的帧率代码。
[0262] library_dependency指示当前解码器配置记录适用的轨道与知识位流轨道之间的依赖关系,见表11。
[0263] 表11知识位流依赖
[0264]
[0265] temporal_layer_num指示该轨道对应的视频码流中的最大时域层级数,该字段取值为1~7。
[0266] 在一些实施例中,媒体文件还包括依赖知识样本的样本群组,依赖知识样本的样本群组用于在样本群组中为群组中样本提供其依赖参考的知识层样本的定位信息,包括如下内容:
[0267] 语法
[0268]
[0269]
[0270] 语义
[0271] library_track_ID指示此群组指向的被参考的样本的样本条目所在的轨道编号。
[0272] library_sample_index指示此群组指向的被参考的样本的样本条目的编号。
[0273] 由上述可知,序列头(sequence header)中的参数用于描述序列特性和序列解码相关的参数,在一些情况下,位流中包括多个序列头,且这多个序列头可能位于位流的不同位置,目前的封装技术,对多个序列头没有进行处理,造成解效率低的问题。例如,当视频位流中包括多个重复序列头时,解码端存在重复解码序列头的问题;再例如,当视频位流包括多个不同序列头时,若解码端解码了前端位流,发现解码器的参数无法解码后端位流时,造成无效解码的问题。
[0274] 为了解决上述技术问题,本申请的文件封装设备根据视频位流包括的至少一个序列头,确定该视频位流对应的序列头信息,并将该序列头信息包括在封装该视频位流的视频轨道中。这样,文件解封装设备可以根据该视频轨道中的序列头信息来解码视频位流,例如,当视频位流包括多个重复序列头时,可以解码一个序列头实现后续视频位流的解码,进而避免重复解码序列头的问题。再例如,当视频位流包括多个不同的序列头时,文件解封装设备在解码视频位流之前,事先根据这多个不同的序列头判断解码器是否具备解码这多个不同的序列头对应的视频位流的能力,进而避免解码部分视频位流后,发现部分视频位流无法解码的问题,进而提高了视频解码效率。
[0275] 下面通过一些实施例对本申请实施例的技术方案进行详细说明。下面这几个实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
[0276] 图6为本申请一实施例提供的媒体文件封装方法的流程图,如图6所示,该方法包括如下步骤:
[0277] S601、文件封装设备获取视频位流,视频位流包括至少一个序列头。
[0278] 在一些实施例中,文件封装设备也称为视频封装设备,或者视频编码设备等。
[0279] 在一些实施例中,视频位流也称为视频码流,或者视频比特流等。
[0280] 本申请实施例中,文件封装设备获取视频位流的方式包括但不限于如下几种:
[0281] 方式一,文件封装设备从其他设备处获取视频编码后的视频位流。
[0282] 例如,文件封装设备从存储设备处获取视频编码后的视频位流,或者从其他编码设备处获取视频编码后的视频位流。
[0283] 在一些实施例中,上述视频位流一组或多组视频位流。
[0284] 方式二,文件封装设备对视频进行编码,得到视频编码后的位流。例如,文件封装设备为编码设备,文件封装设备从采集设备(例如相机)处获取视频后,对视频进行编码,得到视频编码后的位流。
[0285] S602、文件封装设备根据至少一个序列头,确定视频位流对应的序列头信息。
[0286] 在一些实施例中,序列头信息包括非重复序列头的个数或重复序列头的个数。
[0287] 在一些实施例中,序列头信息还包括序列头的长度、序列头的标识、序列头语法元素信息、所述视频位流对应的编码标志中的至少一个。
[0288] 其中,非重复序列头的个数可以理解为视频位流所包括的多个序列头中不是重复的序列头的个数。
[0289] 在一些实施例中,可以使用字段sequence_header_num表示非重复序列头的个数。
[0290] 其中,序列头的长度可以理解为非重复序列头中每个序列头的长度。
[0291] 在一些实施例中,可以使用字段sequence_header_length表示序列头的长度。
[0292] 可选的,序列头的长度以字节为单位。
[0293] 其中,序列头的标识可以理解为非重复序列头中每个序列头的标识。
[0294] 在一些实施例中,可以使用字段sequence_header_id表示序列头的标识。
[0295] 其中,序列头语法元素信息可以理解为非重复序列头中每个序列头的语法元素信息。
[0296] 可选的,序列头的语法元素信息所包括的内容如上述表1所示。
[0297] 在一些实施例中,可以使用字段sequence_header表示序列头语法元素信息。
[0298] 其中,视频位流对应的编码标志用于指示所述视频位流在编码时所采用的编码扫描方式。
[0299] 可选的,编码扫描方式包括逐行扫描的帧编码方式和隔行扫描的场编码方式等。
[0300] 在一些实施例中,使用字段general_field_coded_flag表示视频位流对应的编码标志。
[0301] 示例性的,若general_field_coded_flag的取值为数值1时,表示该视频位流为逐行扫描的帧编码码流;若general_field_coded_flag的取值为数值2时,表示该视频位流为隔行扫描的场编码码流。
[0302] 本申请对上述数值1和数值2的具体取值不做限制,例如数值1为0,数值2为1。
[0303] 在一些实施例中,若视频位流中包括多个重复的序列头时,可以将该多个重复序列头当作一个序列头,此时该视频位流对应的列头信息包括的非重复序列头的个数为1,序列头的长度为该重复的序列头的长度,序列头的标识为该重复的序列头的标识,序列头语法元素信息为该重复的序列头的语法元素信息。也就是说,若视频位流中包括多个重复的序列头时,序列头信息中包括这多个重复的序列头中一个序列头的相关信息。
[0304] 在一些实施例中,若视频位流包括主位流和知识位流,且主位流的序列头中除知识位流标志、知识图像允许标志和知识位流重复序列头标志外的所有语法元素的值均与主位流所参考的知识位流的序列头中对应语法元素的值相同时,则将主位流的序列头和知识位流的序列头理解为两个相同的序列头,此时确定视频位流对应的非重复序列头的个数为1,且该非重复序列头为知识位流的序列头。
[0305] 在一些实施例中,若视频位流中包括多个不同的序列头时,可以将这多个不同的序列头,则根据这多个不同的序列头,确定视频位流对应的序列头信息。
[0306] 在一些实施例中,序列头信息还包括档次标识、级别标识、色度格式、样本精度、帧率代码中的至少一个。
[0307] 其中,档次标识用于指示当前解码器配置记录适用的视频编码位流的档次信息。
[0308] 示例性的,可以使用字段general_profile_id表示视频编码位流的档次信息。
[0309] 可选的,该general_profile_id包含AVS3视频标准中定义的profile_id字段的匹配值。
[0310] 在一些实施例中,若序列头的个数N大于1时,则档次标识字段的取值为N个序列头中档次标识字段的最大值,例如,当sequence_header_num取值大于1时,该字段取值为N个sequence_header中profile_id字段的最大值。
[0311] 其中,级别标识用于指示当前解码器配置记录适用的视频编码位流的级别信息。
[0312] 示例性的,可以使用字段general_level_id表示视频编码位流的级别信息。
[0313] 可选的,general_level_id包含AVS3视频标准中定义的level_id字段的匹配值。
[0314] 在一些实施例中,若非重复序列头的个数N大于1时,则级别标识字段的取值为N个序列头中级别标识字段的最大值,例如,当sequence_header_num取值大于1时,该字段取值为N个sequence_header中level_id字段的最大值。
[0315] 其中,色度格式用于指示当前解码器配置记录适用的视频编码位流的色度格式。
[0316] 示例性的,可以使用字段general_chroma_format表示视频编码位流的色度格式。
[0317] 可选的,general_chroma_format包含AVS3视频标准中定义的chrome_format字段的匹配值。
[0318] 在一些实施例中,若非重复序列头的个数N大于1时,则N个序列头中的色度格式字段的取值相同,例如,当sequence_header_num取值大于1时,N个sequence_header中该字段的取值必须相同。
[0319] 其中,样本精度用于指示当前解码器配置记录适用的视频编码位流的样本精度。
[0320] 示例性的,可以使用字段general_sample_precision表示视频编码位流的样本精度。
[0321] 可选的,general_sample_precision包含AVS3视频标准中定义的sample_precision字段的匹配值。
[0322] 在一些实施例中,若所述非重复序列头的个数N大于1时,则所述样本精度字段取值为N个序列头中样本精度字段的最大值,例如,当sequence_header_num取值大于1时,该字段取值为N个sequence_header中sample_precision字段的最大值。
[0323] 其中,帧率代码用于指示当前解码器配置记录适用的视频编码位流的帧率代码。
[0324] 示例性的,可以使用字段general_frame_rate_code表示视频编码位流的帧率代码。
[0325] 可选的,general_frame_rate_code包含AVS3视频标准中定义的frame_rate_code字段的匹配值。
[0326] 在一些实施例中,若所述非重复序列头的个数N大于1时,则所述帧率代码字段取值基于所述视频轨道中所有样本集合的帧率信息确定,例如,当sequence_header_num取值大于1时,该字段取值含义为对应轨道中所有样本集合的帧率信息。
[0327] 需要说明的是,本申请实施例的序列头信息包括的内容包括但不限于上述信息,还可以包括比上述信息更少的信息,或者包括比上述信息更多的信息,本申请实施例对此不做限制,具体根据实际需要确定。
[0328] S603、文件封装设备对视频位流进行封装,得到视频轨道,该视频轨道中包括视频位流对应的序列头信息。
[0329] 在一些实施例中,若序列头信息中包括序列头的语法元素信息时,则文件封装设备进行封装的视频位流中可以不包括序列头的语法元素信息。这样可以减少视频位流中的数据量,进而提高了视频位流的封装效率。
[0330] 本申请实施例对序列头信息在视频轨道中的具体放置位置不做限制,例如可以放置在视频轨道的任意位置。
[0331] 在一些实施例中,为了便于序列头信息的解析,则将该视频位流对应的序列头信息放置在视频轨道的头部。
[0332] 在一些实施例中,将序列头信息放置在当前解码器配置记录信息中。
[0333] 可选的,当前解码器配置记录信息位于视频轨道的头部。
[0334] 由上述可知,当前解码器配置记录信息中包括档次标识、级别标识、色度格式、样本精度或帧率代码等信息。在一些实施例中,若序列头信息包括档次标识、级别标识、色度格式、样本精度、帧率代码中的至少一个,则档次标识、级别标识、色度格式、样本精度或帧率代码复用当前解码器配置记录信息中的档次标识、级别标识、色度格式、样本精度或帧率代码。
[0335] 在一些实施例中,若上述媒体文件的封装标准为ISOBMFF,则本申请实施例的当前解码器配置记录信息位于ISOBMFF数据盒中。
[0336] 若上述序列头信息位于当前解码器配置记录信息中时,对该当前解码器配置记录信息进行扩展后,该当前解码器配置记录信息包括如下内容:
[0337]
[0338] 其中,configurationVersion指示当前解码器配置记录的版本。当解码器无法识别当前版本号时,解码器不对该轨道包含的视频编码位流进行解码。
[0339] general_profile_id包含AVS3视频标准中定义的profile_id字段的匹配值,指示当前解码器配置记录适用的AVS3视频编码位流的档次信息。当sequence_header_num取值大于1时,该字段取值为N个sequence_header中profile_id字段的最大值。
[0340] general_level_id包含AVS3视频标准中定义的level_id字段的匹配值,指示当前解码器配置记录适用的AVS3视频编码位流的级别信息。当sequence_header_num取值大于1时,该字段取值为N个sequence_header中level_id字段的最大值。
[0341] general_chroma_format包含AVS3视频标准中定义的chrome_format字段的匹配值,指示当前解码器配置记录适用的AVS3视频编码位流的色度格式。当sequence_header_num取值大于1时,N个sequence_header中该字段的取值必须相同。
[0342] general_sample_precision包含AVS3视频标准中定义的sample_precision字段的匹配值,指示当前解码器配置记录适用的AVS3视频编码位流的样本精度。当sequence_header_num取值大于1时,该字段取值为N个sequence_header中sample_precision字段的最大值。
[0343] general_frame_rate_code包含AVS3视频标准中定义的frame_rate_code字段的匹配值,指示当前解码器配置记录适用的AVS3视频编码位流的帧率代码。当sequence_header_num取值大于1时,该字段取值含义为对应轨道中所有样本集合的帧率信息。
[0344] library_dependency指示当前解码器配置记录适用的轨道与知识位流轨道之间的依赖关系,见表12所示。
[0345] 表12知识位流依赖
[0346]
[0347] temporal_layer_num指示该轨道对应的视频位流中的最大时域层级数,该字段取值为1~7。
[0348] general_field_coded_flag取值为0表示该轨道对应的视频位流为逐行扫描的帧编码码流;取值为1表示该轨道对应的视频位流为隔行扫描的场编码码流。
[0349] sequence_header_num指示该轨道对应的视频位流中包含的非重复的序列头个数。当library_dependency取值为11,且主位流序列头中duplicate_sequence_header_flag字段取值为1时,sequence_header_num取值应当为1,且当前解码器配置记录包含的序列头应当为知识图像位流的序列头。
[0350] sequence_header_length指示对应序列头的长度,以字节为单位。
[0351] sequence_header指示所引用的视频位流的sequence_header信息。
[0352] sequence_header_id指示对应序列头的标识符。
[0353] 本申请实施例,文件封装设备通过将视频位流对应的序列头信息包括在视频轨道中,这样文件解封装设备获得视频轨道后,解析视频轨道中的序列头信息,并根据序列头信息对视频位流进行解码,可以提高视频位流的解码效率。例如,当视频位流包括多个重复序列头时,可以解码一个序列头实现后续视频位流的解码,进而避免重复解码序列头的问题。再例如,当视频位流包括多个不同的序列头时,文件解封装设备在解码视频位流之前,事先根据这多个不同的序列头判断解码器是否具备解码这多个不同的序列头对应的视频位流的能力,进而避免解码部分视频位流后,发现部分视频位流无法解码的问题,进而提高了视频解码效率。
[0354] 在一些实施例中,若非重复序列头的个数N大于1时,则视频轨道还包括参考关系信息,该参考关系信息用于指示参考每个序列头的样本。
[0355] 本申请实施例,视频位流包括N个非重复序列头时,这N个非重复序列头中的每个序列头对应一分部位流,例如,序列头1对应1至100帧图像的位流,序列头2对应101至200帧图像的位流,其中,1至100帧图像的位流在解码时,需要参照序列头1的语法元素信息,101至200帧图像的位流在解码时,需要参照序列头2的语法元素信息。基于此,本申请实施例为了便于解码,若非重复序列头的个数N大于1时,则视频轨道中还包括用于指示参考每个序列头的样本的参考关系信息。
[0356] 在一些实施例中,参考关系信息包括参考每个序列头的样本的索引范围。例如,1至100帧图像的位流分组在索引号为1至100的样本中,这1至100个样本在解码时参考序列头1,因此,该参考关系信息中包括参考序列头1的样本的索引范围1至100;其中,101至100帧图像的位流分组在索引号为101至200的样本中,这101至200个样本在解码时参考序列头2,因此,该参考关系信息中还包括参考序列头2的样本的索引范围101至200。
[0357] 在一些实施例中,使用字段sample_index_min和sample_index_max表示参考某序列头的样本的索引范围,其中sample_index_min表示参考该序列头的样本索引号范围的最小值,sample_index_max表示参考该序列头的样本索引号范围的最大值。
[0358] 本申请实施例对上述参考关系信息在视频轨道中具体放置位置不做限制。
[0359] 在一些实施例中,为了便于解码,则将上述参考关系信息放置在视频轨道的头部。
[0360] 在一些实施例中,将上述参考关系信息放置在序列头依赖样本群组信息中。
[0361] 可选的,上述依赖样本群组信息位于视频轨道的头部。
[0362] 若将上述参考关系信息放置在依赖样本群组信息中时,则需要对依赖样本群组信息进行扩展。
[0363] 在一种示例中,扩展后的依赖样本群组信息包括如下内容:
[0364] 语法
[0365]
[0366] 语义
[0367] sequence_header_id指示此群组中的样本参考的序列头的标识符。
[0368] 可选地,还可以通过指示序列头对应的样本序号范围来指示序列头和样本之间的参考关系。
[0369]
[0370]
[0371] 其中,sample_index_min和sample_index_max分别指示参考该序列头的样本索引号范围的最小值和最大值。
[0372] 在一些实施例中,若视频轨道包括主位流样本和知识图像样本时,则视频轨道还包括用于区分主位流样本和知识图像样本的样本区分信息。
[0373] 本申请实施例中,由于主位流样本和知识图像样本解码时所参考的序列头可能不同,或者,主位流样本在解码时需要参考知识图像样本,为了便于准确对主位流样本和知识图像样本分别进行解码,则需要准确区分出视频轨道中的主位流样本和知识图像样本。基于此,本申请实施例在视频轨道中添加用于区分主位流样本和知识图像样本的样本区分信息。
[0374] 在一些实施例中,样本区分信息包括主位流样本和知识图像样本中任意一类样本的索引范围。
[0375] 在一些实施例中,样本区分信息包括视频轨道中知识图像样本的索引范围。
[0376] 在一些实施例中,可以使用字段library_sample_index_min和library_sample_index_max表示知识图像样本的索引范围。其中,library_sample_index_min表示知识图像样本的索引范围中的最小索引号,library_sample_index_max表示知识图像样本的索引范围中的最大索引号。
[0377] 本申请实施例对上述样本区分信息在视频轨道中具体放置位置不做限制。
[0378] 在一些实施例中,为了便于解码,则将上述样本区分信息放置在视频轨道的头部。
[0379] 在一些实施例中,将上述样本区分信息放置在知识图像样本群组信息中。
[0380] 可选的,上述知识图像样本群组信息位于视频轨道的头部。
[0381] 若将上述样本区分信息放置在知识图像样本群组信息中时,则需要对知识图像样本群组信息进行扩展。
[0382] 在一种示例中,扩展后的知识图像样本群组信息包括如下内容:
[0383] 语法
[0384]
[0385] 可选地,还可以通过指示知识图像样本对应的样本序号范围来标识知识图像样本。
[0386]
[0387] 其中,library_sample_index_min和library_sample_index_max分别指示知识图像样本索引号范围的最小值和最大值。
[0388] 在一些实施例中,若视频轨道中的至少一个样本在编码时依赖知识图像样本,则视频轨道还包括知识样本依赖信息,该知识样本依赖信息用于指示至少一个样本所依赖的知识图像样本所在的轨道信息。
[0389] 其中,知识样本依赖信息包括知识图像轨道指示信息,该知识图像轨道指示信息用于指示至少一个样本所依赖的知识图像样本是否位于视频轨道中。
[0390] 在一些实施例中,若知识图像轨道指示信息的取值为第一数值时,则指示至少一个样本所依赖的知识图像样本位于视频轨道中。此时,文件封装设备无需指示至少一个样本所依赖的知识图像样本所在的轨道的标识,以及知识图像样本所在该轨道中的标识,进而较少了传输的数据量。
[0391] 在一些实施例中,若知识图像轨道指示信息的取值为第二数值时,则知识样本依赖信息还包括知识图像轨道标识,该知识图像轨道标识用于指示至少一个样本所依赖的知识图像样本所在的轨道的标识。
[0392] 本申请对上述第一数值和第二数值的具体取值不做限制。
[0393] 可选的,第一数值为1。
[0394] 可选的,第二数值为0。
[0395] 在一些实施例中,使用字段default_library_track表示知识样本依赖信息。
[0396] 本申请实施例对上述知识样本依赖信息在视频轨道中的具体放置位置不做限制。
[0397] 在一些实施例中,上述知识样本依赖信息位于视频轨道的头部。
[0398] 在一些实施例中,上述知识样本依赖信息位于依赖知识样本的样本群组信息中。
[0399] 可选的,依赖知识样本的样本群组信息位于视频轨道的头部。
[0400] 若上述知识样本依赖信息位于依赖知识样本的样本群组信息中时,则需要对依赖知识样本的样本群组信息进行扩展。
[0401] 在一种示例中,扩展后的依赖知识样本的样本群组信息包括如下内容:
[0402] 语法
[0403]
[0404] 语义
[0405] default_library_track取值为1时,此群组中的样本依赖的知识图像轨道为当前轨道或者由'a3lr'类型的轨道引用唯一指定。取值为0时,此群组中的样本依赖的知识图像轨道由library_track_ID字段指示。
[0406] library_track_ID指示此群组指向的被参考的样本的样本条目所在的轨道编号。
[0407] library_sample_index指示此群组指向的被参考的样本的样本条目的编号。
[0408] 在该实施例中,若群组中的样本依赖的知识图像轨道为当前轨道或者由'a3lr'类型的轨道引用唯一指定时,则可以不用指示被参考的样本的样本条目所在的轨道编号,以及被参考的样本的样本条目的编号,进而减少码字,提高编码效率。
[0409] 本申请实施例的媒体文件封装方法,文件封装设备通过获取视频位流,视频位流包括至少一个序列头,根据至少一个序列头,确定视频位流对应的序列头信息,对视频位流进行封装,得到视频轨道,该视频轨道中包括视频位流对应的序列头信息。这样文件解封装设备获得视频轨道后,解析视频轨道中的序列头信息,并根据序列头信息对视频位流进行解码,可以提高视频位流的解码效率。例如,当视频位流包括多个重复序列头时,可以解码一个序列头实现后续视频位流的解码,进而避免重复解码序列头的问题。再例如,当视频位流包括多个不同的序列头时,文件解封装设备在解码视频位流之前,事先根据这多个不同的序列头判断解码器是否具备解码这多个不同的序列头对应的视频位流的能力,进而避免解码部分视频位流后,发现部分视频位流无法解码的问题,进而提高了视频解码效率。
[0410] 上文对本申请实施例涉及的媒体文件的封装方法进行介绍,下面结合具体实施例,对本申请实施例涉及的媒体文件的解封装方法进行介绍。
[0411] 图7为本申请一实施例提供的媒体文件的解封装方法流程图,如图7所示,本申请实施例的方法包括:
[0412] S701、文件解封装设备获取视频轨道,视频轨道中包括轨道头和视频位流,轨道头中包括视频位流中非重复的序列头对应的序列头信息。
[0413] 本申请中文件解封装设备获取视频轨道的方式包括但不限于如下几种:
[0414] 方式一,文件解封装设备接收文件封装设备发送的视频轨道。例如,文件封装设备根据上述实施例的文件封装方法,封装得到该视频轨道后,将该视频轨道发送给文件解封装设备。
[0415] 方式二,文件解封装设备从其他存储设备(例如云端服务器)处,获得该视频轨道。例如,文件封装设备根据上述实施例的文件封装方法,封装得到该视频轨道后,将该视频轨道发送给存储设备,例如发送给云端服务器。文件解封装设备在需要消费该视频轨道时,例如接收到用户的消费请求时,从存储设备中读取该视频轨道供用户消费。
[0416] 在一些实施例中,上述序列头信息包括非重复序列头的个数或重复序列头的个数。
[0417] 在一些实施例中,上述序列头信息还包括序列头的长度、序列头的标识、序列头语法元素信息、视频位流对应的编码标志中的至少一个。
[0418] 其中,编码标志用于指示视频位流在编码时所采用的编码扫描方式。示例性的,若编码标志的取值为数值1时,表示该视频位流为逐行扫描的帧编码码流;若编码标志的取值为数值2时,表示该视频位流为隔行扫描的场编码码流。可选的,数值1为0,数值2为1。
[0419] 在一些实施例中,若视频轨道既包含主位流,又包含知识位流,且主位流的序列头中除知识位流标志、知识图像允许标志和知识位流重复序列头标志外的所有语法元素的值均与主位流所参考的知识位流的序列头中对应语法元素的值相同时,则序列头信息所包括的非重复序列头个数为1,且非重复序列头为知识位流的序列头。
[0420] 在一些实施例中,序列头信息还包括档次标识、级别标识、色度格式、样本精度、帧率代码中的至少一个。
[0421] 其中,档次标识用于指示当前解码器配置记录适用的视频编码位流的档次信息;
[0422] 级别标识用于指示当前解码器配置记录适用的视频编码位流的级别信息;
[0423] 色度格式用于指示当前解码器配置记录适用的视频编码位流的色度格式;
[0424] 样本精度用于指示当前解码器配置记录适用的视频编码位流的样本精度;
[0425] 帧率代码用于指示当前解码器配置记录适用的视频编码位流的帧率代码。
[0426] 在一些实施例中,若非重复序列头的个数N大于1时,则档次标识字段的取值为N个序列头(即N个非重复序列头)中档次标识字段的最大值;或者,
[0427] 若非重复序列头的个数N大于1时,则级别标识字段的取值为N个序列头(即N个非重复序列头)中级别标识字段的最大值;或者,
[0428] 若非重复序列头的个数N大于1时,则N个序列头(即N个非重复序列头)中的色度格式字段的取值相同;或者,
[0429] 若非重复序列头的个数N大于1时,则样本精度字段取值为N个序列头(即N个非重复序列头)中样本精度字段的最大值;或者,
[0430] 若非重复序列头的个数N大于1时,则帧率代码字段取值基于视频轨道中所有样本集合的帧率信息确定。
[0431] 本申请实施例对上述序列头信息在视频轨道中的放置位置不做限制。
[0432] 在一些实施例中,序列头信息位于视频轨道的数据入口处。这样,文件解码封装对视频轨道进行解封装,首先解封装得到序列头信息,进而根据序列头信息判断该文件解封装设备是否具有解码视频轨道中视频位流的能力,在判断具备解码该视频轨道中视频位流的能力时,才根据序列头信息解码该视频位流,避免解码部分码流,造成无效解码的问题。
[0433] 在一些实施例中,序列头信息位于当前解码器配置记录信息中。
[0434] 在一些实施例中,若序列头信息包括档次标识、级别标识、色度格式、样本精度、帧率代码中的至少一个,则档次标识、级别标识、色度格式、样本精度或帧率代码可以复用当前解码器配置记录信息中的档次标识、级别标识、色度格式、样本精度或帧率代码。
[0435] S702、文件解封装设备对视频轨道进行解封装,得到序列头信息和视频位流。
[0436] S703、文件解封装设备根据所述序列头信息,对所述视频位流进行解码,得到解码后的视频。
[0437] 在一些实施例中,对于原始视频位流中包括多个重复的序列头的情况,本申请的文件封装设备将这多个重复序列头当作一个序列头,在视频轨道中携带这多个重复序列头中的一个序列头的相关信息。文件解封装设备对视频轨道进行解封装,得到的序列头信息为上述多个重复的序列头中一个序列头的相关信息,进而根据这一个序列头的相关信息对任意同步样本的位置开始解码,实现视频位流的任意解码,且避免了重复解码的问题,进而提高了解码效率。
[0438] 在一些实施例中,对于原始视频位流中包括多个不同的序列头的情况,本申请的文件解封装设备将这多个不同的序列头相关的信息放置在视频轨道的同一个位置,例如放置在视频轨道的头部。这样,文件解封装设备对视频轨迹进行解封装时,首先可以得到这多个不同的序列头的相关信息,进而根据这多个不同的序列头的相关信息,先判断文件解封装设备是否具备解码后续视频位流的能力。在确定文件解封装设备具有解码后续视频位流的能力后,根据上述多个不同的序列头的相关信息,对各序列头对应的视频文件进行分别解码,避免解码前端视频位流后,发现文件解封装设备不具有解码后端视频位流的能力,造成无效解码的问题产生,进而提高了视频解码效率和可靠性。
[0439] 下面针对视频轨道中所包括的内容不同,对上述S703涉及的具体解码过程进行介绍。
[0440] 在一些实施例中,若非重复序列头的个数N大于1时,则视频轨道还包括参考关系信息,该参考关系信息用于指示参考每个序列头的样本。
[0441] 基于此,上述S703包括如下S703‑A1至S703‑A3的步骤:
[0442] S703‑A1、文件解封装设备解封装视频轨道,得到参考关系信息。
[0443] 本申请实施例对上述参考关系信息在视频轨道中具体放置位置不做限制。
[0444] 在一些实施例中,为了便于解码,则将上述参考关系信息放置在视频轨道的头部。
[0445] 在一些实施例中,上述参考关系信息位于序列头依赖样本群组信息中,这样文件解封装设备可以通过解析序列头依赖样本群组信息,得到上述参考关系信息,进而获得参考每个序列头的样本。
[0446] S703‑A2、文件解封装设备针对N个序列头中的每个序列头,根据参考关系信息,确定参考序列头的样本。
[0447] 本申请的参考关系用于指示视频轨道中参考N个序列头中的每个序列头的样本,例如,N=2,参考关系信息指示视频轨道中参考序列头1的样本为索引号为1至100的样本,参考序列头2的样本为索引号为101至200的样本。
[0448] 在一些实施例中,参考关系信息包括参考每个序列头的样本的索引范围,此时,上述S703‑A2包括:根据参考序列头的样本的索引范围,确定参考序列头的样本。例如,参考序列头包括sample_index_min和sample_index_max分别指示参考该序列头的样本索引号范围的最小值和最大值,文件解封装设备根据sample_index_min和sample_index_max可以确定出参考该序列头的样本。
[0449] S703‑A3、文件解封装设备根据序列头对应的序列头信息,对参考序列头的样本进行解码,得到解码后的视频。
[0450] 例如,索引号为1至100的样本参考序列头1,进而文件解封装设备根据序列头1对应的序列头信息,例如根据序列头1的序列头语法元素信息对索引号为1至100的样本进行解码,得到索引号为1至100的帧图像。
[0451] 再例如,索引号为101至200的样本参考序列头2,进而文件解封装设备根据序列头2对应的序列头信息,例如根据序列头2的序列头语法元素信息对索引号为101至200的样本进行解码,得到索引号为101至200的帧图像。
[0452] 本实施例,当非重复序列头的个数N大于1时,文件封装设备通过在视频轨道中携带参考关系信息,该参考关系信息用于指示参考每个序列头的样本。这样文件解封装设备根据参考关系信息,准确确定不同的序列头对应的样本,进行实现对不同序列头对应的样本的准确解码,进一步提高了解码可靠性。
[0453] 在一些实施例中,若视频轨道包括主位流样本和知识图像样本时,则视频轨道还包括用于区分主位流样本和知识图像样本的样本区分信息。
[0454] 基于此,上述S703包括如下S703‑B1至S703‑B4的步骤:
[0455] S703‑B1、文件解封装设备解封装视频轨道,得到样本区分信息。
[0456] 本申请实施例对上述样本区分信息在视频轨道中具体放置位置不做限制。
[0457] 在一些实施例中,为了便于解码,则将上述样本区分信息放置在视频轨道的头部。
[0458] 在一些实施例中,样本区分信息位于知识图像样本群组信息中。这样,文件解封装设备通过解析知识图像样本群组信息,得到样本区分信息,进而获知该视频轨道中的主位流样本和知识图像样本。
[0459] S703‑B2、文件解封装设备根据样本区分信息,得到知识图像样本和主位流样本。
[0460] 可选的,样本区分信息包括主位流样本和知识图像样本中任意一类样本的索引范围。
[0461] 在一些实施例中,样本区分信息包括视频轨道中知识图像样本的索引范围。这样,文件解封装设备根据视频轨道中知识图像样本的索引范围,得到视频轨道中知识图像样本,将视频轨道中除知识图像样本之外的样本,确定为主位流样本。
[0462] S703‑B3、文件解封装设备根据知识图像样本对应的序列头信息,对知识图像样本进行解码,得到知识图像。
[0463] S703‑B4、文件解封装设备根据主位流样本对应的序列头信息和知识图像,对主位流样本进行解码,得到解码后的视频。
[0464] 在一些实施例中,知识图像样本和主位流样本对应的序列头不同,因此,在解码时,文件解封装设备根据知识图像样本对应的序列头信息,对知识图像样本进行解码,得到知识图像,根据主位流样本对应的序列头信息,对主位流样本进行解码,得到解码后的视频。
[0465] 在一些实施例中,主位流样本在解码时需要参考知识图像,因此,文件解封装设备根据主位流样本对应的序列头信息和已解码的知识图像,对主位流样本进行解码,得到解码后的视频。
[0466] 本申请实施例,当视频轨道包括主位流样本和知识图像样本时,文件封装设备通过在视频轨道中包括用于区分主位流样本和知识图像样本的样本区分信息。这样文件解封装设备获得视频轨道后,可以根据视频轨道中的样本区分信息,区分开视频轨道中的主位流样本和知识图像样本,并使用主位流样本和知识图像样本各自对应的序列头信息对主位流样本和知识图像样本分别进行解码,实现对主位流和知识图像位流的准确解码,进一步提高了解码效率和可靠性。
[0467] 在一些实施例中,若视频轨道中的至少一个样本在编码时依赖知识图像样本,则视频轨道还包括知识样本依赖信息,该知识样本依赖信息用于指示至少一个样本所依赖的知识图像样本所在的轨道信息。其中,知识样本依赖信息包括知识图像轨道指示信息,该知识图像轨道指示信息用于指示至少一个样本所依赖的知识图像样本是否位于视频轨道中。
[0468] 基于此,上述S703包括如下S703‑C1至S703‑C5的步骤:
[0469] S703‑C1、文件解封装设备解封装视频轨道,得到知识样本依赖信息。
[0470] 本申请实施例对上述知识样本依赖信息在视频轨道中的具体放置位置不做限制。
[0471] 在一些实施例中,上述知识样本依赖信息位于视频轨道的头部。
[0472] 在一些实施例中,知识样本依赖信息位于依赖知识样本的样本群组信息中。这样,文件解封装设备通过解码依赖知识样本的样本群组信息,得到知识样本依赖信息。
[0473] S703‑C2、文件解封装设备根据知识样本依赖信息中的知识图像轨道指示信息,确定至少一个样本所依赖的知识图像样本所在的目标轨道。
[0474] 例如,若知识图像轨道指示信息的取值为第一数值(例如1),则文件解封装设备将当前视频轨道确定为目标轨道,该第一数值用于指示至少一个样本所依赖的知识图像样本位于视频轨道。
[0475] 再例如,若知识图像轨道指示信息的取值为第二数值(例如0),则知识样本依赖信息还包括知识图像轨道标识,该知识图像轨道标识用于指示至少一个样本所依赖的知识图像样本所在的轨道的标识。文件解封装设备根据知识样本依赖信息所包括知识图像轨道标识,确定目标轨道。
[0476] S703‑C3、文件解封装设备对目标轨道进行解封装,得到至少一个样本所依赖的知识图像样本。
[0477] 在一些实施例中,若该目标轨道为当前视频轨道,则说明该视频轨道中包括知识图像样本和主位流样本,这样基于上述S703‑B1和S703‑B2的步骤,得到视频轨道中的知识图像样本。
[0478] 在一些实施例中,若上述目标轨道不是当前视频轨道,则知识样本依赖信息中除了包括知识图像轨道标识library_track_ID外,还包括知识图像样本在该知识图像轨道中的样本索引library_sample_index。这样,文件解封装设备可以根据知识图像轨道标识library_track_ID得到目标轨道,并根据知识图像轨道中的样本索引library_sample_index,得到至少一个样本所依赖的知识图像样本。
[0479] S703‑C4、文件解封装设备对至少一个样本所依赖的知识图像样本进行解码,得到至少一个样本所依赖的知识图像。
[0480] S703‑C5、文件解封装设备根据至少一个样本对应的序列头信息,以及至少一个样本所依赖的知识图像,对至少一个样本进行解码,得到解码后的视频。
[0481] 在对至少一个样本进行解码时,从至少一个样本对应的序列头信息中获得该至少一个样本解码所需的参数,并以知识图像为参考图像,对这至少一个样本进行解码,得到解码后的视频,其中具体具体过程可以参照已有的解码流程,在此不再赘述。
[0482] 本申请实施例,当若视频轨道中的至少一个样本在编码时依赖知识图像样本时,文件封装设备在视频轨道中包括知识图像轨道指示信息,该知识图像轨道指示信息用于指示至少一个样本所依赖的知识图像样本是否位于视频轨道中,当知识图像轨道为当前视频轨道时,则不需指示知识图像轨道的标识和知识样本在该知识图像轨道中的标识,进而在保证准确解码的同时,减少了传输码字。
[0483] 进一步的,为了说明本申请实施例的技术方案,下面将本申请实施例的方法应用到不同的场景中进行说明。
[0484] 应用场景1:对包含重复序列头的主位流进行文件封装。
[0485] 步骤11,文件封装设备获取主位流,该主位流中仅存在一个非重复的序列头;
[0486] 步骤12,文件封装设备对主位流进行封装,得到视频轨道,该视频轨道中包括序列头信息。
[0487] 可选的,该序列头信息位于视频轨道的解码器配置记录中。
[0488] 解码器配置记录包括如下内容:general_profile_id、general_level_id、general_chroma_format、general_sample_precision、general_frame_rate_code,其中general_frame_rate_code参数根据序列头中的相关参数进行赋值;
[0489] library_dependency=00,表明该视频轨道是主位流轨道且不依赖知识图像轨道;
[0490] temporal_layer_num根据主位流实际情况取值,假设取值为0,表示主位流不存在时域分层;
[0491] general_field_coded_flag=0,表示该视频轨道对应的码流以帧为单位进行编码;
[0492] sequence_header_num=1;
[0493] sequence_header_length根据序列头实际情况取值,假设为24。
[0494] 步骤13,文件封装设备将视频轨道发送给文件解封装设备。
[0495] 步骤14,文件解封装设备解析视频轨道中的解码器配置记录中的序列头信息,再结合序列头中的参数信息对视频轨道中的样本进行解码。
[0496] 可选的,文件解封装设备可以根据解析出的序列头信息,从视频轨道的任意同步样本的位置开始解码。
[0497] 应用场景2:对包含多个不同序列头的主位流进行文件封装。
[0498] 步骤21,文件封装设备获取主位流,该主位流中存在2个非重复的序列头;
[0499] 步骤22,文件封装设备对主位流进行封装,得到视频轨道,该视频轨道中包括序列头信息。
[0500] 可选的,该序列头信息位于视频轨道的解码器配置记录中。
[0501] 解码器配置记录包括如下内容:
[0502] general_profile_id、general_level_id为2个序列头中相应参数的最大值。文件解封装设备可以根据该字段判断解码器是否具备相应能力;
[0503] general_frame_rate_code指示该视频轨道所有样本的帧率信息。文件解封装设备可以根据该字段判相应的解码器能力要求;
[0504] general_chroma_format、general_sample_precision参数根据序列头中的相关参数进行赋值;
[0505] library_dependency=00,表明该视频轨道是主位流轨道且不依赖知识图像轨道;
[0506] temporal_layer_num根据主位流实际情况取值,假设取值为0,表示主位流不存在时域分层;
[0507] general_field_coded_flag=0,表示该视频轨道对应的码流以帧为单位进行编码;
[0508] sequence_header_num=2;{sequence_header_length=24;sequence_header_id=100},{sequence_header_length=15;sequence_header_id=200}。
[0509] 步骤22,文件封装设备根据视频轨道中样本解码时参考的序列头,定义相应的序列头依赖样本群组。将1~100帧分为一个群组,SequenceHeaderDependencySampleGroupEntry中的sequence_header_id=100。将101~200帧分为一个群组,SequenceHeaderDependencySampleGroupEntry中的sequence_header_id=200。
[0510] 步骤23,文件封装设备将视频轨道发送给文件解封装设备。
[0511] 步骤24,文件解封装设备解析视频轨道中的解码器配置记录中的序列头信息,再结合序列头中的参数信息对视频轨道中的样本进行解码。
[0512] 具体的,在解码1~100帧样本时,参考标识符为100的序列头;在解码101~200帧样本时,参考标识符为200的序列头。
[0513] 可选的,文件解封装设备可以根据解析出的序列头信息,从视频轨道的任意同步样本的位置开始解码。
[0514] 应用场景3:对主位流+知识图像位流进行封装。
[0515] 步骤31,文件封装设备获取视频位流,该视频位流中包括主位流和知识图像位流;
[0516] 步骤32,文件封装设备对视频位流进行封装,得到视频轨道,该视频轨道中包括序列头信息。
[0517] 可选的,该序列头信息位于视频轨道的解码器配置记录中。
[0518] 解码器配置记录包括如下内容:
[0519] library_dependency=11。
[0520] a)若主位流序列头中duplicate_sequence_header_flag字段取值为1,则sequence_header_num取值应当为1,且当前解码器配置记录包含的序列头应当为知识图像位流的序列头。此时general_profile_id、general_level_id、general_chroma_format、general_sample_precision、general_frame_rate_code参数根据知识图像位流序列头中的相关参数进行赋值。temporal_layer_num根据主位流实际情况取值,假设取值为0,表示主位流不存在时域分层。
[0521] general_field_coded_flag=0,表示该轨道对应的码流以帧为单位进行编码。
[0522] sequence_header_num=1;sequence_header_length根据序列头实际情况取值,假设为24。
[0523] b)若主位流序列头中duplicate_sequence_header_flag字段取值为0,则sequence_header_num取值应当为2。此时general_profile_id、general_level_id为2个序列头中相应参数的最大值。文件解封装设备可以根据该字段判断解码器是否具备相应能力。
[0524] general_frame_rate_code指示该视频轨道所有样本的帧率信息。文件解封装设备可以根据该字段判相应的解码器能力要求。
[0525] general_chroma_format、general_sample_precision参数根据序列头中的相关参数进行赋值。temporal_layer_num根据主位流实际情况取值,假设取值为0,表示主位流不存在时域分层。
[0526] general_field_coded_flag=0,表示该视频轨道对应的码流以帧为单位进行编码。
[0527] sequence_header_num=2;{sequence_header_length=24;sequence_header_id=100},{sequence_header_length=15;sequence_header_id=200}。
[0528] 步骤33,在对序列头的参考上,文件封装设备根据主位流和知识图像位流是否使用相同的序列头,处理方法与上述场景1和场景2类似。
[0529] 步骤34,文件封装设备定义知识图像样本群组,标识轨道中的知识图像样本。非知识图像样本组中的样本即为主位流的样本。
[0530] 步骤35,文件封装设备定义依赖知识样本的样本群组,此时default_library_track=1,无需指示知识图像轨道的ID,因为当前视频轨道即为包含知识图像的轨道。
[0531] 步骤36,文件封装设备将视频轨道发送给文件解封装设备。
[0532] 步骤37,文件解封装设备收到视频轨道后,解析解码器配置记录中的序列头信息,再结合序列头中的参数信息对视频轨道中的样本进行解码。
[0533] a)若sequence_header_num=1,则视频轨道中所有样本解码都参考同一个序列头。
[0534] b)若sequence_header_num=2,则在解码知识图像帧时参考标识符为100的序列头;在解码主位流帧时参考标识符为200的序列头,且根据依赖知识样本的样本群组中的信息,判断是否需要参考特定的知识图像帧。
[0535] 同时,文件解封装设备通过知识图像样本群组可以标识知识图像帧和主位流帧,只在显示设备上输出主位流帧,不输出知识图像帧。
[0536] 应理解,图6至图7仅为本申请的示例,不应理解为对本申请的限制。
[0537] 以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。
[0538] 上文结合图6至图7,详细描述了本申请的方法实施例,下文详细描述本申请的装置实施例。
[0539] 图8为本申请一实施例提供的媒体文件封装装置的结构示意图,该装置10应用于文件封装设备,该装置10包括:
[0540] 获取单元11,用于获取视频位流,所述视频位流包括至少一个序列头;
[0541] 确定单元12,用于根据所述至少一个序列头,确定所述视频位流对应的序列头信息;
[0542] 封装单元13,用于对所述视频位流进行封装,得到视频轨道,所述视频轨道中包括所述视频位流中非重复的序列头对应的序列头信息。
[0543] 在一些实施例中,所述序列头信息包括非重复序列头的个数或重复序列头的个数。
[0544] 在一些实施例中,确定单元12,具体用于若所述视频位流包括主位流和知识位流,且所述主位流的序列头中除知识位流标志、知识图像允许标志和知识位流重复序列头标志外的所有语法元素的值均与所述主位流所参考的知识位流的序列头中对应语法元素的值相同时,则确定所述视频位流对应的非重复序列头的个数为1,且所述非重复序列头为所述知识位流的序列头。
[0545] 在一些实施例中,所述序列头信息还包括档次标识、级别标识、色度格式、样本精度、帧率代码中的至少一个;
[0546] 若所述非重复序列头的个数N大于1时,则所述档次标识字段的取值为N个序列头(即N个非重复序列头)中档次标识字段的最大值;或者,
[0547] 若所述非重复序列头的个数N大于1时,则所述级别标识字段的取值为N个序列头(即N个非重复序列头)中级别标识字段的最大值;或者,
[0548] 若所述非重复序列头的个数N大于1时,则N个序列头(即N个非重复序列头)中的色度格式字段的取值相同;或者,
[0549] 若所述非重复序列头的个数N大于1时,则所述样本精度字段取值为N个序列头(即N个非重复序列头)中样本精度字段的最大值;或者,
[0550] 若所述非重复序列头的个数N大于1时,则所述帧率代码字段取值基于所述视频轨道中所有样本集合的帧率信息确定。
[0551] 在一些实施例中,所述序列头信息还包括序列头的长度、序列头的标识、序列头语法元素信息、所述视频位流对应的编码标志中的至少一个,所述编码标志用于指示所述视频位流在编码时所采用的编码扫描方式。
[0552] 可选的,所述序列头信息位于所述视频轨道的数据入口处。
[0553] 可选的,所述序列头信息位于当前解码器配置记录信息中。
[0554] 在一些实施例中,若所述非重复序列头的个数N大于1时,则所述视频轨道还包括参考关系信息,所述参考关系信息用于指示参考每个序列头的样本。
[0555] 可选的,所述参考关系信息包括参考每个序列头的样本的索引范围。
[0556] 可选的,所述参考关系信息位于序列头依赖样本群组信息中。
[0557] 在一些实施例中,若所述视频轨道包括主位流样本和知识图像样本时,则所述视频轨道还包括用于区分所述主位流样本和所述知识图像样本的样本区分信息。
[0558] 可选的,所述样本区分信息包括所述主位流样本和所述知识图像样本中任意一类样本的索引范围。
[0559] 可选的,所述样本区分信息位于知识图像样本群组信息中。
[0560] 在一些实施例中,若所述视频轨道中的至少一个样本在编码时依赖知识图像样本,则所述视频轨道还包括知识样本依赖信息,所述知识样本依赖信息用于指示所述至少一个样本所依赖的知识图像样本所在的轨道信息,
[0561] 所述知识样本依赖信息包括知识图像轨道指示信息,所述知识图像轨道指示信息用于指示所述至少一个样本所依赖的知识图像样本是否位于所述视频轨道中。
[0562] 在一些实施例中,若所述知识图像轨道指示信息的取值为第一数值时,则指示所述至少一个样本所依赖的知识图像样本位于所述视频轨道中;若所述知识图像轨道指示信息的取值为第二数值时,则所述知识样本依赖信息还包括知识图像轨道标识,所述知识图像轨道标识用于指示所述至少一个样本所依赖的知识图像样本所在的轨道的标识。
[0563] 可选的,所述知识样本依赖信息位于依赖知识样本的样本群组信息中。
[0564] 应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图8所示的装置10可以执行文件封装设备对应的方法实施例,并且装置8中的各个模块的前述和其它操作和/或功能分别为了实现文件封装设备对应的方法实施例,为了简洁,在此不再赘述。
[0565] 图9为本申请一实施例提供的媒体文件解封装装置的结构示意图,该装置20应用于文件解封装设备,该装置20包括:
[0566] 获取单元21,用于获取视频轨道,所述视频轨道中包括轨道头和视频位流,所述轨道头中包括所述视频位流中非重复的序列头对应的序列头信息;
[0567] 解封装单元22,用于对所述视频轨道进行解封装,得到所述序列头信息和所述视频位流;
[0568] 解码单元23,用于根据所述序列头信息,对所述视频位流进行解码,得到解码后的视频。
[0569] 在一些实施例中,所述序列头信息包括非重复序列头的个数或重复序列头个数。
[0570] 在一些实施例中,若所述视频轨道既包含主位流,又包含知识位流,且所述主位流的序列头中除知识位流标志、知识图像允许标志和知识位流重复序列头标志外的所有语法元素的值均与所述主位流所参考的知识位流的序列头中对应语法元素的值相同时,则所述序列头信息所包括的非重复序列头个数为1,且所述非重复序列头为所述知识位流的序列头。
[0571] 在一些实施例中,所述序列头信息还包括档次标识、级别标识、色度格式、样本精度、帧率代码中的至少一个;
[0572] 若所述非重复序列头的个数N大于1时,则所述档次标识字段的取值为N个序列头中档次标识字段的最大值;或者,
[0573] 若所述非重复序列头的个数N大于1时,则所述级别标识字段的取值为N个序列头中级别标识字段的最大值;或者,
[0574] 若所述非重复序列头的个数N大于1时,则N个序列头中的色度格式字段的取值相同;或者,
[0575] 若所述非重复序列头的个数N大于1时,则所述样本精度字段取值为N个序列头中样本精度字段的最大值;或者,
[0576] 若所述非重复序列头的个数N大于1时,则所述帧率代码字段取值基于所述视频轨道中所有样本集合的帧率信息确定。
[0577] 在一些实施例中,所述序列头信息还包括序列头的长度、序列头的标识、序列头语法元素信息、所述视频位流对应的编码标志中的至少一个,所述编码标志用于指示所述视频位流在编码时所采用的编码扫描方式。
[0578] 可选的,所述序列头信息位于所述视频轨道的数据入口处。
[0579] 可选的,所述序列头信息位于当前解码器配置记录信息中。
[0580] 在一些实施例中,若所述非重复序列头的个数N大于1时,则所述视频轨道还包括参考关系信息,所述参考关系信息用于指示参考每个序列头的样本;解码单元23,具体用于解封装所述视频轨道,得到所述参考关系信息;针对N个序列头中的每个序列头,根据所述参考关系信息,确定参考所述序列头的样本;根据所述序列头对应的序列头信息,对参考所述序列头的样本进行解码,得到解码后的视频。
[0581] 在一些实施例中,所述参考关系信息包括参考每个序列头的样本的索引范围;则解码单元23,具体用于根据参考所述序列头的样本的索引范围,确定参考所述序列头的样本。
[0582] 可选的,所述参考关系信息位于序列头依赖样本群组信息中。
[0583] 在一些实施例中,若所述视频轨道包括主位流样本和知识图像样本时,则所述视频轨道还包括用于区分所述主位流样本和所述知识图像样本的样本区分信息;解码单元23,用于解封装所述视频轨道,得到所述样本区分信息;根据所述样本区分信息,得到所述知识图像样本和所述主位流样本;根据所述知识图像样本对应的序列头信息,对所述知识图像样本进行解码,得到知识图像;根据所述主位流样本对应的序列头信息和所述知识图像,对所述主位流样本进行解码,得到解码后的视频。
[0584] 可选的,所述样本区分信息包括所述主位流样本和所述知识图像样本中任意一类样本的索引范围。
[0585] 可选的,所述样本区分信息位于知识图像样本群组信息中。
[0586] 在一些实施例中,若所述视频轨道中的至少一个样本在编码时依赖知识图像样本,则所述视频轨道还包括知识样本依赖信息,所述知识样本依赖信息用于指示所述至少一个样本所依赖的知识图像样本所在的轨道信息,所述知识样本依赖信息包括知识图像轨道指示信息,所述知识图像轨道指示信息用于指示所述至少一个样本所依赖的知识图像样本是否位于所述视频轨道中;
[0587] 解码单元23,用于解封装所述视频轨道,得到所述知识样本依赖信息;根据所述知识样本依赖信息中的知识图像轨道指示信息,确定所述至少一个样本所依赖的知识图像样本所在的目标轨道;对所述目标轨道进行解封装,得到所述至少一个样本所依赖的知识图像样本;对所述至少一个样本所依赖的知识图像样本进行解码,得到所述至少一个样本所依赖的知识图像;根据所述至少一个样本对应的序列头信息,以及所述至少一个样本所依赖的知识图像,对所述至少一个样本进行解码,得到解码后的视频。
[0588] 在一些实施例中,解码单元23,用于若所述知识图像轨道指示信息的取值为第一数值,则将所述视频轨道确定为所述目标轨道,所述第一数值用于指示所述至少一个样本所依赖的知识图像样本位于所述视频轨道;若所述知识图像轨道指示信息的取值为第二数值,则根据所述知识样本依赖信息所包括知识图像轨道标识,确定所述目标轨道,所述知识图像轨道标识用于指示所述至少一个样本所依赖的知识图像样本所在的轨道的标识。
[0589] 可选的,所述知识样本依赖信息位于依赖知识样本的样本群组信息中。
[0590] 应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图9所示的装置20可以执行服务器对应的方法实施例,并且装置20中的各个模块的前述和其它操作和/或功能分别为了实现文件解封装设备对应的方法实施例,为了简洁,在此不再赘述。
[0591] 上文中结合附图从功能模块的角度描述了本申请实施例的装置。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
[0592] 图10是本申请实施例提供的电子设备的示意性框图,该电子设备可以为上述的文件封装设备、或文件解封装设备,或者该电子设备具有文件封装设备和文件解封装设备的功能。
[0593] 如图10所示,该电子设备40可包括:
[0594] 存储器41和存储器42,该存储器41用于存储计算机程序,并将该程序代码传输给该存储器42。换言之,该存储器42可以从存储器41中调用并运行计算机程序,以实现本申请实施例中的方法。
[0595] 例如,该存储器42可用于根据该计算机程序中的指令执行上述方法实施例。
[0596] 在本申请的一些实施例中,该存储器42可以包括但不限于:
[0597] 通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
[0598] 在本申请的一些实施例中,该存储器41包括但不限于:
[0599] 易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read‑Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
[0600] 在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器41中,并由该存储器42执行,以完成本申请提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该视频制作设备中的执行过程。
[0601] 如图10所示,该电子设备40还可包括:
[0602] 收发器40,该收发器43可连接至该存储器42或存储器41。
[0603] 其中,存储器42可以控制该收发器43与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器43可以包括发射机和接收机。收发器43还可以进一步包括天线,天线的数量可以为一个或多个。
[0604] 应当理解,该视频制作设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
[0605] 本申请还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
[0606] 当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
[0607] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0608] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0609] 作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
[0610] 以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。