Abstract:
The invention concerns a method for encoding video data in a scalable manner according to H.264/SVC standard. The method comprises the steps of
   inserting a scalable nesting Supplemental Enhancement Information message for each layer of the data stream comprising at least one reference to the layer and a link to a Supplemental Enhancement Information message,   following the nesting Supplemental Enhancement Information message, inserting said Supplemental Enhancement Information message for each scalable nesting Supplemental Enhancement Information message comprising the video usability information for said layer.

Description:
FIELD OF THE INVENTION 
       [0001]    The invention concerns a method to encode video data in a scalable manner. 
       BACKGROUND OF THE INVENTION 
       [0002]    The invention concerns mainly the field of video coding when data can be coded in a scalable manner. 
         [0003]    Coding video data according to several layers can be of a great help when terminals for which data are intended have different capacities and therefore cannot decode full data stream but only part of it. When the video data are coded according to several layers in a scalable manner, the receiving terminal can extract from the received bit-stream the data according to its profile. 
         [0004]    Several video coding standards exist today which can code video data according to different layers and/or profiles. Among them, one can cite H.264/SVC, also referenced as ITU-T H.264 standard. 
         [0005]    However, one existing problem is the overload that it creates by transmitting more data than often needed at the end-side. 
         [0006]    Indeed, for instance in H.264/SVC or MVC (SVC standing for scalable video coding and MVC standing for multi view video coding), the transmission of several layers requests the transmission of many headers in order to transmit all the parameters requested by the different layers. In the current release of the standard, one header comprises the parameters corresponding to all the layers. So, when one needs to transmit only the base layer, all the information related to the enhancement layers have to be transmitted. Therefore, it creates a big overload on the network to transmit all the parameters for all the layers even if all layers data are not requested by the different devices to which the data are addressed. 
         [0007]    The invention proposes to solve at least one of these drawbacks. 
       SUMMARY OF THE INVENTION 
       [0008]    To this end, the invention proposes a method for encoding video data in a scalable manner according to H.264/SVC standard. According to the invention, the method comprises the steps of
   inserting a scalable nesting Supplemental Enhancement Information message for each layer of the data stream comprising at least one reference to the layer and a link to a Supplemental Enhancement Information message,   following the nesting Supplemental Enhancement Information message, inserting said Supplemental Enhancement Information message for each scalable nesting Supplemental Enhancement Information message comprising the video usability information for said layer.   
 
         [0011]    According to a preferred embodiment, the Supplemental Enhancement Information message comprises a reference to the Sequence Parameter Set (SPS) that said layer is linked to. 
         [0012]    According to a preferred embodiment, the Supplemental Enhancement Information message comprises the video usability information as defined in the H264/SVC standard. 
         [0013]    In some coding methods, the parameters for all the layers are all transmitted as a whole, no matter how many layers are transmitted. Therefore, this creates a big overload on the network. This is mainly due to the fact that some of the parameters are layer dependant and some others are common to all layers and therefore, one header being defined for all parameters, all layer dependant and independent parameters are transmitted together. 
         [0014]    Thanks to the invention, the layer dependant parameters are only transmitted when needed, that is when the data coded according to these layers are transmitted instead of transmitting the whole header comprising the parameters for all the layers. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0015]    Other characteristics and advantages of the invention will appear through the description of a non-limiting embodiment of the invention, which will be illustrated, with the help of the enclosed drawings: 
           [0016]      FIG. 1  represents the structure of the NAL unit used for scalable layers coding according to the prior art, 
           [0017]      FIG. 2  represent an embodiment of the structure as proposed in the current invention, 
           [0018]      FIG. 3  represents an overview of the scalable video coder according to a preferred embodiment of the invention, 
           [0019]      FIG. 4  represents an overview of the data stream according to a preferred embodiment of the invention, 
           [0020]      FIG. 5  represents an example of a bitstream according to a preferred embodiment of the invention, 
       
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
       [0021]    According to the preferred embodiment described here, the video data are coded according to H264/SVC. SVC proposes the transmission of video data according to several spatial levels, temporal levels, and quality levels. For one spatial level, one can code according to several temporal levels and for each temporal level according to several quality levels. Therefore when m spatial levels are defined, n temporal levels and O quality levels, the video data can be coded according to m*n*O different levels. According to the client capabilities, different layers are transmitted up to a certain level corresponding to the maximum of the client capabilities. 
         [0022]    As shown on  FIG. 1  representing the prior art of the invention, currently in SVC, SPS is a syntax structure which contains syntax elements that apply to zero or more entire coded video sequences as determined by the content of a seq_parameter_set_id syntax element found in the picture parameter set referred to by the pic_parameter_set_id syntax element found in each slice header. In SVC, the values of some syntax elements conveyed in the SPS are layer dependant. These syntax elements include but are not limited to, the timing information, HRD (standing for “Hypothetical Reference Decoder”) parameters, bitstream restriction information. Therefore, it is necessary to allow the transmission of the aforementioned syntax elements for each layer. 
         [0023]    One Sequence Parameter Set (SPS) comprises all the needed parameters for all the corresponding spatial (D i ), temporal (T i ) and quality (Q i ) levels whenever all the layers are transmitted or not 
         [0024]    SPS comprises the VUI (standing for Video Usability Information) parameters for all the layers. The VUI parameters represent a very important quantity of data as they comprise the HRD parameters for all the layers. In practical applications, as the channel rate is constrained, only certain layers are transmitted through the network. As SPS represent a basic syntax element in SVC, it is transmitted as a whole. Therefore, no matter which layer is transmitted, the HRD parameters for all the layers are transmitted. 
         [0025]    As shown on  FIG. 2 , in order to reduce the overload of the Sequence Parameter set (SPS) for scalable video coding, the invention proposes to use a nesting_sei prefix/suffix NAL and to store the VUI parameters in a SEI message. 
         [0026]    The scalable_nesting, also called nesting SEI (and represented as NSEI on the drawings) is acting as a header of a prefix/suffix type NAL unit indicating the layer information. The scalable_nesting is linked, thanks to the vui_parameter_sei( )field, to the vui_parameter_sei message comprising all the properties of the layer specified by the nesting SEI. 
         [0027]    The following table 1 illustrates the scalable_nesting as defined by the prefix/suffix NAL. 
         [0000]    
       
         
               
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
               
                 scalable_nesting( payloadSize ) { 
                 C 
                 Descriptor 
               
               
                   
               
             
             
               
                  all_pictures_in_au_flag 
                 5 
                 u(1) 
               
               
                  if( all_pictures_in_au_flag = = 0) { 
               
               
                   num_pictures_minus1 
                 5 
                 ue(v) 
               
               
                   for( i = 0; i &lt;= num_pictures_minus1; i++ ) { 
               
               
                    dependency_id[ i ] 
                 5 
                 u(3) 
               
               
                    quality_level[ i ] 
                 5 
                 u(2) 
               
               
                   } 
               
               
                   temporal_level 
                 5 
                 u(3) 
               
               
                  } 
               
               
                  while( !byte_aligned( ) ) 
               
               
                   sei_nesting_zero_bit /* equal to 0 */ 
                 5 
                 f(1) 
               
               
                  vui_parameter_sei ( ) 
                 5 
               
               
                 } 
               
               
                   
               
             
          
         
       
     
         [0028]    A scalable nesting SEI message concerns an access unit. When present, this SEI message appears before any VCL NAL unit of the corresponding access unit. Scalable nesting SEI is contained in a NAL unit. The scope to which the nested SEI message applies is indicated by the syntax elements all_pictures_in_au_flag, and num_pictures, dependency_id[i] and quality_id[i], when present.
       all_pictures_in_au_flag equal to 1 indicates that the nested SEI message applies to all the coded pictures of the access unit. all_pictures_in_au_flag equal to 0 indicates that the applicable scope of the nested SEI message is signaled by the syntax elements num_pictures, dependency_id[i] and quality_id[i].   num_pictures_minus1 indicates the number of coded pictures to which the nested SEI message applies.   dependency_id[i] and quality_id[i] indicate, respectively, the dependency_id (spatial level) and the quality_id of the i-th coded picture to which the nested SEI message applies.   sei_nesting_zero_bit is equal to 0.       
 
         [0033]    The following table illustrates the sei message containing the parameters specific to each layer. 
         [0000]    
       
         
               
               
               
             
           
               
                 TABLE 2 
               
               
                   
               
               
                 vui_parameter_sei ( ) { 
                 C 
                 Descriptor 
               
               
                   
               
             
             
               
                   sequence_parameter_set_id 
                 0 
                 ue(v) 
               
               
                   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) 
               
               
                   } 
               
               
                 } 
               
               
                   
               
             
          
         
       
     
         [0034]    The sequence_parameter_set_id identifies the sequence parameter set (SPS) which current vui_parameter_sei message maps to and includes the common sequence parameter properties for the current layer. 
         [0035]    The other parameters mentioned in table 2 are defined in the standard H.264/SVC. 
         [0036]    The following table 3 illustrates the modification to be done to the existing definition of the sei_payload as currently defined in the standard H.264/SVC. The vui_parameter_sei is defined as being of type 30. In other embodiments of the invention, it can be any other field which is still made available by the standard H.264/SVC. 
         [0000]    
       
         
               
               
               
               
             
           
               
                   
                 TABLE 3 
               
               
                   
                   
               
             
             
               
                   
                 sei_payload( payloadType, payloadSize ) { 
                 C 
                 Descriptor 
               
               
                   
                  if(payloadType==0) 
                 C 
                 Descriptor 
               
               
                   
                   Buffering_period(payloadSize) 
               
               
                   
                  ......... 
               
               
                   
                  if(payloadType==30) 
               
               
                   
                   vui_parameter_sei(payloadSize) 
               
               
                   
                  else 
               
               
                   
                   reserved_sei_message(payloadSize) 
               
               
                   
                  ......... 
               
               
                   
                 } 
               
               
                   
                   
               
             
          
         
       
     
         [0037]      FIG. 3  shows an embodiment of a scalable video coder  1  according to the invention. 
         [0038]    A video is received at the input of the scalable video coder  1 . 
         [0039]    The video is coded according to different spatial levels. Spatial levels mainly refer to different levels of resolution of the same video. For example, as the input of a scalable video coder, one can have a CIF sequence (352 per 288) or a QCIF sequence (176 per 144) which represent each one spatial level. 
         [0040]    Each of the spatial level is sent to a hierarchical motion compensated prediction module. The spatial level  1  is sent to the hierarchical motion compensated prediction module  2 ″, the spatial level  2  is sent to the hierarchical motion compensated prediction module  2 ′ and the spatial level n is sent to the hierarchical motion compensated prediction module  2 . 
         [0041]    The spatial levels being coded on 3 bits, using the dependency_id, therefore the maximum number of spatial levels is 8. 
         [0042]    Once hierarchical motion predicted compensation is done, two kinds of data are generated, one being motion which describes the disparity between the different layers, the other being texture, which is the estimation error. 
         [0043]    For each of the spatial level, the data are coded according to a base layer and to an enhancement layer. For spatial level  1 , data are coded through enhancement layer coder  3 ″ and base layer coder  4 ″, for spatial level  2 , data are coded through enhancement layer coder  3 ′ and base layer coder  4 ′, for spatial level  1 , data are coded through enhancement layer coder  3  and base layer coder  4 . 
         [0044]    After the coding, the headers are prepared and for each of the spatial layer, a SPS and a PPS messages are created and several NSEI-VUI_SEI messages. 
         [0045]    For spatial level  1 , as represented on  FIG. 3 , SPS and PPS  5 ″ are created and a set of NSEI-VUI_SEI 1   1 , NSEI-VUI_SEI 2   1 , . . . , NSEI-VUI_SEI m*O   1 , are also created according to this embodiment of the invention. 
         [0046]    For spatial level  2 , as represented on  FIG. 3 , SPS and PPS  5 ′ are created and a set of NSEI-VUI_SEI 1   2 , NSEI-VUI_SEI 2   2 , . . . , NSEI-VUI_SEI m*O   2  are also created according to this embodiment of the invention. 
         [0047]    For spatial level n, as represented on  FIG. 3 , SPS and PPS  5  are created and a set of NSEI-VUI_SEI 1   n , NSEI-VUI_SEI 2   n , . . . , NSEI-VUI_SEI m*O   n  are also created according to this embodiment of the invention. 
         [0048]    The bitstreams encoded by the base layer coding modules and the enhancement layer coding modules are following the plurality of SPS, PPS and SUP SPS headers in the global bitstream. 
         [0049]    On  FIG. 3 ,  8 ″ comprises SPS and PPS  5 ″, NSEI-VUI_SEI 1   1 , NSEI-VUI_SEI 2   1 , . . . , NSEI-VUI_SEI m   1    6 ″ and bitstream  7 ″ which constitute all the encoded data associated with spatial level  1 . 
         [0050]    On  FIG. 3 ,  8 ′ comprises SPS and PPS  5 ′, NSEI-VUI__SEI 1   2 , NSEI-VUI_SEI 2   2 , . . . , NSEI-VUI_SEI m   2    6 ′ and bitstream  7 ′ which constitute all the encoded data associated with spatial level  2 . 
         [0051]    On  FIG. 3 ,  8  comprises SPS and PPS  5 , NSEI-VUI_SEI 1   n , NSEI-VUI_SEI 2   n , . . . , NSEI-VUI_SEI m   n    6  and bitstream  7  which constitute all the encoded data associated with spatial level n. 
         [0052]    The different NSEI-VUI_SEI headers are compliant with the headers described in the above tables. 
         [0053]      FIG. 4  represents a bitstream as coded by the scalable video encoder of  FIG. 3 . 
         [0054]    The bitstream comprises one SPS for each of the spatial levels. When m spatial levels are encoded, the bitstream comprises SPS 1 , SPS 2  and SPSm represented by  10 ,  10 ′ and  10 ″ on  FIG. 4 . 
         [0055]    In the bitstream, each SPS coding the general information relative to the spatial level, is followed by a header  10  of NSEI-VUI_SEI type itself followed by the corresponding encoded video data corresponding each to one temporal level and one quality level. 
         [0056]    Therefore, when one level corresponding to one quality level is not transmitted, the corresponding header is also not transmitted as there is one header NSEI-VUI_SEI corresponding to each level. 
         [0057]    So, let&#39;s take an example to illustrate the data stream to be transmitted as shown on  FIG. 5 . 
         [0058]      FIG. 5  illustrates the transmission of the following levels. The references indicated in the bitstream correspond to the references used in  FIG. 2 . 
         [0059]    The following layers are transmitted: 
         [0060]    spatial layer  1 
       temporal level  1 
           Quality level  1     
           temporal level  2 
           Quality level  1     
               
 
         [0065]    spatial layer  2 
       temporal level  1 
           quality level  1     
               
 
         [0068]    spatial layer  3 
       temporal level  1 
           Quality level  1     
           temporal level  2 
           Quality level  1     
           temporal level  3 
           Quality level  1     
               
 
         [0075]    Therefore, one can see that not all the different parameters for all the layers are transmitted but only the ones corresponding to the requested layers as they are comprised in the NSEI-VUI_SEI messages and no more in the SPS messages.