Methods, devices, and computer programs for decoding / encoding video sequences.
By constraining temporal sublayer identifiers and implementing adaptive picture size signaling, the method addresses inefficiencies in video coding, reducing bandwidth and storage requirements for scalable video coding.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- TENCENT AMERICA LLC
- Filing Date
- 2026-01-28
- Publication Date
- 2026-05-19
AI Technical Summary
Existing video coding technologies struggle with efficiently managing adaptive changes in picture size within video bitstreams, leading to inefficiencies in bandwidth and storage requirements, particularly in applications requiring scalable video coding.
The method involves constraining the temporal sublayer identifier of a video coding layer network abstraction layer unit and implementing adaptive picture size signaling to allow for flexible resolution changes in video bitstreams, enabling efficient decoding and encoding of multiple layers with different qualities.
This approach reduces bandwidth and storage needs by allowing flexible resolution changes, enhancing the efficiency of video coding and decoding processes, particularly in applications like video conferencing and streaming.
Smart Images

Figure 2026082901000001_ABST
Abstract
Description
[Technical Field]
[0001] [Related applications] This application claims priority to U.S. Provisional Application No. 63 / 000,980, filed on 27 March 2020, and U.S. Patent Application No. 17 / 097,636, filed on 13 November 2020, both of which are incorporated herein by reference in their entirety.
[0002] [Technical field] The subject of the disclosure relates to video coding and decoding, and more specifically, to the derivation of output layers in a coding video stream having multiple layers. [Background technology]
[0003] Video coding and decoding using interpicture prediction along with motion compensation have been known for decades. Uncompressed digital video can consist of a series of pictures, each picture having a spatial dimension of, for example, 1920 × 1080 luminance samples and associated chrominance samples. The series of pictures may have a fixed or variable picture rate (also informally known as frame rate), for example, 60 pictures per second or 60 Hz. Uncompressed video has considerable bitrate requirements. For example, 8-bit / sample 1080p60 4:2:0 video (1920 × 1080 luminance sample resolution at a 60 Hz frame rate) requires a bandwidth of nearly 1.5 Gbit / s. One hour of such video requires more than 600 Gbytes of storage space.
[0004] One objective of video coding and decoding may be to reduce redundancy in the input video signal through compression. Compression can help alleviate the aforementioned bandwidth or storage space requirements by more than two orders of magnitude in some cases. Both lossy and lossless compression, and combinations thereof, are available. Lossless compression represents a technique in which an exact copy of the original signal can be reconstructed from the compressed original signal. With lossy compression, the reconstructed signal is not identical to the original signal, but the distortion between the original and reconstructed signals is small enough to produce a reconstructed signal that is useful for the intended application. In the case of video, lossy compression is widely used. The amount of distortion that can be tolerated depends on the application; for example, users of a particular consumer streaming application may tolerate higher distortion than users of a television broadcast application. The achievable compression ratio can reflect that higher tolerance / tolerance for distortion can result in a higher compression ratio.
[0005] Video encoders and decoders can utilize techniques from several broad categories, including, for example, motion compensation, transformation, quantization, and entropy coding. Some of these are described below.
[0006] Historically, video encoders and decoders have often tended to operate with a given picture size defined and constant for coded video sequences (CVS), groups of pictures (GOP), or similar multi-picture timeframes. For example, in MPEG-2, the system design is known to change the horizontal resolution (and therefore the picture size) depending on factors such as scene activity, not only for individual pictures but also, and therefore typically for GOPs. Resampling of the reference picture for the use of different resolutions within a CVS is known, for example, by ITU-T Rec. H.263 Annex P. However, here, since the picture size does not change, only the reference picture is resampled, and as a result, only a portion of the picture canvas may be used (in the case of downsampling), or only a portion of the scene may be captured (in the case of upsampling). Furthermore, H.263 Annex Q allows for the resampling of individual macroblocks in multiples of 2 (in each dimension) in the upward or downward direction. Here again, the picture size remains the same. In H.263, the size of macroblocks is fixed and therefore does not need to be signaled.
[0007] Changing the picture size in predictive pictures has become more common in recent video coding. For example, VP9 allows for reference picture resampling and changes in the resolution of the entire picture. Similarly, certain proposals targeting VVC (including, e.g., Hendry, et. al, “On adaptive resolution change (ARC) for VVC”, Joint Video Team document JVET-M0135-v1, Jan9-19, 2019, which is incorporated here by reference) allow for resampling of the entire reference picture to different—higher or lower—resolutions. The document proposes different candidate resolutions that should be coded in the sequence parameter set and referenced by per-picture syntax elements in the picture parameter set. [Overview of the project]
[0008] A technique for adaptive picture size signaling within a video bitstream is disclosed.
[0009] An exemplary method for decoding a coded video sequence using at least one processor may include the steps of: acquiring the coded video sequence; and decoding the coded video sequence. The value of the temporal sublayer identifier of a video coding layer (VCL) network abstraction layer (NAL) unit in the coded video sequence is constrained to be less than or equal to the value of vps_max_sublayers_minus1, which specifies the maximum number of temporal sublayers that may exist in each layer in the coded video sequence that references the video parameter set (VPS) referenced by the VCL NAL unit.
[0010] In some embodiments, a value of zero for max_tid_il_ref_pics_plus1[i] indicates that interlayer prediction is not used for non-intra random access point (IRAP) pictures in the i-th layer.
[0011] In some embodiments, a value of max_tid_il_ref_pics_plus1[i] greater than zero specifies that, in order to decode the i-th layer picture, a picture with a temporal sublayer identifier greater than max_tid_il_ref_pics_plus1[i]-1 will not be used as an interlayer reference picture (ILRP).
[0012] In some embodiments, the value of max_tid_il_ref_pics_plus1[i] is estimated to be equal to vps_max_sublayers_minus1+1 when it does not exist.
[0013] In some embodiments, max_tid_il_ref_pics_plus1[i] is constrained to be less than or equal to vps_max_sublayers_minus1+1.
[0014] In some embodiments, the output layer set for each sublayer is constrained so as not to be derived for independent layers.
[0015] In some embodiments, the first variable NumSubLayersInLayerInOLS[i][j] specifies the number of sublayers in the j-th layer within the i-th OLS, the second variable OutputLayerIdInOls[i][j] specifies the value of nuh_layer_id for the j-th output layer within the i-th OLS, and the third variable LayerUsedAsOutputLayerFlag[k] specifies whether the k-th layer is used as an output layer in at least one OLS. Furthermore, the first, second, and third variables are derived from the value of the variable max_tid_il_ref_pics_plus1[i].
[0016] In some embodiments, max_tid_il_ref_pics_plus1 and layerIncludedInOlsFlag are constrained so that they are not derived for independent layers.
[0017] An exemplary apparatus for decoding a coding video sequence includes at least one memory configured to store program code, and at least one processor configured to read the program code and operate as instructed by the program code, wherein the program code includes acquisition code configured to cause the at least one processor to acquire the coding video sequence, and decoding code configured to cause the at least one processor to decode the coding video sequence. The value of the temporal sublayer identifier of a video coding layer (VCL) network abstraction layer (NAL) unit in the coding video sequence is constrained to be less than or equal to the value of vps_max_sublayers_minus1, which specifies the maximum number of temporal sublayers that may exist in the layers within each coding video sequence that reference the video parameter set (VPS) referenced by the VCL NAL unit.
[0018] An exemplary non-temporary computer-readable medium may store instructions, the instructions comprising one or more instructions, which, when executed by one or more processors of a device acquiring a video sequence, cause the one or more processors to acquire the coding video sequence and decode the coding video sequence. The value of the temporal sublayer identifier of a video coding layer (VCL) network abstraction layer (NAL) unit in the coding video sequence is constrained to be less than or equal to the value of vps_max_sublayers_minus1, which specifies the maximum number of temporal sublayers that may exist in the layers within each coding video sequence that reference the video parameter set (VPS) referenced by the VCL NAL unit. [Brief explanation of the drawing]
[0019] Further features, characteristics, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings.
[0020] [Figure 1] It is a schematic diagram of a simplified block diagram of a communication system according to an embodiment.
[0021] [Figure 2] It is a schematic diagram of a simplified block diagram of a communication system according to an embodiment.
[0022] [Figure 3] It is a schematic diagram of a simplified block diagram of a decoder according to an embodiment.
[0023] [Figure 4] It is a schematic diagram of a simplified block diagram of an encoder according to an embodiment.
[0024] [Figure 5] As shown, it is a schematic diagram of an option for signaling ARC parameters according to the prior art or an embodiment.
[0025] [Figure 6] It is an example of a syntax table according to an embodiment.
[0026] [Figure 7] It is a schematic diagram of a computer system according to an embodiment.
[0027] [Figure 8] It is an example of a prediction response of scalability by adaptive resolution change.
[0028] [Figure 9] It is an example of a syntax table according to an embodiment.
[0029] [Figure 10] This is a schematic diagram of a simplified block diagram showing the parsing and decoding of the POC cycle and access unit count values for each access unit.
[0030] [Figure 11] This is a schematic diagram of a video bitstream that includes multi-layer subpictures.
[0031] [Figure 12] This is a schematic diagram showing the display of selected sub-pictures with extended resolution.
[0032] [Figure 13] This is a block diagram of the decoding and display process for a video bitstream containing multi-layer subpictures.
[0033] [Figure 14] This is a schematic diagram of a 360 video display with an extended sub-picture layer.
[0034] [Figure 15] This is an example of layout information for subpictures, their corresponding layers, and picture prediction structures.
[0035] [Figure 16] This is an example of layout information for subpictures and their corresponding layers and picture prediction structures, which have a local spatial scalability modality.
[0036] [Figure 17] This is an example of a syntax table for subpicture layout information.
[0037] [Figure 18] This is an example of a syntax table for SEI messages containing subpicture layout information.
[0038] [Figure 19]This is an example syntax table showing the output layers and profile / tier / level information for each output layer set.
[0039] [Figure 20] This is an example syntax table showing the output layer modes for each output layer set.
[0040] [Figure 21] This is an example syntax table showing the pre-sent subpictures for each layer in each output layer set.
[0041] [Figure 22] This is an example syntax table showing an output layer set with instructions for each sublayer. [Modes for carrying out the invention]
[0042] When a picture is encoded into a bitstream consisting of multiple layers with different qualities, the bitstream may have syntax elements that specify which layers should be output by the decoder. The set of layers to be output is defined as the output layer set. In modern video codecs that support multiple layers and scalability, one or more output layer sets are signaled within the video parameter set. The syntax elements that specify the output layer sets and their dependencies, profile / tier / level, and virtual decoder reference model parameters must be efficiently signaled within the parameter set.
[0043] Figure 1 shows a simplified block diagram of a communication system (100) according to an embodiment of the present disclosure. The system (100) may include at least two terminals (110-120) interconnected via a network (150). In one-way data transmission, the first terminal (110) may encode video data at its local location for transmission to another terminal (120) via the network (150). The second terminal (120) may receive the encoded video data from the other terminal via the network (150), decode the encoded data, and display the restored video data. One-way data transmission may be common in media serving applications, etc.
[0044] Figure 1 shows a second pair of terminals (130, 140) applied to support bidirectional transmission of coded video, which may occur, for example, during a video conference. In bidirectional data transmission, each terminal (130, 140) may code locally captured video data for transmission to other terminals over the network (150). Each terminal 130, 140 may also receive coded video data transmitted by other terminals, decode the coded data, and display the restored video data on a local display device.
[0045] In Figure 1, terminal devices (110-140) may be shown as servers, personal computers, and smartphones, but the principles of this disclosure are not limited to these. Embodiments of this disclosure include applications by laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network (150) represents any number of networks that carry coded video data between terminals (110-140), including, for example, wired and / or wireless communication networks. Communication networks (150) may exchange data via circuit switching and / or packet switching channels. Typical networks include electronic communication networks, local area networks, wide area networks, and / or the Internet. For the purposes of discussing this invention, the architecture and topology of network (150) may not be important to the operation of this disclosure unless otherwise specified below.
[0046] Figure 2 shows an example of the application of the subject matter of disclosure, illustrating the arrangement of a video encoder and video decoder in a streaming environment. The subject matter of disclosure is equally applicable to, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc., and other video-enabled applications.
[0047] The streaming system may include a video source (201) that generates, for example, an uncompressed video sample stream (202), and a capture subsystem (213) which may include, for example, a digital camera. The sample stream (202) is shown in thick lines to emphasize its high data volume compared to the encoded video bitstream and can be processed by an encoder (203) coupled to the camera (201). The encoder (203) may include hardware, software, or a combination thereof, and can enable or implement aspects of the subject of disclosure as detailed below. The encoded video bitstream (204) is shown in thin lines to emphasize its low data volume compared to the sample stream and can be stored in a streaming server (205) for future use. One or more streaming clients (206, 208) may access the streaming server (205) and read copies (207, 209) of the encoded video bitstream (204). A client (206) may include a video decoder (210). The video decoder (310) decodes an incoming copy of the encoded bitstream (207) to generate an output video sample stream (211) that can be rendered on a display (212) or other rendering device (not shown). In some streaming systems, the video bitstreams (204, 207, 209) can be encoded according to specific video coding / compression standards. Examples of these standards include ITU-T Recommendation H.265. Video coding standards under development are informally known as VVC (Versatile Video Coding). The subject matter of this disclosure may be used in the context of VVC.
[0048] Figure 3 shows a block diagram of a video decoder 210 according to one embodiment of the present disclosure.
[0049] The receiver (310) may receive one or more coded video sequences to be decoded by the video decoder (210), or in the same or different embodiments, one coded video sequence at a time, where the decoding of each coded video sequence is independent of other coded video sequences. The coded video sequences may be received from a channel (312), which may be a hardware / software link to a storage device that stores coded video data. The receiver (310) may receive coded video data together with other data, e.g., coded audio data and / or auxiliary data streams that may be transferred to their respective user entities (not shown). The receiver (310) may isolate the coded video sequences from other data. To eliminate network jitter, a buffer memory (315) may be connected between the receiver (310) and the entropy decoder / parser (320) (hereinafter, "Parser"). When the receiver (310) is receiving data controllably from a storage / transfer device with sufficient bandwidth or from an isosynchronous network, the buffer (315) may be unnecessary or can be made smaller. When used in best-effort packet networks such as the internet, a buffer (315) may be required, which can be relatively large and, advantageously, can be adapted to an adaptive size.
[0050] The video decoder (210) may include a parser (320) to reconstruct symbols (321) from an entropy-coded video sequence. These symbol categories may include information used to manage the operation of the decoder (210), and information for controlling rendering devices, such as a display (212) which may be connected to the decoder but is not part of the decoder's integration, as shown in Figure 2. The control information for rendering devices may be in the form of SEI (Supplementary Enhancement Information) messages or VUI (Video Usability Information) parameter set fragments (not shown). The parser (320) may parse / entropy-decode the received code or video sequence. The coding of the coded video sequence may follow video coding techniques or standards, and may follow principles well known to those skilled in the art, including variable-length coding, Huffman coding, arithmetic coding with or without context dependency, etc. The parser (320) may extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder, based on at least one parameter corresponding to that group. Subgroups may include GOP (Groups of Picture), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transform units (TU), prediction units (PU), etc. The entropy decoder / parser may also extract information such as transformation coefficients, quantization parameter values, motion vectors, etc., from the coded video sequence.
[0051] The parser (320) may perform an entropy decoding / parse operation on the video sequence received from the buffer (315) to generate a symbol (321).
[0052] The reconstruction of symbol (321) may include multiple different units, depending on the type of coded video picture or part thereof (e.g., inter and intra pictures, inter and intra blocks) and other factors. Which units are included and how they are included can be controlled by subgroup control information parsed from the coded video sequence by the parser (320). The flow of such subgroup control information between parser 320 and the following multiple units is not shown for clarity.
[0053] Beyond the functional blocks already mentioned, the decoder (210) can be conceptually subdivided into numerous functional units, as described below. In actual implementations operating under commercial constraints, many of these units may interact closely with each other and be at least partially integrated. However, for the purpose of illustrating the subject of this disclosure, the following conceptual subdivision into functional units is appropriate.
[0054] The first unit is the scaler and / or inverse transform unit (351). The scaler and / or inverse transform unit (351) receives the quantized transform coefficients and control information, including which transform should be used, block size, quantization coefficients, quantization scaling matrix, etc., as symbols (321) from the parser (320). This can output a block containing sample values that can be input to the aggregator (355).
[0055] In some cases, the output samples of the scaler and / or inverse unit (351) may belong to intracoding blocks, i.e., blocks that do not use predictive information from previously reconstructed pictures but can use predictive information from parts of the picture that were reconstructed before the current picture. Such predictive information can be provided by the intrapicture predictive unit (352). In some cases, the intrapicture predictive unit (352) generates a block of the same size and shape as the block being reconstructed, using the surrounding already reconstructed information fetched from the currently (partially reconstructed) picture (356). In some cases, the aggregator (355) adds the predictive information generated by the intra predictive unit (352) to the output sample information provided by the scaler / inverse unit (351), sample by sample.
[0056] In other cases, the output samples of the scaler and / or inverse unit (351) may be associated with an intercoded, and possibly motion-compensated, block. In such cases, the motion-compensated prediction unit (353) can access the reference picture memory (357) to fetch samples to be used for prediction. After motion-compensating the fetched samples according to the symbols (321) associated with the block, these samples may be added to the output of the scaler / inverse unit by the aggregator (355) to generate output sample information (in this case, called residual samples or residual signals). The address in the reference picture memory from which the motion-compensated prediction unit fetches the predicted samples can be controlled by the motion vectors available to the motion-compensated prediction unit, for example, in the form of symbols (321) which may have X, Y and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory when the exact motion vector of a subsample is in use, motion vector prediction mechanisms, etc.
[0057] The output samples of the aggregator (355) can undergo various loop filtering techniques in the loop filter unit (356). The video compression technique is controlled by parameters included in the coded video bitstream and made available to the loop filter unit (356) as symbols (321) from the parser (320), but may also include in-loop filtering techniques that respond to metadata obtained during decoding of earlier portions (in decoding order) of the coded picture or coded video sequence, and also respond to previously reconstructed and loop-filtered sample values.
[0058] The output of the loop filter unit (356) may be a sample stream that can be output to the renderer (212) and stored in the reference picture memory (356) for use in future interpicture prediction.
[0059] A particular coding picture, once fully reconstructed, can be used as a reference picture for future predictions. Once a coding picture is fully reconstructed and identified as a reference picture (e.g., by a parser (320)), the current reference picture (356) can become part of the reference picture buffer (357) and can be reallocated fresh current picture memory before starting the reconstruction of subsequent coding pictures.
[0060] The video decoder (320) may perform decoding operations in accordance with a predetermined video compression technique, such as H.265, which may be defined in a standard like ITU-T Rec. The coded video sequence may follow the syntax specified by the video compression technique or standard in use, in the sense that the coded video sequence follows the syntax of the video compression technique or standard, specifically as specified in the profile document therein. Furthermore, compliance may require that the complexity of the coded video sequence be within the limits set by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples / second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further limited through the HRD (Hypothetical Reference Decoder) specification and metadata for HDR buffer management signaled within the coded video sequence.
[0061] In the embodiment, the receiver (310) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder 320 to correctly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or SNR extension layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0062] Figure 4 may be a functional block diagram of a video encoder (203) according to one embodiment of the present disclosure.
[0063] The encoder (203) may receive video samples from a video source (201) (not the encoder portion) that can capture video images to be coded by the encoder (203).
[0064] The video source (201) may provide a source video sequence to be coded by the encoder (203) in the form of a digital video sample stream of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCb, RGB, ...), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media delivery system, the video source (201) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (203) may be a camera that captures local image information as a video sequence. The video data may be provided as a series of individual pictures that give motion when viewed sequentially. The pictures themselves may be organized as a spatial array of pixels. Each pixel may contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art will immediately understand the relationship between pixels and samples. The following description will focus on samples.
[0065] According to the embodiment, the encoder (203) may encode and compress the pictures of the source video sequence into a coding video sequence (443) in real time or under any other time constraints required by the application. Implementing an appropriate coding speed is one function of the control unit (450). The control unit controls and is functionally coupled to other functional units, as described later. The coupling is not shown for clarity. Parameters set by the control unit may include rate control-related parameters (picture skip, quantizer, lambda value of rate distortion optimization technique, ...), picture size, GOP (group of pictures) layout, maximum motion vector search range, etc. Those skilled in the art will immediately recognize other functions of the control unit 450 when relating to a video encoder (203) optimized for a particular system design.
[0066] Some video encoders operate within what is immediately recognizable to those skilled in the art as a “coding loop.” In a very simplified description, the coding loop may include an encoder (430) (hereafter, “source coder”) (which generates symbols based on the input picture to be coded and a reference picture) and an encoded portion of a (local) decoder (433) incorporated within the encoder (203) that reconstructs the symbols to generate sample data that can be generated by a (remote) decoder (when any compression between the symbols and the coded video bitstream is lossless among the video compression techniques considered in the subject of the disclosure). The reconstructed sample stream is input to a reference picture memory 434. When decoding the symbol stream yields bit-accurate results independently of the decoder position (local or remote), the contents of the reference picture buffer are also bit-accurate between the local encoder and the remote encoder. In other words, the prediction portion of the encoder “sees” as reference picture samples the exact same sample values that the decoder “sees” when using predictions during decoding. This fundamental principle of reference picture synchronization (and the resulting drift, for example, when synchronization cannot be maintained due to channel errors) is well known to those skilled in the art.
[0067] The operation of the “local” decoder (433) may be the same as that of the “remote” decoder (210) as detailed above in relation to Figure 3. Referring briefly to Figure 3, however, since symbols are available and the encoding / decoding of symbols to the coding video sequence by the entropy coder (445) and parser (320) may be lossless, the entropy decoding portion of the decoder (210), including the channel (312), receiver (310), buffer (315), and parser (320), does not need to be fully implemented in the local decoder (433).
[0068] The consideration in this regard is that any decoder techniques present within the decoder, excluding parse / entropy decoding, must exist in substantially the same functional form as those present within the corresponding encoder. For this reason, the subject of the disclosure focuses on decoder operation. Descriptions of encoder techniques can be omitted, as they are the inverse of the decoder techniques over which they are comprehensively described. More detailed explanations are necessary only in specific areas and are provided below.
[0069] During operation, in some examples, the source coder (430) may perform motion-compensated predictive coding. This predictively codes the input frame by referencing one or more previously coded frames from a video sequence designated as “reference frames”. In this method, the coding engine (432) codes the difference between the pixel blocks of the input frame and the pixel blocks of the reference frame which may be selected as the prediction criterion for the input frame.
[0070] The local video decoder (433) may decode the coded video data of a frame that may be designated as a reference frame, based on symbols generated by the source coder (430). The operation of the coding engine (432) may, advantageously, be lossy. When the coded video data can be decoded by a video decoder (not shown in Figure 4), the reconstructed video sequence may, as a standard, be a copy of the source video sequence with some errors. The local video decoder (433) may duplicate the decoding process that may be performed by the video decoder on the reference frame, resulting in a reconstructed reference frame that should be stored in the reference picture cache (434). Thus, the encoder (203) may locally store a copy of the reconstructed reference frame that has the same content as the reconstructed reference frame obtained by the far-end video decoder (if there are no transmission errors).
[0071] The predictor (435) may perform a predictive search for the coding engine (432). That is, for a new frame to be coded, the predictor (435) may search the reference picture memory (434) for sample data (such as candidate reference pixel blocks) or specific metadata such as reference picture motion vectors, block shapes, etc., which could serve as appropriate predictive criteria for the new picture. The predictor (435) may operate sample block-pixel block by sample block to find appropriate predictive criteria. In some examples, the input picture may have predictive criteria drawn from multiple reference pictures stored in the reference picture memory (434), as determined by the search results obtained by the predictor (435).
[0072] The control unit (450) may manage the coding operations of the video coder (430), including, for example, setting parameters and subgroup parameters used for encoding video data.
[0073] The outputs of all the aforementioned functional units may undergo entropy coding in the entropy coder (445). The entropy coder converts the symbols generated by the various functional units into coded video sequences by lossless compression of the symbols according to techniques well known to those skilled in the art, such as Huffman coding, variable-length coding, arithmetic coding, etc.
[0074] The transmitter (440) may buffer the coded video sequence generated by the entropy coder (445) in preparation for transmission over a communication channel (460), which may be a hardware / software link to a storage device capable of storing coded video data. The transmitter (440) may merge the coded video data from the video coder (430) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0075] The control unit (450) may manage the operation of the encoder (203). During coding, the control unit (450) may assign each coding picture a specific coding picture type that may affect the coding technique that can be applied to each picture. For example, a picture may often be assigned as one of the following picture types:
[0076] An intra-picture (I-picture) may be a picture that can be coded and decoded without using any other frames in the sequence as a source for prediction. Some video codecs allow different types of intra-pictures, including, for example, IDR (Independent Decoder Refresh) pictures. A person skilled in the art will recognize variations of I-pictures and their individual applications and characteristics.
[0077] A predictive picture (P-picture) may, in most cases, be a picture that can be coded and decoded using intra-prediction or inter-prediction with a single motion vector and reference index to predict the sample values of each block.
[0078] A bidirectional predictive picture (B-picture) may be a picture that can be coded and decoded using intra-prediction or inter-prediction with up to two motion vectors and reference indices to predict the sample values of each block. Similarly, a multi-predictive picture may use two or more reference pictures and associated metadata for the reconstruction of a single block.
[0079] Source pictures may be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each), and each block may be coded. Blocks may be coded predictively by references to other (already coded) blocks, determined by the coding assignments applied to each picture in the block. For example, blocks in picture I may be coded unpredictably, or they may be coded predictively by referencing already coded blocks of the same picture (spatial prediction or intra-prediction). Pixel blocks in picture P may be coded predictively via spatial prediction or temporal prediction by referencing one previously coded reference picture. Blocks in picture B may be coded unpredictably via spatial prediction or temporal prediction by referencing one or two previously coded reference pictures.
[0080] The video coder (203) may perform coding operations in accordance with a specified video coding technique or standard, such as ITU-T Rec. H.265. In such operations, the video coder (203) may perform various compression operations, including predictive coding operations that utilize temporal and spatial redundancy in the input video sequence. The coded video data may, therefore, conform to the syntax specified by the video coding technique or standard being used.
[0081] In one embodiment, the transmitter (440) may transmit additional data along with the encoded video. The video coder (430) may include such data as part of the coded video sequence. The additional data may include time / space / SNR extension layers, other forms of redundant data such as redundant pictures and slices, SEI (Supplementary Enhancement Information) messages, VUI (Visual Usability Information) parameter set fragments, and the like.
[0082] Before describing in further detail specific aspects of the subject matter of this disclosure, it is necessary to introduce some terms that will be referenced in the remainder of this statement.
[0083] A subpicture may, in some cases, represent a sample, block, macroblock, coding unit, or a rectangular configuration of similar entities that may be semantically grouped and independently coded at modified resolutions. One or more subpictures may be for a picture. One or more coding subpictures may form a coding picture. One or more subpictures may be assembled into a picture, and one or more subpictures may be extracted from a picture. In certain environments, one or more coding subpictures may be assembled into a coding picture in the compressed domain without being converted to the sample level, and in the same or other specific cases, one or more coding subpictures may be extracted from a coding picture in the compressed domain.
[0084] Adaptive Resolution Change (ARC) refers below to a mechanism that allows changes in the resolution of a picture or sub-picture within a coded video sequence, for example, by resampling a reference picture. ARC parameters refer below to the control information necessary to perform adaptive resolution change. These may include, for example, filter parameters, scaling factors, output and / or reference picture resolutions, various control flags, etc.
[0085] The above explanation focuses on coding and decoding a single, semantically independent coded video picture. Before discussing the meaning of coding / decoding multiple subpictures using independent ARC parameters, and the additional complexity it implies, the signaling of ARC parameters may be explained.
[0086] Referring to Figure 5, several novel options for signaling ARC parameters are shown. As noted with each option, video coding standards or technologies may select one or more of these options, or options from prior art, for signaling ARC parameters, each having specific advantages and disadvantages in terms of coding efficiency, complexity, and architecture. The options do not have to be mutually exclusive, or may be interchangeable based on application requirements, technically relevant standards, or encoder selection.
[0087] The classes of ARC parameters may include the following:
[0088] - Up-sampling and / or down-sampling factors, separate or combined in the X and Y dimensions.
[0089] - Upsampling and / or downsampling factors that exhibit constant-speed zoom in / out for a given number of pictures, accompanied by the addition of a time dimension.
[0090] - Either of the two above may include coding of one or more possibly short syntax elements that may point to a table containing factors.
[0091] -The resolution in the X or Y dimension of the combined or separate input picture, output picture, reference picture, coding picture, within a sample, block, macroblock, CU, or any other appropriate granularity unit. If there is more than one resolution (e.g., one for the input picture and one for the reference picture), in certain cases one set of values may be inferred from another set of values. This can be controlled, for example, by using flags. See below for more detailed examples.
[0092] - "Warping" coordinates, again with the appropriate granularity described above, include those used in H.263 Annex P. H.263 Annex P defines one efficient method for coding such warping coordinates, but other potentially more efficient methods may be devised. For example, the variable-length reversible Huffman coding of warping coordinates in Annex P can be replaced by a binary coding of appropriate length, where the length of the binary codeword can be derived, for example, from the maximum picture size, possibly multiplied by a specific coefficient and offset by a specific value, thus enabling "warping" outside the boundary of the maximum picture size.
[0093] - Upsampling and / or downsampling filter parameters. In the simplest case, there may be only a single filter for upsampling and / or downsampling. However, in certain cases, it is advantageous to allow for greater flexibility in filter design, which may require signaling of filter parameters. Such parameters may be selected through an index in a list of possible filter designs. The filter may be fully specified (e.g., through a list of filter coefficients using appropriate entropy coding techniques), the filter may be implicitly selected through the upsampling and / or downsampling ratio, and signaled according to one of the mechanisms described above according to the up / downsampling ratio, etc.
[0094] The following assumes the coding of a finite set of upsampling and / or downsampling factors (the same factors to be used in both the X and Y dimensions), represented by a codeword. This codeword may, advantageously, be a variable-length codeword using common Ext-Golomb codes for specific syntax elements in video coding specifications, such as H.264 and H.265. A suitable mapping of values to upsampling and / or downsampling factors may follow, for example, Table 1. Table 1 [Table 1]
[0095] Many similar mappings can be devised according to the needs of the application and the capabilities of the up and down scaling mechanisms available in the video compression technology or standard. The table can be extended to more values. The values may also be represented by an entropy coding mechanism other than the Ext-Golomb code, for example, using binary coding. This may have particular advantages when the resampling factor is targeted outside the video processing engine (mainly the encoder and decoder) itself, for example by MANE. It should be noted that in the (perhaps) most common situations where a change in resolution is not required, the Ext-Golomb code can be chosen to be short, consisting of only a single bit in the table above. This may have advantages in coding efficiency over using binary code in the most common cases.
[0096] The number of entries in a table, along with their meanings, may be fully or partially configurable. For example, the basic outline of the table may be communicated in a “high” parameter set, such as a sequence or decoder parameter set. Alternatively, or in some embodiments, one or more such tables may be defined in a video coding technique or standard, and may be selected, for example, through a decoder or sequence parameter set.
[0097] The following describes how the upsampling and / or downsampling factors (ARC information) coded as described above are incorporated into video coding techniques or standard syntax. Similar considerations may apply to one or more codeword-controlled upsampling / downsampling filters. See below for a discussion of when relatively large amounts of data are required for filters or other data structures.
[0098] H.263 Annex P includes ARC information (502) in the form of four warping coordinates in the picture header (501), specifically in the H.263 PLUSPTYPE(503) header extension. This may be a sensible design choice when (a) a picture header is available and (b) frequent changes to the ARC information are expected. However, the overhead when using H.263 type signaling can be very large, and because the picture header can be transient, the scaling factor may not fall between picture boundaries.
[0099] The previously cited JVCET-M135-v1 includes ARC reference information (505) (index) located within the picture parameter set (504), and an index table (506) containing target resolutions located within the sequence parameter set (507). The arrangement of possible resolutions in table (506) within the sequence parameter set (507) can be justified using SPS as an interoperability negotiation point during capability exchange, in the words of the authors. Resolutions can vary per picture, within the limits set by the values in table (506), by referencing the appropriate picture parameter set (504).
[0100] Referring further to Figure 5, the following additional options may exist for carrying ARC information within the video bitstream. Each of these options has specific advantages over existing technologies, as described above. The options may coexist simultaneously within the same coding technology or standard.
[0101] In embodiments, ARC information (509), such as a resampling (zoom) factor, may reside in a slice header, GOB header, tile header, or tile group header (hereinafter referred to as the tile group header). This is sufficient when the ARC information is small, such as a single variable-length ue(v) or a fixed-length codeword of a few bits, as described above. Having the ARC information directly in the tile group header has the additional advantage that the ARC information is applicable to subpictures represented by tile groups, for example, rather than the entire picture. See also below. Furthermore, even when the video compression technique or standard assumes adaptive resolution changes of the entire picture (as opposed to tile groups based on adaptive resolution changes, for example), including the ARC information in the tile group header has certain advantages from the standpoint of error recovery compared to including it in the picture header of the H.263 format.
[0102] In the same or a different embodiment, the ARC information (512) itself may reside within a suitable parameter set (511), such as a picture parameter set, a header parameter set, a tile parameter set, an adaptive parameter set, etc. (the adaptive parameter set shown). Part of the parameter set is, advantageously, no larger than the picture, for example, a tile group. The use of the ARC information is implicitly indicated through the activation of the relevant parameter set. For example, when a video coding technique or standard assumes picture-based ARC, a picture parameter set or equivalent may be appropriate.
[0103] In the same or another embodiment, the ARC reference information (513) may reside in a tile group header (514) or a similar data structure. The reference information (513) may represent a subset (515) of ARC information available in a parameter set (516) having a range beyond a single picture, such as a sequence parameter set or a decoder parameter set.
[0104] As used in JVET-M0135-v1, the additional level of indirectly suggested activation of PPS, PPS, and SPS from the tile group header seems unnecessary, as they can be used for capability negotiation declarations (as certain standards like RFC3984 do) just like the sequence parameter set, similar to the picture parameter set. However, if the ARC information must also be applicable to subpictures represented by tile groups, for example, then a parameter set with an activation range limited to tile groups, such as an adaptive parameter set or a header parameter set, may be a suitable choice. Also, if the ARC information is negligibly large and contains filter control information, such as a large number of filter coefficients, then from a coding efficiency standpoint, parameters may be a more suitable choice than directly using the header (508), because these settings can be reused by future pictures or subpictures by referencing the same parameter set.
[0105] Certain considerations apply when using a sequence parameter set or another higher-level parameter set that spans multiple pictures:
[0106] 1. The parameter set storing the ARC information table (516) may in some cases be a sequence parameter set, but in other cases it is advantageously a decoder parameter set. The decoder parameter set may have multiple CVSs, i.e., activation ranges of the coded video stream, i.e., all coded video bits from the start of the session to the end of the session. Such ranges may be more appropriate because possible ARC factors are decoder features implemented in hardware, and hardware features are CVSs (of a length of less than 1 second) and tend not to change (at least in some entertainment systems, a Group of Pictures). That is, putting the table into a sequence parameter set is explicitly included here in the arrangement options described, particularly in relation to 2 below.
[0107] 2. ARC information (513) may, advantageously, be placed directly in the picture / slice / tile / GOB / tile group header (hereinafter referred to as the tile group header) (514), rather than in the picture parameter set as in JVCET-M0135-v1. The reason is as follows: When the encoder wants to change a single value in the picture parameter set, such as ARC reference information, the encoder must generate a new PPS and reference that new PPS. Let's assume that only the ARC reference information changes, and other information, such as quantization matrix information in the PPS, remains unchanged. Such information is quite large and may need to be retransmitted to complete the new PPS. Since ARC reference information may be a single codeword, like an index in the table (513), and may be the only value that changes, retransmitting all of the quantization matrix information, for example, would be cumbersome and wasteful. Therefore, from the standpoint of coding efficiency, it may be very appropriate to avoid the roundabout process of going through the PPS, contrary to JVET-M0135-v1. Similarly, including ARC reference information in the PPS has the additional drawback that, because the scope of picture parameter set activation is the picture, the ARC information referenced by the ARC reference information (513) is always applied to the entire picture and not to the subpictures.
[0108] In the same or a different embodiment, the signaling of ARC parameters is described in detail below, as outlined in Figure 6. Figure 6 shows a syntax diagram in the notation used in video coding standards since at least 1993. The notation of such a syntax diagram largely follows C-style programming. Lines in bold indicate syntax elements appearing in the bitstream. Lines that are not in bold may indicate control flow or variable settings.
[0109] The tile group header (601), as an exemplary syntax structure for a header applicable to a picture portion (possibly rectangular), may conditionally include a variable-length Ext-Golomb coded syntax element dec_pic_size_idx (602) (shown in bold). The presence of this syntax element within the tile group header can be controlled by the use of an adaptive resolution (603), a flag value not shown here in bold. This means that the flag is present in the bitstream at the point in the syntax diagram where it occurs. Whether or not adaptive resolution is used for this picture or portion can be signaled in a high-level syntax structure within or outside the bitstream. In the example shown, it is signaled in the sequence parameter set outlined below.
[0110] Referring further to Figure 6, an excerpt of the sequence parameter set (610) is also shown. The first syntax element shown is adaptive_pic_resolution_change_flag (611). When true, this flag can indicate the use of adaptive resolution, which may require certain control information. In the example, such control information exists conditionally, based on the flag value based on the if() statement in the parameter set (612) and the tile group header (601).
[0111] When adaptive resolution is used, in this example, the output resolution is coded within the units of samples (613). Reference numeral 613 represents both output_pic_width_in_luma_samples and output_pic_height_in_luma_samples, which together may define the resolution of the output picture. In other cases, video coding techniques or standards may define specific limitations on any value. For example, a level definition may limit the total number of output samples, which may be the product of the values of those two syntax elements. Also, a particular video coding technique or standard, or an external technique or standard such as a system standard, may limit the range of numbering (e.g., one or both dimensions must be divisible by a number that is a power of 2) or the aspect ratio (e.g., the width and height must be in a relationship such as 4:3 or 16:9). Such limitations may be introduced to enable hardware implementation or for other reasons and are conventionally well known.
[0112] In certain applications, it may be desirable for the encoder to instruct the decoder to use a specific reference picture size rather than implicitly assuming that the size is the output picture size. In this example, the syntax element reference_pic_size_present_flag(614) controls the conditional presence of the reference picture dimension(615) (where the reference code again represents both width and height).
[0113] Finally, a table of possible decoded pictures with widths and heights is shown. Such a table can be represented, for example, by the table directive (num_dec_pic_size_in_luma_samples_minus1)(616), where "minus1" can represent the interpretation of the value of the syntax element. For example, if the coded value is 0 (zero), there is one table entry. If the value is 5, there are six table entries. For each "row" in the table, the width and height of the decoded picture are included in syntax(617).
[0114] Existing table entries (617) can be indexed using the syntax element dec_pic_size_idx (602) within the tile group header. This allows for different decoding sizes, or effective zoom levels, for each tile group.
[0115] Certain video coding techniques or standards, such as VP9, support spatial scalability by implementing certain forms of reference picture resampling (signaled in a manner entirely different from the subject of disclosure) in relation to temporal scalability, in order to enable spatial scalability. In particular, certain reference pictures may be upsampled to higher resolutions using ARC-type techniques to form the basis of a spatial expansion layer. These upsampled pictures may be refined using the usual predictive mechanisms at high resolutions to add detail.
[0116] The subject matter of the disclosure can be used in such environments. In certain cases, in the same or different embodiments, a value in the NAL unit header, such as the Temporal ID field, can be used to indicate not only the temporal layer but also the spatial layer. Doing so may bring certain advantages to a particular system design. For example, an existing Selected Forwarding Unit (SFU) generated and optimized for temporal layer selective forwarding based on the NAL unit header Temporal ID value can be used without modification in an extensible environment. To enable this, there may be a requirement that the mapping between coding picture size and the temporal layer is indicated by the Temporal ID field in the NAL unit header.
[0117] In some video coding techniques, an Access Unit (AU) can represent a coded picture, slice, tile, NAL unit, etc., which are captured and configured into their respective picture / slice / tile / NAL unit bitstreams at a given time. This time can be the configuration time.
[0118] In HEVC and certain other video coding technologies, the picture order count (POC) value can be used to indicate a selected reference picture among multiple reference pictures stored in a decoded picture buffer (DPB). When an access unit (AU) contains one or more pictures, slices, or tiles, each picture, slice, or tile belonging to the same AU may carry the same POC value, from which it can be deduced that they were generated from content of the same configuration time. In other words, in a scenario where two pictures / slices / tiles carry the same given POC value, it can indicate two pictures / slices / tiles belonging to the same AU and having the same configuration time. Conversely, two pictures / tiles / slices having different POC values can indicate that those pictures / slices / tiles belong to different AUs and have different configuration times.
[0119] In embodiments of the subject matter of the disclosure, the aforementioned strict relationship can be relaxed, and an access unit may include pictures, slices, or tiles having different POC values. Allowing different POC values within an AU makes it possible to use POC values to identify potentially independently decodeable pictures / slices / tiles having the same presentation time. This, on the one hand, enables support for multiple scalable layers without requiring changes to the reference picture selection signaling (e.g., reference picture set signaling or reference picture list signaling), as will be further detailed below.
[0120] However, it is still desirable to be able to identify the AU to which a picture / slice / tile belongs, even if the picture / slice / tile has a different POC value, based solely on the POC value. This can be achieved as described later.
[0121] In the same or other embodiments, the access unit count (AUC) may be signaled within higher-level syntactic structures such as NAL unit headers, slice headers, tile group headers, SEI messages, parameter sets, or AU delimiters. The AUC value may be used to identify which NAL unit, picture, slice, or tile belongs to a given AU. The AUC value may correspond to different configuration points. The AUC value may be equal to a multiple of the POC value. The AUC value may be calculated by dividing the POC value by an integer value. In certain cases, the division operation may impose a certain burden on the decoder implementation. In such cases, small constraints in the numbering space of the AUC value may allow the division operation to be replaced by a shift operation. For example, the AUC value may be equal to the most significant bit (MSB) value of the POC value range.
[0122] In the same embodiment, the POC cycle value for each AU (poc_cycle_au) may be signaled in higher-level syntactic structures such as NAL unit headers, slice headers, tile group headers, SEI messages, parameter sets, or AU delimiters. poc_cycle_au may indicate how many different consecutive POC values can be associated with the same AU. For example, if the value of poc_cycle_au is equal to 4, then pictures, slices, or tiles with POC values between 0 and 3, including both ends, are associated with AUs with an AUC value equal to 0, and pictures, slices, or tiles with POC values between 4 and 7, including both ends, are associated with AUs with an AUC value equal to 1. Thus, the AUC value may be estimated by dividing the POC value by the value of poc_cycle_au.
[0123] In the same or another embodiment, the value of poc_cycle_au may be derived from information identifying the number of spaces or SNR layers in the coded video sequence, for example, located within the video parameter set (VPS). Such possible relationships are briefly described below. While such derivations can save a small number of bits in the VPS and thus improve coding efficiency, it is advantageous to explicitly code poc_cycle_au in a suitable higher-level syntax structure hierarchically below the video parameter set so that poc_cycle_au can be minimized for a given small portion of a bitstream, such as a picture. This optimization can save more bits than can be saved through the derivation process described above, since the POC value (and / or the value of a syntax element that indirectly references the POC) can be coded into a lower-level syntax structure.
[0124] In the same or another embodiment, Figure 9 shows an example syntax table for signaling the vps_poc_cycle_au syntax element in the VPS (or SPS) that indicates the poc_cycle_au used for all pictures / slices in a coding video sequence, and the slice_poc_cycle_au syntax element in the slice header that indicates the poc_cycle_au for the current slice. If the POC value increases uniformly per AU, vps_contant_poc_cycle_per_au in the VPS is set to 1, and vps_poc_cycle_au is signaled in the VPS. In this case, slice_poc_cycle_au is not explicitly signaled, and the AUC value for each AU is calculated by dividing the POC value by vps_poc_cycle_au. If the POC value does not increase uniformly per AU, vps_contant_poc_cycle_per_au in the VPS is set to 0. In this case, vps_access_unit_cnt is not signaled, but slice_access_unit_cnt is signaled in the slice header for each slice or picture. Each slice or picture may have a different value for slice_access_unit_cnt. The AUC value for each AU is calculated by dividing the POC value by slice_poc_cycle_au. Figure 10 shows a block diagram illustrating the relevant workflow.
[0125] In the same or a different embodiment, even if the POC values of the pictures, slices, or tiles may differ, pictures, slices, or tiles corresponding to AUs with the same AUC value may be associated with the same decoding or output time. Thus, without inter-parsing and / or decoding dependencies across pictures, slices, or tiles within the same AU, all or some of the pictures, slices, or tiles associated with the same AU may be decoded in parallel and output at the same time.
[0126] In the same or a different embodiment, even if the POC values of the pictures, slices, or tiles are different, pictures, slices, or tiles corresponding to AUs with the same AUC value may be associated with the same configuration / display time. When the configuration time is included in the container format, even if the pictures correspond to different AUs, if the pictures have the same configuration time, the pictures can be displayed at the same time.
[0127] In the same or other embodiments, each picture, slice, or tile may have the same temporary identifier (temporal_id) within the same AU. All or part of a picture, slice, or tile corresponding to a given point in time may be associated with the same temporal sublayer. In the same or other embodiments, each picture, slice, or tile may have different spatial layer identifiers (layer_id) within the same AU. All or part of a picture, slice, or tile corresponding to a given point in time may be associated with the same or different spatial layer.
[0128] Figure 8 shows an example of a video sequence structure with combinations of temporal_id, layer_id, POC, and AUC due to adaptive resolution change. In this example, a picture, slice, or tile in the first AU with AUC=0 may have temporal_id=0 and layer_id=0 or 1, while a picture, slice, or tile in the second AU with AUC=1 may have temporal_id=1 and layer_id=0 or 1. The value of POC increases by 1 per picture, independently of the values of temporal_id and layer_id. In this example, the value of poc_cycle_au is equal to 2. Preferably, the value of poc_cycle_au may be set to be equal to the number of (spatial scalability) layers. In this example, therefore, the value of POC increases by 2 and the value of AUC increases by 1.
[0129] In the embodiments described above, all or part of the reference picture indication and the interpicture or interlayer prediction structure may be supported using existing reference picture set (RPS) signaling or reference picture list (RPL) in HEVC. In the RPS or RPL, the selected reference picture is indicated by signaling the value of the POC or the delta value of the POC between the current picture and the selected reference picture. In the subject matter of the disclosure, the RPS and RPL can be used to indicate the interpicture or interlayer prediction structure without changing the signaling, but with the following limitations: If the value of the temporal_id of the reference picture is greater than the value of the temporal_id of the current picture, the current picture does not need to use the reference picture for motion compensation or other predictions. If the value of the layer_id of the reference picture is greater than the value of the layer_id of the current picture, the current picture does not need to use the reference picture for motion compensation or other predictions.
[0130] In the same or other embodiments, motion vector scaling based on POC difference for temporal motion vector prediction may be disabled across multiple pictures within an access unit. Thus, each picture may have a different POC value within the access unit, but the motion vector is not scaled and used for temporal motion vector prediction within the access unit. This is because reference pictures with different POCs within the same AU are considered to be reference pictures having the same time point. Therefore, in embodiments, the motion vector scaling function may return 1 when the reference picture belongs to the AU associated with the current picture.
[0131] In the same and other embodiments, motion vector scaling based on the point of view difference for temporal motion vector prediction may optionally be disabled across multiple pictures when the spatial resolution of the reference picture differs from the spatial resolution of the current picture. When motion vector scaling is permitted, the motion vectors are scaled based on the point of view difference and the ratio of the spatial resolutions of the current picture and the reference picture.
[0132] In the same or another embodiment, particularly when poc_cycle_au has non-uniform values (when vps_contant_poc_cycle_per_au == 0), the motion vector may be scaled based on the AUC difference instead of the POC difference for temporal motion vector prediction. In other cases (when vps_contant_poc_cycle_per_au == 1), motion vector scaling based on the AUC difference may be the same as motion vector scaling based on the POC difference.
[0133] In the same or another embodiment, when motion vectors are scaled based on AUC difference, a reference motion vector in the same AU as the current picture (having the same AUC value) is not scaled based on AUC difference for motion vector prediction, and is either not scaled based on the spatial resolution ratio between the current picture and the reference picture.
[0134] In the same and other embodiments, the AUC value is used to identify the boundaries of the AU and for hypothetical reference decoder (HRD) operation that requires input and output timing at the AU granularity. Often, the decoded picture with the top layer in the AU may be output for display. The AUC value and layer_id value can be used to identify the output picture.
[0135] In this embodiment, a picture may consist of one or more subpictures. Each subpicture may cover a local or entire area of the picture. The area supported by a subpicture may or may not overlap with the area supported by another subpicture. The area composed of one or more subpictures may or may not cover the entire area of the picture. When a picture consists of subpictures, the area supported by a subpicture is the same as the area supported by the picture.
[0136] In the same embodiment, a subpicture may be coded using a coding method similar to the coding method used for the coding picture. A subpicture may be coded independently or may be coded in dependence of another subpicture or coding picture. A subpicture may or may not have parsing dependencies from another subpicture or coding picture.
[0137] In the same embodiment, the coding subpictures may be contained in one or more layers. The coding subpictures within a layer may have different spatial resolutions. The original subpictures may be spatially resampled (upsampled or downsampled), coded with different spatial resolution parameters, and contained in the bitstream corresponding to the layer.
[0138] In the same or another embodiment, a subpicture having (W,H) may be coded and included in the coding bitstream corresponding to layer 0, where W is the width of the subpicture and H is the height of the subpicture. On the other hand, having the original spatial resolution, (W*S w,k ,H*S h,k A subpicture upsampled (or downsampled) from a subpicture having ) may be coded and included in the coding bitstream corresponding to layer k. Here, S w,k ,S h,kshows the resampling ratios in the horizontal and vertical directions. S w,k ,S h,k If the value of is greater than 1, the resampling is equal to upsampling. On the other hand, S w,k ,S h,k if the value of is less than 1, the resampling is equal to downsampling.
[0139] In the same or another embodiment, the coding sub-pictures within a layer may have different visual qualities from the coding sub-pictures within the same sub-picture or another layer within a different sub-picture. For example, sub-picture i within layer n is coded by quantization parameter Q i,n , and sub-picture j within layer m is coded by quantization parameter Q j,m .
[0140] In the same or another embodiment, the coding sub-pictures within a layer may be independently decodable and have no parsing or decoding dependencies from the coding sub-pictures within another layer of the same local region. A sub-picture layer that is independently decodable without referring to another sub-picture layer of the same local region is an independent sub-picture layer. The coding sub-pictures within an independent sub-picture layer may or may not have decoding or parsing dependencies from previous coding sub-pictures within the same sub-picture layer, but the coding sub-pictures need not have dependencies from the coding pictures within another sub-picture layer.
[0141] In the same or another embodiment, coding subpictures within a layer may be dependently decodeable and have parsing or decoding dependencies from coding subpictures in another layer in the same local region. A dependent subpicture layer is one that is dependently decodeable by referring to another subpicture layer in the same local region. A coding subpicture within a dependent subpicture may refer to a coding subpicture belonging to the same subpicture, a previous coding subpicture in the same subpicture layer, or both of the reference subpictures.
[0142] In the same or another embodiment, a coding subpicture consists of one or more independent subpicture layers and one or more dependent subpicture layers. However, a coding subpicture may have at least one independent subpicture layer. An independent subpicture layer may have a layer identifier (layer_id) value equal to 0, which may reside in the NAL unit header or another higher-level syntax structure. A subpicture layer with a layer_id equal to 0 is a basic subpicture layer.
[0143] In the same or another embodiment, the picture consists of one or more foreground subpictures and one or more background subpictures. The area supported by the background subpicture may be equal to the area of the picture. The area supported by the foreground subpicture may overlap with the area supported by the background subpicture. The background subpicture may be a basic subpicture layer, while the foreground subpicture may be a non-basic (extended) subpicture layer. One or more non-basic subpicture layers may refer to the same basic layer for decoding. Each non-basic subpicture layer having a layer_id equal to a may refer to a non-basic subpicture layer having a layer_id equal to b, where a is greater than b.
[0144] In the same or another embodiment, a picture may consist of one or more foreground subpictures, some having background subpictures and some not having background subpictures. Each subpicture may have its own basic subpicture layer and one or more non-basic (extended) layers. Each basic subpicture layer may be referenced by one or more non-basic subpicture layers. Each non-basic subpicture layer having a layer_id equal to a may reference a non-basic subpicture layer having a layer_id equal to b, where a is greater than b.
[0145] In the same or another embodiment, a picture may consist of one or more foreground subpictures, with or without background subpictures. Each coding subpicture within a (basic or non-basic) subpicture layer may be referenced by one or more subpictures from non-basic layers belonging to the same subpicture, and one or more subpictures from non-basic layers not belonging to the same subpicture.
[0146] In the same or another embodiment, a picture may consist of one or more foreground subpictures, with or without background subpictures. A subpicture in layer a may be further partitioned into multiple subpictures within the same layer. One or more coding subpictures in layer b may reference partitioned subpictures in layer a.
[0147] In the same or different embodiments, a coded video sequence (CVS) may be a group of coded pictures. The CVS may consist of one or more coded sub-picture sequences (CSPS), where the CSPS may be a group of coded sub-pictures covering the same local area of a picture. The CSPS may have the same or different temporal resolution as the coded video sequence.
[0148] In the same or different embodiments, the CSPS may be coded and contained in one or more layers. The CSPS may consist of one or more CSPS layers. Decoding one or more CSPS layers corresponding to the CSPS may reconstruct a sequence of subpictures corresponding to the same local region.
[0149] In the same or a different embodiment, the number of CSPS layers corresponding to a CSPS may be the same as or different from the number of CSPS layers corresponding to another CSPS.
[0150] In the same or a different embodiment, a CSPS layer may have a different temporal resolution (e.g., frame rate) than another CSPS layer. The original (uncompressed) subpicture sequence may be temporally resampled (upsampled or downsampled), coded with different temporal resolution parameters, and included in the bitstream corresponding to the layer.
[0151] In the same or another embodiment, a subpicture sequence having frame rate F may be coded and included in the coding bitstream corresponding to layer 0. On the other hand, F*S t,k The sub-picture sequence, which has been temporally upsampled (or downsampled) from the original sub-picture sequence, may be coded and included in the coding bitstream corresponding to layer k. Here, S t,k This indicates the time sampling ratio of layer k. t,k If the value of is greater than 1, time resampling is equivalent to frame rate upconversion. On the other hand, S t,k If the value is less than 1, the time resampling process is equivalent to frame rate downconversion.
[0152] In the same or another embodiment, when a subpicture having CSPS layer a is referenced by a subpicture having CSPS layer b for motion compensation or arbitrary interlayer prediction, if the spatial resolution of CSPS layer a differs from that of CSPS layer b, the decoded pixels of CSPS layer a are resampled and used for reference. The resampling process may require upsampling filtering or downsampling filtering.
[0153] Figure 11 shows an exemplary video stream containing a background video CSPS with a layer_id equal to 0 and multiple foreground CSPS layers. A coded subpicture may consist of one or more CSPS layers, but background areas that do not belong to any foreground CSPS layer may constitute a base layer. The base layer may contain background and foreground areas, and an extended CSPS layer may contain only the foreground area. An extended CSPS layer may have better visual quality than the base layer in the same area. An extended CSPS layer may reference the reconstructed pixels and motion vectors of the base layer corresponding to the same area.
[0154] In the same or another embodiment, the video bitstream corresponding to the base layer is contained in a track, while the CSPS layers corresponding to each sub-picture are contained in a separate track within the video file.
[0155] In the same or a different embodiment, the video bitstream corresponding to the base layer is contained in a track, while the CSPS layer corresponding to the same layer_id is contained in a separate track. In this example, the track corresponding to layer k contains only the CSPS layer corresponding to layer k.
[0156] In the same or another embodiment, each CSPS layer of each subpicture is stored in a separate track. Each track may or may not have parsing or decoding dependencies from one or more other tracks.
[0157] In the same or another embodiment, each track may include a bitstream corresponding to layer i to layer j of all or part of the CSPS layers of the subpicture. Here, 0 < i <= j <= k, and k is the highest layer of the CSPS.
[0158] In the same or another embodiment, a picture is composed of one or more associated data including a depth map, an alpha map, 3D geometry data, an occupancy map, etc. Such associated time-limited media data can be divided into one or more data substreams, and each data substream corresponds to one subpicture.
[0159] In the same or another embodiment, FIG. 12 shows an example of a video conference based on the multi-layer subpicture method. The video stream includes one basic layer video bitstream corresponding to the background picture and one or more extended layer video bitstreams corresponding to the foreground subpictures. Each extended layer video bitstream corresponds to a CSPS layer. In the display, the picture corresponding to the basic layer is displayed by default. It includes the pictures of one or more users within the picture (picture in a picture (PIP)). When a specific user is selected under the control of the client, the extended CSPS layer corresponding to the selected user is decoded and displayed according to the extended quality or spatial resolution. FIG. 13 shows a diagram of the operation.
[0160] In the same or another embodiment, a network intermediate box (e.g., a router) may select a subset of the layers to be transmitted to the user depending on the bandwidth. Picture / subpicture composition may be used for bandwidth adaptation. For example, if the user has no bandwidth, the router may delete layers or select some subpictures according to their importance or based on the settings used. This can be done dynamically to adapt to the bandwidth.
[0161] Figure 14 shows an example of 360-degree video usage. When a 360-degree spherical picture is projected onto a planar picture, the projected 360-degree picture may be partitioned into multiple sub-pictures, such as a base layer. The extended layers of a particular sub-picture may be coded and sent to the client. The decoder may be able to decode both the base layer containing all sub-pictures and the extended layers of the selected sub-pictures. When the current viewpoint is the same as the selected sub-picture, the displayed picture may have higher quality due to the decoded sub-picture with the extended layers, or the decoded picture with the base layer may be displayed at lower quality.
[0162] In the same or another embodiment, layout information for display may exist within the file as auxiliary information (e.g., SEI messages or metadata). One or more decoded subpictures may be rearranged and displayed according to the signaled layout information. The layout information may be signaled by a streaming server or broadcaster, regenerated by a network entity or cloud server, or determined by user-customized settings.
[0163] In this embodiment, the input picture is divided into one or more (rectangular) sub-regions, each sub-region may be coded as an independent layer. Each independent layer corresponding to a local region may have a unique layer_id value. For each independent layer, sub-picture size and position information may be signaled. For example, picture size (width, height) and upper-left corner offset information (x_offset, y_offset). Figure 15 shows an example of the layout of the divided sub-pictures, their sub-picture size and position information, and their corresponding picture prediction structure. Layout information, including sub-picture size and sub-picture position, may be signaled in a parameter set, slice or group header, or in a higher-level syntax structure such as an SEI message.
[0164] In the same embodiment, each subpicture corresponding to an independent layer may have its own unique POC value within the AU. When a reference picture in a picture stored in the DPB is indicated using a syntax element in the RPS or RPL structure, the POC value of each subpicture corresponding to the layer may be used.
[0165] In another embodiment of the same type, the layer_id may not be used to represent the (interlayer) prediction structure, and a POC (delta) value may be used instead.
[0166] In the same embodiment, a subpicture having a POC value equal to N corresponding to a layer (or local region) may or may not be used as a reference picture for motion compensation prediction of a subpicture having a POC value equal to N+K corresponding to the same layer (or the same local region). In most cases, the numerical value K may be equal to the number of subregions, or equal to the maximum number of (independent) layers.
[0167] In another embodiment of the same, Figure 16 shows an extended version of Figure 15. When the input picture is divided into multiple (e.g., four) sub-regions, each local region may be coded by one or more layers. In this case, the number of independent layers may be equal to the number of sub-regions, and one or more layers may correspond to a sub-region. Thus, each sub-region may be coded by one or more independent layers and zero or more dependent layers.
[0168] In the same embodiment, in Figure 16, the input picture may be divided into four sub-regions. The upper right sub-region may be coded as two layers, namely layer 1 and layer 4. On the other hand, the lower right sub-region may be coded as two layers, namely layer 3 and layer 5. In this case, layer 4 may refer to layer 1 for motion compensation prediction, and layer 5 may refer to layer 3 for motion compensation.
[0169] In the same or another embodiment, in-loop filters that span layer boundaries (e.g., deblocking filters, adaptive in-loop filters, reshapers, bilateral filters, or any deep learning-based filters) may be (optionally) disabled.
[0170] In another embodiment of the same, motion compensation prediction or intrablock copying across layer boundaries may be (optionally) disabled.
[0171] In the same or another embodiment, boundary padding for motion compensation prediction or in-loop filtering at the boundaries of subpictures may be optionally processed. A flag indicating whether or not boundary padding is processed may be signaled in a parameter set (VPS, SPS, PPS, or APS), a slice or tile group header, or a higher-level syntax structure such as an SEI message.
[0172] In the same or another embodiment, layout information for sub-regions (or sub-pictures) may be signaled within the VPS or MPS. Figure 17 shows examples of syntax elements within the VPS and SPS. In this example, vps_sub_picture_dividing_flag is signaled within the VPS. The flag may indicate whether or not the input picture is divided into multiple sub-regions. When the value of vps_sub_picture_dividing_flag is equal to 0, the input picture in the coding video sequence currently corresponding to the VPS does not need to be divided into multiple sub-regions. In this case, the input picture size may be equal to the coding picture size (pic_width_in_luma_samples, pic_height_in_luma_samples) signaled within the SPS. When the value of vps_sub_picture_dividing_flag is equal to 1, the input picture may be divided into multiple sub-regions. In this case, the syntax elements vps_full_pic_width_in_luma_samples and vps_full_pic_height_in_luma_samples are signaled within the VPS. The values of vps_full_pic_width_in_luma_samples and vps_full_pic_height_in_luma_samples may be equal to the width and height of the input picture, respectively.
[0173] In the same embodiment, the values of vps_full_pic_width_in_luma_samples and vps_full_pic_height_in_luma_samples do not need to be used for decoding, but may be used for configuration and display.
[0174] In the same embodiment, when the value of vps_sub_picture_dividing_flag is equal to 1, the syntax elements pic_offset_x and pic_offset_y may be signaled within the SPS corresponding to a particular layer. In this case, the coding picture size (pic_width_in_luma_samples, pic_height_in_luma_samples) signaled within the SPS may be equal to the width and height of the sub-region corresponding to the particular layer. Also, the position of the upper-left corner of the sub-region (pic_offset_x, pic_offset_y) may be signaled within the SPS.
[0175] In the same embodiment, the position of the upper-left corner of the subregion (pic_offset_x, pic_offset_y) does not have to be used for decoding, but may be used for configuration and display.
[0176] In the same or another embodiment, layout information (size and position) of all or part of the subregions of the input picture, and dependency information between layers, may be signaled in a parameter set or SEI message. Figure 18 shows examples of syntax elements for indicating subregion layout information, dependency between layers, and relationships between a subregion and one or more layers. In this example, the syntax element num_sub_region indicates the number of (rectangular) subregions in the currently coded video sequence, and the syntax element element elementnum_layers indicates the number of layers in the currently coded video sequence. The value of num_layers may be equal to or greater than the value of num_sub_region. When any subregion is coded as a single layer, the value of num_layers may be equal to the value of num_sub_region. When one or more subregions are coded as multiple layers, the value of num_layers may be greater than the value of num_sub_region. The syntax element direct_dependency_flag[i][j] indicates the dependency from the j-th layer to the i-th layer. num_layers_for_region[i] indicates the number of layers associated with the i-th subregion. sub_region_layer_id[i][j] indicates the layer_id of the j-th layer associated with the i-th subregion. sub_region_offset_x[i] and sub_region_offset_y[i] indicate the horizontal and vertical positions of the top-left corner of the i-th subregion, respectively. sub_region_width[i] and sub_region_height[i] indicate the width and height of the i-th subregion, respectively.
[0177] In one embodiment, one or more syntax elements specifying whether an output layer, configured to represent one or more layers, is output with or without profile tier level information may be signaled within a higher-level syntax structure, such as a VPS, DPS, SPS, PPS, APS, or SEI message. Referring to Figure 19, the syntax element num_output_layer_sets, indicating the number of output layer sets (OLS) in a coding video sequence referencing a VPS, may be signaled within the VPS. For each output layer set, output_layer_flag may be signaled as many times as there are output layers.
[0178] In the same embodiment, output_layer_flag[i] equal to 1 specifies that the i-th layer is output. vps_output_layer_flag[i] equal to 0 specifies that the i-th layer is not output.
[0179] In the same or another embodiment, one or more syntax elements specifying profile tier level information for each output layer set may be signaled within a higher-level syntax structure, such as a VPS, DPS, MPS, PPS, APS, or SEI message. Furthermore, referring to Figure 19, the syntax element num_profile_tile_level, indicating the number of profile tier level entries per OLS in a coding video sequence referencing a VPS, may be signaled within the VPS. For each output layer set, a set of syntax elements for profile tier level information, or an index indicating a specific profile tier level entry within the profile tier level information, may be signaled for each output layer.
[0180] In the same embodiment, profile_tier_level_idx[i][j] specifies the index of the profile_tier_level() syntax structure applied to the j-th layer of the i-th OLS into a list of profile_tier_level() syntax structures in the VPS.
[0181] In another embodiment of the same type, referring to Figure 20, the syntax elements num_profile_tile_level and / or num_output_layer_sets may be signaled when the maximum number of layers is greater than 1 (vps_max_layers_minus1>0).
[0182] In another embodiment of the same type, referring to Figure 20, a syntax element vps_output_layers_mode[i] may exist in the VPS that indicates the mode of output layer signaling for the i-th output layer set.
[0183] In the same embodiment, a vps_output_layers_mode[i] equal to 0 specifies that only the top layer is output with the i-th output layer set. A vps_output_layer_mode[i] equal to 1 specifies that all layers are output with the i-th output layer set. A vps_output_layer_mode[i] equal to 2 specifies that the output layers are those with a vps_output_layer_flag[i][j] equal to 1, along with the i-th output layer set. More values may be reserved.
[0184] In the same embodiment, output_layer_flag[i][j] may or may not be signaled depending on the value of vps_output_layers_mode[i] of the i-th output layer set.
[0185] In another embodiment, referring to Figure 20, flagvps_ptl_signal_flag[i] may exist for the i-th output layer set. Depending on the value of vps_ptl_signal_flag[i], the profile tier level information for the i-th output layer set may or may not be signaled.
[0186] In another embodiment, referring to Figure 21, the current number of subpictures in CVS, max_subpics_minus1, may be signaled in a higher-level syntax structure, such as a VPS, DPS, SPS, PPS, APS, or SEI message.
[0187] In another embodiment of the same type, referring to Figure 21, the subpicture identifier sub_pic_id[i] of the i-th subpicture may be signaled when the maximum number of layer subpictures is greater than 1 (max_subpics_minus1>0).
[0188] In another embodiment, one or more syntax elements indicating subpicture identifiers belonging to each layer of each output layer set may be signaled within the VPS. Referring to Figure 22, sub_pic_id_layer[i][j][k], which indicates the k-th subpicture, resides in the j-th layer of the i-th output layer set. This information allows the decoder to know which subpictures can be decoded and output for each layer of a particular output layer set.
[0189] In this embodiment, the picture header (PH) is a syntax structure containing syntax elements that apply to all slices of the coding picture. A picture unit (PU) is a set of NAL units that are consecutive in decoding order, linked to one another according to a specified classification rule, and each contains exactly one coding picture. A PU may include a picture header (PH) and one or more VCL NAL units corresponding to coding pictures.
[0190] In the embodiment, the SPS(RBSP) may be available for the decoding process before being referenced and included in at least one AU having a TemporalId equal to 0, or provided through external means.
[0191] In the embodiment, the SPS(RBSP) may be available for decryption processing before being included in or provided through external means at least one AU having a TemporalId equal to 0 within the CVS, which includes one or more PPS that reference the SPS.
[0192] In the embodiment, the SPS(RBSP) may be referenced by one or more PPSs and may be available for decoding before being included in or provided through external means at least one PU having a nuh_layer_id equal to the lowest nuh_layer_id value of the SPS NAL unit in the CVS, which includes one or more PPSs that reference the SPS.
[0193] In the embodiment, the SPS(RBSP) may be referenced by one or more PPSs and may be available for decoding before being contained in one or more PUs having a TemporalId equal to 0 and a nuh_layer_id equal to the lowest nuh_layer_id value of the PPS NAL unit that references the SPS NAL unit, or before being provided through external means.
[0194] In the embodiment, the SPS(RBSP) may be referenced by one or more PPS and included in at least one PU having a nuh_layer_id equal to the lowest nuh_layer_id value of the SPS NAL unit in the CVS, which includes a TemporalId equal to 0 and one or more PPS referencing the SPS, or may be provided through external means or available for decoding before being provided through external means.
[0195] In the same or different embodiments, pps_seq_parameter_set_id specifies the value of sps_seq_parameter_set_id of the referenced SPS. The value of pps_seq_parameter_set_id may be the same for all PPS referenced by the coding picture in the CLVS.
[0196] In another embodiment, all SPS NAL units having a specific sps_seq_parameter_set_id value within CVS may have the same content.
[0197] In another embodiment of the same type, SPS NAL units may share the same value space for sps_seq_parameter_set_id, regardless of the value of nuh_layer_id.
[0198] In another embodiment of the same, the nuh_layer_id value of the SPS NAL unit may be equal to the lowest nuh_layer_id value of the PPS NAL unit referencing the SPS NAL unit.
[0199] In this embodiment, when an SPS having a nuh_layer_id equal to m is referenced by one or more PPSs having a nuh_layer_id equal to n, the layer having a nuh_layer_id equal to m may be the same as the layer having a nuh_layer_id equal to n, or the (direct or indirect) reference layer of the layer having a nuh_layer_id equal to m.
[0200] In the embodiment, the PPS(RBSP) may be available for decoding before being included in or provided through external means at least one AU having a TemporalId equal to the TemporalId of the PPS NAL unit.
[0201] In the embodiment, the PPS(RBSP) may be included in at least one AU having a TemporalId equal to the TemporalId of the PPS NAL unit in the CVS, which includes one or more PHs (or coding slice NAL units) that reference and refer to the PPS, or may be available for decoding before being provided through external means.
[0202] In the embodiment, the PPS (RBSP) may be available for decoding before being included in or provided through external means a PU having a nuh_layer_id equal to the lowest nuh_layer_id value of the coding slice NAL units referencing the PPS NAL units in the CVS, which includes one or more PHs (or coding slice NAL units) that refer to the PPS.
[0203] In the embodiment, the PPS(RBSP) is referenced by one or more PHs (or coding slice NAL units) and is contained in at least one PU having a nuh_layer_id equal to the lowest nuh_layer_id value of the coding slice NAL units in the CVS that reference the PPS NAL units, and a TemporalId equal to the TemporalId of the PPS NAL units, or is provided through external means or may be available for decoding before being provided through external means.
[0204] In the same or different embodiments, ph_pic_parameter_set_id in PH specifies the value of pps_pic_parameter_set_id of the referenced PPS in use. The value of pps_seq_parameter_set_id may be the same in all PPS referenced by the coding picture in CLVS.
[0205] In the same or another embodiment, all PPS NAL units within the PU that have a specific value for pps_pic_parameter_set_id may have the same content.
[0206] In another embodiment of the same type, regardless of the value of nuh_layer_id, the PPS NAL units may share the same value space for pps_pic_parameter_set_id.
[0207] In another embodiment of the same, the nuh_layer_id value of the PPS NAL unit may be equal to the lowest nuh_layer_id value of the coding slice NAL unit that references the NAL unit that references the PPS NAL unit.
[0208] In this embodiment, when a PPS having a nuh_layer_id equal to m is referenced by one or more coding slice NAL units having a nuh_layer_id equal to n, the layer having a nuh_layer_id equal to m may be the same as the layer having a nuh_layer_id equal to n, or the (direct or indirect) reference layer of the layer having a nuh_layer_id equal to m.
[0209] In the embodiment, the PPS(RBSP) may be available for decoding before being included in or provided through external means at least one AU having a TemporalId equal to the TemporalId of the PPS NAL unit.
[0210] In the embodiment, the PPS(RBSP) may be included in at least one AU having a TemporalId equal to the TemporalId of the PPS NAL unit in the CVS, which includes one or more PHs (or coding slice NAL units) that reference and refer to the PPS, or may be available for decoding before being provided through external means.
[0211] In the embodiment, the PPS (RBSP) may be available for decoding before being included in or provided through external means a PU having a nuh_layer_id equal to the lowest nuh_layer_id value of the coding slice NAL units referencing the PPS NAL units in the CVS, which includes one or more PHs (or coding slice NAL units) that refer to the PPS.
[0212] In the embodiment, the PPS(RBSP) is referenced by one or more PHs (or coding slice NAL units) and is contained in at least one PU having a nuh_layer_id equal to the lowest nuh_layer_id value of the coding slice NAL units in the CVS that reference the PPS NAL units, and a TemporalId equal to the TemporalId of the PPS NAL units, or is provided through external means or may be available for decoding before being provided through external means.
[0213] In the same or different embodiments, ph_pic_parameter_set_id in PH specifies the value of pps_pic_parameter_set_id of the referenced PPS in use. The value of pps_seq_parameter_set_id may be the same in all PPS referenced by the coding picture in CLVS.
[0214] In the same or another embodiment, all PPS NAL units within the PU that have a specific value for pps_pic_parameter_set_id may have the same content.
[0215] In another embodiment of the same type, regardless of the value of nuh_layer_id, the PPS NAL units may share the same value space for pps_pic_parameter_set_id.
[0216] In another embodiment of the same, the nuh_layer_id value of the PPS NAL unit may be equal to the lowest nuh_layer_id value of the coding slice NAL unit that references the NAL unit that references the PPS NAL unit.
[0217] In this embodiment, when a PPS having a nuh_layer_id equal to m is referenced by one or more coding slice NAL units having a nuh_layer_id equal to n, the layer having a nuh_layer_id equal to m may be the same as the layer having a nuh_layer_id equal to n, or the (direct or indirect) reference layer of the layer having a nuh_layer_id equal to m.
[0218] The output layer indicates the layers in the output layer set that are output. An output layer set (OLS) is a set of layers consisting of a specified set of layers, one or more of which are designated as output layers. The output layer set (OLS) layer index is the index of the layer in the OLS to a list of layers in the OLS.
[0219] A sublayer represents a temporally scalable layer of a temporally scalable bitstream, consisting of VCL NAL units with a specific value TemporalId variable and associated non-VCL NAL units. A sublayer representation represents a subset of a bitstream, consisting of a specific sublayer and the NAL units of its lower sublayers.
[0220] A VPS RBSP may be available for decryption before being referenced and contained in at least one AU having a TemporalId equal to 0, or provided through external means. All VPS NAL units with a specific value for vps_video_parameter_set_id within the CVS may have the same content. Figure 22 shows an example of a VPS RBSP.
[0221] The `vps_video_parameter_set_id` provides an identifier for the VPS for reference by other syntax elements. The value of `vps_video_parameter_set_id` can be greater than 0.
[0222] Adding 1 to vps_max_sublayers_minus1 specifies the maximum number of temporal sublayers that can exist within each CVS referencing the VPS.
[0223] Adding 1 to vps_max_sublayers_minus1 specifies the maximum number of temporal sublayers that may exist within each CVS referencing the VPS. The value of vps_max_sublayers_minus1 can be in the range of 0 to 6, including both ends.
[0224] A value of 1 for vps_all_layers_same_num_sublayers_flag specifies that the number of temporal sublayers is the same for all layers within each CVS referencing the VPS. A value of 0 for vps_all_layers_same_num_sublayers_flag specifies whether or not each layer within each CVS referencing the VPS may have the same number of temporal sublayers. If it does not exist, the value of vps_all_layers_same_num_sublayers_flag is assumed to be equal to 1.
[0225] A vps_all_independent_layers_flag equal to 1 specifies that all layers in CVS are coded independently without using interlayer prediction. A vps_all_independent_layers_flag equal to 0 specifies that one or more layers in CVS may use interlayer prediction. If it is not present, the value of vps_all_independent_layers_flag is assumed to be equal to 1.
[0226] vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer. For any two non-negative integer values of m and n, the value of vps_layer_id[m] may be less than vps_layer_id[n] when m is less than n.
[0227] A vps_independent_layer_flag[i] equal to 1 indicates that the layer with index i does not use interlayer prediction. A vps_independent_layer_flag[i] equal to 0 indicates that the layer with index i may use interlayer prediction, and that a syntax element vps_direct_ref_layer_flag[i][j] within the range of 0 to i-1, including both ends, exists in the VPS. If it does not exist, the value of vps_independent_layer_flag[i] is assumed to be equal to 1.
[0228] A vps_direct_ref_layer_flag[i][j] equal to 0 indicates that the layer with index j is not a direct reference layer of the layer with index i. A vps_direct_ref_layer_flag[i][j] equal to 1 indicates that the layer with index j is a direct reference layer of the layer with index i. When no vps_direct_ref_layer_flag[i][j] exists for i and j within the range of 0 to vps_max_layers_minus1 (including both ends), it is assumed to be equal to 0. When vps_independent_layer_flag[i] is equal to 0, there may be at least one value for j within the range of 0 to i-1 (including both ends), and as a result, the value of vps_direct_ref_layer_flag[i][j] is equal to 1.
[0229] The variables NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r], and LayerUsedAsRefLayerFlag[j] are derived as follows:
number
[0230] The variable GeneralLayerIdx[i], which specifies the layer index of the layer having a nuh_layer_id equal to vps_layer_id[i], is derived as follows:
number
[0231] A requirement for bitstream standard compliance is that, for any two different values of both i and j within the range of 0 to vps_max_layers_minus1 including both ends, when dependencyFlag[i][j] is equal to 1, the values of chroma_format_idc and bit_depth_minus8 applied to the i-th layer can be equal to the values of chroma_format_idc and bit_depth_minus8 applied to the j-th layer, respectively.
[0232] A max_tid_ref_present_flag[i] equal to 1 indicates that the syntax element max_tid_il_ref_pics_plus1[i] exists. A max_tid_ref_present_flag[i] equal to 0 indicates that the syntax element max_tid_il_ref_pics_plus1[i] does not exist.
[0233] A max_tid_il_ref_pics_plus1[i] equal to 0 specifies that interlayer prediction will not be used for non-IRAP pictures in the i-th layer. A max_tid_il_ref_pics_plus1[i] greater than 0 specifies that pictures with a TemporalId greater than max_tid_il_ref_pics_plus1[i]-1 will not be used as ILRP for decoding the i-th layer picture. When none exists, the value of max_tid_il_ref_pics_plus1[i] is assumed to be equal to 7.
[0234] A value of 1 for each_layer_is_an_ols_flag indicates that each OLS contains only one layer, and each layer in CVS referencing the VPS is itself an OLS whose only contained layer is the output layer. A value of 0 for each_layer_is_an_ols_flag indicates that it may contain more than one layer. If vps_max_layers_minus1 is equal to 0, the value of each_layer_is_an_ols_flag is assumed to be equal to 1. Otherwise, if vps_all_independent_layers_flag is equal to 0, the value of each_layer_is_an_ols_flag is assumed to be equal to 0.
[0235] A value of ols_mode_idc equal to 0 indicates that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS contains layers with layer indices from 0 to i including both ends, and for each OLS, only the topmost layer within the OLS is output.
[0236] A value of ols_mode_idc equal to 1 indicates that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS contains layers with layer indices from 0 to i including both ends, and for each OLS, all layers within the OLS are output.
[0237] A value of ols_mode_idc equal to 2 specifies that the total number of OLS specified by the VPS is explicitly signaled, and for each OLS, the output layer is explicitly signaled, and the other layers are layers that are direct or indirect reference layers of the OLS's output layer.
[0238] The value of ols_mode_idc may be in the range of 0 to 2, including both ends. A value of 3 for ols_mode_idc is reserved for future use by ITU-T / ISO / IEC.
[0239] When vps_all_independent_layers_flag is equal to 1 and each_layer_is_an_ols_flag is equal to 0, the value of ols_mode_idc is estimated to be equal to 2.
[0240] Adding 1 to num_output_layer_sets_minus1 specifies the total number of OLS specified by the VPS when ols_mode_idc is equal to 2.
[0241] The variable TotalNumOlss, which specifies the total number of PLS specified by the VPS, is derived as follows:
number
[0242] A value of ols_output_layer_flag[i][j] equal to 1 indicates that, when ols_mode_idc is equal to 2, the layer with a nuh_layer_id equal to vps_layer_id[j] is the output layer of the i-th OLS. A value of ols_output_layer_flag[i][j] equal to 0 indicates that, when ols_mode_idc is equal to 2, the layer with a nuh_layer_id equal to vps_layer_id[j] is not the output layer of the i-th OLS.
[0243] The variables NumOutputLayersInOls[i], which specifies the number of output layers in the i-th OLS; NumSubLayersInLayerInOLS[i][j], which specifies the number of sublayers in the j-th layer in the i-th OLS; OutputLayerIdInOls[i][j], which specifies the nuh_layer_id of the j-th output layer in the i-th OLS; and LayerUsedAsOutputLayerFlag[k], which specifies whether the k-th layer is used as an output layer in at least one OLS, are derived as follows:
number
[0244] For each value of i in the range of 0 to vps_max_layers_minus1, including both ends, the values of LayerUsedAsRefLayerFlag[i] and LayerUsedAsOutputLayerFlag[i] do not need to be equal to 0. In other words, there do not need to be any layers that are neither an output layer of at least one OLS nor a direct reference layer of any other layer.
[0245] For each OLS, there may be at least one output layer. In other words, for any value of i in the range of 0 to TotalNumOlss-1, including both ends, the value of NumOutputLayersInOls[i] may be 1 or greater.
[0246] The variables NumLayersInOls[i], which specifies the number of layers in the i-th OLS, and LayerIdInOls[i][j], which specifies the nuh_layer_id value of the j-th layer in the i-th OLS, are derived as follows:
number
[0247] The variable OlsLayerIdx[i][j], which specifies the OLS layer index of the layer having nuh_layer_idequal equal to LayerIdInOls[i][j], is derived as follows:
number
[0248] The lowest layer within each OLS may be an independent layer. In other words, for each i in the range of 0 to TotalNumOlss-1, including both ends, the value of vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]] may be equal to 1.
[0249] Each layer may be contained within at least one OLS specified by the VPS. In other words, for each layer having a specific value nuh_layer_idnuhLayerId equal to one of vps_layer_id[k] for k in the range 0 to vps_max_layers_minus1 including both ends, there may be at least one pair of values i and j. Here, i is in the range 0 to TotalNumOlss-1 including both ends, and j is in the range NumLayersInOls[i]-1 including the ends, so that the value of LayerIdInOls[i][j] is equal to nuhLayerId.
[0250] In this embodiment, the value of temporalId for any VCL NAL unit in the coding video sequence does not need to be greater than vps_max_sublayers_minus1 in the VPS referenced by the VCL NAL unit.
[0251] In the same or another embodiment, max_tid_il_ref_pics_plus1[i] has the following semantics: max_tid_il_ref_pics_plus1[i] equal to 0 specifies that interlayer prediction is not used for non-IRAP pictures in the i-th layer. max_tid_il_ref_pics_plus1[i] greater than 0 specifies that pictures with a TemporalId greater than max_tid_il_ref_pics_plus1[i]-1 are not used as ILRP for decoding the picture in the i-th layer. When none exists, the value of max_tid_il_ref_pics_plus1[i] is assumed to be equal to vps_max_sublayers_minus1+1.
[0252] In another embodiment of the same type, max_tid_il_ref_pics_plus1[i] does not need to be greater than vps_max_sublayers_minus1+1.
[0253] In this embodiment, the output layer set for each sublayer does not need to be derived for each independent layer. Therefore, max_tid_il_ref_pics_plus1 and layerIncludedInOlsFlag do not need to be derived for each independent layer.
[0254] In the same yet another embodiment, the variables NumOutputLayersInOls[i], which specifies the number of output layers in the i-th OLS; NumSubLayersInLayerInOLS[i][j], which specifies the number of sublayers in the j-th layer in the i-th OLS; OutputLayerIdInOls[i][j], which specifies the nuh_layer_id of the j-th output layer in the i-th OLS; and LayerUsedAsOutputLayerFlag[k], which specifies whether the k-th layer is used as an output layer in at least one OLS, are derived as follows:
number
[0255] The technique for signaling the adaptive resolution parameters described above can be implemented as computer software using computer-readable instructions and can be physically stored on one or more computer-readable media. For example, Figure 7 shows a computer system 700 suitable for implementing a particular embodiment of the subject matter of this disclosure.
[0256] Computer software can be coded using any suitable machine code or computer language that can be processed by mechanisms such as assembly, compilation, and linking to generate code containing instructions that can be executed directly or through interpretation, microcode execution, etc., by a computer's central processing unit (CPU), graphics processing unit (GPU), etc.
[0257] The instructions can be executed on various computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, game consoles, Internet of Things devices, etc.
[0258] The components shown in Figure 7 of the computer system 700 are illustrative and do not imply any limitation on the scope of use or functionality of computer software implementing embodiments of this disclosure. Furthermore, the configuration of the components should not be construed as having any dependencies or requirements relating to any one or combination of the components shown in the exemplary embodiments of the computer system 700.
[0259] The computer system 700 may include certain human interface input devices. Such human interface input devices may respond to input from one or more human users through, for example, sensory input (e.g., keystrokes, swipes, data grab actions), voice input (e.g., voice, clapping), visual input (e.g., gestures), and olfactory input (not shown). The human interface devices can also be used to capture certain media that do not necessarily need to be directly related to conscious human input, such as voice (e.g., conversation, music, ambient sounds), images (e.g., scanned images, photographic images taken from a digital camera), and video (e.g., including 2D video, 3D video, and stereoscopic video).
[0260] The input human interface device may include one or more of a keyboard 701, a mouse 702, a trackpad 703, a touch screen 710, a data glove 704, a joystick 705, a microphone 706, a scanner 707, a camera 708 (only one of which is shown).
[0261] The computer system 700 may also include certain human interface output devices. Such human interface output devices may stimulate the senses of one or more human users, for example, through sensory output, sound, light, and smell / taste. Such human interface output devices may include sensory output devices (e.g., sensory feedback by the touch screen 710, the data glove 704, or the joystick 705, but there may also be sensory feedback devices that do not function as input devices), audio output devices (e.g., speakers 709, headphones (not shown)), visual output devices (e.g., including the screen 710, a CRT screen, an LCD screen, a plasma screen, an OLED screen, each with or without touch screen input capabilities, each with or without sensory feedback capabilities, some of which may output two-dimensional visual output or output of three or more dimensions through means such as, for example, stereoscopic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), and printers (not shown)).
[0262] The computer system 700 may also include a human-accessible memory device and related media such as an optical medium like a CD / DVDROM / RW 720 with a medium 721 such as a CD / DVD, a thumb drive 722, a removable hard drive or a solid-state drive 723, legacy magnetic media such as tapes and floppy disks (not shown), and devices based on dedicated ROM / ASIC / PLD such as security dongles (not shown).
[0263] One of ordinary skill in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not include a transmission medium, a carrier wave, or other transient signals.
[0264] Computer system 700 may also include an interface to one or more communication networks. The network can be, for example, wireless, wired, or optical. The network can further be local, wide area, metropolitan area, vehicular and industrial, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LET, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV, terrestrial broadcast TV, vehicular and industrial including CANBus, etc. A particular network generally requires an external network interface attached to a particular general-purpose data port or peripheral device bus (749) (e.g., a USB port of computer system 700). Others are generally integrated into the core of computer system 700 by attachment to a system bus as described later (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using these networks, computer system 700 can communicate with other entities. Such communication can be only unidirectional reception (e.g., broadcast TV), only unidirectional transmission (e.g., CANbus to a particular CANbus device), or bidirectional to other computer systems using, for example, local or wide area digital networks. Particular protocols and protocol stacks can be used for each of the networks and network interfaces described above.
[0265] The aforementioned human interface device, human-accessible storage device, and network interface can be attached to the core 740 of computer system 700.
[0266] The core 740 may include one or more central processing units (CPUs) 741, graphics processing units (GPUs) 742, dedicated programmable processing units in the form of FPGAs 743, hardware accelerators 744 for specific tasks, etc. These devices may be connected via a system bus 748, along with read-only memory (ROM) 745, random access memory 746, and internal mass storage devices 747 such as internal, user-inaccessible hard drives, SSDs, etc. In some computer systems, the system bus 748 is accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripherals can be attached directly to the core's system bus 748 or via a peripheral bus 749. The architecture of the peripheral bus includes PCI, USB, etc.
[0267] The CPU 741, GPU 742, FPGA 743, and accelerator 744 can execute specific instructions that, when combined, can generate the aforementioned computer code. This computer code can be stored in ROM 745 or RAM 746. Temporary data can also be stored in RAM 746, while permanent data can be stored, for example, in the built-in mass storage device 747. High-speed storage and retrieval to any of the memory devices can be enabled through the use of cache memory that may be closely associated with one or more CPUs 741, GPUs 742, mass storage devices 747, ROM 745, RAM 746, etc.
[0268] Computer-readable media may contain computer code for performing actions performed by various computers. The media and computer code may be specifically designed and configured for the purposes of this disclosure, or they may be of a type well known and available to those skilled in the computer software field.
[0269] As an example, and not limited to, a computer system 700 having an architecture, and specifically a core 740, can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be specific storage devices of the core 740 having non-transient characteristics, such as a core-integrated mass storage device 747 or ROM 745, and media associated with user-accessible mass storage devices as described above. Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core 740. The computer-readable media may include one or more memory devices or chips, depending on the specific needs. The software can cause the core 740 and specifically the processors within it (including a CPU, GPU, FPGA, etc.) to execute specific processes or specific parts of specific processes described herein, including defining and modifying data structures stored in RAM 746 according to software-defined processes. As an addition or alternative, a computer system may provide functionality as a result of a logic hardwired or other circuit implementation (e.g., accelerator 744) that can operate together with or in place of the software to perform the specific processes or specific parts of the specific processes described herein. References to software include logic, and vice versa, where appropriate. References to computer-readable media may include, where appropriate, circuits (such as integrated circuits (ICs)) that house software for execution, circuits that implement logic for execution, or both. This disclosure includes any appropriate combination of hardware and software.
[0270] While this disclosure describes several exemplary embodiments, alternatives, substitutions, and various equivalents exist and are included within the scope of this disclosure. As will be apparent to those skilled in the art, numerous systems and methods can be devised to implement the principles of this disclosure and thus fall within the spirit and scope of this disclosure, although these are not expressly shown or described herein.
Claims
[Claim 1] A method for decoding a coded video sequence using at least one processor, wherein the method is: The steps include obtaining the aforementioned coding video sequence, The steps include decoding the aforementioned coded video sequence, Includes, A method in which the value of the temporal sublayer identifier of a video coding layer (VCL) network abstraction layer (NAL) unit in the coding video sequence is constrained to be less than or equal to the value of vps_max_sublayers_minus1, which specifies the maximum number of temporal sublayers that can exist in a layer within each coding video sequence that references the video parameter set (VPS) referenced by the VCL NAL unit.