US20190141355A1
2019-05-09
16/238,751
2019-01-03
The VPS and vps_extension( ) syntax structures are updated with some cleanups for the HEVC Extensions in scalable video coding, multi-view coding and 3D video coding areas. In addition, four options of adding syntaxes to support mixed video sequences in various layers for the VPS extension are described.
Get notified when new applications in this technology area are published.
H04N19/597 » CPC further
Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
H04N19/34 » CPC further
Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability Scalability techniques involving progressive bit-plane based encoding of the enhancement layer, e.g. fine granular scalability [FGS]
H04N19/70 » CPC main
Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
This application claims priority under 35 U.S.C. § 119(e) of the U.S. Provisional Patent Application Ser. No. 61/748,893, filed Jan. 4, 2013 and titled, “JCTVC-LOXXX: VPS AND VPS_EXTENSION UPDATES,” which is hereby incorporated by reference in its entirety for all purposes.
The present invention relates to the field of video encoding. More specifically, the present invention relates to high efficiency video coding.
The Video Parameter Set (VPS) has been added as metadata to describe the overall characteristics of coded video sequences, including the dependencies between temporal sublayers. The primary purpose of this is to enable the compatible extensibility of the standard in terms of signaling at the systems layer, e.g., when the base layer of a future extended scalable or multiview bitstream would need to be decodable by a legacy decoder, but for which additional information about the bitstream structure that is only relevant for the advanced decoder would be ignored.
The VPS and vps_extension( ) syntax structures are updated with some cleanups for the HEVC Extensions in scalable video coding, multi-view coding and 3D video coding areas. In addition, four options of adding syntaxes to support mixed video sequences in various layers for the VPS extension are described.
In one aspect, a method programmed in a non-transitory memory of a device comprises decoding content and accessing information related to the content, wherein the information comprises video parameter set data, further wherein the video parameter set data comprises mixed signaling information. A video parameter set function used in determining the video parameter set data is under a condition of a video parameter set extension flag. Byte-alignment syntaxes used in determining the video parameter set data are under a condition of a video parameter set extension flag. The video parameter set data includes a raw byte sequence payload trailing bits value. The video parameter set data is determined without using byte alignment syntaxes. The video parameter set data is determined using two syntaxes for mixed sequence signaling support. The video parameter set data is determined using a source mixed codec flag syntax parameter. The video parameter set data is determined using a source mixed video present flag syntax parameter. The video parameter set data is determined using specific application support and a source mixed video present flag syntax parameter. The method further comprises encoding the content. The device comprises a personal computer, a laptop computer, a computer workstation, a server, a mainframe computer, a handheld computer, a personal digital assistant, a cellular/mobile telephone, a smart appliance, a gaming console, a digital camera, a digital camcorder, a camera phone, a smart phone, a portable music player, a tablet computer, a mobile device, a video player, a video disc writer/player, a high definition disc writer/player, an ultra high definition disc writer/player), a television, a home entertainment system, or a smart watch.
In another aspect, a method programmed in a non-transitory memory of a device comprises providing content and enabling access of information related to the content, wherein the information comprises video parameter set data, further wherein the video parameter set data comprises mixed signaling information. A video parameter set function used in determining the video parameter set data is under a condition of a video parameter set extension flag. Byte-alignment syntaxes used in determining the video parameter set data are under a condition of a video parameter set extension flag. The video parameter set data includes a raw byte sequence payload trailing bits value. The video parameter set data is determined without using byte alignment syntaxes. The video parameter set data is determined using two syntaxes for mixed sequence signaling support. The video parameter set data is determined using a source mixed codec flag syntax parameter. The video parameter set data is determined using a source mixed video present flag syntax parameter. The video parameter set data is determined using specific application support and a source mixed video present flag syntax parameter. The method further comprises encoding the content. The device comprises a personal computer, a laptop computer, a computer workstation, a server, a mainframe computer, a handheld computer, a personal digital assistant, a cellular/mobile telephone, a smart appliance, a gaming console, a digital camera, a digital camcorder, a camera phone, a smart phone, a portable music player, a tablet computer, a mobile device, a video player, a video disc writer/player, a high definition disc writer/player, an ultra high definition disc writer/player), a television, a home entertainment system, or a smart watch.
In another aspect, an apparatus comprises a non-transitory memory for storing an application, the application for decoding content and accessing information related to the content, wherein the information comprises video parameter set data, further wherein the video parameter set data comprises mixed signaling information and a processing component coupled to the memory, the processing component configured for processing the application. A video parameter set function used in determining the video parameter set data is under a condition of a video parameter set extension flag. Byte-alignment syntaxes used in determining the video parameter set data are under a condition of a video parameter set extension flag. The video parameter set data includes a raw byte sequence payload trailing bits value. The video parameter set data is determined without using byte alignment syntaxes. The video parameter set data is determined using two syntaxes for mixed sequence signaling support. The video parameter set data is determined using a source mixed codec flag syntax parameter. The video parameter set data is determined using a source mixed video present flag syntax parameter. The video parameter set data is determined using specific application support and a source mixed video present flag syntax parameter. The apparatus further comprises encoding the content.
FIG. 1 illustrates a flowchart of a method of utilizing a modified VPS syntax according to some embodiments.
FIG. 2 illustrates a block diagram of an exemplary computing device configured to implement the modified VPS method according to some embodiments.
FIG. 3 illustrates a general diagram of an HEVC encoder according to some embodiments.
FIG. 4 illustrates a general diagram of an HEVC decoder according to some embodiments.
The Video Parameter Set (VPS) syntax structure in the current Draft International Standard (DIS) specification for High Efficiency Video Coding (HEVC) is shown below.
| De- | |
| video_parameter_set_rbsp( ) { | scriptor |
| vps_video_parameter_set_id | u(4) |
| vps_reserved_three_2bits | u(2) |
| vps_reserved_zero_6bits | u(6) |
| vps_max_sub_layers_minus1 | u(3) |
| vps_temporal_id_nesting_flag | u(1) |
| vps_reserved_0xffff_16bits | u(16) |
| profile_tier_level(1, vps_max_sub_layers_minus1) | |
| bit_rate_pic_rate_info( 0, vps_max_sub_layers_minus1) | |
| vps_sub_layer_ordering_info_present_flag | u(1) |
| for (i= (vps_sub_layer_ordering_info_present_flag ? | |
| 0 : vps_max_sub_layers_minus1); | |
| i <= vps_max_sub_layers_minus1; i++) { | |
| vps_max_dec_pic_buffering[i] | ue(v) |
| vps_max_num_reorder_pics[i] | ue(v) |
| vps_max_latency_increase[i] | ue(v) |
| } | |
| vps_max_nuh_reserved_zero_layer_id | u(6) |
| vps_num_op_sets_minus1 | |
| for(i=1;i<vps_num_op_sets_minus1;i++) | |
| operation_point_set(i) | |
| vps_num_hrd_parameters | ue(v) |
| for(i=0;i<num_hrd_parameters;i++) { | |
| hrd_op_set_idx[i] | ue(v) |
| if(i>0) | |
| cprms_present_flag[i] | u(1) |
| hrd_parameters(cprms_present_flag[i], | |
| vps_max_sub_layers_minus1) | |
| } | |
| vps_extension_flag | u(1) |
| if(vps_extension_flag) | |
| while(more_rbsp_data( )) | |
| vps_extension_data_flag | u(1) |
| rbsp_trailing_bits( ) | |
| } | |
The if (vps_extension_flag) section above is updated below to support various HEVC extensions.
| De- | |
| scrip- | |
| video_parameter_set_rbsp( ) { | tor |
| vps_video_parameter_set_id | u(4) |
| vps_reserved_three_2bits | u(2) |
| vps_max_layers_minus1 | |
| //vps_reserved_zero_6bits in version−1 | u(6) |
| vps_max_sub_layers_minus1 | u(3) |
| vps_temporal_id_nesting_flag | u(1) |
| next_essential_info_byte_offset | |
| // vps_reserved_0xffff_16bits in version−1 | u(16) |
| profile_tier_level(1, vps_max_sub_layers_minus1) | |
| bit_rate_pic_rate_info( 0, vps_max_sub_layers_minus1) | |
| vps_sub_layer_ordering_info_present_flag | u(1) |
| for (i= (vps_sub_layer_ordering_info_present_flag ? | |
| 0 : vps_max_sub_layers_minus1); | |
| i <= vps_max_sub_layers_minus1; i++) { | |
| vps_max_dec_pic_buffering[i] | ue(v) |
| vps_max_num_reorder_pics[i] | ue(v) |
| vps_max_latency_increase[i] | ue(v) |
| } | |
| vps_max_nuh_reserved_zero_layer_id | u(6) |
| vps_num_op_sets_minus1 | |
| for(i=1;i<vps_num_op_sets_minus1;i++) | |
| operation_point_set(i) | |
| vps_num_hrd_parameters | ue(v) |
| for(i=0;i<num_hrd_parameters;i++) { | |
| hrd_op_set_idx[i] | ue(v) |
| if(i>0) | |
| cprms_present_flag[i] | u(1) |
| hrd_parameters(cprms_present_flag[i], | |
| vps_max_sub_layers_minus1) | |
| } | |
| vps_extension_flag /bit_equal_to_one in JCTVC-K1007_v1 | u(1) |
| if(vps_extension_flag) { | |
| while(!byte_aligned( )) | |
| vps_extension_byte_alignment_reserved_one_bit | u(1) |
| vps_extension( ) | |
| } | |
| rbsp_trailing_bits( ) | |
| } | |
The updates include:
The syntax structure of vps_extension( ) is shown below:
| vps_extension( ) { | Descriptor |
| while(!byte_aligned( )) | |
| vps_extension_byte_alignment_reserved_one_bit | u(1) |
| avc_base_codec_flag | u(1) |
| scalability_mask | u(16) |
| for(i=0;i<NumScalabilityTypes;i++) { | |
| dimension_id_len_minus1[i] | u(3) |
| } | |
| vps_nuh_layer_id_present_flag | u(1) |
| //layer specific information | |
| for (i=1; i<=vps_max_layers_minus1; i++) { | |
| //mapping of layer ID to scalability dimension Ids | |
| if (vps_nuh_layer_id_present_flag) | |
| layer_id_in_nuh[i] | u(6) |
| num_dimensions_minus1[i] | u(4) |
| for (j=0; j<=num_dimensions_minus1; j++) { | |
| dimension_type[i][j] | u(4) |
| dimension_id[i][j] | u(v8) |
| } | |
| } | |
| for(i=1;i<vps_max_layers_minus1;i++) { | |
| profile_tier_level(1,vps_max_sub_layers_minus1) | |
| for(i=1;i<vps_max_layers_minus1;i++) { | |
| //layer dependency | |
| num_direct_ref_layers[i] | u(6) |
| for(j=0; j<num_direct_ref_layers[i];j++) | |
| ref_layer_id[i][j] | u(6) |
| } | |
| } | |
While reviewing the above syntax structure and semantics description, a number of issues are discussed below as cleanups or for editing purposes.
For the scalability_mask syntax parameter, the following parameter table is listed, while the corresponding entries show the bit-location for the register-type data of “scalability_mask,” but it is not described well.
| Scalability_mask | Scalability dimension |
| 0 | none (base HEVC) |
| 1 | spatial |
| 2 | quality |
| 3 | depth |
| 4 | multiview |
| 5 | unspecified |
| 6-15 | Reserved |
In place of the above table for scalability_mask, the following register-type description is better for a clearer understanding:
| 5 | 4 | 3 | 2 | 1 | 0 | Bit-positions |
| unspecified | multi-view | depth | quality | spatial | none | scalability |
| dimension |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 |
| reserved |
Also, the modified syntax structure of vps_extension( ) shown below, indicates some helpful cleanups.
| vps_extension( ) { | Descriptor |
| avc_base_codec_flag | u(1) |
| scalability_mask | u(16) |
| for(i=0;i<NumScalabilityTypes;i++) { | |
| dimension_id_len_minus1[i] | u(3) |
| } | |
| vps_nuh_layer_id_present_flag | u(1) |
| //layer specific information | |
| for (i=0; i<=vps_max_layers_minus1; i++) { | |
| //mapping of layer ID to scalability dimension IDs | |
| if (vps_nuh_layer_id_present_flag) | |
| layer_id_in_nuh[i] | u(6) |
| for (j=0; j<=NumScalabilityTypes; j++) { | |
| v = dimension_id_len_minus1[j]+1 | |
| dimension_id[i][j] | u(v) |
| } | |
| } | |
| for(i=1;i<vps_max_layers_minus1;i++) | |
| profile_tier_level(1,vps_max_sub_layers_minus1) | |
| for(i=0;i<vps_max_layers_minus1;i++) { | |
| //layer dependency | |
| num_direct_ref_layers[i] | u(6) |
| for(j=0; j<num_direct_ref_layers[i];j++) | |
| ref_layer_id[i][j] | u(6) |
| } | |
| } | |
| 1) The byte-alignments-related syntaxes are removed. | |
| 2) The undefined parameter “num_dimensions_minus1” is replaced by NumScalabilityTypes.” | |
| 3) Two of the “for” loops have been modified to start from 0 instead of 1. As an example, for “layer specific info,” the “for(i=1; i<=vps_max_layers_minus1; i++){...}” loop, if a coded video sequence containing stereo-view with depth-view (2+1=3 layers), there are 3 layers. So, vps_max_layers_minus1 = 3 − 1 = 2. If the current “for” loop is followed, | |
| i = 1 => Layer−1 = depth-view; | |
| i = 2 (vps_max_layers_minus1) => Layer−2 = View−1 where is i=3 => Layer−3 = View−2? |
As a correction, this loop is “for (i=0; i<=vps_max_layers_minus1; i++){ . . . }” for two cases, except for the “profile_tier_level( . . . ).”
4) The semantics description for the syntax parameter “dimension_id[i][j]” is also not available with respect to “scalability dimension” and “dimension_id_len_minus1[j].” An exemplary table is shown below to show the relationship among these parameters:
| Scalability dimension | dimension_id | dimension_id_len(example) |
| none(base HEVC) | — | — |
| spatial | dependency_id | 4 |
| quality | quality_id | 4 |
| depth | depth_flag | 1 |
| multiview | view_idx | 4 |
| unspecified | — | — |
| Reserved | — | — |
The VPS and vps_extension( ) syntax structures are updated for the HEVC Extensions in scalable video coding, multi-view coding and 3D video coding areas.
VPS contains metadata to describe the overall characteristics of coded video, enables standards extension compatibility in terms of systems layer signaling so that a legacy decoder is able to ignore additional information about the extension bitstream structure. The current VPS syntax structure and its extension contain information for multi-layered video sequences, where a layer is able to be a base layer (for HEVC and its extensions), or is able to be a scalable enhancement layer (spatial or quality) for SHVC, or a view layer (texture view or depth view) for multi-view coding of HEVC extension (MHVC). All such layers are able to have their sublayers also (temporal). Each video layer is able to be depending upon its neighboring lower layers or it is able to be independent with no inter-layer predictions.
The motivation behind “mixed sequences signaling support” is to develop new layer-specific properties in the VPS extension syntax structure, as suggested in “JCTVC-K_notes.” The layered syntax agreement for independent layers in VPS are able to be suitably exploited to support a variety of mixed contents (source-types, coding types and others) in the high level syntax structure for HEVC extensions.
Some possible application examples in mixed broadcasting or network transitions for a VPS with 2-layers are:
Frame structured video in layer-1 and field structured video in layer-2: each video layer has its respective SPS and more. Legacy mon-view (2-D) decoders are able to user either of these 2 layers for its base-layer application.
Frame structured video (2-D, mon-view) in layer-1 and frame-compatible (frame-packing) video (3D, stereo-view) in layer-2: legacy mono-view (2-D) decoder uses the layer-1 video, while an advanced stereo-view (3D) frame-compatible video decoder is able to use layer-2 for 3D stereo-view video application.
The combination of mixed video types will be present in the video bitstreams to support two such decoders (legacy and advanced).
Many such combinations of coded video content with varied source-types and coding types are able to co-exist in the current and future applications where either legacy or advanced decoders will sort out the respective bitstream for decoding.
The inherent layer-based descriptions of VPS are able to be extended to support such applications, at least for the systems level solutions (ad-insertions, splicing and more).
There are four possible options of adding syntax for mixed sequences signaling in VPS extension.
Option 1: 2 syntaxes for mixed sequences signaling support
Option 2: Option 1 plus source_mixed_codec_flag syntax parameter
Option 3: Option 2 plus mixed_video_present_flag syntax parameter
Option 4: specific applications support plus mixed video_present_flag_syntax parameter and use it as a condition for added syntax/semantics for this option.
Option 1
| vps_extension( ) { | Descriptor |
| avc_base_codec_flag | u(1) |
| source_mixed_video_type | u(4) |
| scalability_mask | u(16) |
| for(i=0;i<NumScalabilityTypes;i++) { | |
| dimension_id_len_minus1[i] | u(3) |
| } | |
| vps_nuh_layer_id_present_flag | u(1) |
| //layer specific information | |
| for (i=0; i<=vps_max_layers_minus1; i++) { | |
| //mapping of layer ID to scalability dimension IDs | |
| if (vps_nuh_layer_id_present_flag) | |
| layer_id_in_nuh[i] | u(6) |
| for (j=0; j<=NumScalabilityTypes; j++) { | |
| v = dimension_id_len_minus1[j]+1 | |
| dimension_id[i][j] | u(v) |
| } | |
| if(source_mixed_video_type > 0) | |
| source_mixed_video_idc[i] | u(4) |
| } | |
| for(i=0;i<vps_max_layers_minus1;i++) | |
| profile_tier_level(1,vps_max_sub_layers_minus1) | |
| for(i=0;i<vps_max_layers_minus1;i++) { | |
| //layer dependency | |
| num_direct_ref_layers[i] | u(6) |
| for(j=0; j<num_direct_ref_layers[i];j++) | |
| ref_layer_id[i][j] | u(6) |
| } | |
| } | |
The semantics description for these two added syntax parameters are shown in the tables below:
| Mixed video combination sources | |
| source_mixed_video_type | (1st/2nd/3rd . . . ) |
| 0 | None |
| 1 | Frame/Field |
| 2 | Frame/Frame-Compatible |
| 3 | Field/Frame-Compatible |
| 4 | Frame-Compatible/Stereo-view |
| 5 | Frame/Field/Frame-Compatible |
| 6 | Frame/Frame-Compatible/Stereo-view |
| 7 . . . 15 | Undefined |
| source_mixed_video_idc | Mixed video combination order |
| 0 | First source-video-type present in Layer-i |
| 1 | Second source-video-type present in Layer-i |
| 2 | A mixture of First and Second source-video- |
| types present in Layer-i | |
| 3 | Third source-video-type present in Layer-i |
| 4 | A mixture of First, Second and Third source- |
| video-types present in Layer-i | |
| 5 . . . 15 | Undefined |
Option 2
| vps_extension( ) { | Descriptor |
| avc_base_codec_flag | u(1) |
| source_mixed_video_type | u(4) |
| scalability_mask | u(16) |
| for(i=0;i<NumScalabilityTypes;i++) { | |
| dimension_id_len_minus1[i] | u(3) |
| } | |
| vps_nuh_layer_id_present_flag | u(1) |
| //layer specific information | |
| for (i=0; i<=vps_max_layers_minus1; i++) { | |
| //mapping of layer ID to scalability dimension IDs | |
| if (vps_nuh_layer_id_present_flag) | |
| layer_id_in_nuh[i] | u(6) |
| for (j=0; j<=NumScalabilityTypes; j++) { | |
| v = dimension_id_len_minus1[j]+1 | |
| dimension_id[i][j] | u(v) |
| } | |
| if(source_mixed_video_type > 0) { | |
| source_mixed_video_idc[i] | u(4) |
| source_mixed_codec_flag[i] | u(1) |
| } | |
| } | |
| for(i=0;i<vps_max_layers_minus1;i++) | |
| profile_tier_level(1,vps_max_sub_layers_minus1) | |
| for(i=0;i<vps_max_layers_minus1;i++) { | |
| //layer dependency | |
| num_direct_ref_layers[i] | u(6) |
| for(j=0; j<num_direct_ref_layers[i];j++) | |
| ref_layer_id[i][j] | u(6) |
| } | |
| } | |
The semantics description for the added new syntax is the same avc_base_codec_flag as follow:
| Mixed video | |
| avc_base_codec_flag/source_mixed_codec_flag | coding-type |
| 0 | HEVC |
| 1 | AVC |
Option 3
| vps_extension( ) { | Descriptor |
| avc_base_codec_flag | u(1) |
| mixed_video_present_flag | u(1) |
| if (mixed_video_present_flag) | |
| source_mixed_video_type | u(4) |
| scalability_mask | u(16) |
| for(i=0;i<NumScalabilityTypes;i++) { | |
| dimension_id_len_minus1[i] | u(3) |
| } | |
| vps_nuh_layer_id_present_flag | u(1) |
| //layer specific information | |
| for (i=0; i<=vps_max_layers_minus1; i++) { | |
| //mapping of layer ID to scalability dimension IDs | |
| if (vps_nuh_layer_id_present_flag) | |
| layer_id_in_nuh[i] | u(6) |
| for (j=0; j<=NumScalabilityTypes; j++) { | |
| v = dimension_id_len_minus1[j]+1 | |
| dimension_id[i][j] | u(v) |
| } | |
| if(mixed_video_present_flag) { | |
| source_mixed_video_idc[i] | u(4) |
| source_mixed_codec_flag[i] | u(1) |
| } | |
| } | |
| for(i=0;i<vps_max_layers_minus1;i++) | |
| profile_tier_level(1,vps_max_sub_layers_minus1) | |
| for(i=0;i<vps_max_layers_minus1;i++) { | |
| //layer dependency | |
| num_direct_ref_layers[i] | u(6) |
| for(j=0; j<num_direct_ref_layers[i];j++) | |
| ref_layer_id[i][j] | u(6) |
| } | |
| } | |
The presence of this flag is able to save some added bits in case of “no mixed video-type.”
| Mixed video combination sources | |
| source_mixed_video_type | (1st/2nd/3rd . . . ) |
| 0 | Frame/Field |
| 1 | Frame/Frame-Compatible |
| 2 | Field/Frame-Compatible |
| 3 | Frame-Compatible/Stereo-view |
| 4 | Frame/Field/Frame-Compatible |
| 5 | Frame/Frame-Compatible/Stereo-view |
| 6 . . . 15 | Undefined |
Option 4
| vps_extension( ) { | Descriptor |
| avc_base_codec_flag | u(1) |
| mixed_video_present_flag | u(1) |
| scalability_mask | u(16) |
| for(i=0;i<NumScalabilityTypes;i++) { | |
| dimension_id_len_minus1[i] | u(3) |
| } | |
| vps_nuh_layer_id_present_flag | u(1) |
| //layer specific information | |
| for (i=0; i<=vps_max_layers_minus1; i++) { | |
| //mapping of layer ID to scalability dimension IDs | |
| if (vps_nuh_layer_id_present_flag) | |
| layer_id_in_nuh[i] | u(6) |
| for (j=0; j<=NumScalabilityTypes; j++) { | |
| v = dimension_id_len_minus1[j]+1 | |
| dimension_id[i][j] | u(v) |
| } | |
| if(mixed_video_present_flag) { | |
| source_scan_type_info_idc[i] | u(4) |
| source_2d_3d_info_idc[i] | u(1) |
| } | |
| } | |
| for(i=0;i<vps_max_layers_minus1;i++) | |
| profile_tier_level(1,vps_max_sub_layers_minus1) | |
| for(i=0;i<vps_max_layers_minus1;i++) { | |
| //layer dependency | |
| num_direct_ref_layers[i] | u(6) |
| for(j=0; j<num_direct_ref_layers[i];j++) | |
| ref_layer_id[i][j] | u(6) |
| } | |
| } | |
In case of “mixed_video_present_flag=1,” two new syntaxes are present for each layer and these two syntax parameters address two specific application examples with mixed video sources:
Frame/Field structured scan-types and Frame for 2D video, and
Frame-packing arrangement (FPA) video for 3D video.
The semantics description for these two new syntaxes are explained in the tables below:
| source_scan_type_info_idc[i] | Video Layer Characteristics |
| 0 | All pictures in layer i have interlaced |
| scan type | |
| 1 | All pictures in layer i have progressive |
| scan type | |
| 2 | Pictures in layer i have unknown scan |
| type | |
| 3 | Pictures in layer i have a mixture of |
| interlaced and progressive scan type | |
| source_2d_3d_info_idc[i] | Video Layer Characteristics |
| 0 | All pictures in layer i are 2D frames |
| 1 | All pictures in layer i are packed in frame |
| compatible 3D format or frame packing | |
| arrangement (FPA) | |
| 2 | Pictures in layer i have unknown FPA |
| 3 | Pictures in layer i have a mixture of frame |
| compatible 3D and 2D frames | |
The syntax modifications described herein extend the layer-based properties of VPS to address various emerging applications in the System layers (content editing, splicing, ad-insertion) as well as in the overall decoding path for better communication and system integration purposes.
FIG. 1 illustrates a flowchart of a method of utilizing a modified VPS syntax according to some embodiments. In the step 100, content (e.g., a video) is encoded. The VPS data generated using the modified VPS syntax is also included with the encoded content. In the step 102, decoding is implemented. For example, a video is decoded using any decoder. In the step 104, the VPS data is accessible. While decoding the VPS data is able to be used for additional processing. The VPS data contains various HEVC Extension information in scalable video coding, multi-view coding and 3D video coding areas. In some embodiments, the VPS data includes mixed signaling information. In some embodiments, additional or fewer steps are implemented. In some embodiments, the order of the steps is modified.
FIG. 2 illustrates a block diagram of an exemplary computing device configured to implement the modified VPS method according to some embodiments. The computing device 200 is able to be used to acquire, store, compute, process, communicate and/or display information such as images and videos. In general, a hardware structure suitable for implementing the computing device 200 includes a network interface 202, a memory 204, a processor 206, I/O device(s) 208, a bus 210 and a storage device 212. The choice of processor is not critical as long as a suitable processor with sufficient speed is chosen. The memory 204 is able to be any conventional computer memory known in the art. The storage device 212 is able to include a hard drive, CDROM, CDRW, DVD, DVDRW, Blu-ray®, flash memory card or any other storage device. The computing device 200 is able to include one or more network interfaces 202. An example of a network interface includes a network card connected to an Ethernet or other type of LAN. The I/O device(s) 208 are able to include one or more of the following: keyboard, mouse, monitor, screen, printer, modem, touchscreen, button interface and other devices. Modified VPS application(s) 230 used to perform the modified VPS method are likely to be stored in the storage device 212 and memory 204 and processed as applications are typically processed. More or fewer components shown in FIG. 2 are able to be included in the computing device 200. In some embodiments, modified VPS hardware 220 is included. Although the computing device 200 in FIG. 2 includes applications 230 and hardware 220 for the modified VPS method, the modified VPS method is able to be implemented on a computing device in hardware, firmware, software or any combination thereof. For example, in some embodiments, the modified VPS applications 230 are programmed in a memory and executed using a processor. In another example, in some embodiments, the modified VPS hardware 220 is programmed hardware logic including gates specifically designed to implement the modified VPS method.
In some embodiments, the modified VPS application(s) 230 include several applications and/or modules. In some embodiments, modules include one or more sub-modules as well. In some embodiments, fewer or additional modules are able to be included.
Examples of suitable computing devices include a personal computer, a laptop computer, a computer workstation, a server, a mainframe computer, a handheld computer, a personal digital assistant, a cellular/mobile telephone, a smart appliance, a gaming console, a digital camera, a digital camcorder, a camera phone, a smart phone, a portable music player, a tablet computer, a mobile device, a video player, a video disc writer/player (e.g., DVD writer/player, high definition disc writer/player, ultra high definition disc writer/player), a television, a home entertainment system, smart jewelry (e.g., smart watch) or any other suitable computing device.
FIG. 3 illustrates a general diagram of an HEVC encoder according to some embodiments. The encoder 300 includes a general coder control component, a transform scaling and quantization component, a scaling and inverse transform component, an intra-picture estimation component, a filter control analysis component, an intra-picture prediction component, a deblocking and SAO filters component, a motion compensation component, a motion estimation component, and a header formatting and CABAC component. An input video signal is received by the encoder 300 and is split into Coding Tree Units (CTUs). The HEVC encoder components process the video data using the modified VPS and generate a coded bitstream.
FIG. 4 illustrates a general diagram of an HEVC decoder according to some embodiments. The decoder 400 includes an entropy decoding component, an inverse quantization component, an inverse transform component, a current frame component, an intra prediction component, a previous frames component, a motion compensation component, a deblocking filter, an SAO component and an adaptive loop filter. An input bitstream (e.g., a coded video) is received by the decoder 400, and a decoded bitstream is generated for display. In some embodiments, the modified VPS is utilized while decoding.
To utilize the modified VPS method, devices are able to access parameters in VPS and its extension for scalable video coding, multi-view coding, 3D video coding and mixed video sequences. The modified VPS method is automatically used when performing video processing or other times. The modified VPS method is able to be implemented automatically without user involvement.
In operation, the VPS and vps_extension( ) syntax structures are updated with some cleanups for the HEVC Extensions in scalable video coding, multi-view coding and 3D video coding areas. In addition, four options of adding syntaxes to support mixed video sequences in various layers for the VPS extension are described. The VPS is generated using the modifed syntax structure.
U.S. patent application No. Atty Docket No. SONY-57100, titled “VIDEO PARAMETER SET (VPS) SYNTAX RE-ORDERING FOR EASY ACCESS OF EXTENSION PARAMETERS” and U.S. patent application No. Atty Docket No. SONY-57300, titled “JCTVC-L0227: VPS_EXTENSION WITH UPDATES OF PROFILE-TIER-LEVEL SYNTAX STRUCTURE” are hereby incorporated by reference in their entireties for all purposes.
Some Embodiments of JCTVC-L0226: VPS and VPS_Extension Updates
1. A method programmed in a non-transitory memory of a device comprising:
The present invention has been described in terms of specific embodiments incorporating details to facilitate the understanding of principles of construction and operation of the invention. Such reference herein to specific embodiments and details thereof is not intended to limit the scope of the claims appended hereto. It will be readily apparent to one skilled in the art that other various modifications may be made in the embodiment chosen for illustration without departing from the spirit and scope of the invention as defined by the claims.
1-32. (canceled)
33. An image processing method, comprising:
in an image processing apparatus comprising at least one processor:
generating a bitstream by encoding image data, wherein the bitstream includes a video parameter set (VPS) syntax, and wherein a byte-alignment syntax in the VPS syntax is under a condition of a VPS extension flag; and
transmitting the generated bitstream.
34. The image processing method of claim 33,
wherein the byte-alignment syntax is included in the VPS syntax based on a determination that the VPS extension flag is true.
35. The image processing method of claim 33,
wherein the bitstream is generated with a coding tree unit as a unit.
36. The image processing method of claim 33, further comprising filtering reference image data for motion compensation as a deblock filter.
37. The image processing method of claim 36, further comprising filtering reference image data applied to the deblock filter as a sample adaptive offset (SAO) processing.
38. An image processing apparatus, comprising:
at least one processor configured to:
generate a bitstream by encoding image data, wherein the bitstream includes a video parameter set (VPS) syntax, and wherein a byte-alignment syntax in the VPS syntax is under a condition of a VPS extension flag; and
transmit the generated bitstream.
39. The image processing apparatus of claim 38,
wherein the byte-alignment syntax is included in the VPS syntax based on a determination that the VPS extension flag is true.
40. The image processing apparatus of claim 38, wherein the generation of the bitstream is with a coding tree unit as a unit.
41. The image processing apparatus of claim 38, wherein the at least one processor is further configured to filter reference image data for motion compensation as a deblock filter.
42. The image processing apparatus of claim 41, wherein the at least one processor is further configured to filter reference image data applied to the deblock filter as a sample adaptive offset (SAO) processing.