CN102438141A - 一种立体视频码流处理方法及装置 - Google Patents
一种立体视频码流处理方法及装置 Download PDFInfo
- Publication number
- CN102438141A CN102438141A CN2011103278180A CN201110327818A CN102438141A CN 102438141 A CN102438141 A CN 102438141A CN 2011103278180 A CN2011103278180 A CN 2011103278180A CN 201110327818 A CN201110327818 A CN 201110327818A CN 102438141 A CN102438141 A CN 102438141A
- Authority
- CN
- China
- Prior art keywords
- frame
- field
- video
- conversion
- visual angle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种立体视频码流处理方法及装置。一种立体视频码流处理方法,采用特定预测结构编码形成MVC码流,提取MVC码流中基本视角子码流和一个仅参考基本视角的扩展视角子码流,对包括这两个视角子码流的MVC码流转换后的MVC的VCL数据流中各帧数据进行逐帧处理,保证封装成的AVC码流的视频帧排列顺序与接收到的MVC码流中对应帧排列顺序一致。AVC码流中的视频帧和MVC码流中的对应视频帧具有相同的参考帧列表。同时不依据MVC码流的运动信息,改变slice header信息中字段的字段值,实现MVC码流到AVC码流的无损转码,即保证AVC解码器输出图像与MVC解码器输出对应图像一致,不损失图像质量。
Description
技术领域
本发明涉及视频技术领域,特别涉及一种立体视频码流处理方法及装置。
背景技术
随着多媒体技术的不断发展,多视角视频获得了越来越广泛的关注,并开始逐步走进人们的日常生活。然而多视角视频应用所需要的数据量是非常庞大的,进而增加传输和存储负担。为此,JVT(Joint Video Team,联合视频专家组)专门制定了MVC(Multiview Video Coding,多视角视频编码)标准。MVC标准作为H.264/AVC(Advanced Video Coding,新一代视频编码)标准(正式名称,ISO/IEC 14496-10)的扩充,在H.264/AVC标准的附录H中指定。MVC标准在H.264/AVC标准的基础上又加入了新技术,充分的利用了不同视角之间的相关性,从而降低视角间冗余数据量,能够在处理多视角视频的场景中提高编码效率、降低解码复杂度。
请参阅图1,图1是一种典型的MVC预测结构,其中Sn是视角顺序,Tn是时间顺序。每个视角按照可分级B帧预测编码,即在参考本视角内已编码帧的同时还可以使用相邻视角同一时刻的对应帧作为参考进行编码。图1中S0为视角0——基本视角,视角0中的视频帧使用视角内预测,即在进行预测编码时,不可以参考同一时刻其他视角的视频帧,其编码后获得的码流结构与AVC码流结构完全兼容。图1中S2,S4,S5为P视角,P视角中的视频帧选用单方向同一时刻其他视角的视频帧进行视角间预测,图1中的S1,S3为B视角,B视角中的视频帧可以选用左右两个方向同一时刻其他视角的视频帧进行视角间预测。P视角和B视角编码后获得的码流结构与AVC码流结构不完全兼容。MVC码流中的扩展视角子码流无法使用AVC解码器直接解码,对于现有终端设备采用AVC解码器对数据进行解码的用户,需要将传输的MVC码流转换为AVC码流,再进行解码。
目前,在进行MVC码流到AVC码流转换时,通常使用的码流转换方法能够将MVC码流转换为多个AVC码流,每个AVC码流对应单一视角。数据转换方法是一种利用MVC码流的运动信息,对MVC码流的解码结果或者解码中间结果进行快速二次编码的方法。其中:对采用帧内模式编码的宏块或者锚定帧内的宏块,在数据转换过程中,使用帧内模式编码。对采用视角内预测的宏块,在数据转换过程中,保持原始运动信息不变。对采用了视角间预测的P视角和B视角中的宏块,在数据转换过程中,需要更新运动信息,具体为:进行数据转换视角中的宏块利用全局视差找到所参考视角中的对应宏块;使用对应宏块的参考帧,预测模式和运动矢量等信息作为进行数据转换宏块的参考帧,预测模式和运动矢量信息。然而,由于参考帧,预测模式,运动矢量信息发生变化,造成重建宏块失真,并且会将失真引入到编码后续帧中,导致转换后的AVC码流失真率增加,进而导致终端设备显示的图像失真,降低图像质量。
发明内容
有鉴于此,本发明提供了一种立体视频码流处理方法及装置。提取采用特定预测结构编码的MVC码流中基本视角子码流和一个仅参考基本视角的扩展视角子码流,所提取的这两个视角子码流作为立体视频码流,实现该立体视频码流到AVC码流的无损转换,进而保证AVC解码器输出图像与MVC解码器输出对应图像一致,不损失图像质量。
本发明在编码MVC码流时采用IPPPP...预测结构,采用这样的预测结构,是为了可以根据人眼瞳距选择最佳视角构成双目视频以形成立体视频。本发明在接收MVC码流后,可以根据人眼瞳距提取基本视角子码流和与人眼瞳距最接近的一个扩展视角子码流,并将这两个视角子码流无损地转换为一个AVC码流,从而保证用户观看AVC解码器输出的双目立体视频无变形失真现象。
为实现上述目的,本发明提供如下技术方案:
基于本发明的一方面,提供一种立体视频码流处理方法,该方法支持新一代视频编码标准H.264/AVC标准附录H指定的多视角视频编码MVC标准,其特征在于,包括:
接收多视角视频编码MVC码流,并将其转换成MVC的视频编码层VCL数据流,其中所述MVC码流在编码端采用IPPPP...预测结构编码,所述IPPPP...预测结构为所述MVC码流的视角包括基本视角I视角和多个扩展视角P视角,且扩展视角P视角在进行视角间预测时,均以基本视角I视角相同时刻的视频帧作为参考帧;
确定MVC的VCL数据流中基本视角子码流和一个仅参考基本视角的扩展视角子码流的视频数据流,将该视频数据流作为MVC的VCL数据流中待处理的视频数据流;
更换MVC的VCL数据流中的SPS信息为符合AVC码流要求的SPS信息;
转换MVC的VCL数据流中的PPS信息为符合AVC码流要求的PPS信息;
逐帧转换待处理的视频数据流中的视频帧数据为符合AVC码流要求的视频帧数据,包括将slice header信息转换为符合AVC码流要求的slice header信息和将宏块数据转换为符合AVC码流要求的宏块数据;
整合更换后的SPS信息、转换后的PPS信息和转换后的视频帧数据,将整合后的数据流作为转换后的AVC的VCL数据流,并将AVC的VCL数据流封装为AVC码流。
优选地,所述确定MVC的VCL数据流中基本视角子码流和一个仅参考基本视角的扩展视角子码流的视频数据流,将该视频数据流作为MVC的VCL数据流中待处理的视频数据流包括:
解码MVC的VCL数据流中的SPS信息,获取SPS信息中的SPS子集信息;
依据SPS子集信息中的MVC视角数,确定MVC的VCL数据流中包含的视角子码流数;
对所述MVC的VCL数据流包括的多个视角子码流,从MVC码流携带的辅助增强信息SEI中得到视角间距离信息,根据人眼瞳距,确定与所述人眼瞳距最接近的视角间距离,依据所述最接近的视角间距离选取扩展视角P视角对应的扩展视角子码流,逐帧提取基本视角子码流和被选取扩展视角子码流的视频帧数据,将逐帧提取后的视频帧数据组成的视频数据流作为MVC的VCL数据流中待处理的视频数据流。
优选地,所述确定MVC的VCL数据流中基本视角子码流和一个仅参考基本视角的扩展视角子码流的视频数据流,将该视频数据流作为MVC的VCL数据流中待处理的视频数据流包括:
解码MVC的VCL数据流中的SPS信息,获取SPS信息中的SPS子集信息;
依据SPS子集信息中的MVC视角数,确定MVC的VCL数据流中包含的视角子码流数;
对所述MVC的VCL数据流包括的多个视角子码流,任意选取一个扩展视角子码流,逐帧提取基本视角子码流和所选取的扩展视角子码流的视频帧数据,将逐帧提取后的视频帧数据组成的视频数据流作为MVC的VCL数据流中待处理的视频数据流;所述方法还包括:在所述AVC码流的扩展视角与基本视角的视角间距离与所述人眼瞳距差距大时,返回执行确定MVC的VCL数据流中基本视角子码流和一个仅参考基本视角的扩展视角子码流的视频数据流以重新选取一个仅参考基本视角的扩展视角子码流,直至用户观看所述AVC码流解码得到的双目立体视频不发生变形现象。
优选地,更换MVC的VCL数据流中的SPS信息为符合AVC码流要求的SPS信息包括:
解码MVC的VCL数据流中的SPS信息,获取SPS信息中的基本SPS信息;
更换基本SPS信息中的level_idc字段、constraint_set4_flag字段、max_num_ref_frames字段、log2_max_frame_num_minus4字段;
将更换后的基本SPS信息编码为符合AVC码流要求的SPS信息。
优选地,所述更换基本SPS信息中的level_idc字段、constraint_set4_flag字段、max_num_ref_frames字段、log2_max_frame_num_minus4字段具体为:将基本SPS信息中的level_idc字段的字段值在level_idc字段的当前字段值基础上加1;更换constraint_set4_flag字段的字段值为0;更换max_num_ref_frames字段的字段值为12;设定log2_max_frame_num_minus4字段的字段值为12。
优选地,所述转换MVC的VCL数据流中的PPS信息为符合AVC码流要求的PPS信息为:将MVC的VCL数据流中的基本PPS信息直接复制,作为符合AVC码流要求的PPS信息。
优选地,逐帧转换待处理的视频数据流中的视频帧数据为符合AVC码流要求的视频帧数据包括:
解码待处理的视频数据流中帧数据包中的slice header信息;
区分当前帧的视角类型,根据不同的视角类型采取不同的处理方式,转换slice header信息;
将转换后的slice header信息编码为符合AVC码流要求的slice header信息;
将宏块数据直接复制,作为符合AVC码流要求的宏块数据;
转换后的slice header信息和直接复制的宏块数据,作为符合AVC码流要求的视频帧数据。
优选地,所述转换slice header信息包括:对slice header数据中的nal_ref_idc字段、frame_num字段、pic_order_cnt_lsb字段、adaptive_ref_pic_marking_mode_flag字段、modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段进行转换。
优选地,转换slice header信息中的nal_ref_idc字段的字段值具体为:当slice header信息对应的视频帧不作为参考帧,转换nal_ref_idc字段的字段值为0;当slice header信息对应的视频帧作为参考帧且该视频帧为IDR帧,转换nal_ref_idc字段的字段值为3;当slice header信息对应的视频帧作为参考帧且该视频帧为P帧或者非IDR帧的I帧,转换nal_ref_idc字段的字段值为2;当slice header信息对应的视频帧作为参考帧且该视频帧为B帧,转换nal_ref_idc字段的字段值为1;
转换slice header信息中的frame_num字段的字段值具体为:当slice header信息对应的视频帧的前一视频帧作为参考帧,则frame_num字值在前一视频帧对应的slice header信息中转换后的frame_num字段的字段值的基础上加1;当slice header信息对应的视频帧的前一视频帧不作为参考帧,则frame_num字段值等于前一视频帧对应的slice header信息中转换后的frame_num字段的字段值;
转换slice header信息中的pic_order_cnt_lsb字段的字段值具体为:当sliceheader信息对应的视频帧是扩展视角中的视频帧,转换后的pic_order_cnt_lsb字段的字段值为转换前的pic_order_cnt_lsb字段的字段值的2倍并加1;当sliceheader信息对应的视频帧是基本视角中的视频帧,转换后的pic_order_cnt_lsb字段的字段值为转换前的pic_order_cnt_lsb字段的字段值的2倍;
转换slice header信息中的adaptive_ref_pic_marking_mode_flag字段的字段值具体为:当slice header信息对应的视频帧为非锚定帧或者为扩展视角的锚定帧,转换adaptive_ref_pic_marking_mode_flag字段的字段值为0;当sliceheader信息对应的视频帧为基本视角的锚定帧,则分别获取该基本视角的锚定帧的帧信息中转换后的frame_num字段的字段值和前一个扩展视角的锚定帧的帧信息中转换后的frame_num字段的字段值,当两个frame_num字段的字段差值为1,转换slice header信息中的adaptive_ref_pic_marking_mode_flag字段的字段值为0,当两个frame_num字段的字段差值不为1,转换slice header信息中adaptive_ref_pic_marking_mode_flag字段的字段值为1;
对slice header信息中的前向/后向初始参考帧列表信息修改时,在设置ref_pic_list_modification_flag_l0字段/ref_pic_list_modification_flag_l1字段的字段值为1后,转换slice header信息中的modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段的字段值,具体为:从MVC码流中得到sliceheader信息对应的视频帧的参考帧个数,参考帧以及参考帧排列顺序;
依照参考帧排列顺序,依次获取参考帧转换后的frame_num字段的字段值;
计算参考帧列表中的第一个参考帧转换后的frame_num字段与当前视频帧转换后的frame_num字段的字段差值,转换abs_diff_pic_num_minus1字段的字段值为第一个参考帧转换后的frame_num字段与当前视频帧转换后的frame_num字段的字段差值取绝对值后减1的值,当字段差值小于0,转换modification_of_pic_nums_idc字段的字段值为0,当字段差值大于0,转换modification_of_pic_nums_idc字段的字段值为1;
当参考帧为第i个参考帧且i大于等于2,计算第i个参考帧转换后的frame_num字段与第i-1个参考帧转换后的frame_num字段的字段差值,转换abs_diff_pic_num_minus1字段的字段值为第i个参考帧转换后的frame_num字段与第i-1个参考帧转换后的frame_num字段的字段差值取绝对值后减1的值,当字段差值小于0,转换modification_of_pic_nums_idc字段的字段值为0,当字段差值大于0,转换modification_of_pic_nums_idc字段的字段值为1;当参考帧列表中所有参考帧重新映射所需的modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段转换结束,将modification_of_pic_nums_idc字段的字段值设置为3;
基于本发明的另一方面,还提供一种立体视频码流处理装置,该装置支持H.264/AVC标准附录H指定的多视角视频编码MVC标准,包括:
数据流编码模块,用于采用IPPPP...预测结构编码多视角视频,形成多视角视频编码MVC码流,其中,所述IPPPP...预测结构为MVC码流的视角包括基本视角I视角和多个扩展视角P视角,且扩展视角P视角在进行视角间预测时,均以基本视角I视角相同时刻的视频帧作为参考帧;
数据流传输模块,用于传输数据流编码模块产生的多视角视频编码MVC码流;
数据流转换模块,用于接收MVC码流,并将其转换成MVC的视频编码层VCL数据流;
数据流提取模块,用于提取MVC的VCL数据流中的基本视角子码流和其中一个仅参考基本视角的扩展视角子码流,将提取的基本视角子码流和扩展视角子码流中的视频数据流作为MVC的VCL数据流中待处理的视频数据流;
SPS信息更换模块,用于更换MVC的VCL数据流中的SPS信息为符合AVC码流要求的SPS信息;
PPS信息转换模块,用于转换MVC的VCL数据流中的PPS信息为符合AVC码流要求的PPS信息;
视频帧数据转换模块,用于逐帧转换待处理的视频数据流中的视频帧数据为符合AVC码流要求的视频帧数据,包括将slice header信息转换为符合AVC码流要求的slice header信息和将宏块数据转换为符合AVC码流要求的宏块数据;
码流封装模块,用于整合更换后的SPS信息、转换后的PPS信息和转换后的视频帧数据,将整合后的数据流作为转换后的AVC的VCL数据流,并将AVC的VCL数据流封装为AVC码流。
优选地,所述数据流提取模块包括:SPS子集信息获取单元,用于解码MVC的VCL数据流中的SPS信息,获取SPS信息中的SPS子集信息;
子码流数确定单元,用于依据SPS子集信息中的MVC视角数,确定MVC的VCL数据流中包含的视角子码流数;
子码流数提取单元,用于在所述子码流数确定单元确定所述MVC的VCL数据流包括多个视角子码流的情况下,从MVC码流携带的辅助增强信息SEI中得到视角间距离信息,根据人眼瞳距,确定与所述人眼瞳距最接近的视角间距离,依据所述最接近的视角间距离选取扩展视角P视角对应的扩展视角子码流,逐帧提取基本视角子码流和被选取扩展视角子码流的视频帧数据,将逐帧提取后的视频帧数据组成的视频数据流作为MVC的VCL数据流中待处理的视频数据流。
优选地,所述子码流提取单元还用于任意选取一个扩展视角子码流,逐帧提取基本视角子码流和所选取的扩展视角子码流的视频帧数据,将逐帧提取后的视频帧数据组成的视频数据流作为MVC的VCL数据流中待处理的视频数据流;
所述装置还包括:判断模块,用于判断所述AVC码流的扩展视角与基本视角的视角间距离与所述人眼瞳距差距的大小;
触发器,用于在所述判断模块的结果为所述码流封装模块封装的所述AVC码流的扩展视角与基本视角的视角间距离与所述人眼瞳距差距大的情况下,触发所述数据流提取模块。
优选地,所述SPS信息更换模块包括:
基本SPS信息获取单元,用于解码MVC的VCL数据流中的SPS信息,获取SPS信息中的基本SPS信息;
更换单元,用于更换基本SPS信息中的level_idc字段、constraint_set4_flag字段、max_num_ref_frames字段、log2_max_frame_num_minus4字段;
SPS编码单元,用于将更换后的基本SPS信息编码为符合AVC码流要求的SPS信息。
优选地,所述更换单元包括:
第一更换子单元,用于将基本SPS信息中的level_idc字段的字段值在level_idc字段的当前字段值基础上加1;
第二更换子单元,用于更换constraint_set4_flag字段的字段值为0;
第三更换子单元,用于更换max_num_ref_frames字段的字段值为12;
第四更换子单元,用于设定log2_max_frame_num_minus4字段的字段值为12。
优选地,所述PPS信息转换模块具体用于将MVC的VCL数据流中的基本PPS信息直接复制,作为符合AVC码流要求的PPS信息。
优选地,所述视频帧数据转换模块包括:
slice header信息解码单元,用于解码待处理的视频数据流中帧数据包中的slice header信息;
转换单元,用于区分当前帧的视角类型,根据不同的视角类型采取不同的处理方式,转换slice header信息;
slice header信息编码单元,用于将转换后的slice header信息编码为符合AVC码流要求的slice header信息;
宏块数据复制单元,用于将宏块数据直接复制,作为符合AVC码流要求的宏块数据;
视频帧数据确定单元,用于将转换后的slice header信息和直接复制的宏块数据确定为符合AVC码流要求的视频帧数据。
优选地,所述转换单元具体用于对slice header数据中的nal_ref_idc字段、frame_num字段、pic_order_cnt_lsb字段、adaptive_ref_pic_marking_mode_flag字段、modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段进行转换。
优选地,所述转换单元包括:
第一转换子单元,用于转换slice header信息中的nal_ref_idc字段的字段值,具体为:当slice header信息对应的视频帧不作为参考帧,转换nal_ref_idc字段的字段值为0;当slice header信息对应的视频帧作为参考帧且该视频帧为IDR帧,转换nal_ref_idc字段的字段值为3;当slice header信息对应的视频帧作为参考帧且该视频帧为P帧或者非IDR帧的I帧,转换nal_ref_idc字段的字段值为2;当slice header信息对应的视频帧作为参考帧且该视频帧为B帧,转换nal_ref_idc字段的字段值为1;
第二转换子单元,用于转换slice header信息中的frame_num字段的字段值,具体为:当slice header信息对应的视频帧的前一视频帧作为参考帧,则frame_num字值在前一视频帧对应的slice header信息中转换后的frame_num字段的字段值的基础上加1;当slice header信息对应的视频帧的前一视频帧不作为参考帧,则frame_num字段值等于前一视频帧对应的slice header信息中转换后的frame_num字段的字段值;
第三转换子单元,用于转换slice header信息中的pic_order_cnt_lsb字段的字段值,具体为:当slice header信息对应的视频帧是扩展视角中的视频帧,转换后的pic_order_cnt_lsb字段的字段值为转换前的pic_order_cnt_lsb字段的字段值的2倍并加1;当slice header信息对应的视频帧是基本视角中的视频帧,转换后的pic_order_cnt_lsb字段的字段值为转换前的pic_order_cnt_lsb字段的字段值的2倍;
第四转换子单元,用于转换slice header信息中的adaptive_ref_pic_marking_mode_flag字段的字段值,具体为:当slice header信息对应的视频帧为非锚定帧或者为扩展视角的锚定帧,转换adaptive_ref_pic_making_mode_flag字段的字段值为0;当slice header信息对应的视频帧为基本视角的锚定帧,则分别获取该基本视角的锚定帧的帧信息中转换后的frame_num字段的字段值和前一个扩展视角的锚定帧的帧信息中转换后的frame_num字段的字段值,当两个frame_num字段的字段差值为1,转换slice header信息中的adaptive_ref_pic_making_mode_flag字段的字段值为0,当两个frame_num字段的字段差值不为1,转换slice header信息中adaptive_ref_pic_making_mode_flag字段的字段值为1;
第五转换子单元,用于对slice header信息中的前向/后向初始参考帧列表信息修改时,在设置ref_pic_list_modification_flag_l0字段/ref_pic_list_modification_flag_l1字段的字段值为1后,转换slice header信息中的modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段的字段值,具体为:从MVC码流中得到slice header信息对应的视频帧的参考帧个数,参考帧以及参考帧排列顺序;依照参考帧排列顺序,依次获取参考帧转换后的frame_num字段的字段值;计算参考帧列表中的第一个参考帧转换后的frame_num字段与当前视频帧转换后的frame_num字段的字段差值,转换abs_diff_pic_num_minus1字段的字段值为第一个参考帧转换后的frame_num字段与当前视频帧转换后的frame_num字段的字段差值取绝对值后减1的值,当字段差值小于0,转换modification_of_pic_nums_idc字段的字段值为0,当字段差值大于0,转换modification_of_pic_nums_idc字段的字段值为1;
当参考帧为第i个参考帧且i大于等于2,计算第i个参考帧转换后的frame_num字段与第i-1个参考帧转换后的frame_num字段的字段差值,转换abs_diff_pic_num_minus1字段的字段值为第i个参考帧转换后的frame_num字段与第i-1个参考帧转换后的frame_num字段的字段差值取绝对值后减1的值,当字段差值小于0,转换modification_of_pic_nums_idc字段的字段值为0,当字段差值大于0,转换modification_of_pic_nums_idc字段的字段值为1;当参考帧列表中所有参考帧重新映射所需的modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段转换结束,将modification_of_pic_nums_idc字段的字段值设置为3。
从上述的技术方案可以看出,采用特定预测结构编码形成MVC码流,提取MVC码流中基本视角子码流和一个仅参考基本视角的扩展视角子码流,对包括这两个视角子码流的MVC码流转换后的MVC的VCL数据流中的各帧数据进行逐帧处理,保证封装成的AVC码流的视频帧排列顺序与接收到的MVC码流中对应帧排列顺序一致,即两个视角视频帧逐帧交替,AVC解码器对封装成的AVC码流无须额外处理过程即可解码播放。AVC码流中的视频帧和MVC码流中的对应视频帧具有相同的参考帧列表。同时不依据MVC码流的运动信息,改变slice header信息中字段的字段值,实现了MVC码流到AVC码流的无损转码,即保证AVC解码器输出图像与MVC解码器输出对应图像一致,不损失图像质量。
更进一步地,在编码MVC码流时采用IPPPP...预测结构编码,接收MVC码流后,根据人眼瞳距提取基本视角子码流和与人眼瞳距最接近的一个扩展视角子码流,并将这两个视角子码流无损地转换为一个AVC码流,从而保证用户观看AVC解码器输出的双目立体视频无变形失真现象。
附图说明
图1为典型的MVC预测结构图;
图2为本发明实施例提供的立体视频码流处理方法的流程图;
图3为图2采用的MVC预测结构图;
图4为本发明实施例提供的立体视频码流处理方法步骤S102的流程图;
图5为MVC码流转换后得到的MVC的VCL数据流结构图;
图6为本发明实施例提供的立体视频码流处理方法步骤S103的流程图;
图7为本发明实施例提供的立体视频码流处理方法步骤S105的流程图;
图8为本发明实施例提供的立体视频码流处理装置的一种结构示意图;
图9为本发明实施例提供的立体视频码流处理装置中数据流提取模块的结构示意图;
图10为本发明实施例提供的立体视频码流处理装置的另一种结构示意图;
图11为本发明实施例提供的立体视频码流处理装置中SPS信息更换模块的结构示意图;
图12为SPS信息更换模块中更换单元的结构示意图;
图13为本发明实施例提供的立体视频码流处理装置中视频帧数据转换模块的结构示意图;
图14为视频帧数据转换模块中转换单元的结构示意图。
具体实施方式
为了便于本领域技术人员的理解,首先对申请文件中出现的英文单词进行解释。
MVC标准:Multiview Video Coding,多视角视频编码标准;本专利中特指H.264/AVC标准附录H制定的多视角编码标准。
NAL:Network Abstraction Layer,网络提取层;
RBSP:Raw Byte Sequence Packet,原始字节序列负荷;
VCL:Video Coding Layer,视频编码层;
JVT:Joint Video Team,联合视频专家组;
AVC标准:Advanced Video Coding,新一代视频编码标准;即视频编码国际标准H.264,正式名称,ISO/IEC 14496-10。
SPS:Sequence Parameter Sets,序列参数集;
PPS:Picture Parameter Sets,图像参数集;
DPB:Decoded Picture Buffer,解码图像缓冲区;
RPLR:Reference Picture List Reordering,参考图像列表重排序;
MMCO:Memory Management Control Operation,内存管理控制操作;
IDR:Instantaneous Decoding Refresh,即时解码刷新;
PSNR:Peak Signal-to-Noise Ratio,峰值信噪比;
FIFO:First In First Out,先入先出;
GOP:Group Of Picture,图像组;
CABAC:Context-based Adaptive Binary Arithmetic Coding,基于上下文的自适应二进制算术编码;
JMVC:Joint Multiview Video Coding,联合多视角视频编码;
JM:Joint Model,联合模型;
SEI:Supplemental Enhancement Information,辅助增强信息。
申请文件中提到的level_idc字段、constraint_set4_flag字段、max_num_ref_frames字段、log2_max_frame_num_minus4字段、nal_ref_idc字段、frame_num字段、pic_order_cnt_lsb字段、adaptive_ref_pic_marking_mode_flag字段、ref_pic_list_modification_flag_l0字段、ref_pic_list_modification_flag_l1字段、modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段在2009年3月的JVT-AD205中定义。在本申请文件中不再加以说明。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
发明人经过长时间实践发现,现有视频码流转换技术将由视差信息得到运动信息时的误差引入到数据编码过程中,导致转换的AVC码流失真率增加。当AVC解码器解码时,输出的码流失真率增加,进而导致终端设备显示的图像失真,降低图像质量。
为了解决上述问题,本发明实施例提供一种立体视频码流处理方法,该方法支持H.264/AVC标准附录H指定的MVC标准,H.264/AVC标准的正式名称为ISO(International Standard Organized,国际标准化组织)/IEC(International Electro technical Commission,国际电工委员会)14496-10。体视频码流处理方法的流程图请参阅图2,包括:
S101:接收MVC码流,并将其转换成MVC的VCL数据流。
接收到的MVC码流在编码端采用IPPPP...预测结构编码,IPPPP...预测结构为MVC码流的视角包括基本视角I视角和多个扩展视角P视角,且扩展视角P视角在进行视角间预测时,均以基本视角相同时刻的视频帧作为参考帧,如图3所示。图3为本发明实施例提供的立体视频码流处理方法采用的MVC预测结构图。
MVC码流的转换具体为:从MVC码流中获取NAL单元数据,将NAL单元数据转换为MVC的VCL数据流。MVC码流到MVC的VCL数据流的转换请参阅现有转换方法,对此不加以详细说明。
在接收MVC码流,并将其转换成MVC的VCL数据流后,由于MVC码流与AVC码流不完全兼容,需要对转换后的MVC的VCL数据流中的数据进行操作,将其改变为符合AVC码流要求的数据。下述步骤S102至步骤S105则具体阐述是如何对MVC码流转换后得到的MVC的VCL数据流中的数据进行操作的。
S102:确定MVC的VCL数据流中基本视角子码流和一个仅参考基本视角的扩展视角子码流的视频数据流,将该视频数据流作为MVC的VCL数据流中待处理的视频数据流。具体请参阅图4,图4为步骤S102的流程图。
S1021:解码VCL数据流中的SPS信息,获取SPS信息中的SPS子集信息。其中:解码VCL数据流中的SPS信息包括解码基本SPS信息和解码SPS子集信息。SPS信息为图像序列信息,基本SPS信息位于SPS数据包中,SPS子集信息位于SPS子集数据包中。
S1022:依据SPS子集信息中的MVC视角数,确定VCL数据流中包含的视角子码流数。
MVC码流转换后得到的VCL数据流中数据包按照图5所示的结构图进行排列,包括SPS数据包、SPS子集数据包、PPS数据包和多个帧数据包。其中:SPS子集数据包包括如MVC视角数、锚定帧的前向参考帧和后向参考帧、非锚定帧的前向参考帧和后向参考帧等子集信息,通过SPS子集信息中的MVC视角数信息,则可以确定VCL数据流中包含的视角子码流数。
S1023:对MVC的VCL数据流包括的多个视角子码流中逐帧提取基本视角子码流和其中一个仅参考基本视角的扩展视角子码流中的视频帧数据,将逐帧提取后的视频帧数据组成的视频数据流作为MVC的VCL数据流中待处理的视频数据流。
其中,将基本视角子码流对应的基本视角确定为双目立体视频的基本视角。另一个扩展视角子码流对应的扩展视角确定为双目立体视频的扩展视角。其中:仅参考基本视角的扩展视角子码流为,扩展视角进行视角间预测时仅以基本视角内的视频帧作为参考帧编码获得的子码流。
仅参考基本视角的扩展视角子码流可以为多个,在提取视频帧数据时,从MVC码流中携带的SEI中获取视角间距离信息,根据人眼瞳距,确定与人眼瞳距最接近的视角间距离,由于基本视角已固定,所以可以进一步确定最接近人眼瞳距的视角间距离对应的扩展视角,提取该扩展视角对应的扩展视角子码流,根据此过程选取的子码流对应的视角称为最佳视角。其中,人眼瞳距可以采用65mm,上述人眼瞳距数值可以从Wei Chen,Fournier,Marcus Barkowsky 1,Patrick Le Callet,“NEW REQUIREMENTS OFSUBJECTIVE VIDEO QUALITY ASSESSMENT METHODOLOGIES FOR3DTV”,Video Processing and Quality Metrics 2010,第4页中获知。
当然,在提取视频帧数据时,还可以任意选取一个扩展视角子码流,通过本发明实施例提供的码流处理方法后,在所述AVC码流的扩展视角与基本视角的视角间距离与所述人眼瞳距差距大,返回步骤1023重新提取另一个扩展视角子码流中的视频帧数据,直至用户观看所述AVC码流解码得到的双目立体视频不发生变形现象。
一般情况下,扩展视角与基本视角的视角间距离大于等于30mm,且小于等于70mm,表明扩展视角与基本视角的视角间距离与所述人眼瞳距差距适宜,此时用户观看AVC码流解码得到的双目立体视频不会发生变形现象。扩展视角与基本视角的视角间距离小于30mm,且大于70mm,表明扩展视角与基本视角的视角间距离与所述人眼瞳距差距大,此时用户观看AVC码流解码得到的双目立体视频发生变形现象。其中,数值30mm和70mm可以从FrederikZilly,JosefKluger and PeterKauff,“ProductionRulesforStereoAcquisition”,Proceedings of the IEEE,第9页中获知。
下面以图3为例对步骤1023进行说明。图3中基本视角子码流为视角0即S0对应的子码流。扩展视角子码流为多个P视角对应的子码流。解码MVC码流转换后得到的MVC的VCL数据流中的SPS信息,获取SPS信息中的SPS子集信息。依据SPS子集信息中的MVC视角数,确定VCL数据流中包含六个视角子码流。依据人眼瞳距,提取S0对应的子码流和其中一个扩展视角P视角子码流。
S103:更换MVC的VCL数据流中的SPS信息为符合AVC码流要求的SPS信息。步骤S103的具体步骤请参阅图6,包括:
S1031:解码MVC的VCL数据流中的SPS信息,获取SPS信息中的基本SPS信息。其中:MVC的VCL数据流中的SPS信息包括基本SPS信息和SPS子集信息。SPS信息为图像序列信息,基本SPS信息位于SPS数据包中,SPS子集信息位于SPS子集数据包中。在这里,解码MVC的VCL数据流中的SPS信息为解码基本SPS信息。
前已述及,SPS子集数据包包括如MVC视角数、锚定帧的前向参考帧和后向参考帧、非锚定帧的前向参考帧和后向参考帧等信息,这些信息对于AVC码流来说是不需要的。因此,在更换SPS信息时,只需要更换基本SPS信息中的部分字段。在实施本发明实施例提供的码流处理方式时,对SPS数据包和SPS子集数据包解码,是为了在处理slice header信息过程中,获取视频帧的参考帧列表,管理DPB和编码slice header信息时使用。
S1032:更换基本SPS信息中的level_idc字段、constraint_set4_flag字段、max_num_ref_frames字段、log2_max_frame_num_minus4字段。具体为:
将基本SPS信息中的level_idc字段的字段值在level_idc字段的当前字段值基础上加1,更换constraint_set4_flag字段的字段值为0,更换max_num_ref_frames字段的字段值为12。
log2_max_frame_num_minus4字段的字段值依据最大frame_num进行更换,log2_max_frame_num_minus4字段的字段值等于最大frame_num以2为底数取log后,向上取整数获得计算结果,再将计算结果减去4得到log2_max_frame_num_minus4字段的字段值。AVC标准规定log2_max_frame_num_minus4字段的字段值的取值范围为0~12,更换后的log2_max_frame_num_minus4字段的字段值在该范围内。而在实验中,最大的frame_num与总编码帧数有关,由于无法直接获得最大frame_num数值,为了满足最大需求,可以设定log2_max_frame_num_minus4字段的字段值为12。
S1033:将更换后的基本SPS信息编码为符合AVC码流要求的SPS信息。即将基本SPS信息中更换后的字段和基本SPS信息中未更换后的字段组合为新的基本SPS信息,并将新的基本SPS信息编码为符合AVC码流要求的SPS信息。
S104:转换MVC的VCL数据流中的PPS信息为符合AVC码流要求的PPS信息。具体为:将MVC的VCL数据流中的基本PPS信息直接复制,作为符合AVC码流要求的PPS信息。
PPS信息包括一个图像的所有分片信息,MVC的VCL数据流中包括基本PPS信息和扩展PPS信息。不需要对基本PPS信息进行修改,直接复制未解码的基本PPS信息,作为符合AVC码流要求的PPS信息即可。
本发明实施例提供的码流处理方法可以解码基本PPS信息和扩展PPS信息,在处理slice header信息过程中,获取视频帧的参考帧列表,管理DPB和编码slice header信息时使用。
S105:逐帧转换待处理的视频数据流中的视频帧数据为符合AVC码流要求的视频帧数据,包括将slice header信息转换为符合AVC码流要求的sliceheader信息和将宏块数据转换为符合AVC码流要求的宏块数据。具体请参阅图7,包括:
S1051:解码待处理的视频数据流中帧数据包中的slice header信息。帧数据包携带视频帧数据,包括slice header信息和宏块数据。
S1052:区分当前帧的视角类型,根据不同的视角类型采取不同的处理方式,转换slice header信息。其中:视角类型包括基本视角和扩展视角。基本视角和扩展视角对应的视频帧的slice header信息的处理方式不同,如frame_num字段和pic_order_cnt_lsb字段。
对slice header信息进行转换包括:对slice header信息中的nal_ref_idc字段、frame_num字段、pic_order_cnt_lsb字段、adaptive_ref_pic_marking_mode_flag字段、ref_pic_list_modification_flag_l0字段、ref_pic_list_modification_flag_l1字段、modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段进行更换。具体为:
转换slice header信息中的nal_ref_idc字段的字段值:当slice header信息对应的视频帧不作为参考帧,转换nal_ref_idc字段的字段值为0;当slice header信息对应的视频帧作为参考帧且该视频帧为IDR帧,转换nal_ref_idc字段的字段值为3;当slice header信息对应的视频帧作为参考帧且该视频帧为P帧或者非IDR帧的I帧,转换nal_ref_idc字段的字段值为2;当slice header信息对应的视频帧作为参考帧且该视频帧为B帧,转换nal_ref_idc字段的字段值为1。
其中,视频帧为I帧或者P帧或者B帧可以通过slice header信息中的帧类型slice_type字段进行判断,slice_type字段表明视频帧的类型,通过判断其字段值即可获知视频帧的具体类型。视频帧为IDR帧或者非IDR帧可以通过MVC码流中表明视频帧是否为IDR帧的标识位进行判断。
转换slice header信息中的frame_num字段的字段值:当slice header信息对应的视频帧的前一视频帧作为参考帧,则frame_num字值在前一视频帧对应的slice header信息中转换后的frame_num字段的字段值的基础上加1;当slice header信息对应的视频帧的前一视频帧不作为参考帧,则frame_num字段值等于前一视频帧对应的slice header信息中转换后的frame_num字段的字段值。
在实际操作过程中,上述对slice header信息中的frame_num字段的字段值的转换可以按照以下优选方式执行:当slice header信息对应的视频帧是扩展视角中的视频帧,该视频帧的前一视频帧为基本视角中的视频帧,如果前一视频帧的原始nal_ref_idc字段的字段值不为0或者前一视频帧作为当前视频帧的参考帧,则frame_num字段的字段值在前一视频帧中的frame_num字段的字段值基础上加1,如果前一视频帧的原始nal_ref_idc字段的字段值为0并且上一视频帧作为当前视频帧的参考帧,则frame_num字段的字段值等于前一视频帧中的frame_num字段的字段值;当slice header信息对应的视频帧是基本视角中的视频帧,该视频帧的前一视频帧为扩展视角中的视频帧,如果前一视频帧的原始nal_ref_idc字段的字段值为0,则frame_num字段的字段值等于前一视频帧中的frame_num字段的字段值,如果前一视频帧的原始nal_ref_idc字段的字段值不为0,则frame_num字段的字段值在前一视频帧中的frame_num字段的字段值基础上加1。
需要说明的是:待处理的视频数据流中第一个视频帧为IDR帧,其frame_num字段的字段值为0,在进行frame_num字段转换时,第一个视频帧的frame_num字段的字段值不变。其他视频帧的frame_num字段的字段值通过上述方式进行转换。
转换slice header信息中的pic_order_cnt_lsb字段的字段值:当slice header信息对应的视频帧是扩展视角中的视频帧,转换后的pic_order_cnt_lsb字段的字段值为转换前的pic_order_cnt_lsb字段的字段值的2倍并加1;当slice header信息对应的视频帧是基本视角中的视频帧,转换后的pic_order_cnt_lsb字段的字段值为转换前的pic_order_cnt_lsb字段的字段值的2倍。
adaptive_ref_pic_marking_mode_flag字段表明参考帧的标记模式。当adaptive_ref_pic_making_mode_flag字段的字段值为0时,使用自动滑窗法标记参考帧,自动滑窗法采用算FIFO法处理,所谓FIFO算法将用于缓存参考帧的DPB视为一个参考帧队列,在DPB未满时,将参考帧放入DPB队列队尾,当DPB已满时,从队首将最早进入DPB中的参考帧移除。当adaptive_ref_pic_marking_mode_flag字段的字段值为1,使用自定义标记法标记参考帧,所谓自定义标记法为使用MMCO将某一参考帧设置为何种类型的参考帧或者移出DPB。解码后的参考帧立刻放入DPB中,使用自动滑窗法或者自定义标记法将其移除DPB。MMCO为AVC标准中定义的内存管理控制操作。
转换slice header信息中的adaptive_ref_pic_marking_mode_flag字段的字段值:当slice header信息对应的视频帧为非锚定帧或者为扩展视角的锚定帧,转换adaptive_ref_pic_marking_mode_flag字段的字段值为0;当slice header信息对应的视频帧为基本视角的锚定帧,则分别获取该基本视角的锚定帧的帧信息中转换后的frame_num字段的字段值和前一个扩展视角的锚定帧的帧信息中转换后frame_num字段的字段值,当两个frame_num字段的字段差值为1,转换slice header信息中的adaptive_ref_pic_marking_mode_flag字段的字段值为0,当两个frame_num字段的字段差值不为1,转换slice header信息中adaptive_ref_pic_marking_mode_flag字段的字段值为1。
锚定帧是指锚定访问单元内的视频帧,不同视角同一时刻Tn下的所有视频帧的集合被称为一个访问单元。锚定帧只能参考相同访问单元内的视频帧,不可以使用帧间预测。在输出顺序上随后编码的视频帧使用帧间预测时不能参考在解码顺序上锚定帧之前的视频帧。锚定访问单元可以达到隔离误差和提供视角切换点的目的,如图1中的T0,T8时刻不同视角所有视频帧的集合即为锚定访问单元。锚定访问单元内的视频帧为锚定帧,如图1中T8时刻下的视频帧I0。锚定帧和非锚定帧的判断可以通过获取MVC码流中表明视频帧是否为锚定帧的标识位判断视频帧是锚定帧还是非锚定帧。
参考帧在参考帧列表中的位置用列表索引序号来表示,其默认的排列方式是与当前帧位置越近的参考帧序号越小,可以使用RPLR命令改变默认顺序,从而保证参考帧列表与MVC码流的参考帧列表一致。RPLR为AVC标准中定义的对参考帧列表重排序的方法。RPLR命令根据将移到参考帧列表索引序号的参考帧的frame_num字段与预测的frame_num字段之间的绝对差值,调整参考帧列表中参考帧的排列顺序,即RPLR命令依据上述对modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段的字段值的转换后的字段值调整参考帧在参考帧列表中的排序,从而AVC码流中视频帧保证参考帧列表与MVC码流中视频帧的参考帧列表一致。
前向参考帧列表0修改标识ref_pic_list_modification_flag_l0字段和后向参考帧列表1修改标识ref_pic_list_modification_flag_l1字段分别标识视频帧所使用的初始参考帧列表是否修改。对相应的初始参考帧列表修改时,在设置ref_pic_list_modification_flag_l0字段/ref_pic_list_modification_flag_l1字段的字段值为1后,通过对modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段的字段值转换来实现,具体为:从MVC码流中得到slice header信息对应的视频帧的参考帧个数,参考帧以及参考帧排列顺序;依照参考帧排列顺序,依次获取参考帧转换后frame_num字段的字段值。如无特殊说明,下文中提到的frame_num字段值均为转换后的frame_num字段值。计算参考帧列表中的第一个参考帧的frame_num字段与当前视频帧的frame_num字段的字段差值,转换abs_diff_pic_num_minus1字段的字段值为第一个参考帧的frame_num字段与视频帧的frame_num字段的字段差值取绝对值后减1的值,当字段差值小于0,转换modification_of_pic_nums_idc字段的字段值为0,当字段差值大于0,转换modification_of_pic_nums_idc字段的字段值为1;当参考帧为第i个参考帧且i大于等于2,计算第i个参考帧的frame_num字段与第i-1个参考帧的frame_num字段的字段差值,转换abs_diff_pic_num_minus1字段的字段值为第i个参考帧的frame_num字段与第i-1个参考帧的frame_num字段的字段差值取绝对值后减1的值,当字段差值小于0,转换modification_of_pic_nums_idc字段的字段值为0,当字段差值大于0,转换modification_of_pic_nums_idc字段的字段值为1。
当参考帧列表中所有参考帧重新映射所需的modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段转换结束,即对参考帧列表的重新映射结束,此时将modification_of_pic_nums_idc字段的字段值设置为3。
S1053:将转换后的slice header信息编码为符合AVC码流要求的sliceheader信息。
编码后的slice header信息,需要slice header信息结尾整8比特的要求。若编码后的slice header信息不满足上述要求,则在编码后的slice header信息后,填充预设数量的1,以满足slice header信息结尾整8比特的要求。
S1054:转换宏块数据为符合AVC码流要求的宏块数据。具体为:将宏块数据直接复制,作为符合AVC码流要求的宏块数据。
将宏块数据直接复制,作为符合AVC码流要求的宏块数据。可以省去宏块数据进行熵解码、反离散余弦变换和运动补偿耗费的时间,提高效率。
S1055:将转换后的slice header信息和直接复制的宏块数据,作为符合AVC码流要求的视频帧数据。
待处理的视频数据流中帧数据包的排列以基本视角视频帧和扩展视角视频帧交替顺序排列,在逐帧处理待处理的视频数据流中帧数据包之后,即可依此顺序排列为AVC码流中的视频数据流,保证封装成的AVC码流的视频帧排列顺序与接收到的MVC码流中对应帧排列顺序一致,AVC码流中的视频帧和MVC码流中的对应视频帧具有相同的参考帧列表。
上述步骤S102至步骤S105对数据的操作不依赖于MVC码流的运动信息,改变slice header信息中字段的字段值,进而实现了MVC码流到AVC码流的无损转码,解决了码流转换方法中的码流失真问题。
S106:整合更换后的SPS信息、转换后的PPS信息和转换后的视频帧数据,将整合后的数据流作为转换后的AVC的VCL数据流,并将AVC的VCL数据流封装为AVC码流。具体为:
整合更换后的SPS信息、转换后的PPS信息和转换后的视频帧数据,将整合后的数据流作为转换后的AVC的VCL数据流,将AVC的VCL数据流封装到NAL单元数据中,从而形成AVC码流。
从上述的技术方案可以看出,采用特定预测结构编码形成MVC码流,提取MVC码流中基本视角子码流和一个仅参考基本视角的扩展视角子码流,对包括这两个视角子码流的MVC码流转换后的MVC的VCL数据流中的各帧数据进行逐帧处理,保证封装成的AVC码流的视频帧排列顺序与接收到的MVC码流中对应帧排列顺序一致,即两个视角视频帧逐帧交替,拥有AVC解码器用户无须额外处理过程即可解码播放。AVC码流中的视频帧和MVC码流中的对应视频帧具有相同的参考帧列表。同时不依据MVC码流的运动信息,改变slice header信息中字段的字段值,实现了MVC码流到AVC码流的无损转码,即保证AVC解码器输出图像与MVC解码器输出对应图像一致,不损失图像质量。
更进一步地,在编码MVC码流时采用IPPPP...预测结构编码,接收MVC码流后,根据人眼瞳距提取基本视角子码流和与人眼瞳距最接近的一个扩展视角子码流,并将这两个视角子码流无损地转换为一个AVC码流,从而保证用户观看AVC解码器输出的双目立体视频无变形失真现象。
此外,本发明实施例提供的码流处理方法丢弃了转换后的MVC的VCL数据流中的扩展数据,如SPS子集信息和扩展PPS信息,减少了码流数据,未增加码流传输负担。同时相对于MVC码流解码,节省了时间,提高了效率。下面列举具体实验数据来说明。
表1是对breakdancers、racel和rena编码后得出的MVC码流和AVC码流大小比较表,AVC码流是利用本发明实施例提供的码流处理方法对MVC码流进行处理得出的。其中:breakdancers的序列大小为1024×768;racel的序列大小为640×480;rena的序列大小为640×480。MVC编码在JMVC版本83上实现,编码条件设置包括:编码993帧,GOP大小为8,使用视角间预测,时域优先,熵编码使用CABAC方式。封装后AVC码流的解码测试软件使用JM版本17.0。
表一MVC码流与封装后AVC码流大小比较表
序列 | MVC码流(KB) | AVC码流(KB) | AVC码流与MVC码流百分比 |
breakdancers | 8501 | 8397 | 99.95% |
racel | 6596 | 6591 | 99.92% |
rena | 3585 | 3581 | 99.92% |
从实验结果可以看出封装后的AVC码流比原始MVC码流略小,与原始MVC码流相比在99.92%到99.95%之间,所以未增加码流传输负担。
上述对待处理的视频数据流的各帧数据进行逐帧处理时,帧数据中的宏块数据不进行解码,反离散余弦变换,运动补偿等操作,可以有效缩短转换时间。表2是MVC码流解码时间和采用本发明实施例提供的方法将MVC码流封装为AVC码流的时间对比。从上述表中可以证实,本发明实施例提供的码流处理方法,相对于MVC码流解码时间有极大的减少,所用时间与MVC码流解码时间的比例在14.01%到29.47%之间,对于breakdancer的效果更为显著。
表二MVC解码时间与重写生成AVC码流时间
序列 | MVC解码时间 | 重写时间 | 重写时间与解码时间百分比 |
breakdancers | 136.140秒 | 19.078秒 | 14.01% |
racel | 62.422秒 | 17.172秒 | 27.51% |
rena | 56.578秒 | 16.672秒 | 29.47% |
与上述方法实施例相对应,本发明实施例还提供一种立体视频码流处理装置,结构示意图请参阅图8所示,包括:数据流编码模块81、数据流传输模块82、数据流转换模块83、数据流提取模块84、SPS信息更换模块85、PPS信息转换模块86、视频帧数据转换模块87和码流封装模块88。其中:
数据流编码模块81,用于采用特定的预测结构编码多视角视频,形成MVC码流,具体为:按照图3所示的IPPPP...预测结构编码多视角视频,形成MVC码流。图3所示IPPPP...预测结构为MVC码流的视角包括基本视角I视角和多个扩展视角P视角,且扩展视角P视角在进行视角间预测时,均以基本视角相同时刻的视频帧作为参考帧。
数据流传输模块82,用于传输数据流编码模块81产生的多视角视频编码MVC码流。
数据流转换模块83,用于接收MVC码流,并将其转换成MVC的VCL数据流。具体为:从MVC码流中获取NAL单元数据,将NAL单元数据转换为MVC的VCL数据流。MVC码流到MVC的VCL数据流的转换请参阅现有转换方法,对此不加以详细说明。
数据流提取模块84,用于提取MVC的VCL数据流中的基本视角子码流和其中一个仅参考基本视角的扩展视角子码流,将提取后视频数据流作为MVC的VCL数据流中待处理的视频数据流。其中:仅参考基本视角的扩展视角子码流为,扩展视角进行视角间预测仅以基本视角内的视频帧作为参考帧编码获得的子码流。
SPS信息更换模块85,用于更换MVC的VCL数据流中的SPS信息为符合AVC码流要求的SPS信息。
PPS信息转换模块86,用于转换MVC的VCL数据流中的PPS信息为符合AVC码流要求的PPS信息。PPS信息转换模块86可以具体用于将VCL数据流中的基本PPS信息直接复制,作为符合AVC码流要求的PPS信息。。
视频帧数据转换模块87,用于逐帧转换待处理的视频数据流中的视频帧数据为符合AVC码流要求的视频帧数据,包括将slice header信息转换为符合AVC码流要求的slice header信息和将宏块数据转换为符合AVC码流要求的宏块数据。
码流封装模块88,用于整合更换后的SPS信息、转换后的PPS信息和转换后的视频帧数据,将整合后的数据流作为转换后的AVC的VCL数据流,并将AVC的VCL数据流封装为AVC码流。具体为:整合更换后的SPS信息、转换后的PPS信息和转换后的视频帧数据,将整合后的数据流作为转换后的AVC的VCL数据流,将AVC的VCL数据流封装到NAL单元数据中,从而形成AVC码流。
数据流提取模块84在提取前,需要首先确定MVC的VCL数据流的视角子码流数,其结构示意图可以参阅图9。数据流提取模块84包括:SPS子集信息获取单元841、子码流数确定单元842和子码流提取单元843。其中:SPS子集信息获取单元841,用于解码MVC的VCL数据流中的SPS信息,获取SPS信息中的SPS子集信息。
子码流数确定单元842,用于依据SPS子集信息中的MVC视角数,确定MVC的VCL数据流中包含的视角子码流数。子码流数确定单元842通过获取SPS子集信息中的MVC视角数信息,则可以确定MVC的VCL数据流中包含的视角子码流数。
子码流提取单元843,用于在所述子码流数确定单元842确定所述MVC的VCL数据流包括多个视角子码流的情况下,从MVC码流携带的辅助增强信息SEI中得到视角间距离信息,根据人眼瞳距,确定与所述人眼瞳距最接近的视角间距离,依据所述最接近的视角间距离选取扩展视角P视角对应的扩展视角子码流,逐帧提取基本视角子码流和被选取扩展视角子码流的视频帧数据,将逐帧提取后的视频帧数据组成的视频数据流作为MVC的VCL数据流中待处理的视频数据流,所述人眼瞳距可以采用65mm。
仅参考基本视角的扩展视角子码流为多个时,子码流提取单元843还可以任意选取一个扩展视角子码流,提取视频帧数据。
本发明实施例提供的立体视频码流处理装置还包括:判断模块和触发器,如图10所示。图10是以图8为基础,增加了判断模块89和触发器90。其中:
判断模块89,用于判断码流封装模块88封装的所述AVC码流的扩展视角与基本视角的视角间距离与所述人眼瞳距差距的大小。
触发器90,用于在所述判断模块89的结果为码流封装模块88封装的AVC码流的扩展视角与基本视角的视角间距离与所述人眼瞳距差距大的情况下,触发数据流提取模块84。
上述SPS信息更换模块85的结构示意图如图11所示,包括:基本SPS信息获取单元851、更换单元852和SPS编码单元853。其中:
基本SPS信息获取单元851,用于解码MVC的VCL数据流中的SPS信息,获取SPS信息中的基本SPS信息。
更换单元852,用于更换基本SPS信息中的level_idc字段、constraint_set4_flag 字段、max_num_ref_frames字段、log2_max_frame_num_minus4字段。
更换单元852包括:第一更换子单元8521、第二更换子单元8522、第三更换子单元8523和第四更换子单元8524,结构示意图请参阅图12。其中:
第一更换子单元8521,用于将基本SPS信息中的level_idc字段的字段值在level_idc字段的当前字段值基础上加1。
第二更换子单元8522,用于更换constraint_set4_flag字段的字段值为0。
第三更换子单元8523,用于更换max_num_ref_frames字段的字段值为12。
第四更换子单元8524,用于设定log2_max_frame_num_minus4字段的字段值为12。
SPS编码单元853,用于将更换后的基本SPS信息编码为符合AVC码流要求的SPS信息。即将基本SPS信息中更换后的字段和基本SPS信息中未更换后的字段组合为新的基本SPS信息,并将新的基本SPS信息编码为符合AVC码流要求的SPS信息。
请参阅图13,图13是视频帧数据转换模块87的结构示意图,包括:sliceheader信息解码单元871、转换单元872、slice header信息编码单元873、宏块数据复制单元874和视频帧数据确定单元875。其中:
slice header信息解码单元871,用于解码待处理的视频数据流中帧数据包中的slice header信息。
转换单元872,用于区分当前帧的视角类型,根据不同的视角类型采取不同的处理方式,转换slice header信息。转换单元872具体用于对slice header数据中的nal_ref_idc字段、frame_num字段、pic_order_cnt_lsb字段、adaptive_ref_pic_marking_mode_flag字段、modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段进行转换。
转换单元872包括:第一转换子单元8721、第二转换子单元8722、第三转换子单元8723、第四转换子单元8724和第五转换子单元8725,其结构示意图请参阅图14。其中:
第一转换子单元8721,用于转换slice header信息中的nal_ref_idc字段的字段值。第二转换子单元8722,用于转换slice header信息中的frame_num字段的字段值。第三转换子单元8723,用于转换slice header信息中的pic_order_cnt_lsb字段的字段值。第四转换子单元8724,用于转换slice header信息中的adaptive_ref_pic_marking_mode_flag字段的字段值。第五转换子单元8725,用于转换slice header信息中的modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段的字段值。
上述转换单元872中各个子单元的具体转换过程请参阅方法实施例中的说明,对此不再加以阐述。
slice header信息编码单元873,用于将转换后的slice header信息编码为符合AVC码流要求的slice header信息。
编码后的slice header信息,需要slice header信息结尾整8比特的要求。若编码后的slice header信息,不满足上述要求,则在编码后的slice header信息后,填充预设数量的1,以满足slice header信息结尾整8比特的要求。
宏块数据复制单元874,用于将宏块数据直接复制,作为符合AVC码流要求的宏块数据。将宏块数据直接复制,作为符合AVC码流要求的宏块数据。可以省去宏块数据进行熵解码、反离散余弦变换和运动补偿耗费的时间,提高效率。
视频帧数据编码单元875,用于将转换后的slice header信息和直接复制的宏块数据确定为符合AVC码流要求的视频帧数据。
待处理的视频数据流中帧数据包的排列以基本视角视频帧和扩展视角视频帧交替顺序排列,在逐帧处理待处理的视频数据流中帧数据包之后,即可依此顺序排列为AVC码流中的视频数据流,保证封装成的AVC码流的视频帧排列顺序与接收到的MVC码流中对应帧排列顺序一致,AVC码流中的视频帧和MVC码流中的对应视频帧具有相同的参考帧列表。
从上述的技术方案可以看出,采用特定预测结构编码形成MVC码流,提取MVC码流中基本视角子码流和一个仅参考基本视角的扩展视角子码流,对包括这两个视角子码流的MVC码流中的基本视角子码流和提取的扩展视角子码流的各帧数据进行逐帧处理,保证封装成的AVC码流的视频帧排列顺序与接收到的MVC码流中对应帧排列顺序一致,即两个视角视频帧逐帧交替,拥有AVC解码器用户无须额外处理过程即可解码播放。AVC码流中的视频帧和MVC码流中的对应视频帧具有相同的参考帧列表,实现了MVC码流到AVC码流的无损转码,即保证AVC解码器输出图像与MVC解码器输出对应图像一致,不损失图像质量。
更进一步地,在编码MVC码流时采用IPPPP...预测结构编码,接收MVC码流后,根据人眼瞳距提取基本视角子码流和与人眼瞳距最接近的一个扩展视角子码流,并将这两个视角子码流无损地转换为一个AVC码流,从而保证用户观看AVC解码器输出的双目立体视频无变形失真现象。
此外,对MVC码流中的基本视角子码流和扩展视角子码流的各帧数据进行逐帧处理,可以有效缩短转换时间。同时,帧数据中的宏块数据不进行解码,反离散余弦变换,运动补偿等操作,进一步缩短了时间,提高效率。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和装置,在没有超过本发明的精神和范围内,可以通过其他的方式实现。当前的实施例只是一种示范性的例子,不应该作为限制,所给出的具体内容不应该限制本发明的目的。例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或多个单元结合一起。另外,多个模块可以或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种立体视频码流处理方法,该方法支持新一代视频编码标准H.264/AVC附录H指定的多视角视频编码MVC标准,其特征在于,包括:
接收多视角视频编码MVC码流,并将其转换成MVC的视频编码层VCL数据流,其中所述MVC码流在编码端采用IPPPP...预测结构编码,所述IPPPP...预测结构为所述MVC码流的视角包括基本视角I视角和多个扩展视角P视角,且扩展视角P视角在进行视角间预测时,均以基本视角I视角相同时刻的视频帧作为参考帧;
确定MVC的VCL数据流中基本视角子码流和一个仅参考基本视角的扩展视角子码流的视频数据流,将该视频数据流作为MVC的VCL数据流中待处理的视频数据流;
更换MVC的VCL数据流中的SPS信息为符合AVC码流要求的SPS信息;
转换MVC的VCL数据流中的PPS信息为符合AVC码流要求的PPS信息;
逐帧转换待处理的视频数据流中的视频帧数据为符合AVC码流要求的视频帧数据,包括将slice header信息转换为符合AVC码流要求的slice header信息和将宏块数据转换为符合AVC码流要求的宏块数据;
整合更换后的SPS信息、转换后的PPS信息和转换后的视频帧数据,将整合后的数据流作为转换后的AVC的VCL数据流,并将AVC的VCL数据流封装为AVC码流。
2.根据权利要求1所述的立体视频码流处理方法,其特征在于,所述确定MVC的VCL数据流中基本视角子码流和一个仅参考基本视角的扩展视角子码流的视频数据流,将该视频数据流作为MVC的VCL数据流中待处理的视频数据流包括:
解码MVC的VCL数据流中的SPS信息,获取SPS信息中的SPS子集信息;
依据SPS子集信息中的MVC视角数,确定MVC的VCL数据流中包含的视角子码流数;
对所述MVC的VCL数据流包括的多个视角子码流,从MVC码流携带的辅助增强信息SEI中得到视角间距离信息,根据人眼瞳距,确定与所述人眼瞳距最接近的视角间距离,依据所述最接近的视角间距离选取扩展视角P视角对应的扩展视角子码流,逐帧提取基本视角子码流和被选取扩展视角子码流的视频帧数据,将逐帧提取后的视频帧数据组成的视频数据流作为MVC的VCL数据流中待处理的视频数据流。
3.根据权利要求1所述的立体视频码流处理方法,其特征在于,更换MVC的VCL数据流中的SPS信息为符合AVC码流要求的SPS信息包括:
解码MVC的VCL数据流中的SPS信息,获取SPS信息中的基本SPS信息;
更换基本SPS信息中的level_idc字段、constraint_set4_flag字段、max_num_ref_frames字段、log2_max_frame_num_minus4字段;
将更换后的基本SPS信息编码为符合AVC码流要求的SPS信息;
所述更换基本SPS信息中的level_idc字段、constraint_set4_flag字段、max_num_ref_frames字段、log2_max_frame_num_minus4字段具体为:将基本SPS信息中的level_idc字段的字段值在level_idc字段的当前字段值基础上加1;更换constraint_set4_flag字段的字段值为0;更换max_num_ref_frames字段的字段值为12;设定log2_max_frame_num_minus4字段的字段值为12。
4.根据权利要求3所述的立体视频码流处理方法,其特征在于,所述转换MVC的VCL数据流中的PPS信息为符合AVC码流要求的PPS信息为:将MVC的VCL数据流中的基本PPS信息直接复制,作为符合AVC码流要求的PPS信息。
5.根据权利要求4所述的立体视频码流处理方法,其特征在于,逐帧转换待处理的视频数据流中的视频帧数据为符合AVC码流要求的视频帧数据包括:
解码待处理的视频数据流中帧数据包中的slice header信息;
区分当前帧的视角类型,根据不同的视角类型采取不同的处理方式,转换slice header信息;
将转换后的slice header信息编码为符合AVC码流要求的slice header信息;
将宏块数据直接复制,作为符合AVC码流要求的宏块数据;
转换后的slice header信息和直接复制的宏块数据,作为符合AVC码流要求的视频帧数据;
所述转换slice header信息包括:对slice header数据中的nal_ref_idc字段、frame_num字段、pic_order_cnt_lsb字段、adaptive_ref_pic_marking_mode_flag字段、modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段进行转换;
转换slice header信息中的nal_ref_idc字段的字段值具体为:当slice header信息对应的视频帧不作为参考帧,转换nal_ref_idc字段的字段值为0;当sliceheader信息对应的视频帧作为参考帧且该视频帧为IDR帧,转换nal_ref_idc字段的字段值为3;当slice header信息对应的视频帧作为参考帧且该视频帧为P帧或者非IDR帧的I帧,转换nal_ref_idc字段的字段值为2;当slice header信息对应的视频帧作为参考帧且该视频帧为B帧,转换nal_ref_idc字段的字段值为1;
转换slice header信息中的frame_num字段的字段值具体为:当slice header信息对应的视频帧的前一视频帧作为参考帧,则frame_num字值在前一视频帧对应的slice header信息中转换后的frame_num字段的字段值的基础上加1;当slice header信息对应的视频帧的前一视频帧不作为参考帧,则frame_num字段值等于前一视频帧对应的slice header信息中转换后的frame_num字段的字段值;
转换slice header信息中的pic_order_cnt_lsb字段的字段值具体为:当sliceheader信息对应的视频帧是扩展视角中的视频帧,转换后的pic_order_cnt_lsb字段的字段值为转换前的pic_order_cnt_lsb字段的字段值的2倍并加1;当sliceheader信息对应的视频帧是基本视角中的视频帧,转换后的pic_order_cnt_lsb字段的字段值为转换前的pic_order_cnt_lsb字段的字段值的2倍;
转换slice header信息中的adaptive_ref_pic_marking_mode_flag字段的字段值具体为:当slice header信息对应的视频帧为非锚定帧或者为扩展视角的锚定帧,转换adaptive_ref_pic_marking_mode_flag字段的字段值为0;当sliceheader信息对应的视频帧为基本视角的锚定帧,则分别获取该基本视角的锚定帧的帧信息中转换后的frame_num字段的字段值和前一个扩展视角的锚定帧的帧信息中转换后的frame_num字段的字段值,当两个frame_num字段的字段差值为1,转换slice header信息中的adaptive_ref_pic_marking_mode_flag字段的字段值为0,当两个frame_num字段的字段差值不为1,转换slice header信息中adaptive_ref_pic_marking_mode_flag字段的字段值为1;
对slice header信息中的前向/后向初始参考帧列表信息修改时,在设置ref_pic_list_modification_flag_l0字段/ref_pic_list_modification_flag_l1字段的字段值为1后,转换slice header信息中的modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段的字段值,具体为:从MVC码流中得到sliceheader信息对应的视频帧的参考帧个数,参考帧以及参考帧排列顺序;
依照参考帧排列顺序,依次获取参考帧转换后的frame_num字段的字段值;
计算参考帧列表中的第一个参考帧转换后的frame_num字段与当前视频帧转换后的frame_num字段的字段差值,转换abs_diff_pic_num_minus1字段的字段值为第一个参考帧转换后的frame_num字段与当前视频帧转换后的frame_num字段的字段差值取绝对值后减1的值,当字段差值小于0,转换modification_of_pic_nums_idc字段的字段值为0,当字段差值大于0,转换modification_of_pic_nums_idc字段的字段值为1;
当参考帧为第i个参考帧且i大于等于2,计算第i个参考帧转换后的frame_num字段与第i-1个参考帧转换后的frame_num字段的字段差值,转换abs_diff_pic_num_minus1字段的字段值为第i个参考帧转换后的frame_num字段与第i-1个参考帧转换后的frame_num字段的字段差值取绝对值后减1的值,当字段差值小于0,转换modification_of_pic_nums_idc字段的字段值为0,当字段差值大于0,转换modification_of_pic_nums_idc字段的字段值为1;当参考帧列表中所有参考帧重新映射所需的modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段转换结束,将modification_of_pic_nums_idc字段的字段值设置为3。
6.一种立体视频码流处理装置,该装置支持H.264/AVC标准附录H指定的多视角视频编码MVC标准,其特征在于,包括:
数据流编码模块,用于采用IPPPP...预测结构编码多视角视频,形成多视角视频编码MVC码流,其中,所述IPPPP...预测结构为MVC码流的视角包括基本视角I视角和多个扩展视角P视角,且扩展视角P视角在进行视角间预测时,均以基本视角I视角相同时刻的视频帧作为参考帧;
数据流传输模块,用于传输数据流编码模块产生的多视角视频编码MVC码流;
数据流转换模块,用于接收MVC码流,并将其转换成MVC的视频编码层VCL数据流;
数据流提取模块,用于提取MVC的VCL数据流中的基本视角子码流和其中一个仅参考基本视角的扩展视角子码流,将提取的基本视角子码流和扩展视角子码流中的视频数据流作为MVC的VCL数据流中待处理的视频数据流;
SPS信息更换模块,用于更换MVC的VCL数据流中的SPS信息为符合AVC码流要求的SPS信息;
PPS信息转换模块,用于转换MVC的VCL数据流中的PPS信息为符合AVC码流要求的PPS信息;
视频帧数据转换模块,用于逐帧转换待处理的视频数据流中的视频帧数据为符合AVC码流要求的视频帧数据,包括将slice header信息转换为符合AVC码流要求的slice header信息和将宏块数据转换为符合AVC码流要求的宏块数据;
码流封装模块,用于整合更换后的SPS信息、转换后的PPS信息和转换后的视频帧数据,将整合后的数据流作为转换后的AVC的VCL数据流,并将AVC的VCL数据流封装为AVC码流。
7.根据权利要求6所述的立体视频码流处理装置,其特征在于,
所述数据流提取模块包括:SPS子集信息获取单元,用于解码MVC的VCL数据流中的SPS信息,获取SPS信息中的SPS子集信息;
子码流数确定单元,用于依据SPS子集信息中的MVC视角数,确定MVC的VCL数据流中包含的视角子码流数;
子码流数提取单元,用于在所述子码流数确定单元确定所述MVC的VCL数据流包括多个视角子码流的情况下,从MVC码流携带的辅助增强信息SEI中得到视角间距离信息,根据人眼瞳距,确定与所述人眼瞳距最接近的视角间距离,依据所述最接近的视角间距离选取扩展视角P视角对应的扩展视角子码流,逐帧提取基本视角子码流和被选取扩展视角子码流的视频帧数据,将逐帧提取后的视频帧数据组成的视频数据流作为MVC的VCL数据流中待处理的视频数据流。
8.根据权利要求6所述的立体视频码流处理装置,其特征在于,所述SPS信息更换模块包括:
基本SPS信息获取单元,用于解码MVC的VCL数据流中的SPS信息,获取SPS信息中的基本SPS信息;
更换单元,用于更换基本SPS信息中的level_idc字段、constraint_set4_flag字段、max_num_ref_frames字段、log2_max_frame_num_minus4字段;
SPS编码单元,用于将更换后的基本SPS信息编码为符合AVC码流要求的SPS信息;
所述更换单元包括:
第一更换子单元,用于将基本SPS信息中的level_idc字段的字段值在level_idc字段的当前字段值基础上加1;
第二更换子单元,用于更换constraint_set4_flag字段的字段值为0;
第三更换子单元,用于更换max_num_ref_frames字段的字段值为12;
第四更换子单元,用于设定log2_max_frame_num_minus4字段的字段值为12。
9.根据权利要求8所述的立体视频码流处理装置,其特征在于,所述PPS信息转换模块具体用于将MVC的VCL数据流中的基本PPS信息直接复制,作为符合AVC码流要求的PPS信息。
10.根据权利要求9所述的立体视频码流处理装置,其特征在于,所述视频帧数据转换模块包括:
slice header信息解码单元,用于解码待处理的视频数据流中帧数据包中的slice header信息;
转换单元,用于区分当前帧的视角类型,根据不同的视角类型采取不同的处理方式,转换slice header信息;
slice header信息编码单元,用于将转换后的slice header信息编码为符合AVC码流要求的slice header信息;
宏块数据复制单元,用于将宏块数据直接复制,作为符合AVC码流要求的宏块数据;
视频帧数据确定单元,用于将转换后的slice header信息和直接复制的宏块数据确定为符合AVC码流要求的视频帧数据;
所述转换单元具体用于对slice header数据中的nal_ref_idc字段、frame_num字段、pic_order_cnt_lsb字段、adaptive_ref_pic_marking_mode_flag字段、modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段进行转换;所述转换单元包括:
第一转换子单元,用于转换slice header信息中的nal_ref_idc字段的字段值,具体为:当slice header信息对应的视频帧不作为参考帧,转换nal_ref_idc字段的字段值为0;当slice header信息对应的视频帧作为参考帧且该视频帧为IDR帧,转换nal_ref_idc字段的字段值为3;当slice header信息对应的视频帧作为参考帧且该视频帧为P帧或者非IDR帧的I帧,转换nal_ref_idc字段的字段值为2;当slice header信息对应的视频帧作为参考帧且该视频帧为B帧,转换nal_ref_idc字段的字段值为1;
第二转换子单元,用于转换slice header信息中的frame_num字段的字段值,具体为:当slice header信息对应的视频帧的前一视频帧作为参考帧,则frame_num字值在前一视频帧对应的slice header信息中转换后的frame_num字段的字段值的基础上加1;当slice header信息对应的视频帧的前一视频帧不作为参考帧,则frame_num字段值等于前一视频帧对应的slice header信息中转换后的frame_num字段的字段值;
第三转换子单元,用于转换slice header信息中的pic_order_cnt_lsb字段的字段值,具体为:当slice header信息对应的视频帧是扩展视角中的视频帧,转换后的pic_order_cnt_lsb字段的字段值为转换前的pic_order_cnt_lsb字段的字段值的2倍并加1;当slice header信息对应的视频帧是基本视角中的视频帧,转换后的pic_order_cnt_lsb字段的字段值为转换前的pic_order_cnt_lsb字段的字段值的2倍;
第四转换子单元,用于转换slice header信息中的adaptive_ref_pic_marking_mode_flag字段的字段值,具体为:当slice header信息对应的视频帧为非锚定帧或者为扩展视角的锚定帧,转换adaptive_ref_pic_marking_mode_flag字段的字段值为0;当slice header信息对应的视频帧为基本视角的锚定帧,则分别获取该基本视角的锚定帧的帧信息中转换后的frame_num字段的字段值和前一个扩展视角的锚定帧的帧信息中转换后的frame_num字段的字段值,当两个frame_num字段的字段差值为1,转换slice header信息中的adaptive_ref_pic_marking_mode_flag字段的字段值为0,当两个frame_num字段的字段差值不为1,转换slice header信息中adaptive_ref_pic_marking_mode_flag字段的字段值为1;
第五转换子单元,用于对slice header信息中的前向/后向初始参考帧列表信息修改时,在设置ref_pic_list_modification_flag_l0字段/ref_pic_list_modification_flag_l1字段的字段值为1后,转换slice header信息中的modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段的字段值,具体为:从MVC码流中得到slice header信息对应的视频帧的参考帧个数,参考帧以及参考帧排列顺序;依照参考帧排列顺序,依次获取参考帧转换后的frame_num字段的字段值;计算参考帧列表中的第一个参考帧转换后的frame_num字段与当前视频帧转换后的frame_num字段的字段差值,转换abs_diff_pic_num_minus1字段的字段值为第一个参考帧转换后的frame_num字段与当前视频帧转换后的frame_num字段的字段差值取绝对值后减1的值,当字段差值小于0,转换modification_of_pic_nums_idc字段的字段值为0,当字段差值大于0,转换modification_of_pic_nums_idc字段的字段值为1;
当参考帧为第i个参考帧且i大于等于2,计算第i个参考帧转换后的frame_num字段与第i-1个参考帧转换后的frame_num字段的字段差值,转换abs_diff_pic_num_minus1字段的字段值为第i个参考帧转换后的frame_num字段与第i-1个参考帧转换后的frame_num字段的字段差值取绝对值后减1的值,当字段差值小于0,转换modification_of_pic_nums_idc字段的字段值为0,当字段差值大于0,转换modification_of_pic_nums_idc字段的字段值为1;当参考帧列表中所有参考帧重新映射所需的modification_of_pic_nums_idc字段和abs_diff_pic_num_minus1字段转换结束,将modification_of_pic_nums_idc字段的字段值设置为3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110327818 CN102438141B (zh) | 2011-10-25 | 2011-10-25 | 一种立体视频码流处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110327818 CN102438141B (zh) | 2011-10-25 | 2011-10-25 | 一种立体视频码流处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102438141A true CN102438141A (zh) | 2012-05-02 |
CN102438141B CN102438141B (zh) | 2013-03-27 |
Family
ID=45985993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110327818 Active CN102438141B (zh) | 2011-10-25 | 2011-10-25 | 一种立体视频码流处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102438141B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104604233A (zh) * | 2012-09-28 | 2015-05-06 | 夏普株式会社 | 图像解码装置 |
CN106101683A (zh) * | 2016-06-30 | 2016-11-09 | 深圳市虚拟现实科技有限公司 | 远程全景图像全方位实时传输和显示方法 |
CN106130988A (zh) * | 2016-06-30 | 2016-11-16 | 深圳市虚拟现实科技有限公司 | 远程全景音像实时传输和播放方法 |
CN109547815A (zh) * | 2013-04-07 | 2019-03-29 | 杜比国际公司 | 用信号通知输出层集的改变 |
US10986357B2 (en) | 2013-04-07 | 2021-04-20 | Dolby International Ab | Signaling change in output layer sets |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101511016A (zh) * | 2009-03-13 | 2009-08-19 | 西安交通大学 | 基于hhi分层b帧预测结构的多视点视频编码的改进方法 |
CN101990103A (zh) * | 2010-11-10 | 2011-03-23 | 香港应用科技研究院有限公司 | 用于多视点视频编码的方法和装置 |
CN102006480A (zh) * | 2010-11-29 | 2011-04-06 | 清华大学 | 基于视间预测的双目立体视频的编码及解码方法 |
EP2352302A1 (en) * | 2008-12-18 | 2011-08-03 | LG Electronics Inc. | Digital broadcasting reception method capable of displaying stereoscopic image, and digital broadcasting reception apparatus using same |
-
2011
- 2011-10-25 CN CN 201110327818 patent/CN102438141B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2352302A1 (en) * | 2008-12-18 | 2011-08-03 | LG Electronics Inc. | Digital broadcasting reception method capable of displaying stereoscopic image, and digital broadcasting reception apparatus using same |
CN101511016A (zh) * | 2009-03-13 | 2009-08-19 | 西安交通大学 | 基于hhi分层b帧预测结构的多视点视频编码的改进方法 |
CN101990103A (zh) * | 2010-11-10 | 2011-03-23 | 香港应用科技研究院有限公司 | 用于多视点视频编码的方法和装置 |
CN102006480A (zh) * | 2010-11-29 | 2011-04-06 | 清华大学 | 基于视间预测的双目立体视频的编码及解码方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11284098B2 (en) | 2012-09-28 | 2022-03-22 | Dolby International Ab | Image decoding device and image coding device |
CN108540813A (zh) * | 2012-09-28 | 2018-09-14 | 杜比国际公司 | 图像解码装置 |
US10708609B2 (en) | 2012-09-28 | 2020-07-07 | Dolby International Ab | Image decoding device and image coding device |
CN104604233A (zh) * | 2012-09-28 | 2015-05-06 | 夏普株式会社 | 图像解码装置 |
US11924451B2 (en) | 2012-09-28 | 2024-03-05 | Dolby International Ab | Image decoding device and image coding device |
CN109547815A (zh) * | 2013-04-07 | 2019-03-29 | 杜比国际公司 | 用信号通知输出层集的改变 |
US10986357B2 (en) | 2013-04-07 | 2021-04-20 | Dolby International Ab | Signaling change in output layer sets |
CN109547815B (zh) * | 2013-04-07 | 2021-05-18 | 杜比国际公司 | 用于视频解码的方法和电子设备 |
US11044487B2 (en) | 2013-04-07 | 2021-06-22 | Dolby International Ab | Signaling change in output layer sets |
US11553198B2 (en) | 2013-04-07 | 2023-01-10 | Dolby International Ab | Removal delay parameters for video coding |
US11653011B2 (en) | 2013-04-07 | 2023-05-16 | Dolby International Ab | Decoded picture buffer removal |
CN106101683A (zh) * | 2016-06-30 | 2016-11-09 | 深圳市虚拟现实科技有限公司 | 远程全景图像全方位实时传输和显示方法 |
CN106130988A (zh) * | 2016-06-30 | 2016-11-16 | 深圳市虚拟现实科技有限公司 | 远程全景音像实时传输和播放方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102438141B (zh) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5947405B2 (ja) | ビデオ符号化方法および装置 | |
JP6057395B2 (ja) | ビデオ符号化方法および装置 | |
KR101658324B1 (ko) | 비디오 코딩을 위한 방법 및 장치 | |
JP5916266B2 (ja) | ビデオコーディング方法および装置 | |
US9883161B2 (en) | Compression methods and apparatus for occlusion data | |
JP5614901B2 (ja) | 3dvの参照ピクチャ・リスト | |
US9426480B2 (en) | Image signal decoding apparatus and image signal decoding method | |
KR20160030560A (ko) | 모션 정보를 시그널링하기 위한 구문을 수반하는 비디오 코딩을 위한 방법 및 장치 | |
CN102438141B (zh) | 一种立体视频码流处理方法及装置 | |
CN112042201B (zh) | 用于编码/解码表示3d对象的点云的方法和装置 | |
WO2024094540A1 (en) | Coding format for optimized encoding of volumetric video | |
EP3614673A1 (en) | A method and apparatus for encoding/decoding a point cloud representing a 3d object |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |