Patent Publication Number: US-2022232256-A1

Title: Video Decoder Initialization Information Signaling

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This patent application claims the benefit of U.S. Provisional Patent Application No. 63/135,451 filed Jan. 8, 2021 by Ye-Kui Wang, and titled “Video Decoder Initialization Information Signaling,” which is hereby incorporated by reference. 
    
    
     TECHNICAL FIELD 
     This patent document relates to generation, storage, and consumption of digital audio video media information in a file format. 
     BACKGROUND 
     Digital video accounts for the largest bandwidth used on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for digital video usage is likely to continue to grow. 
     SUMMARY 
     A first aspect relates to a method for processing video data comprising: determining decoder initialization information (DII) for a bitstream, wherein the DII includes data describing a maximum level (MaxLevel) to which all coded video sequences (CVSs) of the bitstream conform and a maximum format that comprises one or more of the following parameters: 1) a maximum number of decoded pictures (MaxDecPics) stored in the decoded picture buffer (DPB), 2) a maximum decoded picture width (MaxDecPicW) of all coded pictures in the bitstream, 3) a maximum decoded picture height (MaxDecPicH) of all coded pictures in the bitstream, 4) a maximum colour format (MaxColourFormat) of all coded pictures in the bitstream, and 5) a maximum bit depth (MaxBitdepth) of all coded pictures in the bitstream, wherein the MaxLevel indicates a first maximum DPB size needed for decoding the bitstream, wherein the maximum format indicates a second maximum DPB size, denoted as DPB memory for as maximum format (DpbMemory4MaxFormat), determined by simultaneously setting all parameters of the maximum format to largest values, and wherein the DII further comprises a first indication of whether the DpbMemory4MaxFormat exceeds the first maximum DPB size; and performing a conversion between a visual media data and a bitstream based on the first indication. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the decoder initialization information further comprises a minimum level a decoder should support to decode the bitstream at a maximum format (MinLevel4MaxFormat). 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the MinLevel4MaxFormat signals a smallest level for which the first maximum DPB size is greater than or equal to the DPBMemory4MaxFormat. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the MinLevel4MaxFormat signals a smallest level for which a value of a maximum picture size in luma samples (MaxLumaPs) is greater than or equal to the MaxDecPicW times the MaxDecPicH. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the MinLevel4MaxFormat is signaled only when the first indication indicates that the DPBMemory4MaxFormat exceeds the first maximum DPB size. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the MinLevel4MaxFormat is signaled only when the MaxDecPicW times the MaxDecPicH is greater than a maximum picture size (MaxLumaPs) of the MaxLevel. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the MinLevel4MaxFormat signals a smallest level for which: the MaxDecPicW times the MaxDecPicH is less than or equal to a maximum picture size (MaxLumaPs) of the MaxLevel; and the MaxDecPics is less than or equal to the first maximum DPB size. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the decoder initialization information further comprises a second indication of whether the MaxDecPicW times the MaxDecPicH is greater than a maximum picture size (MaxLumaPs) of the MaxLevel. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the decoder initialization information further comprises a second indication of whether the MaxDecPicW times the MaxDecPicH is less than or equal to a maximum picture size (MaxLumaPs) of the MaxLevel of the coded video sequence. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the second indication further indicates whether the MaxDecPics is less than or equal to the first maximum DPB size. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the first maximum DPB size is determined by setting a maximum picture size in luma samples (PicSizeMaxInSamplesY) equal to MaxDecPicW times MaxDecPicH and setting MaxLumaPs for a level indicated by MinLevel4MaxFormat. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that a minimum level a decoder should support to decode the bitstream at a maximum format (MinLevel4MaxFormat) is only signaled in the decoder initialization information when the second indication indicates that at least one of the following is false: the MaxDecPicW for the bitstream times the MaxDecPicH for the bitstream is less than or equal to the MaxLumaPs of the MaxLevel of the coded video sequence; and the MaxDecPics is less than or equal to the MaxDpbSize. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the decoder initialization information is signaled in a decoding capability information (DCI) network abstraction layer (NAL) unit, a supplemental enhancement information (SEI) message, a file format box, a dynamic adaptive streaming over Hypertext Transfer Protocol (DASH) media presentation description (MPD), or combinations thereof. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the conversion comprises generating the bitstream according to the visual media data. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the conversion comprises parsing the bitstream to obtain the visual media data. 
     A second aspect relates to a method for processing video data comprising: determining decoder initialization information (DII) for a bitstream, wherein the DII includes data describing a maximum level (MaxLevel) to which all coded video sequences (CVSs) of the bitstream conform and a maximum format that comprises one or more of the following parameters: 1) a maximum number of decoded pictures (MaxDecPics) stored in the decoded picture buffer (DPB), 2) a maximum decoded picture width (MaxDecPicW) of all coded pictures in the bitstream, 3) a maximum decoded picture height (MaxDecPicH) of all coded pictures in the bitstream, 4) a maximum colour format (MaxColourFormat) of all coded pictures in the bitstream, and 5) a maximum bit depth (MaxBitdepth) of all coded pictures in the bitstream, wherein the MaxLevel indicates a first maximum DPB size needed for decoding the bitstream, wherein the maximum format indicates a second maximum DPB size, denoted as DPB memory for as maximum format (DpbMemory4MaxFormat), determined by simultaneously setting all parameters of the maximum format to largest values, and wherein the decoder initialization information is only signaled when: the MaxDecPicW times the MaxDecPicH is less than or equal to a maximum picture size (MaxLumaPs) of the MaxLevel of the coded video sequence; and the MaxDecPics) is less than or equal to the first maximum DPB size; and performing a conversion between a visual media data and a bitstream based on the DII. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides inferring, based on a presence of the decoder initialization information, that: the MaxDecPicW for the bitstream times the MaxDecPicH for the bitstream is less than or equal to the MaxLumaPs of the MaxLevel of the coded video sequence; and the MaxDecPics is less than or equal to the MaxDpbSize. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the conversion comprises generating the bitstream according to the visual media data. 
     Optionally, in any of the preceding aspects, another implementation of the aspect provides that the conversion comprises parsing the bitstream to obtain the visual media data. 
     A third aspect relates to an apparatus for processing video data comprising: a processor; and a non-transitory memory with instructions thereon, wherein the instructions upon execution by the processor, cause the processor to: determine decoder initialization information (DII) for a bitstream, wherein the DII includes data describing a maximum level (MaxLevel) to which all coded video sequences (CVSs) of the bitstream conform and a maximum format that comprises one or more of the following parameters: 1) a maximum number of decoded pictures (MaxDecPics) stored in the decoded picture buffer (DPB), 2) a maximum decoded picture width (MaxDecPicW) of all coded pictures in the bitstream, 3) a maximum decoded picture height (MaxDecPicH) of all coded pictures in the bitstream, 4) a maximum colour format (MaxColourFormat) of all coded pictures in the bitstream, and 5) a maximum bit depth (MaxBitdepth) of all coded pictures in the bitstream, wherein the MaxLevel indicates a first maximum DPB size needed for decoding the bitstream, wherein the maximum format indicates a second maximum DPB size, denoted as DPB memory for as maximum format (DpbMemory4MaxFormat), determined by simultaneously setting all parameters of the maximum format to largest values, and wherein the DII further comprises a first indication of whether the DpbMemory4MaxFormat exceeds the first maximum DPB size; and perform a conversion between a visual media data and a bitstream based on the first indication. 
     For the purpose of clarity, any one of the foregoing embodiments may be combined with any one or more of the other foregoing embodiments to create a new embodiment within the scope of the present disclosure. 
     These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts. 
         FIG. 1  is a protocol diagram of an example mechanism for establishing a communication session with Session Description Protocol (SDP). 
         FIG. 2  is a protocol diagram of an example mechanism for performing video streaming according to Dynamic Adaptive Streaming over Hypertext Transfer Protocol (DASH). 
         FIG. 3  is a schematic diagram illustrating a description of a video by a media presentation description (MPD) used in DASH. 
         FIG. 4  is a schematic diagram of a media file stored in International Organization for Standardization (ISO) base media file format (ISOBMFF). 
         FIG. 5  is a schematic diagram of a bitstream containing encoded visual media data. 
         FIG. 6  is a block diagram showing an example video processing system. 
         FIG. 7  is a block diagram of an example video processing apparatus. 
         FIG. 8  is a flowchart for an example method of video processing. 
         FIG. 9  is a flowchart for another example method of video processing. 
         FIG. 10  is a block diagram that illustrates an example video coding system. 
         FIG. 11  is a block diagram that illustrates an example encoder. 
         FIG. 12  is a block diagram that illustrates an example decoder. 
         FIG. 13  is a schematic diagram of an example encoder. 
     
    
    
     DETAILED DESCRIPTION 
     It should be understood at the outset that although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or yet to be developed. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents. 
     Versatile Video Coding (VVC), also known as H.266, terminology is used in some description only for ease of understanding and not for limiting scope of the disclosed techniques. As such, the techniques described herein are applicable to other video codec protocols and designs also. In the present document, editing changes are shown to text by bold italics indicating cancelled text and bold underline indicating added text, with respect to the VVC specification or International Organization for Standardization (ISO) base media file format (ISOBMFF) file format specification. 
     This patent document is related to video coding, video file format, video signaling, and video applications. Specifically, this document is related to signaling of video decoder initialization information and the use of such signaling for decoder initialization and reinitialization. This can help avoid and/or reduce the occurrences of video decoder reinitialization during an application session, and thus helping improve user experience. The disclosed examples may be applied individually or in various combinations, for video bitstreams coded by any codec, such as the VVC standard, and for any video file format, such as the VVC video file format. The disclosed examples can also be used in various video applications, including streaming applications based on Dynamic Adaptive Streaming over HTTP (DASH) and conversational applications using Session Description Protocol (SDP)-based signaling. 
     The present disclosure includes the following abbreviations. Adaptive color transform (ACT), adaptive loop filter (ALF), adaptive motion vector resolution (AMVR), adaptation parameter set (APS), access unit (AU), access unit delimiter (AUD), advanced video coding (Rec. ITU-T H.264|ISO/IEC 14496-10) (AVC), bi-predictive (B), bi-prediction with CU-level weights (BCW), bi-directional optical flow (BDOF), block-based delta pulse code modulation (BDPCM), buffering period (BP), context-based adaptive binary arithmetic coding (CABAC), coding block (CB), constant bit rate (CBR), cross-component adaptive loop filter (CCALF), coded picture buffer (CPB), clean random access (CRA), cyclic redundancy check (CRC), coding tree block (CTB), coding tree unit (CTU), coding unit (CU), coded video sequence (CVS), decoding capability information (DCI), decoding initialization information (DII), decoded picture buffer (DPB), dependent random access point (DRAP), decoding unit (DU), decoding unit information (DUI), exponential-Golomb (EG), k-th order exponential-Golomb (EGk), end of bitstream (EOB), end of sequence (EOS), filler data (FD), first-in, first-out (FIFO), fixed-length (FL), green, blue, and red (GBR), general constraints information (GCI), gradual decoding refresh (GDR), geometric partitioning mode (GPM), high efficiency video coding, also known as Rec. ITU-T H.265|ISO/IEC 23008-2, (HEVC), hypothetical reference decoder (HRD), hypothetical stream scheduler (HSS), intra (I), intra block copy (IBC), instantaneous decoding refresh (IDR), inter layer reference picture (ILRP), intra random access point (TRAP), low frequency non-separable transform (LFNST), least probable symbol (LPS), least significant bit (LSB), long-term reference picture (LTRP), luma mapping with chroma scaling (LMCS), matrix-based intra prediction (MIP), most probable symbol (MPS), most significant bit (MSB), multiple transform selection (MTS), motion vector prediction (MVP), network abstraction layer (NAL), output layer set (OLS), operation point (OP), operating point information (OPI), predictive (P), picture header (PH), picture order count (POC), picture parameter set (PPS), prediction refinement with optical flow (PROF), picture timing (PT), picture unit (PU), quantization parameter (QP), random access decodable leading picture (RADL), random access skipped leading picture (RASL), raw byte sequence payload (RBSP), red, green, and blue (RGB), reference picture list (RPL), sample adaptive offset (SAO), sample aspect ratio (SAR), supplemental enhancement information (SEI), slice header (SH), subpicture level information (SLI), string of data bits (SODB), sequence parameter set (SPS), short-term reference picture (STRP), step-wise temporal sublayer access (STSA), truncated rice (TR), variable bit rate (VBR), video coding layer (VCL), video parameter set (VPS), versatile supplemental enhancement information, also known as Rec. ITU-T H.274|ISO/IEC 23002-7, (VSEI), video usability information (VUI), and versatile video coding, also known as Rec. ITU-T H.266|ISO/IEC 23090-3, (VVC). 
     Video coding standards have evolved primarily through the development of the ITU-T and ISO/IEC standards. The ITU-T produced H.261 and H.263, ISO/IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations jointly produced the H.262/MPEG-2 Video and H.264/MPEG-4 Advanced Video Coding (AVC) and H.265/HEVC standards. Since H.262, the video coding standards are based on the hybrid video coding structure wherein temporal prediction plus transform coding are utilized. To explore the further video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was founded by Video Coding Experts Group (VCEG) and MPEG jointly. Many methods have been adopted by JVET and put into the reference software named Joint Exploration Model (JEM). The NET was later renamed to be the Joint Video Experts Team (JVET) when the Versatile Video Coding (VVC) project officially started. VVC is a coding standard targeting a 50% bitrate reduction as compared to HEVC. VVC has been finalized by the WET. 
     The Essential Video Coding (EVC) standard (ISO/IEC 23094-1) is another video coding standard developed by MPEG. 
     Decoding capability information (DCI) in VVC is discussed below. The DCI NAL unit is a portion of a video coding bitstream that contains bitstream-level profile, tier, and level (PTL) information. The DCI NAL unit includes one or more PTL syntax structures that can be used during session negotiation between a sender and a receiver of a VVC bitstream. When the DCI NAL unit is present in a VVC bitstream, each output layer set (OLS) in the CVSs of the bitstream shall conform to the PTL information carried in at least one of the PTL structures in the DCI NAL unit. 
     In AVC and HEVC, the PTL information for session negotiation is available in the SPS (for HEVC and AVC) and in the VPS (for HEVC layered extension). This design of conveying the PTL information for session negotiation in HEVC and AVC may have certain disadvantages because the scope of a SPS and a VPS is within a CVS, instead of the whole bitstream. Because of that, a sender-receiver session initiation may suffer from reinitialization during bitstream streaming at every new CVS. DCI solves this problem since the DCU NAL unit carries bitstream-level information. Thus, the compliance to the indicated decoding capability can be guaranteed until the end of the bitstream. 
     File format standards are discussed below. Media streaming applications are typically based on the Internet Protocol (IP), Transmission Control Protocol (TCP), and Hypertext Transfer Protocol (HTTP) transport methods, and typically rely on a file format such as the ISOBMFF. One such streaming system is dynamic adaptive streaming over HTTP (DASH). Video can be encoded in a video format, such as AVC and/or HEVC. The encoded video can be encapsulated in ISOBMFF tracks and included in DASH representations and segments. Important information about the video bitstreams, such as the profile, tier, and level, and many others, may be exposed as file format level metadata and/or in a DASH media presentation description (MPD) for content selection purposes. For example, such information can be used for selection of appropriate media segments both for initialization at the beginning of a streaming session and for stream adaptation during the streaming session. 
     Similarly, when using an image format with ISOBMFF, a file format specification specific to the image format, such as the AVC image file format and the HEVC image file format, may be employed. The VVC video file format, the file format for storage of VVC video content based on ISOBMFF, is under development by MPEG. The VVC image file format, the file format for storage of image content coded using VVC, based on ISOBMFF, is also under development by MPEG. 
     DASH is discussed below. DASH supports the creation of multiple representations for video and/or audio data of multimedia content. Different representations may correspond to different coding characteristics, such as different profiles or levels of a video coding standard, different bitrates, different spatial resolutions, etc. DASH employs a manifest of such representations defined in a Media Presentation Description (MPD) data structure. A media presentation may correspond to a structured collection of data that is accessible to DASH streaming client device. The DASH streaming client device may request and download media data information to present a streaming service to a user of the client device. A media presentation may be described in the MPD data structure, which may include updates of the MPD. 
     A media presentation may contain a sequence of one or more periods. Each period may extend until the start of the next period, or until the end of the media presentation in the case of the last period. Each period may contain one or more representations for the same media content. A representation may be one of a number of alternative encoded versions of audio, video, timed text, or other such data. The representations may differ by encoding types, e.g., by bitrate, resolution, and/or codec for video data and bitrate, language, and/or codec for audio data. The term representation may be used to refer to a section of encoded audio or video data corresponding to a particular period of the multimedia content and encoded in a particular way. 
     Representations of a particular period may be assigned to a group indicated by an attribute in the MPD indicative of an adaptation set to which the representations belong. Representations in the same adaptation set are generally considered alternatives to each other, in that a client device can dynamically and seamlessly switch between these representations, e.g., to perform bandwidth adaptation. For example, each representation of video data for a particular period may be assigned to the same adaptation set. Any of the representations may be selected for decoding to present media data, such as video data or audio data, of the multimedia content for the corresponding period. The media content within one period may be represented by either one representation from group 0, if present, or the combination of at most one representation from each non-zero group, in some examples. Timing data for each representation of a period may be expressed relative to the start time of the period. 
     A representation may include one or more segments. Each representation may include an initialization segment, or each segment of a representation may be self-initializing. When present, the initialization segment may contain initialization information for accessing the representation. In general, the initialization segment does not contain media data. A segment may be uniquely referenced by an identifier, such as a uniform resource locator (URL), uniform resource name (URN), or uniform resource identifier (URI). The MPD may provide the identifiers for each segment. In some examples, the MPD may also provide byte ranges in the form of a range attribute, which may correspond to the data for a segment within a file accessible by the URL, URN, or URI. 
     Different representations may be selected for substantially simultaneous retrieval for different types of media data. For example, a client device may select an audio representation, a video representation, and a timed text representation from which to retrieve segments. In some examples, the client device may select particular adaptation sets for performing bandwidth adaptation. For example, the client device may select an adaptation set including video representations, an adaptation set including audio representations, and/or an adaptation set including timed text. The client device may also select adaptation sets for certain types of media (e.g., video), and directly select representations for other types of media (e.g., audio and/or timed text). 
     An example DASH streaming procedure is shown by the following steps. The client obtains the MPD. The client estimates the downlink bandwidth. The client selects a video representation and an audio representation according to the estimated downlink bandwidth and the codec, decoding capability, display size, audio language setting, etc. Unless the end of the media presentation is reached, the client continues to request media segments of the selected representations and presents the streaming content to the user. The client keeps estimating the downlink bandwidth. When the bandwidth changes significantly (e.g., becomes lower), the client selects a different video representation to match the newly estimated bandwidth, and continues to request media segments from the newly selected representation. 
     Video real-time transport protocol (RTP) payload formats and session description protocol (SDP) is discussed below. For any video codec used in video applications, for example VVC, that employs the RTP, an RTP payload format should be specified. Further, a mechanism for signaling of media type parameters using the SDP should also be specified. The RTP payload format for a video codec mainly specifies how to encapsulate the coded video bitstreams in RTP packets and RTP streams. The RTP payload formats for AVC, SVC, and HEVC are specified in IETF RFC 6184, RFC 6190, and RFC 7798, respectively. For VVC, the RTP payload is under development by the IETF. 
     An example design for signaling of video decoder initialization information for a video bitstream is as follows. An example mechanism for signals video decoding initialization information (DII) either in the VVC DCI NAL unit or in a SEI message. The syntax and semantics of DCI NAL and SEI message are provided below. 
     An example of signaling in a DCI NAL unit is discussed below. In an example, the decoding capability information RBSP syntax is as follows: 
     
       
         
           
               
               
             
               
                   
                   
               
               
                   
                 Descriptor 
               
               
                   
                   
               
             
            
               
                   
               
            
           
           
               
               
            
               
                 decoding_capability_information_rbsp( ) { 
                   
               
               
                  dci_reserved_zero_4bits 
                 u(4) 
               
               
                  dci_num_ptls_minus1 
                 u(4) 
               
               
                  for( i = 0; i &lt;= dci_num_ptls_minus1; i++ ) 
               
               
                   profile_tier_level( 1, 0 ) 
               
               
                  dci_extension_flag 
                 u(1) 
               
               
                  if( dci_extension_flag ) { 
               
               
                   while( !byte_aligned( ) ) 
               
               
                    dci_extension_alignment_bit_equal_to_one 
                 u(1) 
               
               
                   dci_extension( ) 
               
               
                   dci_extension2_flag 
                 u(1) 
               
               
                   if( dci_extension2_flag ) 
               
               
                    while( more_rbsp_data( ) ) 
               
               
                     dci_extension_data_flag 
                 u(1) 
               
               
                   } 
               
               
                  rbsp_trailing_bits( ) 
               
               
                 } 
               
               
                   
               
            
           
         
       
     
     In an example, a decoding capability information extension syntax is added as follows: 
     
       
         
           
               
               
             
               
                   
                   
               
               
                   
                 Descriptor 
               
               
                   
                   
               
             
            
               
                   
               
            
           
           
               
               
               
            
               
                   
                 dci_extension( ) { 
                   
               
               
                   
                  dci_max_num_dec_pics_in_dpb_minus1 
                 u(4) 
               
               
                   
                  dci_max_bitdepth_minus8 
                 u(4) 
               
               
                   
                  dci_max_pic_width 
                 u(16) 
               
               
                   
                  dci_max_pic_height 
                 u(16) 
               
               
                   
                  dci_max_chroma_format 
                 u(2) 
               
               
                   
                  dci_ext_reserved_zero_6bits 
                 u(6) 
               
               
                   
                 } 
               
               
                   
                   
               
            
           
         
       
     
     A DCI RBSP could be made available to the decoder, through either being present in the bitstream, included in at least the first AU of the bitstream, or provided through external means. NOTE 1—The information contained in the DCI RBSP is not necessary for operation of the decoding process. When present, all DCI NAL units in a bitstream shall have the same content. dci_reserved_zero_4bits shall be equal to 0 in bitstreams. The values greater than 0 for dci_reserved_zero_4bits are reserved for future use by ITU-T|ISO/IEC. Decoders shall allow values greater than 0 for dci_reserved_zero_4bits to appear in the bitstream and shall ignore the value of dci_reserved_zero_4bits. dci_num_ptls_minus1 plus 1 specifies the number of profile_tier_level( ) syntax structures in the DCI NAL unit. The value of dci_num_ptls_minus1 shall be in the range of 0 to 14, inclusive. The value 15 for dci_num_ptls_minus1 is reserved for future use by ITU-T|ISO/IEC. It is a requirement of bitstream conformance that each OLS in a CVS in the bitstream shall conform to at least one of the profile_tier_level( ) syntax structures in the DCI NAL unit. NOTE 2—The DCI NAL unit could include PTL information, possibly carried in multiple profile_tier_level( ) syntax structures, that applies collectively to multiple OLSs, and does not need to include PTL information for each of the OLSs individually. 
     dci_extension_flag equal to 0 specifies that no dci_extension( ) syntax structure is present in the DCI RBSP syntax structure. dci_extension_flag equal to 1 specifies that the dci_extension( ) syntax structure is present in the DCI RBSP syntax structure. When dci_num_ptls_minus1 is greater than 0, the value of dci_extension_flag shall be equal to 0. dci_extension_alignment_bit_equal_to_one shall be equal to 1. 
     dci_extension2_flag equal to 0 specifies that no dci_extension_data_flag syntax elements are present in the DCI RBSP syntax structure. vps_extension2_flag equal to 1 specifies that dci_extension_data_flag syntax elements might be present in the DCI RBSP syntax structure. dci_extension_flag shall be equal to 0 in bitstreams. However, some use of dci_extension_flag equal to 1 could be specified, and decoders shall allow the value of dci_extension_flag equal to 1 to appear in the syntax and shall ignore all data that follow the value 1 for dci_extension2_flag in a DCI RB SP. 
     dci_extension_data_flag could have any value. Its presence and value do not affect the decoding process. Decoders shall ignore all dci_extension_data_flag syntax elements. 
     An example of DCI extension semantics is described below. NOTE—When the dci_extension( ) syntax structure is present for a bitstream and the decoder is initialized according to the information provided in the DCI NAL unit, it is expected that no decoder reinitialization is needed for decoding the entire bitstream. 
     dci_max_num_decpics_in_dpb_minus1 plus 1 indicates the maximum number of decoded pictures stored in the DPB at any moment when decoding the bitstream. dci_max_bitdepth_minus8 plus 8 indicates the maximum bit depth, in units of bits, of each colour component of a decoded picture when decoding the bitstream. The value of dci_max_bitdepth_minus8 shall be in the range of 0 to 8, inclusive. dci_max_pic_width indicates the maximum width, in units of luma samples, of a decoded picture when decoding the bitstream. dci_max_pic_height indicates the maximum height, in units of luma samples, of a decoded picture when decoding the bitstream. dci_max_chroma_format indicates the maximum value of sps_chroma_format_idc of the SPS referenced by a picture when decoding the bitstream. dci_ext_reserved_zero_6bits shall be equal to 0 in bitstreams. The values greater than 0 for dci_ext_reserved_zero_6bits are reserved for future use by ITU-T ISO/IEC. Decoders shall allow values greater than 0 for dci_ext_reserved_zero_6bits to appear in the bitstream and shall ignore the value of dci_ext_reserved_zero_6bits. 
     The signaling in an SEI message is described below. In an example, the decoder initialization information SEI message syntax is as follows: 
     
       
         
           
               
               
             
               
                   
                   
               
               
                   
                 Descriptor 
               
               
                   
                   
               
             
            
               
                   
               
            
           
           
               
               
               
            
               
                   
                 decoding_init_info( payloadSize ) { 
                   
               
               
                   
                  dii_max_level_idc 
                 u(8) 
               
               
                   
                  dii_max_tier_flag 
                 u(1) 
               
               
                   
                  dii_reserved_zero_bit 
                 u(1) 
               
               
                   
                  dii_max_chroma_format 
                 u(2) 
               
               
                   
                  dii_max_bitdepth_minus8 
                 u(4) 
               
               
                   
                  dii_max_num_dec_pics_in_dpb_minus1 
                 u(8) 
               
               
                   
                  dii_max_pic_width 
                 u(16) 
               
               
                   
                  dii_max_pic_height 
                 u(16) 
               
               
                   
                 } 
               
               
                   
                   
               
            
           
         
       
     
     In an example, the decoder initialization information SEI message semantics is as follows. When associated with an AU, the decoder initialization information (DII) SEI message provides information that applies to the entire bitstream. A DTI SEI message could be made available to the decoder, through either being present in the bitstream, included in at least the first AU of the bitstream, or provided through external means. When present, all DTI SEI messages in a bitstream shall have the same payload content. When any two CVSs in the bitstream are indicated to conform to different profiles, there shall be no DTI SEI message associated with an AU of the bitstream. NOTE—When the DTI SEI message associated with an AU of a bitstream and the decoder is initialized according to the profile and the information provided in the DTI SEI message, it is expected that no decoder reinitialization is needed for decoding the entire bitstream. dii_max_level_idc indicates the maximum level to which a CVS in the bitstream conforms. dii_max_tier_flag, when the DTI SEI message is used with an HEVC or VVC bitstream, indicates the maximum tier to which a CVS in the bitstream conforms. When the DTI SEI message is used with an AVC bitstream, the semantics of dii_max_tier_flag is unspecified and the decoder shall ignore the value of dii_max_tier_flag. dii_reserved_zero_bit shall be equal to 0 in bitstreams. The value equal to 1 for dii_reserved_zero_bit is reserved for future use by ITU-T|ISO/IEC. Decoders shall allow dii_reserved_zero_bit equal to 1 to appear in the bitstream and shall ignore the value of dii_reserved_zero_bit. dii_max_chroma_format indicates the maximum value of sps_chroma_format_idc (when the DII SEI message is used with a VVC bitstream) or chroma_format_idc (when the DII SEI message is used with an AVC or HEVC bitstream) of the SPS referenced by a picture when decoding the bitstream. dii_max_bitdepth_minus8 plus 8 indicates the maximum bit depth, in units of bits, of each colour component of a decoded picture when decoding the bitstream. The value of dii_max_bitdepth_minus8 shall be in the range of 0 to 8, inclusive. 
     dci_max_num_decpics_in_dpb_minus1 plus 1 indicates the maximum number of decoded pictures stored in the DPB at any moment when decoding the bitstream. When the DII SEI message is used with a VVC bitstream, the value of dci_max_num_decpics_in_dpb_minus1 shall be in the range of 0 to 15, inclusive. Note that this field is made 8 bits instead of 4 bits as in the DCI syntax above, such that the same syntax can be applicable to other (future) codec or profile that might have more than 16 decoded pictures stored in the DPB. For example, a layered HEVC bitstream might have altogether more than 16 decoded pictures stored in the DPB. dci_max_pic_width indicates the maximum width, in units of luma samples, of a decoded picture when decoding the bitstream. dci_max_pic_height indicates the maximum height, in units of luma samples, of a decoded picture when decoding the bitstream. 
     A video decoder initialization information track group is described as follows. An example definition of the video decoder initialization information track group is as follows. A TrackGroupTypeBox with track_group_type equal to ‘vdii’ indicates that this track belongs to a group of video tracks that use the same profile of the same video codec and share the same video decoder initialization information. When the video decoder is initialized according to the video decoder initialization information, it is expected that no video decoder reinitialization is needed when bitstream switching occurs between any two of the bitstreams carried in this group of tracks. The video codec used for a chunk of a video track is indicated by the sample entry type. 
     A syntax of the video decoder initialization information track group is described as follows: 
     
       
         
           
               
               
             
               
                   
                   
               
             
            
               
                   
                 aligned(8) class VdiiGroupBox extends TrackGroupTypeBox(‘vdii’) 
               
               
                   
                 { 
               
               
                   
                  unsigned int(8) dii_profile_max_tier_idc; 
               
               
                   
                  unsigned int(8) dii_max_level_idc; 
               
               
                   
                  unsigned int(2) dii_max_chroma_format_idc; 
               
               
                   
                  unsigned int(4) dii_max_bitdepth_minus8; 
               
               
                   
                  bit(2) reserved; 
               
               
                   
                  unsigned int(8) dii_max_num_dec_pics_in_dpb_minus1; 
               
               
                   
                  unsigned int(16) dii_max_pic_width; 
               
               
                   
                  unsigned int(16) dii_max_pic_height; 
               
               
                   
                 } 
               
               
                   
                   
               
            
           
         
       
     
     A semantics of the video decoder initialization information track group is described as follows: dii_profile_max_tier_idc indicates the profile and, when applicable (e.g., HEVC and VVC), the maximum tier to which the video bitstreams carried in the group of tracks conform. When the video codec is AVC, dii_profile_max_tier_idc shall be equal to the profile_idc. When the video codec is HEVC or VVC, the first 7 bits of dii_profile_max_tier_idc shall be equal to general_profile_idc, and the last bit of dii_profile_max_tier_idc shall be equal to the greatest value of general_tier_flag for all the video bitstreams carried in the group of tracks. dii_max_level_idc indicates the maximum level to which the video bitstreams carried in the group of tracks conform. dii_max_chroma_format_idc indicates the maximum value of sps_chroma_format_idc (when the video codec is VVC) or chroma_format_idc (when the video codec is AVC or HEVC) of the SPS referenced by a picture when decoding the bitstreams carried in the group of tracks. dii_max_bitdepth_minus8 plus 8 indicates the maximum bit depth, in units of bits, of each colour component of a decoded picture when decoding the bitstreams carried in the group of tracks. The value of dii_max_bitdepth_minus8 shall be in the range of 0 to 8, inclusive. dci_max_num_dec_pics_in_dpb_minus1 plus 1 indicates the maximum number of decoded pictures stored in the decoded picture buffer at any moment when decoding the bitstreams carried in the group of tracks. dci_max_pic_width indicates the maximum width, in units of luma samples, of a decoded picture when decoding the bitstreams carried in the group of tracks. dci_max_pic_height indicates the maximum height, in units of luma samples, of a decoded picture when decoding the bitstreams carried in the group of tracks. 
     DASH MPD signaling is described below. 
     Semantics of Adaptation Set Element 
       
     
       
         
           
               
               
               
             
               
                   
               
               
                 Element or Attribute Name 
                 Use 
                 Description 
               
               
                   
               
             
            
               
                 AdaptationSet 
                   
                 Adaptation Set description. 
               
               
                 @xlink: href 
                 O 
                 specifies a reference to a remote element entity 
               
               
                   
                   
                 that shall contain exactly one element of type 
               
               
                   
                   
                 AdaptationSet. 
               
               
                 @xlink: actuate 
                 OD 
                 specifies the processing instructions, which can 
               
               
                   
                 default: 
                 be either “onLoad” or “onRequest”. 
               
               
                   
                 ‘onRequest’ 
                   
               
               
                 @id 
                 O 
                 specifies a unique identifier for this Adaptation 
               
               
                   
                   
                 Set in the scope of the Period. The attribute shall 
               
               
                   
                   
                 be a unique unsigned integer value in the scope 
               
               
                   
                   
                 of the containing Period. 
               
               
                   
                   
                 The attribute shall not be present in a remote 
               
               
                   
                   
                 element entity. 
               
               
                   
                   
                 If not present, no identifier for the Adaptation Set 
               
               
                   
                   
                 is specified. 
               
               
                 . . .  
                 . . .  
                 . . .  
               
               
                 SegmentTemplate 
                 0 . . . 1 
                 specifies default Segment Template information. 
               
               
                   
                   
                 Information in this element is overridden by 
               
               
                   
                   
                 information in the 
               
               
                   
                   
                 Representation. SegmentTemplate, if present. 
               
               
                 VideoDecoderInitInfo 
                 0 . . . 1 
                 specifies the video decoder initialization 
               
               
                   
                   
                 information for all Representations in this 
               
               
                   
                   
                 Adaptation Set. 
               
               
                   
                   
                 For more details, see subclause below. 
               
               
                 Representation 
                 0 . . . N 
                 specifies a Representation. 
               
               
                   
                   
                 At least one Representation element shall be 
               
               
                   
                   
                 present in each Adaptation Set. The actual 
               
               
                   
                   
                 element may however be part of a remote 
               
               
                   
                   
                 element entity if xlink is used on the containing 
               
               
                   
                   
                 AdaptationSet element. 
               
               
                   
               
               
                 Key 
               
               
                 For attributes: M = mandatory, O = optional, OD = optional with default value, CM = conditionally mandatory, F = fixed 
               
               
                 For elements: &lt;minOccurs&gt; . . . &lt;maxOccurs&gt; (N = unbounded) 
               
               
                 The conditions only hold without using xlink:href If linking is used, then all attributes are “optional” and &lt;minOccurs = 0&gt;. 
               
            
           
         
       
     
     An example Extensible Markup Language (XML) syntax is as follows. 
     
       
         
           
               
             
               
                   
               
             
            
               
                 &lt;!-- Adaptation Set --&gt; 
               
               
                 &lt;xs:complexType name=“AdaptationSetType”&gt; 
               
               
                  &lt;xs:complexContent&gt; 
               
               
                   &lt;xs:extension base=“RepresentationBaseType”&gt; 
               
               
                    &lt;xs:sequence&gt; 
               
               
                      &lt;xs:element name=“Accessibility” type=“DescriptorType” minOccurs=“0” 
               
               
                     maxOccurs=“unbounded”/&gt; 
               
               
                      &lt;xs:element name=“Role” type=“DescriptorType” minOccurs=“0” 
               
               
                      maxOccurs=“unbounded”/&gt; 
               
               
                     &lt;xs:element name=“Rating” type=“DescriptorType” minOccurs=“0” 
               
               
                     maxOccurs=“unbounded”/&gt; 
               
               
                     &lt;xs:element name=“Viewpoint” type=“DescriptorType” minOccurs=“0” 
               
               
                     maxOccurs=“unbounded”/&gt; 
               
               
                     &lt;xs:element name=“ContentComponent” type=“ContentComponentType” minOccurs=“0” 
               
               
                     maxOccurs=“unbounded”/&gt; 
               
               
                     &lt;xs:element name=“BaseURL” type=“BaseURLType” minOccurs=“0” 
               
               
                     maxOccurs=“unbounded”/&gt; 
               
               
                     &lt;xs:element name=“SegmentBase” type=“SegmentBaseType” minOccurs=“0”/&gt; 
               
               
                     &lt;xs:element name=“SegmentList” type=“SegmentListType” minOccurs=“0”/&gt; 
               
               
                     &lt;xs:element name=“SegmentTemplate” type=“SegmentTemplateType” minOccurs=“0”/&gt; 
               
               
                     &lt;xs:element name=“ VideoDecoderInitInfo” type=“ VideoDecoderInitInfoType” 
               
               
                     minOccurs=“0”/&gt; 
               
               
                     &lt;xs:element name=“Representation” type=“RepresentationType” minOccurs=“0” 
               
               
                     maxOccurs=“unbounded”/&gt; 
               
               
                 ... 
               
               
                   
               
            
           
         
       
     
     An example of definition of Video Decoder Initialization Information is as follows. The element VideoDecoderInitInfo may be present in an Adaptation Set to provide the video decoder initialization information for video bitstreams carried in all the Representations in the Adaptation Set. The presence of this element indicates that all Representations of the Adaptation Set use the same profile of the same video codec and share the same decoder initialization information. When the video decoder is initialized according to the video decoder initialization information, when present, it is expected that no video decoder reinitialization is needed when bitstream switching occurs between any two of the bitstreams carried in all the Representations in this Adaptation Set. The video codec and profile bitstreams carried in the Representations in the Adaptation Set are signalled by the @codecs attribute. 
     An example of semantics of Video Decoder Initialization Information is as follows. 
     Semantics of VideoDecoderInitInfo Element 
       
     
       
         
           
               
               
               
             
               
                   
               
               
                 Element or Attribute Name 
                 Use 
                 Description 
               
               
                   
               
             
            
               
                 VideoDecoderInitInfo 
                   
                 Decoder Initialization Information description 
               
               
                 @maxTier 
                 O 
                 specifies the maximum tier for all the video 
               
               
                   
                   
                 bitstreams carried in the Representations in the 
               
               
                   
                   
                 Adaptation Set. When the codec is AVC or 
               
               
                   
                   
                 another video codec that does not have tier 
               
               
                   
                   
                 specified, this attribute shall not be present. 
               
               
                   
                   
                 When the codec is HEVC or VVC or another 
               
               
                   
                   
                 video codec that has tier specified, this attribute 
               
               
                   
                   
                 shall be present. 
               
               
                 @maxLevel 
                 M 
                 specifies the maximum level for all the video 
               
               
                   
                   
                 bitstreams carried in the Representations in the 
               
               
                   
                   
                 Adaptation Set. 
               
               
                 @maxChromaFormat 
                 M 
                 specifies the maximum value of 
               
               
                   
                   
                 sps_chroma_format_idc (when the video 
               
               
                   
                   
                 codec is VVC) or chroma_format_idc (when 
               
               
                   
                   
                 the video codec is AVC or HEVC) of the SPS 
               
               
                   
                   
                 referenced by a picture when decoding the 
               
               
                   
                   
                 video bitstreams carried in the Representations 
               
               
                   
                   
                 in the Adaptation Set. 
               
               
                 @maxBitDepthMinus8 
                 M 
                 specifies the maximum bit depth, in units of 
               
               
                   
                   
                 bits, of each colour component of a decoded 
               
               
                   
                   
                 picture when decoding the bitstreams carried in 
               
               
                   
                   
                 the in the Representations in the Adaptation 
               
               
                   
                   
                 Set. The value shall be in the range of 0 to 8, 
               
               
                   
                   
                 inclusive. 
               
               
                 @maxNumDecPicsMinus1 
                 M 
                 the value plus 1 specifies the maximum 
               
               
                   
                   
                 number of decoded pictures stored in the 
               
               
                   
                   
                 decoded picture buffer at any moment when 
               
               
                   
                   
                 decoding the bitstreams carried in the 
               
               
                   
                   
                 Representations in the Adaptation Set. 
               
               
                 @maxDecPicWidth 
                 M 
                 specifies the maximum width, in units of luma 
               
               
                   
                   
                 samples, of a decoded picture when decoding 
               
               
                   
                   
                 the bitstreams carried in the Representations in 
               
               
                   
                   
                 the Adaptation Set. 
               
               
                 @maxDecPicHeight 
                 M 
                 specifies the maximum height, in units of luma 
               
               
                   
                   
                 samples, of a decoded picture when decoding 
               
               
                   
                   
                 the bitstreams carried in the Representations in 
               
               
                   
                   
                 the Adaptation Set. 
               
               
                   
               
               
                 Legend: 
               
               
                 For attributes: M = mandatory, O = optional 
               
            
           
         
       
     
     An example XML, syntax is as follows. 
     
       
         
           
               
             
               
                   
               
             
            
               
                 &lt;!-- VideoDecoderInitInfo --&gt; 
               
               
                 &lt;xs:complexType name=“VideoDecoderInitInfoType”&gt; 
               
               
                  &lt;xs:attribute name=“ maxTier” type=“xs:unsignedInt”/&gt; 
               
               
                  &lt;xs:attributename=“ maxLevel” type=“xs:unsignedInt” use=“required”/&gt; 
               
               
                  &lt;xs:attribute name=“ maxChromaFormat” type=“xs:unsignedInt” use=“required”/&gt; 
               
               
                  &lt;xs:attribute name=“ maxBitDepthMinus8” type=“xs:unsignedInt” use=“required”/&gt; 
               
               
                  &lt;xs:attribute name=“ maxNumDecPicsMinus1” type=“xs:unsignedInt” use=“required”/&gt; 
               
               
                  &lt;xs:attribute name=“ maxDecPicWidth” type=“xs:unsignedInt” use=“required”/&gt; 
               
               
                  &lt;xs:attribute name=“ maxDecPicHeight” type=“xs:unsignedInt” use=“required”/&gt; 
               
               
                 &lt;/xs:complexType&gt; 
               
               
                   
               
            
           
         
       
     
     The following are example technical problems solved by disclosed technical solutions. In some designs for signaling video decoder initialization information (DII). The DII can describe the memory constraints, coding tools, and/or other settings used when encoding each of a set of related tracks and/or bitstreams. The decoder can then employ the DII to initialize the decoding process to employ the parameters noted in the DII. The DII includes one or more of the following parameters. The DII can include the maximum level (MaxLevel) to which all CVSs of the bitstream conform. The DII can also include the maximum number of decoded pictures (MaxDecPics) stored in the DPB when decoding the bitstream. The DII can also include the maximum decoded picture width (MaxDecPicW) of all coded pictures in the bitstream in luma samples. The DII can also include the maximum decoded picture height (MaxDecPicH) of all coded pictures in the bitstream in luma samples. The DII can also include the maximum colour format (MaxColourFormat) of all coded pictures in the bitstream, which may be the greatest value of SPS chroma format identifier code (sps_chroma_format_idc). The DII can also include the maximum bit depth (MaxBitdepth) of all coded pictures in the bitstream, which may be the greatest value of SPS bit depth minus eight (sps_bitdepth_minus8). The preceding parameters indicate to the decoder that the corresponding video can be decoded so long the decoding process can be initialized using settings that can support such parameters. 
     A total amount of memory needed for storage of MaxDecPics decoded pictures with picture width equal to MaxDecPicW, picture height equal to MaxDecPicH, the colour format indicated by MaxColourFormat, and bit depth for each colour component equal to MaxBitdepth is denoted by DPB memory for maximum format (DpbMemory4MaxFormat). A situation can occur where DpbMemory4MaxFormat exceeds the maximum DPB size allowed for the level indicated by MaxLevel. When this occurs, the decoder may be unable to correctly decode the coded video even when the decoding process as initialized can support all of the signaled parameters. 
     Disclosed herein are mechanisms to address one or more of the problems listed above. For example, an encoder or an intermediate storage server can signal decoder initialization information to a decoder. The decoder initialization information can describe the memory constraints, coding tools, and/or other settings used when encoding each of a set of related tracks and/or bitstreams. The decoder can use this information to initialize a decoding process (e.g., software) to decode a bitstream. For example, the decoder initialization information can describe memory usage required at a decoded picture buffer (DPB) to decode a bitstream at a decoding level. However, there are some instances when a required DPB size as indicated by decoder initialization information parameters can exceed a maximum DPB size for the maximum level for the coded video sequences in the bitstream. For example, this can occur when the maximum number of decoded pictures to be stored in the DPB exceeds the max DPB size for the maximum level. Further, this can occur when the max picture height times max picture width is greater than the maximum picture size for the maximum level. In an example, the present disclosure addresses this issue by signaling when one or more of the preceding scenarios has occurred in order to allow the decoder to select proper profile tier level (PTL) settings. In some examples, the encoder can also signal a minimum level a decoder should support to decode the bitstream at a maximum format (MinLevel4MaxFormat). When the decoder supports the MinLevel4MaxFormat, the decoder can select PTL settings for the MinLevel4MaxFormat without concern for the discrepancy. In another example, the encoder and/or storage server can only signal the decoder initialization information when the required DPB size as indicated by decoder initialization information parameters does not exceed a maximum DPB size for the maximum level. In this case, the decoder can infer by the presence of the decoder initialization information that the required DPB size does not exceed the maximum DPB size for the maximum level, and hence that the decoder can use the decoder initialization information to select PTL information without adjusting for the abovementioned problem. The indications mentioned above can be signaled as part of the decoder initialization information, for example in a DCI NAL unit, a SEI message, a file format box, and/or a DASH MPD. 
     To solve the above problems, and others, methods as summarized below are disclosed. The items should be considered as examples to explain the general concepts and should not be interpreted in a narrow way. Furthermore, these items can be applied individually or combined in any manner. 
     Example 1 
     In one example, the DII additionally includes an indication (e.g., by a flag) of whether DpbMemory4MaxFormat exceeds the maximum DPB size allowed for the level indicated by MaxLevel. A minimum level for a maximum format (MinLevel4MaxFormat) parameter can be set to indicate a minimum level for which the allowed maximum DPB size is greater than or equal to DpbMemory4MaxFormat. In an example, the DII further includes MinLevel4MaxFormat when the indication indicates that DpbMemory4MaxFormat exceeds the maximum DPB size allowed for the level. 
     Example 2 
     In one example, the DII always includes the MinLevel4MaxFormat indicating the minimum level for which the allowed maximum DPB size is greater than or equal to DpbMemory4MaxFormat. 
     Example 3 
     In one example, the DII additionally includes an indication (e.g., by a flag) of whether the value of MaxDecPicW*MaxDecPicH is greater than the value of maximum luma picture size (MaxLumaPs) for the level indicated by MaxLevel, where MaxLumaPs is specified in the VVC specification. In one example, when the indication indicates that the value of MaxDecPicW*MaxDecPicH is greater than the value of MaxLumaPs for the level indicated by MaxLevel, the DII further includes the MinLevel4MaxFormat set to include an indication of the minimum level for which the value of MaxLumaPs is greater than or equal to MaxDecPicW*MaxDecPicH. 
     Example 4 
     In one example, the DII additionally always includes the MinLevel4MaxFormat set to include an indication of the minimum level for which the value of MaxLumaPs is greater than or equal to MaxDecPicW*MaxDecPicH. 
     Example 5 
     In one example, the DII additionally includes an indication (e.g., by a flag) of whether both of the following conditions are true: (1) The value of MaxDecPicW*MaxDecPicH is less than or equal to the value of MaxLumaPs for the level indicated by MaxLevel as specified in the VVC specification; and (2) the value of MaxDecPics is less than or equal to the value of MaxDpbSize, with maximum picture size in luma samples (PicSizeMaxInSamplesY) being set equal to MaxDecPicW*MaxDecPicH, and MaxLumaPs set for the level indicated by MaxLevel. 
     Example 6 
     In one example, when the indication indicates that at least one of the conditions from example 5 are not true, the DII further includes the MinLevel4MaxFormat set to include an indication of the minimum level for which both of the conditions from example 5 are true. 
     Example 7 
     In one example, the DII additionally always includes the MinLevel4MaxFormat set to include an indication of the minimum level for which both of the conditions from example 5 are true. 
     Example 8 
     In examples, the above methods apply when the DII is signaled in the DCI NAL unit, in an SEI message, in a file format box or syntax structure, and/or in a DASH MPD. 
     Example 9 
     In one example, the DII is only signaled when both conditions from example 5 are true. 
     Example 10 
     In one example, the presence of the DII (e.g., in the DCI NAL unit, in an SEI message, in a file format box or syntax structure, or in a DASH MPD) indicates that both conditions from example 5 are true. 
     Below are some example embodiments for some of the aspects summarized above, some of which can be applied to the standard specification for VVC video file format. The relevant parts that have been added or modified are denoted in underline bold and the deleted parts are denoted in bold italics. 
     A first example embodiment illustrates a mechanism for DII signaling for in a DCI NAL unit. An example of a DCI extension syntax is as follows. 
     
       
         
           
               
               
               
             
               
                   
                   
               
               
                   
                 dci_extension( ) { 
                 Descriptor 
               
               
                   
                   
               
             
            
               
                   
                  dci_max_num_dec_pics_in_dpb_minus1 
                 u(4) 
               
               
                   
                  dci_max bitdepth_minus8 
                 u(4) 
               
               
                   
                  dci_max_pic_width 
                 u(16) 
               
               
                   
                  dci_max_pic_height 
                 u(16) 
               
               
                   
                  dci_max_chroma_format 
                 u(2) 
               
               
                   
                     
                 u(1) 
               
               
                   
                     
                 u(5) 
               
               
                   
                     
                 u(6) 
               
               
                   
                     
                 u(1) 
               
               
                   
                      
                 u(8) 
               
               
                   
                 } 
               
               
                   
                   
               
            
           
         
       
     
     An example DCI extension semantics is as follows. NOTE—When the dci_extension( ) syntax structure is present for a bitstream and the decoder is initialized according to the information provided in the DCI NAL unit, it is expected that no decoder reinitialization is needed for decoding the entire bitstream. dci_max_num_dec_pics_in_dpb_minus1 plus 1 indicates the maximum number of decoded pictures stored in the DPB at any moment when decoding the bitstream. dci_max_bitdepth_minus8 plus 8 indicates the maximum bit depth, in units of bits, of each colour component of a decoded picture when decoding the bitstream. The value of dci_max_bitdepth_minus8 shall be in the range of 0 to 8, inclusive. dci_max_pic_width indicates the maximum width, in units of luma samples, of a decoded picture when decoding the bitstream. dci_max_pic_height indicates the maximum height, in units of luma samples, of a decoded picture when decoding the bitstream. dci_max_chroma_format indicates the maximum value of sps_chroma_format_idc of the SPS referenced by a picture when decoding the bitstream. 
                                                                             . 
                           . 
                                                           . 
       FIG. 1  is a protocol diagram of an example mechanism  100  for establishing a communication session with SDP. For example, the communication session can be established for communicating video data between an encoder and/or a content server and a decoder. For example, the communication session can be established for streaming video from a sender to a receiver for display to a user (e.g., television). In another example, the sender and the receiver may be peers that communicate video in a bidirectional direction (e.g., a video call). As a specific example, the sender may send a stream of live video data to the receiver and the receiver may return a stream of live video data to the sender. 
     In SDP, the device that initiates the communication is referred to as the offerer (e.g., the decoder) and the responsive device is referred to as the answerer (e.g., the encoder). The offerer can initiate a video communication session by transmitting a SDP offer to the answerer at step  102 . The SDP offer is a message that describes the media capabilities of the offerer, and hence describes the media that the offerer is willing to receive. The answerer reviews the SDP offer and determines whether the answerer can meet the conditions in the SDP offer. The answerer may accept or reject the SDP offer of step  102 . Assuming the answerer decides to accept the request, the answerer can indicate such acceptance by transmitting a SDP answer to the offerer at step  104 . The SDP answer describes the media that the answerer is willing to send based on the SDP offer. For example, the SDP answer can include the same description of the media as the SDP offer when the answerer agrees to the offerers&#39; terms. In another example, the SDP answer can include a subset of the media capabilities described in the SDP offer when the answerer agrees to some but not all of the offerers&#39; terms. Assuming some agreement is reached, the answerer can then transmit media to the offerer at step  106  based on the description in the SDP answer at step  104 . In a bidirectional context, the mechanism  100  can be performed twice with each device acting as an offerer for a media stream to be received. 
     As noted above, the present disclosure signals decoder initialization information to the decoder, which may be an offerer in mechanism  100 . This allows the decoder to perform an initialization process based on parameters for multiple potential media streams in order to minimize the need to reinitialize the decoder when swapping between streams. In an example, the decoder initialization information can be signaled/requested by the offerer in the SDP offer at step  102 . The encoder can then respond by signaling the decoder initialization information in the SDP answer at step  104 . The decoder can then perform an initialization based on the decoder initialization information received in the SDP answer at step  104 . 
       FIG. 2  is a protocol diagram of an example mechanism  200  for performing video streaming according to DASH. DASH allows a receiver (e.g., offerer/decoder) to select from multiple alternative media streams during a single media session. In this way, the receiver can dynamically increase or decrease the video resolution based on changing network conditions. Accordingly, the receiver consistently receives the best video resolution available based on current network conditions while avoiding pausing the video stream to await more data when network conditions worsen. DASH may be used in conjunction with SDP. For example, mechanism  200  may be used to transport media according to step  106  of mechanism  100 . 
     The functionality described above is accomplished by transmitting a MPD from the sender to the receiver at step  202 . The MPD describes a plurality of alternate and interchangeable media streams. For example, each media stream may describe the same media at a different resolution, compression, etc. At step  204 , the receiver uses the description in the MPD to request a segment of the media. For example, the receiver can review the current network conditions and/or the current buffer condition. When the buffer is filling with new media data faster than the older media data can be displayed, then the receiver can request a segment from a higher resolution media stream. When the buffer is emptying due to the display of media data occurring faster than new media data can be received, then the receiver can request a segment from a lower resolution media stream. At step  206 , the sender (e.g., answerer, encoder and/or content server) can send the segment requested at step  204 . Steps  204  and  206  are repeated until the media presentation is completed (or a user cancels the session). 
     As noted above, the present disclosure signals decoder initialization information to the decoder, which may be the receiver in mechanism  200 . This allows the decoder to perform an initialization process based on parameters for multiple potential media streams in order to minimize the need to reinitialize the decoder when swapping between streams. In an example, the decoder initialization information can be signaled in the MPD signaled at step  202 . For example, the decoder initialization information can describe each of the media streams that the receiver can request. The decoder can then perform an initialization based on the decoder initialization information in the MPD. 
       FIG. 3  is a schematic diagram illustrating a description of a video by an MPD  300  used in DASH, for example in step  202  of mechanism  200 . The MPD  300  describes the media streams in terms of periods  310 , adaptation sets  320 , representations  330 , and segments  340 . A period  310  comprises timing data and indicates a content period during which a consistent set of encoded versions of the media content is available (e.g. a set of available bitrates, languages, captions, subtitles etc. that do not change). A period  310  can contain one or more adaptation sets  320 . An adaptation set  320  includes a set of interchangeable encoded versions of one or several media content components. For example, a first adaptation set  320  may comprise a main video component, a second adaptation set  320  may comprise a main audio component, a third adaptation set  320  may comprise captions, etc. An adaption set  320  may also comprise multiplexed content, such as combined video and audio. Each adaptation set  320  comprises one or more representations  330 . A representation  330  describes a deliverable encoded version of one or more media content components, such as an ISOBMFF version of the media content. The media content in a representation  330  is further divided into segments  340 . A segment  340  is a pre-defined byte size (e.g., 1,000 bytes) and/or an interval of playback time (e.g., 2 or 5 seconds) of the media content. Each segment  340  is an individually addressable unit of data that can be downloaded using universal resource locators (URLs) advertised via the MPD  300 . 
     For example, for each period  310  the decoder can select one or more adaptation sets  320  to obtain video, audio, and/or close captioning based on the data in the MPD  300 . The decoder can then begin streaming media data from the selected adaptation sets  320 . The decoder can select a representation  330  for each adaptation set  320  based on the current network conditions and use URLs to obtain corresponding segments  340  for presentation to the user. As network conditions change, the decoder can select different representations  330  within the corresponding adaptation sets  320 . This allows the decoder to get segments  340  of the corresponding media at the best quality that can be presented without pausing to refill the buffer based on current network conditions. 
     In an example, the decoder initialization information can be included in the MPD  300  in data describing an adaptation set  320  and/or in data describing a representation  330 . For example, an adaptation set  320  can include the decoder initialization information for each representation  330  contained in the adaptation set  320 . In another example, each representation  330  can contain decoder initialization information describing that representation&#39;s  330  media. The decoder can then use the decoder initialization information to perform an initialization process. In this way, the decoder is initialized for any representation  330  the decoder may select. As such, the decoder should not need to be reinitialized due to swapping between representations  330  within a selected adaptation set  320 . 
       FIG. 4  is a schematic diagram of a media file  400  stored in ISOBMFF. For example, a media file  400  can be stored in ISOBMFF and used as a DASH representation. An ISOBMFF media file  400  is stored in a plurality of boxes that carry objects and/or data associated with a media content or a media presentation. For example, media file  400  may comprise a file type box (e.g. ftyp)  430 , a movie box (e.g. moov)  410 , and a media data box (e.g. mdat)  420 . 
     A file type box  430  may carry data that describes the entire file, and hence may carry file level data. Accordingly, a file-level box is any box that contains data relevant to the entire media file  400 . For example, the file type box  430  may comprise a file type that indicates a version number of an ISO specification and/or compatibility information of the media file  400 . A movie box  410  may carry data that describes a movie contained in the media file, and hence may carry movie-level data. A move-level box is any box that contains data that describes an entire movie contained in the media file  400 . A movie box  410  can contain a wide range of sub-boxes that are used to contain data for various uses. For example, the movie box  410  contains track boxes (trak)  411  that carry metadata describing a track of a media presentation. For example, one of the track boxes  411  may carry an audio description of audio data in the media data box  420 , another track box  411  may carry a video description of a video data in the media data box  420 , and yet another track box  411  may carry hints for streaming and/or playback of the media data in the media data box  420 . It should be noted that a track may be referred to as a timed sequence of related samples. For example, a media track may comprise a sequence of images or sampled audio, whereas a metadata track may comprise a sequence of metadata in the units of the metadata. Data that describes a track is track-level data, and hence any box that describes a track is a track-level box. 
     A media data box  420  comprises interleaved and time-ordered media data (e.g. coded video images and/or audio in one more media tracks) of the media presentation. For example, the media data box  420  may comprise a bitstream of video data coded according to VVC, AVC, HEVC, etc. A media data box  420  may include video images, audio, text, or other media data for display to the user. 
     As noted above, the present disclosure signals decoder initialization information to the decoder. This allows the decoder to perform an initialization process based on parameters for multiple potential media streams in order to minimize the need to reinitialize the decoder when swapping between streams. In an example, the decoder initialization information can be signaled in the media file  400 . For example, the decoder initialization information can be signaled in a file-level box, a movie-level box, and/or a track-level box, such as file type box  430 , movie box  410 , and/or track boxes  411 . As discussed above, ISOBMFF includes many different boxes for particular purposes. In various examples, the decoder initialization information can be signaled in a file-level metadata box (contained in file type box  430 ), a movie-level metadata box (contained in movie box  410 ), a movie header box (mvhd) (contained in movie box  410 ), a sample description box (stsd) (contained in track box  411 ), a track header box (contained in track box  411 ), a track group box (contained in track box  411 ), a track-level metadata box (contained in track box  411 ), other boxes, and/or various combinations thereof. 
       FIG. 5  is a schematic diagram of a bitstream  500  containing encoded visual media data. A bitstream  500  contains media data that has been coded/compressed by an encoder for decoding/decompression by a decoder. For example, a bitstream  500  may be included in a media data box  420  of an ISOBMFF media file  400 . Further, a bitstream  500  may be included in a representation  330  in DASH. A bitstream  500  can be coded according to various coding formats, such as VVC, AVC, EVC, HEVC, etc. In some coding formats, the bitstream  500  is expressed as a series of NAL units  510 . A NAL unit  510  is a unit of data sized to be positioned in a data packet. For example, VVC contains many types of NAL units  510 . A bitstream  500  can contain video coding layer (VCL) NAL units that contain video data and non-VCL NAL units that contain data describing the VCL NAL units, describing the coding tools employed, describing the coding constraints, etc. In an example, a bitstream  500  can include a DCI NAL unit  511  and/or SEI NAL units  515 . A DCI NAL unit  511  is a non-VCL NAL unit that contains data describing the coding capabilities needed by the decoder to decode the corresponding bitstream. A SEI NAL unit  515  contains data that assists processes related to decoding, display, or other purposes, but is not needed by the decoding process to determine sample values in decoded pictures. In an example, the decoder initialization information can be contained in a DCI NAL unit  511  and/or a SEI NAL unit  515 . As a specific example, a SEI NAL unit  515  can contain a DII SEI message  516 , which is a SEI message specifically designed to carry the decoder initialization information for the bitstream  500 . As a specific example, the bitstream  500  may be further divided into AUs and a DII SEI message  516  may be included in the first AU in the bitstream  500 . Accordingly, the decoder may fetch the first AU of each bitstream  500  that the decoder may decode and display as part of a media presentation. The decoder can then perform an initialization based on the decoder initialization information in each of the relevant bitstreams  500  in order to avoid reinitialization. 
       FIG. 6  is a block diagram showing an example video processing system  600  in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of the system  600 . The system  600  may include input  602  for receiving video content. The video content may be received in a raw or uncompressed format, e.g., 8 or 10 bit multi-component pixel values, or may be in a compressed or encoded format. The input  602  may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interface include wired interfaces such as Ethernet, passive optical network (PON), etc. and wireless interfaces such as Wi-Fi or cellular interfaces. 
     The system  600  may include a coding component  604  that may implement the various coding or encoding methods described in the present document. The coding component  604  may reduce the average bitrate of video from the input  602  to the output of the coding component  604  to produce a coded representation of the video. The coding techniques are therefore sometimes called video compression or video transcoding techniques. The output of the coding component  604  may be either stored, or transmitted via a communication connected, as represented by the component  606 . The stored or communicated bitstream (or coded) representation of the video received at the input  602  may be used by a component  608  for generating pixel values or displayable video that is sent to a display interface  610 . The process of generating user-viewable video from the bitstream representation is sometimes called video decompression. Furthermore, while certain video processing operations are referred to as “coding” operations or tools, it will be appreciated that the coding tools or operations are used at an encoder and corresponding decoding tools or operations that reverse the results of the coding will be performed by a decoder. 
     Examples of a peripheral bus interface or a display interface may include universal serial bus (USB) or high definition multimedia interface (HDMI) or Displayport, and so on. Examples of storage interfaces include SATA (serial advanced technology attachment), PCI, IDE interface, and the like. The techniques described in the present document may be embodied in various electronic devices such as mobile phones, laptops, smartphones or other devices that are capable of performing digital data processing and/or video display. 
       FIG. 7  is a block diagram of an example video processing apparatus  700 . The apparatus  700  may be used to implement one or more of the methods described herein. The apparatus  700  may be embodied in a smartphone, tablet, computer, Internet of Things (IoT) receiver, and so on. The apparatus  700  may include one or more processors  702 , one or more memories  704  and video processing circuitry  706 . The processor(s)  702  may be configured to implement one or more methods described in the present document. The memory (memories)  704  may be used for storing data and code used for implementing the methods and techniques described herein. The video processing circuitry  706  may be used to implement, in hardware circuitry, some techniques described in the present document. In some embodiments, the video processing circuitry  706  may be at least partly included in the processor  702 , e.g., a graphics co-processor. 
       FIG. 8  is a flowchart for an example method  800  of video processing. The method  800  includes determining (e.g., signaling in a bitstream) decoder initialization information (DII) including data describing a maximum level (MaxLevel) to which all coded video sequences (CVSs) of the bitstream conform, and signaling a maximum format at step  802 . The maximum format comprises one or more of the following parameters: 1) a maximum number of decoded pictures (MaxDecPics) stored in the decoded picture buffer (DPB), 2) a maximum decoded picture width (MaxDecPicW) of all coded pictures in the bitstream, 3) a maximum decoded picture height (MaxDecPicH) of all coded pictures in the bitstream, 4) a maximum colour format (MaxColourFormat) of all coded pictures in the bitstream, and 5) a maximum bit depth (MaxBitdepth) of all coded pictures in the bitstream. As noted above, the decoder initialization information can be signaled in a DCI NAL unit, a SEI message, a DII SEI message, a file format box, a DASH MPD, a SDP offer/answer, or combinations thereof. 
     As noted above, the coded video sequence(s) are coded at a level. Specifically, video coding standards like HEVC, SHVC, MV-HEVC, and VVC specify and signal a profile, a tier, and a level for corresponding video data. Profiles, tiers, and levels specify restrictions on bitstreams and hence limits on the capabilities needed to decode the bitstreams. Profiles, tiers, and levels may also be used to indicate interoperability points between individual decoder implementations. A profile is a defined set of coding tools used to create a compliant or conforming bitstream. Each profile specifies a subset of algorithmic features and limits that shall be supported by all decoders conforming to that profile. A level is a set of constraints for a bitstream (e.g., max luma sample rate, max bit rate for a resolution, etc.). Accordingly, a level is a set of constraints that indicate the required decoder performance to playback a bitstream of the specified profile. The levels are split into two tiers: Main and High. The Main tier is a lower tier than the High tier. The tiers are used to deal with applications that differ in terms of their maximum bit rate. The Main tier is designed for most applications while the High tier is designed for very demanding applications. Each level of a tier specifies a set of limits on the values that may be taken by the syntax elements of a particular standard (e.g., HEVC, VVC). The same set of tier and level definitions is used with all profiles, but individual implementations may support a different tier and within a tier a different level for each supported profile. For any given profile, a level of a tier generally corresponds to a particular decoder processing load and memory capability. 
     Accordingly, the decoder can generally use the data describing the DPB memory requirements in the DII at step  802  to initialize the decoding process at a corresponding level. However, in some cases, the DII may provide incorrect data that that is inconsistent for MaxLevel. For example, the MaxLevel indicates a first maximum DPB size needed for decoding the bitstream. Further, the maximum format indicates a second maximum DPB size, denoted as DpbMemory4MaxFormat, determined by simultaneously setting all parameters of the maximum format to largest values. In some instances, DpbMemory4MaxFormat can exceed the first maximum DPB size for the MaxLevel. 
     To address this issue, the decoder initialization information at step  802  contains a first indication (e.g., a flag) that indicates when the DpbMemory4MaxFormat exceeds the first maximum DPB size at the MaxLevel. In such a case, the decoder should not use the DpbMemory4MaxFormat to initialize the decoding process. In some examples, the first indication is only signaled when the DpbMemory4MaxFormat has exceeded the first maximum DPB size for the MaxLevel, creating a memory problem. In other examples, the first indication is always signaled in the decoder initialization information. In some examples, the decoder initialization information can further comprise a MinLevel4MaxFormat, which indicates a minimum level a decoder should support to decode the bitstream at a maximum format. In such a case, the decoder can initialize the decoding process based on MinLevel4MaxFormat instead of DpbMemory4MaxFormat, because the initializing based on the level indicated by MinLevel4MaxFormat ensures the decoder can decode the entire bitstream at the maximum format. 
     In some examples, the MinLevel4MaxFormat signals a smallest level for which an first maximum DPB size is greater than or equal to a DPBMemory4MaxFormat. In some examples, the MinLevel4MaxFormat signals a smallest level for which a value of a maximum picture size in luma samples (MaxLumaPs) is greater than or equal to MaxDecPicW times a MaxDecPicH. In some examples, the MinLevel4MaxFormat signals a smallest level for which (1) a MaxDecPicW for the bitstream times a MaxDecPicH for the bitstream is less than or equal to a MaxLumaPs of a MaxLevel of the coded video sequence; and (2) a MaxDecPics is less than or equal to the MaxDpbSize. In some examples, the MinLevel4MaxFormat is always signaled in the decoder initialization information. In other examples, the MinLevel4MaxFormat is signaled only when the DpbMemory4MaxFormat has exceeded the first maximum DPB size for the MaxLevel. For example, the MinLevel4MaxFormat may only be signaled when a MaxDecPicW times a MaxDecPicH is greater than a MaxLumaPs of a MaxLevel to which all coded video sequences in the bitstream conform. 
     As noted above, the DII can be used to indicate a memory problem in the DII. In some examples, the DII can also include a second indication (e.g., a flag) in order to indicate the nature of the problem with the data. For example, the second indication can indicate whether a MaxDecPicW for the bitstream times a MaxDecPicH for the bitstream is greater than a MaxLumaPs of a MaxLevel of the coded video sequence. When this is true, the memory problem has occurred. Accordingly, the second indication can indicate whether a MaxDecPicW for the bitstream times a MaxDecPicH for the bitstream is less than or equal to a MaxLumaPs of a MaxLevel of the coded video sequence. In some examples, the second indication can also indicate whether a MaxDecPics is less than or equal to the MaxDpbSize. Further, the second indication can indicate whether a MaxDecPics is greater than the MaxDpbSize, which indicates the presence of the problem. The MaxDpbSize can be determined by setting a maximum picture size in luma samples (PicSizeMaxInSamplesY) equal to MaxDecPicW times MaxDecPicH and setting MaxLumaPs for a level (e.g., MaxLevel) indicated by MinLevel4MaxFormat. In an example, the second indication can indicate whether both or whether at least one of the preceding conditions is true (or false, depending on the example). 
     In another example, the MinLevel4MaxFormat is only signaled in the decoder initialization information when the second indication indicates that at least one of the following is false: the MaxDecPicW for the bitstream times the MaxDecPicH for the bitstream is less than or equal to the MaxLumaPs of the MaxLevel of the coded video sequence; and the MaxDecPics is less than or equal to the MaxDpbSize. In such a case, the MinLevel4MaxFormat is only signaled when the problem has occurred. 
     Regardless of the encoding used, a conversion is performed between a visual media data and a bitstream based on the first indication at step  804 . When the method  800  is performed on an encoder, the conversion comprises generating the bitstream according to the visual media data. When the method  800  is performed on a decoder, the conversion comprises parsing the bitstream to obtain the visual media data. 
     It should be noted that the method  800  can be implemented in an apparatus for processing video data comprising a processor and a non-transitory memory with instructions thereon, such as video encoder  1100 , video decoder  1200 , and/or encoder  1300 . In such a case, the instructions upon execution by the processor, cause the processor to perform the method  800 . Further, the method  800  can be performed by a non-transitory computer readable medium comprising a computer program product for use by a video coding device. The computer program product comprises computer executable instructions stored on the non-transitory computer readable medium such that when executed by a processor cause the video coding device to perform the method  800 . 
       FIG. 9  is a flowchart for another example method  900  of video processing. Method  900  addresses the problem described in method  800  using a different signaling mechanism. Method  800  signals when a memory problem has occurred in the decoder initialization information, which allows the decoder to adjust to the errors in the decoder initialization information. In contrast, method  900  checks for the error and does not signal the decoder initialization information when the decoder initialization information would otherwise contain such an error. The decoder can then always use the decoder initialization information as the presence of the decoder initialization information indicates the error has not occurred. Accordingly, a DII for a bitstream including data a MaxLevel to which all CVSs of the bitstream conform and a maximum format is determined at step  902  (e.g., signaled between an encoder and decoder). The maximum format comprises one or more of the following parameters: 1) a MaxDecPics stored in the DPB, 2) a MaxDecPicW of all coded pictures in the bitstream, 3) a MaxDecPicH of all coded pictures in the bitstream, 4) a MaxColourFormat of all coded pictures in the bitstream, and 5) a MaxBitdepth of all coded pictures in the bitstream. Further, the MaxLevel indicates a first maximum DPB size needed for decoding the bitstream, and the maximum format indicates a DpbMemory4MaxFormat determined by simultaneously setting all parameters of the maximum format to largest values. 
     However, the decoder initialization information is only signaled when (1) a MaxDecPicW for a bitstream times a MaxDecPicH for the bitstream is less than or equal to a MaxLumaPs of a MaxLevel of the coded video sequence; and (2) a MaxDecPics is less than or equal to the MaxDpbSize. When method  900  is performed on a decoder, the decoder can infer, based on a presence of the decoder initialization information, that: (1) the MaxDecPicW for the bitstream times the MaxDecPicH for the bitstream is less than or equal to the MaxLumaPs of the MaxLevel of the coded video sequence; and (2) the MaxDecPics is less than or equal to the MaxDpbSize. 
     A conversion is performed between a visual media data and a bitstream based on the decoder initialization information at step  904 . When the method  900  is performed on an encoder, the conversion comprises generating the bitstream according to the visual media data. When the method  900  is performed on a decoder, the conversion comprises parsing the bitstream to obtain the visual media data. As noted above, the decoder initialization information can be signaled in a DCI NAL unit, a SEI message, a DII SEI message, a file format box, a DASH MPD, a SDP offer/answer, or combinations thereof. 
     It should be noted that the method  900  can be implemented in an apparatus for processing video data comprising a processor and a non-transitory memory with instructions thereon, such as video encoder  1100 , video decoder  1200 , and/or encoder  1300 . In such a case, the instructions upon execution by the processor, cause the processor to perform the method  900 . Further, the method  900  can be performed by a non-transitory computer readable medium comprising a computer program product for use by a video coding device. The computer program product comprises computer executable instructions stored on the non-transitory computer readable medium such that when executed by a processor cause the video coding device to perform the method  900 . 
       FIG. 10  is a block diagram that illustrates an example video coding system  1000  that may utilize the techniques of this disclosure. As shown in  FIG. 10 , video coding system  1000  may include a source device  1010  and a destination device  1020 . Source device  1010  generates encoded video data which may be referred to as a video encoding device. Destination device  1020  may decode the encoded video data generated by source device  1010  which may be referred to as a video decoding device. 
     Source device  1010  may include a video source  1012 , a video encoder  1014 , and an input/output (I/O) interface  1016 . Video source  1012  may include a source such as a video capture device, an interface to receive video data from a video content provider, and/or a computer graphics system for generating video data, or a combination of such sources. The video data may comprise one or more pictures. Video encoder  1014  encodes the video data from video source  1012  to generate a bitstream. The bitstream may include a sequence of bits that form a coded representation of the video data. The bitstream may include coded pictures and associated data. The coded picture is a coded representation of a picture. The associated data may include sequence parameter sets, picture parameter sets, and other syntax structures. I/O interface  1016  may include a modulator/demodulator (modem) and/or a transmitter. The encoded video data may be transmitted directly to destination device  1020  via I/O interface  1016  through network  1030 . The encoded video data may also be stored onto a storage medium/server  1040  for access by destination device  1020 . 
     Destination device  1020  may include an I/O interface  1026 , a video decoder  1024 , and a display device  1022 . I/O interface  1026  may include a receiver and/or a modem. I/O interface  1026  may acquire encoded video data from the source device  1010  or the storage medium/server  1040 . Video decoder  1024  may decode the encoded video data. Display device  1022  may display the decoded video data to a user. Display device  1022  may be integrated with the destination device  1020 , or may be external to destination device  1020 , which can be configured to interface with an external display device. 
     Video encoder  1014  and video decoder  1024  may operate according to a video compression standard, such as the High Efficiency Video Coding (HEVC) standard, Versatile Video Coding (VVM) standard and other current and/or further standards. 
       FIG. 11  is a block diagram illustrating an example of video encoder  1100 , which may be video encoder  1014  in the system  1000  illustrated in  FIG. 10 . Video encoder  1100  may be configured to perform any or all of the techniques of this disclosure. In the example of  FIG. 11 , video encoder  1100  includes a plurality of functional components. The techniques described in this disclosure may be shared among the various components of video encoder  1100 . In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure. 
     The functional components of video encoder  1100  may include a partition unit  1101 , a prediction unit  1102  which may include a mode select unit  1103 , a motion estimation unit  1104 , a motion compensation unit  1105 , an intra prediction unit  1106 , a residual generation unit  1107 , a transform processing unit  1108 , a quantization unit  1109 , an inverse quantization unit  1110 , an inverse transform unit  1111 , a reconstruction unit  1112 , a buffer  1113 , and an entropy encoding unit  1114 . 
     In other examples, video encoder  1100  may include more, fewer, or different functional components. In an example, prediction unit  1102  may include an intra block copy (IBC) unit. The IBC unit may perform prediction in an IBC mode in which at least one reference picture is a picture where the current video block is located. 
     Furthermore, some components, such as motion estimation unit  1104  and motion compensation unit  1105  may be highly integrated, but are represented in the example of  FIG. 11  separately for purposes of explanation. 
     Partition unit  1101  may partition a picture into one or more video blocks. Video encoder  1100  and video decoder  1200  may support various video block sizes. 
     Mode select unit  1103  may select one of the coding modes, intra or inter, e.g., based on error results, and provide the resulting intra or inter coded block to a residual generation unit  1107  to generate residual block data and to a reconstruction unit  1112  to reconstruct the encoded block for use as a reference picture. In some examples, mode select unit  1103  may select a combination of intra and inter prediction (CIIP) mode in which the prediction is based on an inter prediction signal and an intra prediction signal. Mode select unit  1103  may also select a resolution for a motion vector (e.g., a sub-pixel or integer pixel precision) for the block in the case of inter prediction. 
     To perform inter prediction on a current video block, motion estimation unit  1104  may generate motion information for the current video block by comparing one or more reference frames from buffer  1113  to the current video block. Motion compensation unit  1105  may determine a predicted video block for the current video block based on the motion information and decoded samples of pictures from buffer  1113  other than the picture associated with the current video block. 
     Motion estimation unit  1104  and motion compensation unit  1105  may perform different operations for a current video block, for example, depending on whether the current video block is in an I slice, a P slice, or a B slice. 
     In some examples, motion estimation unit  1104  may perform uni-directional prediction for the current video block, and motion estimation unit  1104  may search reference pictures of list 0 or list 1 for a reference video block for the current video block. Motion estimation unit  1104  may then generate a reference index that indicates the reference picture in list 0 or list 1 that contains the reference video block and a motion vector that indicates a spatial displacement between the current video block and the reference video block. Motion estimation unit  1104  may output the reference index, a prediction direction indicator, and the motion vector as the motion information of the current video block. Motion compensation unit  1105  may generate the predicted video block of the current block based on the reference video block indicated by the motion information of the current video block. 
     In other examples, motion estimation unit  1104  may perform bi-directional prediction for the current video block, motion estimation unit  1104  may search the reference pictures in list 0 for a reference video block for the current video block and may also search the reference pictures in list 1 for another reference video block for the current video block. Motion estimation unit  1104  may then generate reference indexes that indicate the reference pictures in list 0 and list 1 containing the reference video blocks and motion vectors that indicate spatial displacements between the reference video blocks and the current video block. Motion estimation unit  1104  may output the reference indexes and the motion vectors of the current video block as the motion information of the current video block. Motion compensation unit  1105  may generate the predicted video block of the current video block based on the reference video blocks indicated by the motion information of the current video block. 
     In some examples, motion estimation unit  1104  may output a full set of motion information for decoding processing of a decoder. In some examples, motion estimation unit  1104  may not output a full set of motion information for the current video. Rather, motion estimation unit  1104  may signal the motion information of the current video block with reference to the motion information of another video block. For example, motion estimation unit  1104  may determine that the motion information of the current video block is sufficiently similar to the motion information of a neighboring video block. 
     In one example, motion estimation unit  1104  may indicate, in a syntax structure associated with the current video block, a value that indicates to the video decoder  1200  that the current video block has the same motion information as another video block. 
     In another example, motion estimation unit  1104  may identify, in a syntax structure associated with the current video block, another video block and a motion vector difference (MVD). The motion vector difference indicates a difference between the motion vector of the current video block and the motion vector of the indicated video block. The video decoder  1200  may use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block. 
     As discussed above, video encoder  1100  may predictively signal the motion vector. Two examples of predictive signaling techniques that may be implemented by video encoder  1100  include advanced motion vector prediction (AMVP) and merge mode signaling. 
     Intra prediction unit  1106  may perform intra prediction on the current video block. When intra prediction unit  1106  performs intra prediction on the current video block, intra prediction unit  1106  may generate prediction data for the current video block based on decoded samples of other video blocks in the same picture. The prediction data for the current video block may include a predicted video block and various syntax elements. 
     Residual generation unit  1107  may generate residual data for the current video block by subtracting the predicted video block(s) of the current video block from the current video block. The residual data of the current video block may include residual video blocks that correspond to different sample components of the samples in the current video block. 
     In other examples, there may be no residual data for the current video block for the current video block, for example in a skip mode, and residual generation unit  1107  may not perform the subtracting operation. 
     Transform processing unit  1108  may generate one or more transform coefficient video blocks for the current video block by applying one or more transforms to a residual video block associated with the current video block. 
     After transform processing unit  1108  generates a transform coefficient video block associated with the current video block, quantization unit  1109  may quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block. 
     Inverse quantization unit  1110  and inverse transform unit  1111  may apply inverse quantization and inverse transforms to the transform coefficient video block, respectively, to reconstruct a residual video block from the transform coefficient video block. Reconstruction unit  1112  may add the reconstructed residual video block to corresponding samples from one or more predicted video blocks generated by the prediction unit  1102  to produce a reconstructed video block associated with the current block for storage in the buffer  1113 . 
     After reconstruction unit  1112  reconstructs the video block, the loop filtering operation may be performed to reduce video blocking artifacts in the video block. 
     Entropy encoding unit  1114  may receive data from other functional components of the video encoder  1100 . When entropy encoding unit  1114  receives the data, entropy encoding unit  1114  may perform one or more entropy encoding operations to generate entropy encoded data and output a bitstream that includes the entropy encoded data. 
       FIG. 12  is a block diagram illustrating an example of video decoder  1200  which may be video decoder  1024  in the system  1000  illustrated in  FIG. 10 . 
     The video decoder  1200  may be configured to perform any or all of the techniques of this disclosure. In the example of  FIG. 12 , the video decoder  1200  includes a plurality of functional components. The techniques described in this disclosure may be shared among the various components of the video decoder  1200 . In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure. 
     In the example of  FIG. 12 , video decoder  1200  includes an entropy decoding unit  1201 , a motion compensation unit  1202 , an intra prediction unit  1203 , an inverse quantization unit  1204 , an inverse transformation unit  1205 , and a reconstruction unit  1206  and a buffer  1207 . Video decoder  1200  may, in some examples, perform a decoding pass generally reciprocal to the encoding pass described with respect to video encoder  1100  ( FIG. 11 ). 
     Entropy decoding unit  1201  may retrieve an encoded bitstream. The encoded bitstream may include entropy coded video data (e.g., encoded blocks of video data). Entropy decoding unit  1201  may decode the entropy coded video data, and from the entropy decoded video data, motion compensation unit  1202  may determine motion information including motion vectors, motion vector precision, reference picture list indexes, and other motion information. Motion compensation unit  1202  may, for example, determine such information by performing the AMVP and merge mode. 
     Motion compensation unit  1202  may produce motion compensated blocks, possibly performing interpolation based on interpolation filters. Identifiers for interpolation filters to be used with sub-pixel precision may be included in the syntax elements. 
     Motion compensation unit  1202  may use interpolation filters as used by video encoder  1100  during encoding of the video block to calculate interpolated values for sub-integer pixels of a reference block. Motion compensation unit  1202  may determine the interpolation filters used by video encoder  1100  according to received syntax information and use the interpolation filters to produce predictive blocks. 
     Motion compensation unit  1202  may use some of the syntax information to determine sizes of blocks used to encode frame(s) and/or slice(s) of the encoded video sequence, partition information that describes how each macroblock of a picture of the encoded video sequence is partitioned, modes indicating how each partition is encoded, one or more reference frames (and reference frame lists) for each inter coded block, and other information to decode the encoded video sequence. 
     Intra prediction unit  1203  may use intra prediction modes for example received in the bitstream to form a prediction block from spatially adjacent blocks. Inverse quantization unit  1204  inverse quantizes, i.e., de-quantizes, the quantized video block coefficients provided in the bitstream and decoded by entropy decoding unit  1201 . Inverse transform unit  1205  applies an inverse transform. 
     Reconstruction unit  1206  may sum the residual blocks with the corresponding prediction blocks generated by motion compensation unit  1202  or intra prediction unit  1203  to form decoded blocks. If desired, a deblocking filter may also be applied to filter the decoded blocks in order to remove blockiness artifacts. The decoded video blocks are then stored in buffer  1207 , which provides reference blocks for subsequent motion compensation/intra prediction and also produces decoded video for presentation on a display device. 
       FIG. 13  is a schematic diagram of an example encoder  1300 . The encoder  1300  is suitable for implementing the techniques of VVC. The encoder  1300  includes three in-loop filters, namely a deblocking filter (DF)  1302 , a sample adaptive offset (SAO)  1304 , and an adaptive loop filter (ALF)  1306 . Unlike the DF  1302 , which uses predefined filters, the SAO  1304  and the ALF  1306  utilize the original samples of the current picture to reduce the mean square errors between the original samples and the reconstructed samples by adding an offset and by applying a finite impulse response (FIR) filter, respectively, with coded side information signaling the offsets and filter coefficients. The ALF  1306  is located at the last processing stage of each picture and can be regarded as a tool trying to catch and fix artifacts created by the previous stages. 
     The encoder  1300  further includes an intra prediction component  1308  and a motion estimation/compensation (ME/MC) component  1310  configured to receive input video. The intra prediction component  1308  is configured to perform intra prediction, while the ME/MC component  1310  is configured to utilize reference pictures obtained from a reference picture buffer  1312  to perform inter prediction. Residual blocks from inter prediction or intra prediction are fed into a transform (T) component  1314  and a quantization (Q) component  1316  to generate quantized residual transform coefficients, which are fed into an entropy coding component  1318 . The entropy coding component  1318  entropy codes the prediction results and the quantized transform coefficients and transmits the same toward a video decoder (not shown). Quantization components output from the quantization component  1316  may be fed into an inverse quantization (IQ) components  1320 , an inverse transform component  1322 , and a reconstruction (REC) component  1324 . The REC component  1324  is able to output images to the DF  1302 , the SAO  1304 , and the ALF  1306  for filtering prior to those images being stored in the reference picture buffer  1312 . 
     A listing of solutions preferred by some examples is provided next. 
     The following solutions show examples of techniques discussed herein. 
     1. A visual media processing method (e.g., method  800  depicted in  FIG. 8 ), comprising performing a conversion between a video and a bitstream of the video; wherein the bitstream conforms to a format rule, wherein the format rule specifies that the bitstream includes decoder initialization information (DII), wherein the DII includes a first indication of whether an actual memory requirement in a decoder for storing a picture will exceed a maximum decoded picture buffer size derived from a level of coding of the bitstream. 
     2. The method of solution 1, wherein the format rule specifies that the bitstream includes a second indication of a minimum level for which the maximum decoded picture buffer size is greater than or equal to the actual memory requirement. 
     3. The method of any of solutions 1-2, wherein the format rule specifies that the bitstream includes a third indication of whether a value of a product of maximum decoded picture width and a maximum decoded picture height is greater than a value of maximum luma pixels in a picture according to the level of coding. 
     4. The method of any of solutions 1-3, wherein the format rule specifies that the bitstream includes a fourth indication of a minimum level for which the value of maximum luma pixels is greater than or equal to the value of the product. 
     5. The method of any of solutions 1-4, wherein the format rule specifies that a flag is included in the bitstream indicative of conditions of a relative size of the value of the product and the value of maximum luma pixels. 
     6. The method of any of solutions 1-5, wherein the format rule specifies to include a fifth indication of a minimum coding level for which the conditions are true. 
     7. The method of any of solutions 1-6, wherein the format rule specifies to include a sixth indication of a minimum level for which the value of the product is less than the value of the maximum luma pixels or less than the maximum decoded picture buffer size derived from the level of coding of the bitstream. 
     8. The method of any of above solutions, wherein the decoder initialization information is included in a decoding capability information (DCI) network abstraction layer unit (NAL) field according to the format rule. 
     9. The method of any of above solutions, wherein the decoder initialization information is included in a supplemental enhancement information (SEI) message according to the format rule. 
     10. The method of any of above solutions, wherein the coded bitstream is formatted according to an international standards organization base media file format (ISOBMFF) format, and to include the decoder initialization information. 
     11. The method of any of above solutions, wherein the coded bitstream is formatted according to a moving pictures expert group (MPEG) dynamic adaptive streaming over hypertext transfer protocol (DASH) media presentation description (MPD) format to include the decoder initialization information. 
     12. The method of any of above solutions, wherein the coded bitstream is formatted according to a real time transport protocol (RTP) format to include the decoder initialization information. 
     13. The method of solution 12, wherein the decoder initialization information is included as a session description protocol parameter. 
     14. The method of any of above solutions wherein the format rule specifies that the decoder is reinitialized when a profile, a level or a tier of the coded bitstream is changed. 
     15. The method of any of above solutions wherein the format rule specifies that the decoder is reinitialized when a timing parameter or a hypothetical reference decoder parameter syntax in the coded bitstream is changed. 
     16. A video decoding apparatus comprising a processor configured to implement a method recited in one or more of solutions 1 to 15. 
     17. A video encoding apparatus comprising a processor configured to implement a method recited in one or more of solutions 1 to 15. 
     18. A computer program product having computer code stored thereon, the code, when executed by a processor, causes the processor to implement a method recited in any of solutions 1 to 15. 
     19. A computer readable medium on which a bitstream complying to a bitstream format that is generated according to any of solutions 1 to 15. 
     20. A method comprising generating a bitstream according to a method recited in any of solutions 1 to 15 and writing the bitstream to a computer readable medium. 
     21. A method, an apparatus, a bitstream generated according to a disclosed method or a system described in the present document. 
     22. A method for processing video data comprising: 
     determining decoder initialization information (DII) for a bitstream, wherein the DII includes data describing a maximum level (MaxLevel) to which all coded video sequences (CVSs) of the bitstream conform and a maximum format that comprises one or more of the following parameters: 1) a maximum number of decoded pictures (MaxDecPics) stored in the decoded picture buffer (DPB), 2) a maximum decoded picture width (MaxDecPicW) of all coded pictures in the bitstream, 3) a maximum decoded picture height (MaxDecPicH) of all coded pictures in the bitstream, 4) a maximum colour format (MaxColourFormat) of all coded pictures in the bitstream, and 5) a maximum bit depth (MaxBitdepth) of all coded pictures in the bitstream, wherein the MaxLevel indicates a first maximum DPB size needed for decoding the bitstream, wherein the maximum format indicates a second maximum DPB size, denoted as DPB memory for as maximum format (DpbMemory4MaxFormat), determined by simultaneously setting all parameters of the maximum format to largest values, and wherein the DII is only signaled when: 
     the MaxDecPicW times the MaxDecPicH is less than or equal to a maximum picture size (MaxLumaPs) of the MaxLevel of the coded video sequence; and 
     the MaxDecPics) is less than or equal to the first maximum DPB size; and 
     performing a conversion between a visual media data and a bitstream based on the DII. 
     23. The method of claim  22 , further comprising inferring, based on a presence of the decoder initialization information, that: 
     the MaxDecPicW for the bitstream times the MaxDecPicH for the bitstream is less than or equal to the MaxLumaPs of the MaxLevel of the coded video sequence; and 
     the MaxDecPics is less than or equal to the MaxDpbSize. 
     24. The method of claim  22 , wherein the conversion comprises generating the bitstream according to the visual media data. 
     25. The method of claim  22 , wherein the conversion comprises parsing the bitstream to obtain the visual media data. 
     In the solutions described herein, an encoder may conform to the format rule by producing a coded representation according to the format rule. In the solutions described herein, a decoder may use the format rule to parse syntax elements in the coded representation with the knowledge of presence and absence of syntax elements according to the format rule to produce decoded video. 
     In the present document, the term “video processing” may refer to video encoding, video decoding, video compression or video decompression. For example, video compression algorithms may be applied during conversion from pixel representation of a video to a corresponding bitstream representation or vice versa. The bitstream representation of a current video block may, for example, correspond to bits that are either co-located or spread in different places within the bitstream, as is defined by the syntax. For example, a macroblock may be encoded in terms of transformed and coded error residual values and also using bits in headers and other fields in the bitstream. Furthermore, during conversion, a decoder may parse a bitstream with the knowledge that some fields may be present, or absent, based on the determination, as is described in the above solutions. Similarly, an encoder may determine that certain syntax fields are or are not to be included and generate the coded representation accordingly by including or excluding the syntax fields from the coded representation. 
     The disclosed and other solutions, examples, embodiments, modules and the functional operations described in this document can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or in combinations of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more them. The term “data processing apparatus” encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus. 
     A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network. 
     The processes and logic flows described in this document can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). 
     Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random-access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and compact disc read-only memory (CD ROM) and Digital versatile disc-read only memory (DVD-ROM) disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry. 
     While this patent document contains many specifics, these should not be construed as limitations on the scope of any subject matter or of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular techniques. Certain features that are described in this patent document in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination. 
     Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. Moreover, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments. 
     Only a few implementations and examples are described and other implementations, enhancements and variations can be made based on what is described and illustrated in this patent document. 
     A first component is directly coupled to a second component when there are no intervening components, except for a line, a trace, or another medium between the first component and the second component. The first component is indirectly coupled to the second component when there are intervening components other than a line, a trace, or another medium between the first component and the second component. The term “coupled” and its variants include both directly coupled and indirectly coupled. The use of the term “about” means a range including ±10% of the subsequent number unless otherwise stated. 
     While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented. 
     In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled may be directly connected or may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.