本申请要求下列每一项的优先权,并且因此为所有目的将其以全文引用的方式并入本文中:(1)2007年4月18日提交(代理人案号PU070101)的美国临时申请序号No.60/923,993,题为“SupplementalSequence Parameter Set for Scalable Video Coding or Multi-view VideoCoding”以及(2)2007年6月28日提交(代理人案号PA070032)的美国专利申请序号No.11/824,006,题为“Supplemental SequenceParameter Set for Scalable Video Coding or Multi-view Video Coding”。
具体实施方式
今天存在多种可以根据不同层和/或简档来对视频数据进行编码的视频编码标准。其中,可以引用H.264/MPEG-4AVC(“AVC标准”),也称作国际标准化组织/国际电子技术委员会(ISO/IEC)运动图像专家组-4(MPEG-4)第10部分高级视频编码(AVC)标准/国际电信联盟电信分部(ITU-T)H.264建议。此外,存在对于AVC标准的扩展。第一个这种扩展是可缩放视频编码(“SVC”)扩展(附录G),称作H.264/MPEG-4AVC,可缩放视频编码扩展(“SVC扩展”)。第二个这种扩展是多视点视频编码(“MVC”)扩展(附录H),称作H.264/MPEG-4AVC,MVC扩展(“MVC扩展”)。
本公开中描述的至少一个实现方式可以与AVC标准以及SVC和MVC扩展一起使用。该实现方式提供具有与SPS NAL单元不同的NAL单元类型的补充(“SUP”)序列参数集(“SPS”)网络抽象层(“NAL”)单元。SPS单元典型地包括(但不是必须包括)用于至少单个层的信息。此外,SUP SPS NAL单元包括用于至少一个附加层的依赖于层的信息。因此,通过访问SPS和SUP SPS单元,解码器具有对比特流进行解码所需的可用特定(典型地为全部)依赖于层的信息。
在AVC系统中使用该实现方式,不需要传输SUP SPS NAL单元,并且可以传输单层SPS NAL单元(如下所述)。在SVC(或者MVC)系统中使用该实现方式,除了SPS NAL单元之外,可以传输用于所需附加层(或者视点)的SUP SPS NAL单元。在包括AVC兼容解码器和SVC兼容(或者MVC兼容)解码器的系统中使用该实现方式,AVC兼容解码器可以通过检测NAL单元类型来忽略SUP SPS NAL单元。在每一种情况中,可以实现高效率和兼容性。
上述实现方式还对施加下述要求的系统(标准或其它)提供益处:要求特定层共享首部信息(例如,SPS或者在SPS中典型携带的特定信息)。例如,如果基础层及其合成时间层需要共享SPS,则不能用共享的SPS来传输依赖于层的信息。然而,SUP SPS提供了一种用于传输依赖于层的信息的机制。
各种实现方式的SUP SPS还提供了高效的优点:SUP SPS不需要包括并且因此不需要重复SPS中的所有参数。SUP SPS将典型地专注于依赖于层的参数。然而,各种实现方式包括SUP SPS结构,该结构包括不依赖于层的参数,或者甚至重复全部SPS结构。
各种实现方式涉及SVC扩展。SVC扩展提出根据多个空间等级、时间等级以及质量等级的视频数据的传输。对于一个空间等级,可以根据多个时间等级来进行编码,对于每一个时间等级,可以根据多个质量等级来进行编码。因此,当定义有m个空间等级、n个时间等级、以及O个质量等级时,可以根据m*n*O个不同组合来对视频数据进行编码。将这些组合称作层,或者互操作性点(“IOP”)。根据解码器(也称作接收机或者客户端)的能力,可以传输不同层,多至与最大客户端能力相对应的特定层。
如本文所使用的,“依赖于层”的信息是指具体与单一层相关的信息。即,顾名思义,该信息依赖于特定层。这种信息不一定随层与层而不同,但是典型地对于每一层单独提供这种信息。
如本文所使用的,“高等级语法”是指在比特流中出现的、在分级中位于宏块层之上的语法。例如,如本文所使用的,高等级语法可以指(但不限于):片首部等级、补充增强信息(SEI)等级、画面参数集(PPS)等级、序列参数集(SPS)等级、以及网络抽象层(NAL)单元首部等级的语法。
参见图1,由参考数字100来总体指示示例SVC编码器。SVC编码器100还可以用于AVC编码,即用于单层(例如基础层)。此外,如本领域普通技术人员将理解的,SVC编码器100可以用于MVC编码。例如,SVC编码器100的各种组件,或者这些组件的变型,可以在对多视点进行编码中使用。
时间分解模块142的第一输出以信号通信方式与帧内块的帧内预测模块146的第一输入连接。时间分解模块142的第二输出以信号通信方式与运动编码模块144的第一输入连接。帧内块的帧内预测模块146的输出以信号通信方式与变换/熵编码器(信噪比(SNR)可缩放)149的输入连接。变换/熵编码器149的第一输出以信号通信方式与复用器170的第一输入连接。
时间分解模块132的第一输出以信号通信方式与帧内块的帧内预测模块136的第一输入连接。时间分解模块132的第二输出以信号通信方式与运动编码模块134的第一输入连接。帧内块的帧内预测模块136的输出以信号通信方式与变换/熵编码器(信噪比(SNR)可缩放)139的输入连接。变换/熵编码器139的第一输出以信号通信方式与复用器170的第一输入连接。
变换/熵编码器149的第二输出以信号通信方式与2D空间插值模块138的输入连接。2D空间插值模块138的输出以信号通信方式与帧内块的帧内预测模块136的第二输入连接。运动编码模块144的第二输出以信号通信方式与运动编码模块134的输入连接。
时间分解模块122的第一输出以信号通信方式与帧内预测器126的第一输入连接。时间分解模块122的第二输出以信号通信方式与运动编码模块124的第一输入连接。帧内预测器126的输出以信号通信方式与变换/熵编码器(信噪比(SNR)可缩放)129的输入连接。变换/熵编码器129的第一输出以信号通信方式与复用器170的第一输入连接。
变换/熵编码器139的第二输出以信号通信方式与2D空间插值模块128的输入连接。2D空间插值模块128的输出以信号通信方式与帧内预测器126的第二输入连接。运动编码模块134的第二输出以信号通信方式与运动编码模块124的输入连接。
运动编码模块124的第一输出、运动编码模块134的第一输出、以及运动编码模块144的第一输出均以信号通信方式与复用器170的第二输入连接。
2D空间抽取模块104的第一输出以信号通信方式与时间分解模块132的输入连接。2D空间抽取模块104的第二输出以信号通信方式与时间分解模块142的输入连接。
时间分解模块122的输入以及2D空间抽取模块104的输入可用作编码器100的输入,用于接收输入视频102。
复用器170的输出可用作编码器100的输出,用于提供比特流180。
在编码器100的核心编码器部分187中包括:时间分解模块122、时间分解模块132、时间分解模块142、运动编码模块124、运动编码模块134、运动编码模块144、帧内预测器126、帧内预测器136、帧内预测器146、变换/熵编码器129、变换/熵编码器139、变换/熵编码器149、2D空间插值模块128、以及2D空间插值模块138。
图1包括三个核心编码器187。在图中所示的实现方式中,最底部的核心编码器187可以对基础层进行编码,中间和上部的核心编码器187对较高层进行编码。
转到图2,由参考数字200总体指示示例SVC解码器。SVC解码器200还可以用于AVC解码,即用于单一视点。此外,本领域普通技术人员将理解,SVC解码器200可以用于MVC解码。例如,SVC解码器200的各种组件,或者这些组件的不同变型可以在对多个视点的解码中使用。
注意,可以将编码器100和解码器200,以及本公开中讨论的其它编码器和解码器,配置为执行贯穿本公开示出的各种方法。除了执行编码操作之外,为了对解码器的预期行动进行镜像,本公开中描述的编码器可以执行重构过程期间的各种解码操作。例如,为了产生编码视频数据的重构以预测附加视频数据,编码器可以对SUP SPS单元进行解码以对编码的视频数据进行解码。因此,编码器可以执行由解码器执行的实质上所有操作。
解复用器202的输入可用作对可缩放视频解码器200的输入,用于接收可缩放比特流。解复用器202的第一输出以信号通信方式与空间反变换SNR可缩放熵解码器204的输入连接。空间反变换SNR可缩放熵解码器204的第一输出以信号通信方式与预测模块206的第一输入连接。预测模块206的输出以信号通信方式与组合器230的第一输入连接。
空间反变换SNR可缩放熵解码器204的第二输出以信号通信方式与运动向量(MV)解码器210的第一输入连接。MV解码器210的输出以信号通信方式与运动补偿器232的输入连接。运动补偿器232的输出以信号通信方式与组合器230的第二输入连接。
解复用器202的第二输出以信号通信方式与空间反变换SNR可缩放熵解码器212的输入连接。空间反变换SNR可缩放熵解码器212的第一输出以信号通信方式与预测模块214的第一输入连接。预测模块214的第一输出以信号通信方式与插值模块216的输入连接。插值模块216的输出以信号通信方式与预测模块206的第二输入连接。预测模块214的第二输出以信号通信方式与组合器240的第一输入连接。
空间反变换SNR可缩放熵解码器212的第二输出以信号通信方式与MV解码器220的第一输入连接。MV解码器220的第一输出以信号通信方式与MV解码器210的第二输入连接。MV解码器220的第二输出以信号通信方式与运动补偿器242的输入连接。运动补偿器242的输出以信号通信方式与组合器240的第二输入连接。
解复用器202的第三输出以信号通信方式与空间反变换SNR可缩放熵解码器222的输入连接。空间反变换SNR可缩放熵解码器222的第一输出以信号通信方式与预测模块224的输入连接。预测模块224的第一输出以信号通信方式与插值模块226的输入连接。插值模块226的输出以信号通信方式与预测模块214的第二输入连接。
预测模块224的第二输出以信号通信方式与组合器250的第一输入连接。空间反变换SNR可缩放熵解码器222的第二输出以信号通信方式与MV解码器230的输入连接。MV解码器230的第一输出以信号通信方式与MV解码器220的第二输入连接。MV解码器230的第二输出以信号通信方式与运动补偿器252的输入连接。运动补偿器252的输出以信号通信方式与组合器250的第二输入连接。
组合器250的输出可用作解码器200的输出,用于输出层0信号。组合器240的输出可用作解码器200的输出,用于输出层1信号。组合器230的输出可用作解码器200的输出,用于输出层2信号。
参见图1a,由参考数字2100来总体指示示例AVC编码器。AVC编码器2100可以用于例如对单一层(例如,基础层)进行编码。
视频编码器2100包括帧排序缓冲器2110,缓冲器2110具有与组合器2185的非反相输入进行信号通信的输出。组合器2185的输出以信号通信方式与变换器和量化器2125的第一输入连接。变换器和量化器2125的输出以信号通信方式与熵编码器2145的第一输入以及反变换器和反量化器2150的第一输入连接。熵编码器2145的输出以信号通信方式与组合器2190的第一非反相输入连接。组合器2190的输出以信号通信方式与输出缓冲器2135的第一输入连接。
编码器控制器2105的第一输出以信号通信方式与帧排序缓冲器2110的第二输入、反变换器和反量化器2150的第二输入、画面类型判定模块2115的输入、宏块类型(MB类型)判定模块2120的输入、帧内预测模块2160的第二输入、解块滤波器2165的第二输入、运动补偿器2170的第一输入、运动估计器2175的第一输入、以及参考画面缓冲器2180的第二输入相连接。
编码器控制器2105的第二输出以信号通信方式与补充增强信息(“SEI”)插入器2130的第一输入、变换器和量化器2125的第二输入、熵编码器2145的第二输入、输出缓冲器2135的第二输入、序列参数集(SPS)和画面参数集(PPS)插入器2140的输入相连接。
图像类型判定模块2115的第一输出以信号通信方式与帧排序缓冲器2110的第三输入连接。图像类型判定模块2115的第二输出以信号通信方式与宏块类型判定模块2120的第二输入连接。
序列参数集(“SPS”)和画面参数集(“PPS”)插入器2140的输出以信号通信方式与组合器2190的第三非反相输入连接。SEI插入器2130的输出以信号通信方式与组合器2190的第二非反相输入连接。
反量化器和反变换器2150的输出以信号通信方式与组合器2127的第一非反相输入连接。组合器2127的输出以信号通信方式与帧内预测模块2160的第一输入以及解块滤波器2165的第一输入连接。解块滤波器2165的输出以信号通信方式与参考画面缓冲器2180的第一输入连接。参考图像缓冲器2180的输出以信号通信方式与运动估计器2175的第二输入以及运动补偿器2170的第一输入连接。运动估计器2175的第一输出以信号通信方式与运动补偿器2170的第二输入连接。运动估计器2175的第二输出以信号通信方式与熵编码器2145的第三输入连接。
运动补偿器2170的输出以信号通信方式与开关2197的第一输入连接。帧内预测模块2160的输出以信号通信方式与开关2197的第二输入连接。宏块类型判定模块2120的输出以信号通信方式与开关2197的第三输入连接,以向开关2197提供控制输入。开关2197的输出以信号通信方式与组合器2127的第二非反相输入以及组合器2185的反相输入连接。
帧排序缓冲器2110以及编码器控制器2105的输入可用作编码器2100的输入,用于接收输入画面2101。此外,SEI插入器2130的输入可用作编码器2100的输入,用于接收元数据。输出缓冲器2135的输出可用作编码器2100的输出,用于输出比特流。
参见图2a,由参考数字2200来总体指示能够根据MPEG-4 AVC标准来执行视频解码的视频解码器。
视频解码器2200包括输入缓冲器2210,缓冲器2210具有与熵解码器2245的第一输入以信号通信方式连接的输出。熵解码器2245的第一输出以信号通信方式与反变换器和反量化器2250的第一输入连接。反变换器和反量化器2250的输出以信号通信方式与组合器2225的第二非反相输入连接。组合器2225的输出以信号通信方式与解块滤波器2265的第二输入和帧内预测模块2260的第一输入连接。解块滤波器2265的第二输出以信号通信方式与参考画面缓冲器2280的第一输入连接。参考画面缓冲器2280的输出以信号通信方式与运动补偿器2270的第二输入连接。
熵解码器2245的第二输出以信号通信方式与运动补偿器2270的第三输入以及解块滤波器2265的第一输入连接。熵解码器2245的第三输出以信号通信方式与解码器控制器2205的输入连接。解码器控制器2205的第一输出以信号通信方式与熵解码器2245的第二输入连接。解码器控制器2205的第二输出以信号通信方式与反变换器和反量化器2250的第二输入连接。解码器控制器2205的第三输出以信号通信方式与解块滤波器2265的第三输入连接。解码器控制器2205的第四输出以信号通信方式与帧内预测模块2260的第二输入、运动补偿器2270的第一输入以及参考画面缓冲器2280的第二输入相连接。
运动补偿器2270的输出以信号通信方式与开关2297的第一输入连接。帧内预测模块2260的输出以信号通信方式与开关2297的第二输入连接。开关2297的输出以信号通信方式与组合器2225的第一非反相输入连接。
输入缓冲器2210的输入可用作解码器2200的输入,用于接收输入比特流。解块滤波器2265的第一输出可用作解码器2200的输出,用于输出输出画面。
参见图3,示出了单层SPS 300的结构。SPS是一般而言包含语法元素的语法结构,所述语法元素应用于零个或者更多整个编码的视频序列。在SVC扩展中,SPS中传递的一些语法元素的值是依赖于层的。这些依赖于层的语法元素包括但不限于:定时信息、HRD(代表“假定参考解码器”)参数、以及比特流限制信息。HRD参数可以包括例如:缓冲器大小、最大比特率以及初始延迟的指示符。HRD参数可以例如允许接收系统验证接收比特流的完整性和/或确定接收系统(例如,解码器)是否能够对比特流进行解码。因此,系统可以针对每一层提供前述语法元素的传输。
单层SPS 300包括提供SPS的标识符的SPS-ID 310。单层SPS 300还包括用于单一层的VUI(代表视频可用性信息)参数320。VUI参数包括用于单一层(例如,基础层)的HRD参数330。单层SPS 300还可以包括附加参数340,尽管实现方式不需要包括任何附加参数340。
参见图4,数据流400的方框视图示出了单层SPS 300的典型使用。在AVC标准中,例如,典型的数据流可以包括SPS单元、提供用于特定画面的参数的多个PPS(画面参数序列)单元,以及用于编码画面数据的多个单元,以及其它成分。在图4中示出了这种总体框架,其包括SPS 300、PPS-1410、包括编码画面1数据的一个或者更多单元420、PPS-2430、以及包括编码画面2数据的一个或者更多单元440。PPS-1410包括用于编码画面1数据420的参数,PPS-2430包括用于编码画面2数据440的参数。
编码画面1数据420以及编码画面2数据440均与特定SPS(在图4的实现方式中为SPS 300)相关联。如现在解释的,这是通过使用指针来实现的。编码图像1数据420包括PPS-ID(图中未示出),该PPS-ID标识PPS-1410,如箭头450所示。可以在例如片首部中存储该PPS-ID。编码图像2数据440包括PPS-ID(图中未示出),该PPS-ID标识PPS-2430,如箭头460所示。PPS-1410和PPS-2430均包括SPS-ID(图中未示出),该SPS-ID标识SPS 300,如箭头470和480分别所示。
参见图5,示出了SUP SPS 500的结构。SUP SPS 500包括SPS ID510、包括HRD参数530(该参数用于称为“(D2,T2,Q2)”的单一附加层)在内的VUI 520、以及可选的附加参数540。“D2,T2,Q2”是指具有空间(D)等级2、时间(T)等级2、以及质量(Q)等级2的第二层。
注意,可以使用各种编号方案来指代层。在一个编号方案中,基础层具有值为0,x,0的D,T,Q,意味着空间等级为零、任何时间等级、以及质量等级为零。在该编号方案中,增强层具有D,T,Q,其中D或者Q大于零。
SUP SPS 500的使用允许例如系统使用仅包括用于单一层的参数在内的SPS结构,或者允许系统使用不包括任何依赖于层的信息在内的SPS结构。这样的系统可以为基础层之上的每一个附加层创建单独的SUP SPS。附加层可以标识其通过使用SPS ID 510来关联的SPS。显然,多个层可以通过在其相应的SUP SPS单元中使用共同的SPS ID来共享单一SPS。
参见图6,示出了SPS单元605和多个SUP SPS单元610和620之间的组织分级600。将SUP SPS单元610和620示为单层SUP SPS单元,但是其它实现方式可以在使用单层SUP SPS单元之外或者作为替代,使用一个或者更多的多层SUP SPS单元。在典型场景中,分级600示出了多个SUP SPS单元可以与单一SPS单元相关联。当然,实现方式可以包括多个SPS单元,并且每一个SPS单元可以具有相关联的SUP SPS单元。
参见图7,示出了另一个SUP SPS 700的结构。SUP SPS 700包括多个层的参数,而SUP SPS 500包括单一层的参数。SUP SPS 700包括SPS ID 710、VUI 720、以及可选附加参数740。VUI 720包括用于第一附加层(D2,T2,Q2)的HRD参数730以及用于多至层(Dn,Tn,Qn)的其它附加层的HRD参数。
再次参照图6,可以修改分级600以使用多层SUP SPS。例如,如果SUP SPS 610和620都包括相同的SPS ID,则可以用SUP SPS 700来替代SUP SPS 610和620的组合。
此外,SUP SPS 700可以与例如包括用于单一层的参数的SPS、或者包括用于多个层的参数的SPS、或者不包括用于任何层的依赖于层的参数的SPS一起使用。SUP SPS 700允许系统在较少开销的情况下提供用于多个层的参数。
其它实现方式可以基于例如包括用于所有可能层的所有所需参数的SPS。即,不管是否传输所有层,这种实现方式的SPS包括可用于传输的所有相应的空间(Di)、时间(Ti)以及质量(Qi)等级。然而,即使对于这样的系统,可以使用SUP SPS以提供在不再次传输整个SPS的情况下改变用于一个或者更多层的参数的能力。
参见表1,为单层SUP SPS的特定实现方式提供了语法。该语法包括用于标识相关联SPS的sequence_parameter_set_id、以及用于标识可缩放层的标识符temporal_level、dependency_id以及quality_level。通过svc_vui_parameters()的使用来包括VUI参数(参见表2),svc_vui_parameters()通过hrd_parameters()的使用来包括HRD参数。下面的语法允许每一层指定其自己的依赖于层的参数,例如HRD参数。
sup_seq_parameter_set_svc(){ |
C |
描述符 |
sequence_parameter_set_id |
0 |
ue(v) |
temporal_level |
0 |
u(3) |
dependency_id |
0 |
u(3) |
quality_level |
0 |
u(2) |
vui_parameters_present_svc_flag |
0 |
u(1) |
if(vui_parameters_present_svc_flag) |
|
|
svc_vui_parameters() |
|
|
} |
|
|
表1
sup_seq_parameter_set_svc()语法的语义如下所述。
-sequence_parameter_set_id标识:针对当前层,当前SUP SPS所映射至的序列参数集,;
-temporal_level、dependency_id和quality_level指定当前层的时间等级、依赖关系标识符以及质量等级。dependency_id一般指示空间等级。然而,dependency_id还用于指示粗粒度可缩放性(“CGS”)分级,该分级包括空间和SNR可缩放性,其中SNR可缩放性是传统的质量可缩放性。相应地,quality_level和dependency_id均可以用于区分质量等级。
-vui_parameters_present_svc_flag等于1指示如下定义的svc_vui_parameters()语法结构存在。vui_parameters_present_svc_flag等于0指示svc_vui_parameters()语法结构不存在。
表2给出了svc_vui_parameters()的语法。因此,VUI参数对于每一层是分离的,并被放入单独的SUP SPS单元中。然而,其它实现方式
将用于多个层的VUI参数组合为单一SUP SPS。
svc_vui_parameters(){ |
C |
描述符 |
timing_info_present_flag |
0 |
u(1) |
If(timing_info_present_flag){ |
|
|
num_units_in_tick |
0 |
u(32) |
time_scale |
0 |
u(32) |
fixed_frame_rate_flag |
0 |
u(1) |
} |
|
|
nal_hrd_parameters_present_flag |
0 |
u(1) |
If(nal_hrd_parameters_present_flag) |
|
|
hrd_parameters() |
|
|
vcl_hrd_parameters_present_flag |
0 |
u(1) |
If(vcl_hrd_parameters_present_flag) |
|
|
hrd_parameters() |
|
|
If(nal_hrd_parameters_present_flag||vcl_hrd_parameters_present_flag) |
|
|
low_delay_hrd_flag |
0 |
u(1) |
pic_struct_present_flag |
0 |
u(1) |
bitstream_restriction_flag |
0 |
u(1) |
If(bitstream_restriction_flag){ |
|
|
motion_vectors_over_pic_boundaries_flag |
0 |
u(1) |
max_bytes_per_pic_denom |
0 |
ue(v) |
max_bits_per_mb_denom |
0 |
ue(v) |
log2_max_mv_length_horizontal |
0 |
ue(v) |
log2_max_mv_length_vertical |
0 |
ue(v) |
num_reorder_frames |
0 |
ue(v) |
max_dec_frame_buffering |
0 |
ue(v) |
} |
|
|
} |
|
|
表2
在2007年4月的JVT_U201附录E E.1下存在的SVC扩展的版本中定义了表2的svc_vui_parameters()语法的字段。具体地,定义用于AVC标准的hrd_parameters()。还注意到,svc_vui_parameters()包括各种依赖于层的信息,包括HRD相关参数。HRD相关参数包括num_units_in_tick、time_scale、fixed_frame_rate_flag、nal_hrd_parameters_present_flag、vcl_hrd_parameters_present_flag、hrd_parameters()、low_delay_hrd_flag以及pic_struct_present_flag。此外,即使不是与HRD相关的,bitstream_restriction_flag的if循环中的语法元素也是依赖于层的。
如上所述,将SUP SPS定义为一种新类型的NAL单元。表3列出了由标准JVT-U201定义的一些NAL单元码,但是将这些NAL单元码修改为将类型24分配给SUP SPS。NAL单元类型1和16之间以及18和24之间的省略号指示了这些类型未作改变。NAL单元类型25和31之间的省略号表示这些类型都是未指定的。下面的表3的实现方式将标准的类型24从“未指定”改变为“sup_seq_parameter_set_svc()”。“未指定”一般保留用于用户应用。另一方面,“保留”一般保留用于未来的标准修改。相应地,另一种实现方式将“保留”类型之一(例如,类型16、17或者18)改变为“sup_seq_parameter_set_svc()”。改变“未指定”类型得到针对给定用户的实现方式,而改变“保留”类型得到对用于所有用户的标准进行改变的实现方式。
表3
图8示出了生成SUP SPS单元的可缩放视频编码器800的实现方式的功能视图。在可缩放视频编码器1的输入处接收视频。根据不同空间等级对视频进行编码。空间等级主要指相同视频的不同分辨率等级。例如,作为可缩放视频编码器的输入,可以具有表示每一个空间等级的CIF序列(352比288)或者QCIF序列(176比144)。
向编码器发送每一个空间等级。将空间等级1发送至编码器2”,将空间等级2发送至编码器2’,并且将空间等级m发送至编码器2。
使用dependency_id,用3个比特对空间等级进行编码。因此,本实现方式中的空间等级的最大数目是8。
编码器2、2’以及2”对具有所示空间等级的一个或者更多层进行编码。可以指定编码器2、2’以及2”具有特定质量等级和时间等级,或者质量等级和时间等级可以是可配置的。从图8中可以看到,编码器2、2’以及2”是分级布置的。即,编码器2”向编码器2’馈送,编码器2’继而向编码器2馈送。该分级布置指示了较高层使用较低层作为参考的典型场景。
在编码之后,为每一层准备首部。在所示的实现方式中,对于每一个空间等级,创建SPS消息、PPS消息以及多个SUP_SPS消息。可以例如为与各种不同质量和时间等级相对应的层创建SUP SPS消息(或单元)。
对于空间等级1,创建SPS和PPS 5”,还创建集合:
对于空间等级2,创建SPS和PPS 5’,还创建集合:
对于空间等级m,创建SPS和PPS 5,还创建集合:
由编码器2、2’以及2”编码的比特流7、7’以及7”典型地在全局比特流中跟随多个SPS、PPS、以及SUP_SPS(也称作首部、单元或者消息)。
比特流8”包括SPS和PPS 5”、 、以及编码视频比特流7”,它们构成了与空间等级1相关联的所有编码数据。
比特流8’包括SPS和PPS 5’ 、以及编码视频比特流7’,它们构成了与空间等级2相关联的所有编码数据。
比特流8包括SPS和PPS 5、 、以及编码视频比特流7,它们构成了与空间等级m相关联的所有编码数据。
不同的SUP_SPS首部符合表1-3中描述的首部。
图8所示的编码器800为每一个空间等级生成一个SPS。然而,其它实现方式可以为每一个空间等级生成多个SPS或者可以生成服务于多个空间等级的SPS。
如图8所示,在产生SVC比特流的复用器9中将比特流8、8’以及8”进行组合。
参见图9,分级视图900示出了包含SUP SPS单元的数据流的生成。视图900可以用于说明由图8的可缩放视频编码器800生成的可能的比特流。视图900向传输接口17提供SVC比特流。
可以根据例如图8的实现方式来生成SVC比特流,该SVC比特流针对每一个空间等级包括一个SPS。当对m个空间等级进行编码时,SVC比特流包括由图9中的10、10’以及10”所表示的SPS1、SPS2以及SPSm。
在SVC比特流中,每一个SPS对与空间等级相关的总体信息进行编码。该SPS之后接着是SUP_SPS类型的首部11、11’、11”、13、13’、13”、15、15’以及15”。SUP_SPS之后接着是相应的编码视频数据12、12’、12”、14、14’、14”、16、16’以及16”,它们分别与一个时间等级(n)和一个质量等级(O)相对应。
因此,当一层未被传输时,也相应的SUP_SPS也未被传输。这是由于典型地有一个SUP_SPS与每一层相对应。
典型实现方式使用针对层的编号方案,其中基础层具有零值的D和Q。如果对视图900使用该编号方案,则视图900不显式地示出基础层。这不排除基础层的使用。然而,还可以增加视图900以显式地示出用于基础层的比特流,以及例如基础层的单独SPS。此外,视图900可以使用针对基础层的备选编号方案,其中比特流(1,1,1)至(m,n,O)中的一个或者更多指代基础层。
参见图10,提供了由图8和9的实现方式所生成的数据流1000的方框视图。图10示出了下列层的传输:
●层(1,1,1):空间等级1、时间等级1、质量等级1;包括块10、11和12的传输;
●层(1,2,1):空间等级1、时间等级2、质量等级1;包括块11’和12’的附加传输;
●层(2,1,1):空间等级2、时间等级1、质量等级1;包括块10’、13和14的附加传输;
●层(3,1,1):空间等级3、时间等级1、质量等级1;包括块10”、15和16的附加传输;
●层(3,2,1):空间等级3、时间等级2、质量等级1;包括块15’和16’的附加传输;
●层(3,3,1):空间等级3、时间等级3、质量等级1;包括块15”和16”的附加传输;
数据流1000的方框视图示出了SPS 10仅被发送一次并由层(1,1,1)和层(1,2,1)所使用;SPS 10”仅被发送一次并由层(3,1,1)、层(3,2,1)以及层(3,3,1)所使用。此外,数据流1000示意了未传输用于所有层的参数,而仅传输了与所传输的层相对应的参数。例如,未传输用于层(2,2,1)的参数(与相对应),这是由于未传输该层。这提供了本实现方式的高效率。
参见图11,编码器1100包括SPS生成单元1100、视频编码器1120、以及格式化器1130。视频编码器1120接收输入视频、对输入视频进行编码、并且向格式化器1130提供编码的输入视频。编码的输入视频可以包括例如多个层,例如编码的基础层和编码的增强层。SPS生成单元1110生成首部信息,例如SPS单元和SUP SPS单元,并且向格式化器1130提供首部信息。SPS生成单元1110还与视频编码器1120进行通信,以提供视频编码器1120在对输入视频进行编码中使用的参数。
SPS生成单元1110可以被配置为例如生成SPS NAL单元。SPSNAL单元可以包括描述在对图像序列的第一层编码进行解码中使用的参数的信息。SPS生成单元1110还可以被配置为例如生成SUP SPSNAL单元,SUP SPS NAL单元具有与SPS NAL单元不同的结构。SUPSPS NAL单元可以包括描述在对图像序列的第二层编码进行解码中使用的参数的信息。可以由视频编码器1120来产生第一层编码和第二层编码。
格式化器1130将来自视频编码器1120的编码视频以及来自SPS生成单元1110的首部信息进行复用,以产生输出编码比特流。编码比特流可以是包括图像序列的第一层编码、图像序列的第二层编码、SPSNAL单元以及SUP SPS NAL单元在内的数据集合。
编码器1100的组件1110、1120以及1130可以采用多种形式。一个或者更多组件1110、1120以及1130可以包括硬件、软件、固件或组合,并且可以从各种平台(如专用编码器或者通过软件配置为作为编码器工作的通用处理器)进行操作。
可以比较图8和11。SPS生成单元1110可以生成图8所示的SPS和各种视频编码器1120可以生成图8所示的比特流7、7’以及7”(其为输入视频的编码)。视频编码器1120可以与例如编码器2、2’以及2”中的一个或者更多相对应。格式化器1130可以生成由参考数字8、8’以及8”所示的分级布置的数据,并且执行复用器9的操作以生成图8的SVC比特流。
还可以比较图1和11。视频编码器1120可以与例如图1的模块104和187相对应。格式化器1130可以与例如复用器170相对应。SPS生成单元1110未在图1中显式地示出,尽管例如复用器170可以执行SPS生成单元1110的功能。
编码器1100的其它实现方式不包括视频编码器1120,这是由于例如数据是预编码的。编码器1100还可以提供附加输出并且提供组件之间的附加通信。还可以修改编码器1100以提供例如位于现有组件之间的附加组件。
参见图12,示出了以与编码器1100相同方式操作的编码器1200。编码器1200包括与处理器1220通信的存储器1210。存储器1210可以用于例如存储输入视频、存储编码或解码参数、存储在编码过程期间的中间或者最终结果、或者存储用于执行编码方法的指令。这种存储可以是临时的或者永久的。
处理器1220接收输入视频并且对输入视频进行编码。处理器1220还生成首部信息,并且将包括首部信息和编码的输入视频在内的编码比特流进行格式化。如在编码器1100中,处理器1220提供的首部信息可以包括用于传递多个层的首部信息的分离的结构。处理器1220可以根据在例如处理器1220或者存储器1210或其部分上存储或驻留的指令进行操作。
参见图13,示出了用于对输入视频进行编码的过程1300。可以由例如编码器1100或者1200来执行过程1300。
过程1300包括生成SPS NAL单元(1310)。该SPS NAL单元包括信息描述在对图像序列的第一层编码进行解码中使用的参数的信息。SPS NAL单元可以或者可以不由编码标准来定义。如果由编码标准来定义SPS NAL单元,则该编码标准可以要求解码器根据接收到的SPSNAL单元来进行操作。一般,这样的要求是通过声明该SPS NAL单元为“规范”的。例如在AVC标准中SPS是规范的,而例如补充增强信息(“SEI”)消息是非规范的。相应地,兼容AVC的解码器可以忽略接收到的SEI消息,但是必须根据接收到的SPS来进行操作。
SPS NAL单元包括描述用于对第一层进行解码的一个或者更多参数的信息。该参数可以是例如依赖于层或者不依赖于层的信息。典型的依赖于层的参数的示例包括VUI参数或者HRD参数。
可以由例如SPS生成单元1110、处理器1220、或者SPS和PPS插入器2140来执行操作1310。操作1310还可以与图8中的块5、5’、5”中的任一个中SPS的生成相对应。
相应地,用于执行操作1310(即生成SPS NAL单元)的装置可以包括各种组件。例如,这种装置可以包括用于生成SPS 5、5’、或者5”的模块、图1、8、11或者12的整个编码器系统、SPS生成单元1110、处理器1220、或者SPS和PPS插入器2140、或者包括已知和未来开发的编码器在内的其等价物。
过程1300包括生成补充(“SUP”)SPS NAL单元(1320),补充SPSNAL单元具有与SPS NLA单元不同的结构。SUP SPS NAL单元包括描述在对图像序列的第二层编码进行解码中使用的参数的信息。可以或者可以不由编码标准来定义SUP SPS NAL单元。如果由编码标准来定义SUP SPS NAL单元,则编码标准可以要求解码器根据接收到的SUPSPS NAL单元进行操作。如以上关于操作1310所讨论的,一般,这样的要求是通过声明SUP SPS NAL单元是“规范”的。
各种实现方式包括规范SUP SPS消息。例如,对于对多于一层进行解码的解码器(例如,兼容SVC的解码器)而言,SUP SPS消息可以是规范的。这种多层解码器(例如兼容SVC的解码器)需要根据在SUP SPS消息中传递的信息来进行操作。然而,单层解码器(例如,兼容AVC的解码器)可以忽略SUP SPS消息。作为另一个示例,SUP SPS消息可以对于所有解码器而言是规范的,包括单层和多层解码器。由于SUP SPS消息大部分基于SPS消息,并且在AVC标准以及SVC和MVC扩展中SPS消息是规范的,因此许多实现方式包括规范的SUPSPS消息并不令人惊讶。即,SUP SPS消息携带与SPS消息类似的数据,与SPS消息起到类似作用,并且可以认为是一种SPS消息。应当清楚,具有规范SUP SPS消息的实现方式可以提供兼容性优点,例如,允许AVC和SVC解码器接收共同的数据流。
SUP SPS NAL单元(也称作SUP SPS消息)包括用于对第二层进行解码的一个或者更多参数。该参数可以是例如依赖于层或者不依赖于层的信息。具体示例包括VUI参数或者HRD参数。除了用于对第二层进行解码之外,SUP SPS还可以用于对第一层进行解码。
可以由例如SPS生成单元1110、处理器1220、或者类似于SPS和PPS插入器2140的模块来执行操作1320。操作1320还可以与图8中块6、6’、6”中任一个中的SUP_SPS的生成相对应。
相应地,用于执行操作1320(即生成SUP SPS NAL单元)的装置可以包括各种组件。例如,这种装置可以包括用于生成SUP_SPS 6、6’或者6”的模块、图1、8、11或者12的整个编码器系统、SPS生成单元1110、处理器1220、或者类似于SPS和PPS插入器2140的模块、或者包括已知和未来开发的编码器在内的其等价物。
过程1300包括对图像序列的第一层(例如,基础层)编码进行编码,并且对图像序列的第二层编码进行编码(1330)。图像序列的这些编码产生第一层编码和第二层编码。可以将第一层编码格式化为一系列称作第一层编码单元的单元,并且可以将第二层编码格式化为一系列称作第二层编码单元的单元。可以由例如视频编码器1120、处理器1220、图8的编码器2、2’或者2”、或者图1的实现方式来执行操作1330。
相应地,用于执行操作1330的装置可以包括各种组件。例如,这种装置可以包括编码器2、2’或者2”、图1、8、11或者12的整个编码器系统、视频编码器1120、处理器1220、或者一个或者更多核心编码器187(可能包括抽取模块104)、或者包括已知和未来开发的编码器在内的其等价物。
过程1300包括提供数据集合(1340)。该数据集合包括图像序列的第一层编码、图像序列的第二层编码、SPS NAL单元以及SUP SPSNAL单元。该数据集合可以是例如根据已知标准编码、在存储器中存储或者向一个或者更多解码器传输的比特流。可以由格式化器1130、处理器1220、或图1的复用器170来执行操作1340。在图8中还可以由比特流8、8’和8”中任一个的生成以及复用的SVC比特流的生成来执行操作1340。
相应地,用于执行操作1340(即提供数据集合)的设备可以包括各种组件。例如,这种装置可以包括用于生成比特流8、8’、或者8”的模块、复用器9、图1、8、11或者12的整个编码器系统、格式化器1130、处理器1220、或者复用器170、或者包括已知或者未来开发的编码器在内的其等价物。
可以用各种方式来修改过程1300。例如,在对数据进行预编码的实现方式中,可以从过程1300中去除操作1330。此外,除了去除操作1330之外,可以去除操作1340以提供用于生成针对多层的描述单元的过程。
参见图14,示出了数据流1400,数据流1400可以由例如过程1300生成。数据流1400包括用于SPS NAL单元的部分1410、用于SUP SPSNAL单元的部分1420、用于第一层编码数据的部分1430、以及用于第二层编码数据的部分1440。第一层编码数据1430是第一层编码,可以被格式化为第一层编码单元。第二层编码数据1440是第二层编码,可以被格式化为第二层编码单元。数据流1400可以包括附加部分,该附加部分可以追加在部分1440之后或者散布在部分1410至1440之间。此外,其它实现方式可以修改部分1410至1440中的一个或者更多。
可以将数据流1400与图9和10进行比较。SPS NAL单元1410可以是例如SPS1 10、SPS2 10’、或者SPSm 10”中的任何一个。SUP SPS NAL单元可以是例如SUP_SPS首部11、11’、11”、13、13’、13”、15、15’、或者15”中的任何一个。第一层编码数据1430和第二层编码数据1440可以是如层(1,1,1)12至(m,n,O)16”的比特流所示的用于各个层的比特流中的任何一个,并包括比特流12、12’、12”、14、14’、14”、16、16’以及16”。第一层编码数据1430可以是具有比第二层编码数据1440更高等级集合的比特流。例如,第一层编码数据1430可以是层(2,2,1)14’的比特流,并且第二层编码数据1440可以是层(1,1,1)12的比特流。
数据流1400的实现方式还可以与数据流1000相对应。SPS NAL单元1410可以与数据流1000的SPS模块10相对应。SUP SPS NAL单元1420可以与数据流1000的SUP_SPS模块11相对应。第一层编码数据1430可以与数据流1000的层(1,1,1)12的比特流相对应。第二层编码数据1440可以与数据流1000的层(1,2,1)12’的比特流相对应。数据流1000的SUP_SPS模块11’可以散布在第一层编码数据1430和第二层编码数据1440之间。可以将数据流1000中所示的其余块(10’-16”)以与数据流1000中所示的相同顺序追加至数据流1400。
图9和10可以建议SPS模块不包括任何的层专用参数。各种实现方式以这种方式进行操作,并且典型地需要每一层的SUP_SPS。然而,其它实现方式允许SPS包括用于一个或者更多层的层专用参数,从而允许在不需要SUP_SPS的情况下传输一个或者更多层。
图9和10建议每一个空间等级具有其自己的SPS。其它实现方式改变该特征。例如,其它实现方式为每一个时间等级或每一个质量等级提供单独的SPS。另外的实现方式为每一层提供单独的SPS,并且,其它实现方式提供为所有层服务的单一SPS。
参见图15,解码器1500包括接收编码比特流的解析单元1510,例如,编码比特流由编码器1100、编码器1200、过程1300、或者数据流1400提供。解析单元1510与解码器1520耦合。
解析单元1510被配置为访问来自SPS NAL单元的信息。来自SPSNAL单元的信息描述了在对图像序列的第一层编码进行解码中使用的参数。解析单元1510还被配置为访问来自SUP SPS NAL单元的信息,SUP SPS NAL单元具有与SPS NAL单元不同的结构。来自SUP SPSNAL单元的信息描述了在对图像序列的第二层编码进行解码中使用的参数。如结合图13所描述的,这些参数可以是依赖于层或者不依赖于层的。
解析单元1510提供解析的首部数据作为输出。首部数据包括从SPS NAL单元访问的信息并且还包括从SUP SPS NAL单元访问的信息。解析单元1510还提供解析的编码视频数据作为输出。编码视频数据包括第一层编码和第二层编码。将首部数据和编码视频数据均提供给解码器1520。
解码器1520使用从SPS NAL单元访问的信息来对第一层编码进行解码。解码器1520还使用从SUP SPS NAL单元访问的信息来对第二层编码进行解码。解码器1520还基于解码的第一层和/或解码的第二层来生成图像序列的重构。解码器1520提供重构的视频作为输出。重构的视频可以是例如第一层编码的重构或者第二层编码的重构。
比较图15、2和2a,解析单元1510可以与一些实现方式中的例如解复用器202和/或熵解码器204、212、222或者2245中的一个或更多相对应。解码器1520可以与例如图2中的其余块相对应。
解码器1500还可以提供附加输出并且提供组件之间的附加通信。还可以修改解码器1500以提供例如位于现有组件之间的附加组件。
解码器1500的组件1510和1520可以采用很多形式。组件1510和1520中的一个或者更多可以包括硬件、软件、固件或者组合,并且可以从各种平台(如专用解码器或者通过软件配置为作为解码器工作的通用处理器)进行操作。
参见图16,示出了以与解码器1500相同方式进行操作的解码器1600。解码器1600包括与处理器1620进行通信的存储器1610。存储器1610可以用于例如存储输入编码比特流、存储解码或者编码参数、存储在解码过程期间的中间或者最终结果、或者存储用于执行解码方法的指令。这种存储可以是临时的或者永久的。
处理器1620接收编码比特流并且将编码比特流解码为重构的视频。编码比特流包括例如(1)图像序列的第一层编码,(2)图像序列的第二层编码,(3)SPS NAL单元,具有描述在对第一层编码进行解码中使用的参数的信息,(4)SUP SPS NAL单元,具有与SPS NAL单元不同的结构,具有描述在对第二层编码进行解码中使用的参数的信息。
处理器1620至少基于第一层编码、第二层编码、来自SPS NAL单元的信息以及来自SUP SPS NAL单元的信息来产生重构的视频。重构的视频可以是例如第一层编码的重构或者第二层编码的重构。处理器1620可以根据在例如处理器1620或者存储器1610或其部分上存储或者驻留的指令进行操作。
参见图17,示出了用于对编码比特流进行解码的过程1700。可以由例如解码器1500或者1600来执行该过程1700。
过程1700包括访问来自SPS NAL单元的信息(1710)。所访问的信息描述了在对图像序列的第一层编码进行解码中使用的参数。
SPS NAL单元可以如之前关于图13所述。此外,所访问的信息可以是例如HRD参数。可以由例如解析单元1510、处理器1620、熵解码器204、212、222或者2245、或者解码器控制2205来执行操作1710。还可以由编码器的一个或者更多组件在编码器处的重构过程中执行操作1710。
相应地,用于执行操作1710(即访问来自SPS NAL单元的信息)的装置可以包括各种组件。例如,这种装置可以包括解析单元1510、处理器1620、单层解码器、图2、15或者16的整个解码器系统、或者解码器的一个或者更多组件、或者编码器800、1100或者1200的一个或者更多组件、或者包括已知和未来开发的解码器和编码器在内的其等价物。
过程1700包括访问来自SUP SPS NAL单元的信息(1720),SUPSPS NAL单元具有与SPS NAL单元不同的结构。从SUP SPS NAL单元访问的信息描述了在对图像序列的第二层编码进行解码中使用的参数。
SUP SPS NAL单元可以如之前关于图13所述。此外,所访问的信息可以是例如HRD参数。可以由例如解析单元1510、处理器1620、熵解码器204、212、222或者2245、或者解码器控制2205来执行操作1720。还可以由编码器的一个或者更多组件在编码器处的重构过程中执行操作1720。
相应地,用于执行操作1720(即访问来自SUP SPS NAL单元的信息)的装置可以包括各种组件。例如,这种装置可以包括解析单元1510、处理器1620、解复用器202、熵解码器204、212或者222、单层解码器、或者整个解码器系统200、1500或者1600、或者解码器的一个或者更多组件、或者编码器800、1100或者1200的一个或者更多组件、或者包括已知和未来开发的解码器和编码器在内的其等价物。
过程1700包括访问图像序列的第一层编码和第二层编码(1730)。第一层编码可以已被格式化为第一层编码单元,第二层编码可以已被格式化为第二层编码单元。可以由例如解析单元1510、解码器1520、处理器1620、熵解码器204、212、222或者2245、或者熵解码器下游的各种其它模块来执行操作1730。还可以由编码器的一个或者更多组件在编码器处的重构过程中执行操作1730。
相应地,用于执行操作1730的装置可以包括各种组件。例如,这种装置可以包括解析单元1510、解码器1520、处理器1620、解复用器202、熵解码器204、212或者222、单层解码器、比特流接收机、接收设备、或者整个解码器系统200、1500或者1600、或者解码器的一个或者更多组件、或者编码器800、1100或者1200的一个或者更多组件、或者包括已知和未来开发的解码器和编码器在内的其等价物。
过程1700包括生成图像序列的解码(1740)。图像序列的解码可以基于第一层编码、第二层编码、从SPS NAL单元访问的信息、以及从SUP SPS NAL单元访问的信息。可以由例如解码器1520、处理器1620、或者解复用器202和输入缓冲器2210下游的各种模块来执行操作1740。还可以由编码器的一个或者更多组件在编码器处的重构过程中执行操作1740。
相应地,用于执行操作1740的装置可以包括各种组件。例如,这种装置可以包括解码器1530、处理器1620、单层解码器、整个解码器系统200、1500或者1600、或者解码器的一个或者更多组件、执行重构的编码器、或者编码器800、1100或者1200的一个或者更多组件、或者包括已知和未来开发的解码器或编码器在内的其等价物。
另一个实现方式执行一种编码方法,该编码方法包括访问第一规范参数集合中的依赖于第一层的信息。所访问的依赖于第一层的信息用于对图像序列的第一层编码进行解码。第一规范参数集合可以是例如包括HRD相关参数或其它依赖于层的信息在内的SPS。然而,第一规范参数集合不需要是SPS,并且不需要与H.264标准相关。
除了第一参数集合是规范的(这要求,如果接收到这种参数集合,则解码器根据第一参数集合进行操作)之外,还需要在实现方式中接收第一参数集合。即,实现方式还可以要求向解码器提供第一参数集合。
该实现方式的编码方法还包括访问第二规范参数集合中的依赖于第二层的信息。第二规范参数集合具有与第一规范参数集合不同的结构。此外,所访问的依赖于第二层的信息用于对图像序列的第二层编码进行解码。第二规范参数集合可以是例如补充SPS。补充SPS具有与例如SPS不同的结构。补充SPS还包括HRD参数或者用于第二层(与第一层不同)的其它依赖于层的信息。
该实现方式的编码方法还包括:基于所访问的依赖于第一层的信息或者所访问的依赖于第二层的信息中的一个或者更多,对图像序列进行解码。这可以包括例如对基础层或者增强层进行解码。
在其它实现方式中还提供了相应的设备,用于实现本实现方式的编码方法。这种设备包括例如编程的编码器、编程的处理器、硬件实现、或者具有用于执行编码方法的指令的处理器可读介质。例如系统1100和1200可以实现本实现方式的编码方法。
还提供了相应的信号以及存储这种信号或这种信号的数据的介质。由例如执行本实现方式的编码方法的编码器来产生这种信号。
另一个实现方式执行与上述编码方法类似的解码方法。该解码方法包括:生成包括依赖于第一层的信息在内的第一规范参数集合。依赖于第一层的信息用于对图像序列的第一层编码进行解码。该解码方法还包括:生成具有与第一规范参数集合不同结构的第二规范参数集合。第二规范参数集合包括依赖于第二层的信息,依赖于第二层的信息用于对图像序列的第二层编码进行解码。该解码方法还包括:提供包括第一规范参数集合和第二规范参数集合在内的数据集合。
在其它实现方式中还提供了相应的设备,用于实现本实现方式的上述解码方法。这种设备包括例如编程的解码器、编程的处理器、硬件实现、或者具有用于执行解码方法的指令的处理器可读介质。例如系统1500和1600可以实现本实现方式的解码方法。
注意,如以上例如在“补充SPS”中使用的术语“补充”是描述性术语。因此,“补充SPS”并不排除在单元的名称中不包括术语“补充”的单元。相应地,作为示例,SVC扩展的当前草案定义了“子集SPS”语法结构,并且,“子集SPS”语法结构由描述性术语“补充”所完全包含。所以当前SVC扩展的“子集SPS”是本公开中描述的SUPSPS的一个实现方式。
实现方式可以使用除了SPS NAL单元和/或SUP SPS NAL单元之外的其它类型的消息,或者使用作为SPS NAL单元和/或SUP SPS NAL单元的替代的其它类型的消息。例如,至少一个实现方式生成、发送、接收、访问、并且解析具有依赖于层的信息的其它参数集合。
此外,尽管主要在H.264标准的上下文中讨论了SPS和补充SPS,但是,其它标准也可以包括SPS、补充SPS、或者SPS或者补充SPS的变型。相应地,其它标准(现有的或者未来开发的)可以包括称作SPS或者补充SPS的结构,并且这种结构可以与本文描述的SPS和补充SPS相同或者是其变型。这种其它标准可以例如与当前H.264标准相关(例如,现有H.264标准的修订)、或者是全新的标准。备选地,其它标准(现有或者未来开发的)可以包括不称作SPS或者补充SPS的结构,但是这种结构可以与本文描述的SPS或者补充SPS相同、相似或者为其变型。
注意,参数集合是包括参数的数据的集合。例如,SPS、PPS或者补充SPS。
在各种实现方式中,将数据称作被“访问”。“访问”数据可以包括例如接收、存储、传输或者处理数据。
提供并且描述了各种实现方式。这些实现方式可以用于解决各种问题。当多个互操作性点(IOP)(也称作层)需要SPS中典型携带的参数的不同值时,出现一个这种问题。没有在SPS中针对具有相同SPS标识符的不同层来传输依赖于层的语法元素的合适方法。针对每一个这种层发送单独的SPS数据是有问题的。例如,在很多现有系统中,基础层及其合成时间层共享相同的SPS标识符。
多种实现方式提供了用于补充SPS数据的不同NAL单元类型。从而,可以发送多个NAL单元,并且每一个NAL单元可以包括用于不同SVC层的补充SPS信息,但是每一个NAL单元可以由相同的NAL单元类型所标识。在一个实现方式中,可以在当前SVC扩展的“子集SPS”NAL单元类型中提供补充SPS信息。
应当清楚,本公开中描述的实现方式并不限于SVC扩展或者任何其它标准。所公开的实现方式的概念和特征可以与现在存在或者未来开发的其它标准一起使用,或者可以在不遵守任何标准的系统中使用。作为一个示例,本文公开的概念和特征可以用于在MVC扩展的环境中工作的实现方式。例如,MVC视点可以需要不同的SPS信息,或者MVC扩展中支持的SVC层可以需要不同的SPS信息。此外,所描述的实现方式的特征和方面还可以适用于其它实现方式。相应地,尽管在用于SVC层的SPS的上下文中描述了本文描述的实现方式,但是不应当将这种描述视为将这些特征和概念限制在这种实现方式或者上下文。
可以在例如方法或过程、设备、或者软件程序中实现本文描述的实现方式。即使仅在单一形式的实现方式中讨论(例如仅作为方法来讨论),所讨论的特征的实现方式也可以以其它形式来实现(例如,设备或者程序)。可以在例如合适的硬件、软件、以及固件中实现设备。可以在例如设备(例如处理器)中实现这些方法,处理器一般指处理设备,包括例如计算机、微处理器、集成电路或者可编程逻辑器件。处理器还可以包括通信设备,例如计算机、蜂窝电话、便携式/个人数字助理(“PDA”)、以及便于终端用户之间进行信息通信的其它设备。
可以在各种不同设备或应用中实现本文描述的各种过程和特征的实现方式,具体地,例如与数据编码和解码相关联的设备和应用。设备的示例包括视频编码器、视频解码器、视频编解码器、web服务器、机顶盒、膝上型计算机、个人计算机、蜂窝电话、PDA、以及其它通信设备。应当清楚,该设备可以是移动的并且甚至可以安装在移动车辆上。
此外,可以通过由处理器执行的指令来实现方法,并且可以在处理器可读介质上存储这种指令,处理器可读介质如集成电路、软件载体或者其它存储设备,例如硬盘、光盘、随机存取存储器(“RAM”)、只读存储器(“ROM”)。这些指令可以形成在处理器可读介质上有形实现的应用程序。指令可以是在例如硬件、固件、软件或者组合中。可以在例如操作系统、独立应用或者二者的组合中找到指令。因此可以将处理器表征为例如既是配置为执行过程的设备,也是包括计算机可读介质的设备,该计算机可读介质具有用于执行过程的指令。
对于本领域技术人员显而易见地,实现方式可以产生各种信号,这些信号被格式化为携带可以存储或传输的信息。该信息可以包括例如用于执行方法的指令、由所述实现方式之一产生的数据。例如,可以将信号格式化为携带用于写入或读取所描述的实施例的语法的规则作为数据,或者携带由所描述的实施例所写入的实际语法值作为数据。可以将这种信号格式化为例如电磁波(例如,使用频谱的射频部分)或者基带信号。这种格式化可以包括例如对数据流进行编码并且用编码数据流对载波进行调制。信号携带的信息可以是例如模拟或者数字信息。众所周知,可以在各种不同的有线或无线链路上传输该信号。
已经描述了多种实现方式。然而,将理解可以进行各种修改。例如,可以将不同实现方式的元素进行组合、补充、修改或者去除以产生其它实现方式。此外,本领域普通技术人员将理解,可以用其它结构和过程来替代所公开的结构和过程,并且所产生的实现方式将以与本文公开的实现方式至少实质上相同的方式来执行至少实质上相同的功能,以实现至少实质上相同的结果。相应地,本申请想到这些和其它实现方式,它们都在所附权利要求的范围内。