本申请要求于2007年5月16日提交的美国临时申请序列号第60/938,363号的权益,其在此通过引用被整个并入。进一步地,本申请与在此通过引用被并入的,并且同时被提交的、一起分配律师案号PU070127、标题为“METHODS AND APPARATUS FOR THE USE OF SLICE GROUPS INENCODING MULTI-VIEW VIDEO CODING(MVC)INFORMATION”的非临时申请相关。
具体实施方式
本原理专注于在编码和解码多视角视频编码(MVC)信息中使用码片组的方法和装置。
本描述阐释了本原理。因而将理解,本领域技术人员将能够设计出虽然未在这里显式地描述或示出、但体现了本原理并且被包括在其精神和范围内的各种安排。
在这里所详述(recite)的所有示例和条件性的语言意图在于辅助读者理解本原理和由(多个)发明者为开发本领域而贡献本原理和构思的教导目的,并且应当被理解为不受限于这样的具体详述的示例和条件。
此外,在这里详述本原理的原理、方面和实施例的所有陈述,以及其具体例子,意图包括其结构性和功能性等效物的两者。另外,这样的等效物意图包括当前已知的等效物以及在将来开发的等效物,即无论结构如何而执行相同的功能的所开发的任何元件。
因而,例如,本领域技术人员将理解,在这里所呈现的框图表示体现本原理的阐释性电路的概念视图。相似地,将理解,任何流程表、流程图、状态转换图、伪码等表示可以在计算机可读介质中实质表示的、并且由计算机或处理器如此执行的各种过程,而无论这样的计算机或处理器是否被显式地示出。
可以通过使用专用硬件以及能够与恰当的软件相联系而执行软件的硬件来提供图中所示的各种元件的功能。在由处理器提供时,可以由单个专用处理器、由单个共享处理器、或由多个单独的处理器(其中的一些可以被共享)来提供这些功能。此外,术语“处理器”或“控制器”的显式使用不应被理解为仅仅指能够执行软件的硬件,而是可以隐式地包括但不限于数字信号处理器(“DSP”)硬件、用于存储软件的只读存储器(“ROM”)、随机存取存储器(“RAM”)和非易失性存储器。
还可以包括传统的和/或定制的其他硬件。相似地,图中所示的任何开关都仅仅是概念性的。可以通过程序逻辑、通过专用逻辑、通过程序控制和专用逻辑的交互、或甚至手动的操作来执行它们的功能,如同从环境中更具体地理解的那样,具体的技术可由实施者选择。
在其权利要求中,被表达为用于执行所指定的功能的部件的任何元件意图包括执行该功能的任何方式,所述任何方式例如包括:a)执行该功能的电路元件的组合或b)任何形式的软件(因此包括固件、微代码(microcode)等)与用于执行该软件以执行该功能的恰当的电路组合。按照由这样的权利要求所定义的本原理在于以下事实:以权利要求所要求的方式将由各种详述的部件所提供的功能组合并放在一起。因而认为可以提供这些功能的任何部件与这里所示出的那些部件等效。
本说明书中对本原理的“一个实施例”或“实施例”的引用意味着在本原理的至少一个实施例中包括了与该实施例相联系地描述的具体特征、结构、特性等。因而,在贯穿本说明书中的各处出现的短语“在一个实施例中”或“在实施例中”的出现不一定都指相同的实施例。
应当理解,例如在“A和/或B”的情况中的用语“和/或”的使用意图包括对第一所列选项(A)的选择、对第二所列选项(B)的选择、或对两个选项(A和B)的选择。作为进一步的例子,在“A、B和/或C”的情况中,这样的措辞意图包括对第一所列选项(A)的选择、对第二所列选项(B)的选择、对第三所列选项(C)的选择、对第一和第二所列选项(A和B)的选择、对第一和第三所列选项(A和C)的选择、对第二和第三所列选项(B和C)的选择、或对所有三个选项(A和B和C)的选择。如同对于本领域和相关领域中的普通技术人员来说容易地明显的那样,对于所列出的许多项目可以对此进行扩展。
此外,应当理解,虽然对于MPEG-4AVC标准在此描述本原理的一个或更多的实施例,但本原理不仅仅限于该标准,并且因而可以对于包括MPEG-4AVC标准的扩展的其他视频编码标准、推荐及其扩展来利用本原理,同时保留本原理的精神。
如这里所使用的那样,“高级语法”指分层级的次驻留于宏块层之上的比特流中出现的语法。例如,如这里所使用的那样,高级语法可以指、但不限于在码片首标(header)层、补充增强信息(SEI)层、画面参数集(PPS)层、序列参数集(SPS)层和网络抽象层(NAL)单元首标层处的语法。
转向图1,概括地由参考标号100指示能够根据MPEG-4AVC标准的多视图视频编码(MVC)扩展来执行视频编码的视频编码器。
视频编码器100包括帧顺序缓冲器110,帧顺序缓冲器110具有与组合器185的非反相输入端进行信号通信的输出端。组合器185的输出端与变换器和量化器125的第一输入端信号通信地连接。变换器和量化器125的输出端与熵编码器145的第一输入端以及逆变换器和逆量化器150的第一输入端信号通信地连接。熵编码器145的输出端与组合器190的第一非反相输入端信号通信地连接。组合器190的输出端与输出缓冲器135的第一输入端信号通信地连接。
编码器控制器105的第一输出端与帧顺序缓冲器110的第二输入端、逆变换器和逆量化器150的第二输入端、画面类型判定模块115的输入端、宏块类型(MB类型)判定模块120的输入端、帧内预测(intra prediction)模块160的第二输入端、去块(deblocking)滤波器165的第二输入端、运动补偿器170的第一输入端、运动估算器175的第一输入端以及参考画面缓冲器180的第二输入端信号通信地连接。
编码器控制器105的第二输出端与补充增强信息(SEI)***器130的第一输入端、变换器和量化器125的第二输入端、熵编码器145的第二输入端、输出缓冲器135的第二输入端、以及序列参数集(SPS)和画面参数集(PPS)***器140的输入端信号通信地连接。
画面类型判定模块115的第一输出端115与帧顺序缓冲器110的第三输入端信号通信地连接。画面类型判定模块115的第二输出端与宏块类型判定模块120的第二输入端信号通信地连接。
序列参数集(SPS)和画面参数集(PPS)***器140的输出端与组合器190的第三非反相输入端信号通信地连接。
逆量化器和逆变换器150的输出端与组合器119的第一非反相输入端信号通信地连接。组合器119的输出端与帧内预测模块160的第一输入端和去块滤波器165的第一输入端信号通信地连接。去块滤波器165的输出端与参考画面缓冲器180的第一输入端信号通信地连接。参考画面缓冲器180的输出端与运动估算器175的第二输入端信号通信地连接。运动估算器175的第一输出端与运动补偿器170的第二输入端信号通信地连接。运动估算器175的第二输出端与熵编码器145的第三输入端信号通信地连接。
运动补偿器170的输出端170与开关197的第一输入端信号通信地连接。帧内预测模块160的输出端与开关197的第二输入端信号通信地连接。宏块类型判定模块120的输出端与开关197的第三输入端信号通信地连接。开关197的第三输入端判定开关的“数据”输入端(与控制输入端,即第三输入端相比)是否由运动补偿器170或帧内预测模块160提供。开关197的输出端与组合器119的第二非反相输入端、以及与组合器185的反相输入端信号通信地连接。
编码器控制器的第二输入端接收码片组信息186。向平铺模块188提供共同地由参考标号189表示的视图0至视图N-1,所述平铺模块188平铺视图以提供(多个)输入画面101。
帧顺序缓冲器110的第一输入端和编码器控制器105作为编码器100的输入端可用于接收输入画面101。此外,补充增强信息(SEI)***器130作为编码器100的输入端可用于接收元数据。输出缓冲器135的输出端作为编码器100的输出端可用于输出比特流。
转向图2,概括地由参考标号200指示能够根据MPEG-4AVC标准的多视图视频编码(MVC)扩展来执行视频解码的视频解码器。
视频解码器200包括输入缓冲器210,输入缓冲器210具有与熵解码器245的第一输入端信号通信地连接的输出端。熵解码器245的第一输出端与逆变换器和逆量化器250的第一输入端信号通信地连接。逆变换器和逆量化器250的输出端与组合器225的第二非反相输入端信号通信地连接。组合器225的输出端与去块滤波器265的第二输入端、以及帧内预测模块260的第一输入端信号通信地连接。去块滤波器265的第二输出端与参考画面缓冲器280的第一输入端信号通信地连接。参考画面缓冲器280的输出端与运动补偿器270的第二输入端信号通信地连接。
熵解码器245的第二输出端与运动补偿器270的第三输入端、以及去块滤波器265的第一输入端信号通信地连接。熵解码器245的第三输出端与解码器控制器205的输入端信号通信地连接。解码器控制器205的第一输出端与熵解码器245的第二输入端信号通信地连接。解码器控制器205的第二输出端与逆变换器和逆量化器250第二输入端信号通信地连接。解码器控制器205的第三输出端与去块滤波器265的第三输入端信号通信地连接。解码器控制器205的第四输出端与帧内预测模块260的第二输入端、与运动补偿器270的第一输入端、以及与参考画面缓冲器280的第二输入端信号通信地连接。
运动补偿器270的输出端与开关297的第一输入端信号通信地连接。帧内预测模块260的输出端与开关297的第二输入端信号通信地连接。开关297的输出端与组合器225的第一非反相输入端信号通信地连接。
输入缓冲器210的输入端作为解码器200的输入端可用于接收输入比特流。去块滤波器265的第一输出端作为解码器200的输出端可用于对输出画面进行输出。
转向图3,概括地由参考标号300来指示使用分层级的B画面、基于MPEG-4AVC标准的视图间时间预测结构。
转向图4,概括地由参考标号400来指示在单个帧上四个视图的示范平铺。
根据本原理,我们扩展MPEG-4AVC标准框架以使得能够使用码片组来进行多视图视频内容的编码和解码。为了支持该新能力,我们已经开发了新的高级语法以使用MPEG-4AVC标准来用信号通知(signal)码片中的多视图视频信息。如上所述,虽然在这里对于MPEG-4AVC标准来描述一个或更多的实施例,但本原理不受如此限制,而是可以被扩展至其他编码技术。
根据本原理,与MPEG-4AVC标准兼容的码片组被用于在单个帧中编码多个视图。如前所述,MPEG-4AVC标准引入了附加的高级语法以将每个画面分割(partition)为码片。另外,这些码片可以属于不同的码片组。这些码片组可以具有不同的码片组类型。MPEG-4AVC标准支持下列不同的码片组类型:隔行扫描的码片组;分散的码片组映射;一个或更多的“前景”码片组、和“剩余”码片组;改变码片组;和向每个码片组映射单元的显式指派码片组。这提供了怎样编码不同的码片的很多灵活性。码片组的首要目的可以认为是错误复原能力。码片组的另一应用为感兴趣区域(ROI)编码。AVC还包括了用于指定码片组边界上的帧间预测的约束的SEI消息。对于并行处理来说,这可以是有用的。
利用可以使用SEI消息以及码片组的概念来独立地编码和解码不同的码片组的事实,我们可以将来自不同视图的每个画面编码为单独的码片组。如上所述,图4示出了在单个帧上的不同的视图的示范平铺400。在MPEG-4AVC标准的框架中,可以将每个平铺的视图视作特定的码片组。例如,左上象限可以是码片组1、右上象限可以是码片组2、左下象限可以是码片组3、而右下象限可以是码片组4。实现它的一个可能的方法为使用码片组类型映射类型2和6的中的任一种。码片组类型2表示“前景”码片组和“剩余”码片组。根据本原理,可以将“前景”码片组指定为没有“剩余”区域、或具有作为剩余区域的一个视图的矩形区域。导致非重叠视图的任何其他组合也是可能的。码片组类型6允许在语法中显式地用信号通知宏块向码片组的映射。因而,对于每个视图来说,用信号通知该视图属于哪个码片组是可能的。
在用信号通知之后,则可以为了帧间预测而使用SEI消息来约束每个视图。表1示出了根据本原理的实施例的、利用MPEG-4AVC标准供使用的运动约束的码片组集补充增强信息(SEI)消息语法。此方式我们确信只从其自身视图来预测每个视图。
表1
motion_constrained_slice_group_set(payloadSize){ |
C |
描述符 |
num_slice_groups_in_set_minus1 |
5 |
ue(v) |
for(i=0:i<=num_slice_groups_in_set_minus1;i++) |
|
|
slice_group_id[i] |
5 |
u(v) |
exact_sample_value_match_flag |
5 |
u(1) |
pan_scan_rect_flag |
5 |
u(1) |
if(pan_scan_rect_flag) |
|
|
pan_scan_rect_id |
5 |
ue(v) |
} |
|
|
可以以几种不同的方式从不同的码片组提取视图信息。在一个实施例中,我们可以使用如表3中所示的SEI消息。表3例示了在与MPEG-4 AYC标准兼容的码片组中使用的多视图视频编码(MVC)补充增强信息(SEI)消息。
表3
multiview_display_info(payloadSize){ |
C |
描述符 |
num_coded_views_minus1 |
5 |
ue(v) |
org_pic_width_in_mbs_minus1 |
5 |
ue(v) |
org_pic_height_in_mbs_minus1 |
5 |
ue(v) |
for(i=0;i<=num_coded_views_minus1;i++){ |
|
|
view_id[i] |
5 |
ue(v) |
slice_group_id[view_id[i]] |
1 |
u(v) |
upsample_view_flag[view_id[i]] |
5 |
u(1) |
if(upsample_vlew_flag[view_id[i]]) |
|
|
upsample_filter[view_id[i]] |
5 |
u(2) |
if(upsample_fiter[view_id[i]]=3)( |
|
|
vert_dim[view_id[i]] |
5 |
ue(v) |
hor_dim[vlew_id[i]] |
5 |
ue(v) |
quantizer[view_id[i]] |
5 |
ue(v) |
for(yuv=0;yuv<3;yuv++){ |
|
|
for(y=0;y<vert_dim[view_id[i]]-1;y++){ |
|
|
for(x=0;x<hor_dim[view_id[i]]-1;x++) |
|
|
filter_coeffss[view_id[i]][yuv][y][x] |
5 |
se(v) |
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
因为易于从PPS中可得到描述每个视图的位置的部分的信息,所以已经去除了该信息。添加了被称作slice_group_id[view_id[i]]的附加语法。该附加语法用于将在PPS中用信号通知的码片组向它们对应的view_id映射。因而,使用该信息,可以确定哪个码片组对应于哪个view_id。
slice_group_id[view_id[i]]的语义(semantics)如下:
slice_group_id[view_id[i]]以光栅(raster)扫描顺序来识别对应于由view_id[i]指定的视图的码片组映射单元中的码片组。slice_group_id[view_id[i]]语法元素的尺寸为Ceil(Log2(num_slice_groups_minus1+1))比特。slice_group_id[view_id[i]]的值应当包括在0至num_slice_groups_minus1的范围内。
在另一实施例中,我们可以与码片组信息一起用信号通知PPS中的视图信息。在表2中指示了该实施例的一个例子。即,表2示出了根据本原理的实施例的修改后画面参数集(PPS)RBSP语法。
表2
pic_parameter_set_rbsp(){ |
C |
描述符 |
pic_parameter_set_id |
1 |
ue(v) |
seq_parameter_set_id |
1 |
ue(v) |
entropy_coding_mode_flag |
1 |
u(1) |
pic_order_present_flag |
1 |
u(1) |
num_slice_groups_minus1 |
1 |
ue(v) |
if(num_slice_groups_minus1>0){ |
|
|
slice_group_map_type |
1 |
ue(v) |
if(slice_group_map_type==0) |
|
|
for(iGroup=0;iGroup<=num_slice_groups_minus1;iGroup++) |
|
|
run_length_minus1[iGroup] |
1 |
ue(v) |
else if(slice_group_map_type==2) |
|
|
for(iGroup=0;iGroup<num_slice_groups_minus1;iGroup++){ |
|
|
top_left[iGroup] |
1 |
ue(v) |
bottom_right[iGroup] |
1 |
ue(v) |
view_id[iGroup] |
1 |
ue(v) |
} |
|
|
else if(slice_group_map_type==3||slice_group_map_type==4||slice_group_map_type==5){ |
|
|
slice_group_change_direction_flag |
1 |
u(1) |
slice_group_change_rate_minus1 |
1 |
ue(v) |
}else if(slice_group_map_type==6)( |
|
|
pic_size_in_map_units_minus1 |
1 |
ue(v) |
for(i=0;i<=pic_size_in_map_units_minus1;i++) |
|
|
slice_group_id[i] |
1 |
u(v) |
for(i=0;i<=num_slice_groups_minus1;i++) |
|
|
view_id[i] |
1 |
ue(v) |
} |
|
|
} |
|
|
num_ref_idx_I0_active_minus1 |
1 |
ue(v) |
num_ref_idx_I1_active_minus1 |
1 |
ue(v) |
weighted_pred_flag |
1 |
u(1) |
welghted_bipred_idc |
1 |
u(2) |
pic_init_qp_minus26/*相对于26*/ |
1 |
se(v) |
pic_init_qs_minus26/*相对于26*/ |
1 |
se(v) |
chroma_qp_index_offset |
1 |
se(v) |
deblocking_filter_control_present_flag |
1 |
u(1) |
constrained_intra_pred_flag |
1 |
u(1) |
redundant_pic_cnt_present_flag |
1 |
u(1) |
if(more_rbsp_data()){ |
|
|
transform_8×8_mode_flag |
1 |
u(1) |
pic_scaling_matrix_present_flag |
1 |
u(1) |
if(pic_scaling_matrix_present_flag) |
|
|
for(i=0;i<6+2*transform_8×8_mode_flag;i++){ |
|
|
pic_scaling_list_present_flag[i] |
1 |
u(1) |
if(pic_scaling_list_present_flag[i]) |
|
|
if(i<6) |
|
|
scaling_list(ScalingList4×4[i],16,UseDefaultScalingMatrix4×4Flag[i]) |
1 |
|
else |
|
|
scaling_list(ScalingList8×8[i-6],64,UseDefaultScalingMatrix8×8Flag[i-6]) |
1 |
|
} |
|
|
second_chroma_qp_index_offset |
1 |
se(v) |
} |
|
|
rbsp_trailing_bits() |
1 |
|
} |
|
|
这里,在码片组类型为2时,我们除左和右支持(support)之外还用信号通知view_id信息。在码片组类型为6的情况中,我们则提供从slice_group_id向view_id的映射。这向每个码片组给予相关联的view_id。其后该信息可以用于提取不同的视图。
另外,我们可以通过添加被称作self_contained_flag[i]的标志来改造SEI消息,所述标志指示由view_id[i]识别的视图不依赖于用于帧间预测的任何其他视图。在表4中示出self_contained_flag[i]、并且定义如下:
self_contained_fiag[i]等于1指示:在对于由编码的视频画面的view_id[i]部分识别的视图的解码过程内、没有帧间预测操作引用作为对应于view_id[j]的区域的部分的参考区域,并且i不等于j。self_contained_flag[i]等于0指示:在对于由编码的视频画面的view_id[i]部分识别的视图的解码过程内一些帧间预测操作可以引用或可以不引用作为对应于view_id[j]的区域的部分的参考区域,并且i不等于j。
表4
multiview_display_info(payloadSize){ |
C |
描述符 |
num_coded_views_minus1 |
5 |
ue(v) |
org_pic_width_in_mba_minus1 |
5 |
ue(v) |
org_pic_height_in_mbs_minus1 |
5 |
ue(v) |
for(i=0;i<=num_coded_views_minus1;i++){ |
|
|
view_id[i] |
5 |
ue(v) |
self_contained_flag[i] |
1 |
u(1) |
num_parts[view_id[i]] |
5 |
ue(v) |
for(j=0;j<=num_parts[i];j++){ |
|
|
flip_dir[view_id[i]][j] |
5 |
u(2) |
loc_left_offset[view_id[i]][j] |
5 |
ue(v) |
loc_top_offset[view_id[i]][j] |
5 |
ue(v) |
frame_crop_left_offset[view_id[i]][j] |
5 |
ue(v) |
frame_crop_right_offset[view_id[i]][j] |
5 |
ue(v) |
frame_crop_top_offset[view_id[i]][j] |
5 |
ue(v) |
frame_crop_bottom_offset[view_id[i]][j] |
5 |
ue(v) |
} |
|
|
upsample_view_flag[view_id[i]] |
5 |
u(1) |
if(upsample_view_flag[view_id[i]]) |
|
|
upsample_filtr[view_id[i]] |
5 |
u(2) |
if(upsample_fiter[view_id[i]]==3){ |
|
|
vert_dim[view_id[i]] |
5 |
ue(v) |
hor_dim[view_id[i]] |
5 |
ue(v) |
quantizer[view_id[i]] |
5 |
ue(v) |
for(yuv=0;yuv<3;yuv++){ |
|
|
for(y=0;y<vert_dim[view_id[i]]-1;y++){ |
|
|
for(x=0;x<hor_dim[view_id[i]]-1;x++) |
|
|
filter_coeffss[view_id[i]][yuv][y][x] |
5 |
se(v) |
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
转向图5,概括地由参考标号500指示使用码片组来编码多视图视频内容的示范方法。
方法500包括向功能块510传递控制的开始块。功能块510输入视图0至N-1,并且向功能块515传递控制。功能块515平铺输入视图,并且向功能块520传递控制。功能块520为每个平铺提供的码片组信息,并且向功能块525传递控制。功能块525使用码片组类型2或6,并且向功能块530传递控制。功能块530创建补充增强信息(SEI)消息以约束码片组之间的运动,并且向功能块535传递控制。功能块535创建包括码片组的序列参数集(SPS)和画面参数集(PPS)信息,并且向功能块540传递控制。功能块540编码平铺的视频序列,并且向结束块599传递控制。
转向图6,概括地由参考标号600指示使用码片组来解码多视图视频内容的示范方法。
方法600包括向功能块610传递控制的开始块605。功能块610解析(parse)运动约束的补充增强信息(SEI)消息和序列参数集(SPS),并且向功能块615传递控制。功能块615解析画面参数集(PPS),并且向功能块620传递控制。功能块620解析码片组信息,并且向功能块625传递控制。功能块625解析码片组类型2或6,并且向功能块630传递控制。功能块630解码每个码片组,并且向功能块635传递控制。功能块635提取每个码片组以获得不同的视图,并且向结束块699传递控制。
转向图7,概括地由参考标号700指示使用码片组来编码多视图视频内容的另一示范方法。
方法700包括向功能块710传递控制的开始块705。功能块710输入视图0至N-1,并且向功能块715传递控制。功能块715平铺输入视图,并且向功能块720传递控制。功能块720为每个平铺提供码片组信息,并且向功能块725传递控制。功能块725使用码片组类型2或6,并且向判定块730传递控制。判定块730判定当前码片组类型是否等于2。如果是,则向功能块735传递控制。否则,向功能块740传递控制。
功能块735为每个码片组指定view_id以及top_left和bottom_right坐标,并且向功能块745传递控制。
功能块745继续编码过程,并且向结束块799传递控制。
功能块740为每个码片组指定view_id,并且向功能块745传递控制。
转向图8,概括地由参考标号800指示使用码片组来解码多视图视频内容的另一示范方法。
方法800包括向功能块810传递控制的开始块805。功能块810解析序列参数集(SPS),并且向功能块815传递控制。功能块815解析画面参数集(PPS),并且向功能块820传递控制。功能块820解析码片组信息,并且向判定块825传递控制。判定块825确定当前码片组类型是否等于2。如果是,则向功能块830传递控制,否则,向功能块835传递控制。
功能块830为每个码片组解析view_id以及top_left和bottom_right坐标,并且向功能块840传递控制。
功能块840继续解码过程,并且向结束块899传递控制。
功能块835为每个码片组解析view_id,并且向功能块840传递控制。
转向图9,概括地由参考标号900指示使用码片组来编码多视图视频内容的又一示范方法。
方法900包括向功能块910传递控制的开始块。功能块910开始多视图视频编码补充增强信息(SEI)消息,并且向功能块915传递控制。功能块915写入编码视图的数目减1,并且向功能块920传递控制。功能块920写入原始画面的宽度和高度,并且向判定块925传递控制。判定块925确定是否已完成所有视图。如果是,则向功能块930传递控制。否则,向功能块935传递控制。
功能块930编码视图,并且向结束块999传递控制。
功能块935在补充增强信息(SEI)消息中写入view_id,并且向功能块940传递控制。功能块940写入slice_group_id,并且向功能块945传递控制。功能块945在补充增强信息(SEI)消息中写入upsample_view_flag,并且向功能块950传递控制。功能块950在补充增强信息(SEI)消息中写入其他补充增强信息(SEI)参数,并且返回控制给判定块925。
转向图10,概括地由参考标号1000指示使用码片组来解码多视图视频内容的又一示范方法。
方法1000包括向功能块1010传递控制的开始块1005。功能块1010解析多视图视频补充增强信息(SEI)消息,并且向功能块1015传递控制。功能块1015解析编码视图的数目减1,并且向功能块1020传递控制。功能块1020解析原始画面的宽度和高度,并且向判定块1025传递控制。判定块1025确定是否已完成所有视图。如果是,则向功能块1030传递控制。否则,向功能块1035传递控制。
功能块1030编码视图,并且向结束块1099传递控制。
功能块1035解析view_id,并且向功能块1040传递控制。功能块1040解析slice_group_id,并且向功能块1045传递控制。功能块1045解析upsample_view_flag,并且向功能块1050传递控制。功能块1050解析其他补充增强消息(SEI)参数,并且返回控制给判定块1025。
将对本原理的许多伴随的优势/特征中的一些给出描述,所述优势/特征中的一些已经在上面被提及。例如,一个优势/特征为具有使用多个码片组来编码对应于多视图视频内容的至少两个视图的编码器的装置。
另一优势/特征为具有如上所述的编码器的装置,其中多个码片组中的至少一些服从现有的视频编码标准或现有的视频编码推荐。
又一优势/特征为具有如上所述的编码器的装置,其中多个码片组中的至少一些服从国际标准化组织/国际电工委员会运动图像专家组-4第10部分高级视频编码标准/国际电信联盟电信部分H.264推荐。
又一优势/特征为具有如上所述的编码器的装置,其中编码器编码作为多个码片组中的相应的单独的一个码片组的至少两个视图中的每一个视图。
此外,另一优势/特征为具有编码器的装置,所述编码器编码作为上述的多个码片组中的相应的单独的一个码片组的至少两个视图中的每一个视图,其中,所述编码器使用补充增强信息消息以编码作为多个码片组中的相应的单独的一个码片组的至少两个视图中的每一个视图。
进一步地,另一优势/特征为具有如上所述使用补充增强信息(SEI)消息的编码器的装置,其中补充增强信息消息指示多个码片组中的至少一些受运动约束。
并且,另一优势/特征为具有如上所述的编码器的装置,其中编码器修改现有的视频编码标准或视频编码推荐的现有的补充增强信息消息以包括码片组识别符信息。
附加地,另一优势/特征为具有如上所述的编码器的装置,其中编码器修改画面参数集以用信号通知用于至少两个视图的视图识别符信息和码片组识别符信息。
此外,另一优势/特征为具有如上所述的编码器的装置,其中修改画面参数集以指定码片组类型2和码片组类型6中的至少一个。
进一步地,另一优势/特征为具有其中如上所述修改画面参数集的编码器的装置,其中当在画面参数集中指定码片组类型2和码片组类型6时,提供从视图识别符信息向码片组识别符信息的映射。
并且,另一优势/特征为具有如上所述的编码器的装置,其中编码器使用高级语法元素来用信号通知独立地编码至少两个视图中的每一个视图。
另外,另一优势/特征为具有如上所述的编码器的装置,其中高级语法元素对应于以下中的至少一个:码片首标层、序列参数集层、画面参数集层、视图参数集层、网络抽象层单元首标层、以及对应于补充增强信息消息的层。
本原理的这些和其他特征和优势可以由相关领域普通技术人员基于这里的教导来容易地确定。应当理解,可以以各种形式的硬件、软件、固件、专用处理器或它们的组合来实施本原理的教导。
最优选地,按照硬件和软件的组合来实施本原理的教导。此外,可以按照在程序存储单元上被有形体现的应用程序来实施该软件。该应用程序可以被上载至包括任何合适的架构的机器,并且被所述机器执行。优选地,在具有诸如一个或更多的中央处理单元(“CPU”)、随机存取存储器(“RAM”)和输入/输入(“I/O”)接口的硬件的计算机平台上实施该机器。该计算机平台还可以包括操作***和微指令代码。在这里所描述的各种过程和功能可以是微指令代码的一部分或应用程序的一部分、或是它们的任何组合,其可以由CPU执行。另外,诸如附加数据存储单元和打印单元之类的各种其他外设单元可以与该计算机平台连接。
应当进一步理解,因为优选地以软件实施***构成组件中的一些和在附图中描绘的方法,所以取决于对本原理编程的方式,***组件或过程功能块之间的实际连接可以是不同的。在这里教导的给定下,相关领域普通技术人员将能够想到本原理的这些和相似的实施方案或配置。
虽然在这里已经参考附图描述了阐释性的实施例,但应当理解,本原理不限于这些精确的实施例,而相关领域普通技术人员可以实现各种改变和修改,而不偏离本原理的范围或精神。意图在于在所附权利要求中提出的本原理的范围内包括如所有这样的改变和修改。