Technique for random access point indication and picture output in coded video stream

JP2025126215A5Pending Publication Date: 2026-02-17TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025103942
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2021-05-14
Filing Date
2025-06-19
Publication Date
2026-02-17

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies struggle with efficient management of random access points and picture output in coded video streams with multiple layers, leading to decoder crashes and unintended behavior due to unavailable reference pictures during trick mode play.

Method used

Implementing a method for signaling flags in video bitstreams to indicate Intra Random Access Point (IRAP) and Gradual Decoding Refresh (GDR) pictures, along with constraints for reference picture list construction and unavailable picture generation, ensuring proper decoding and output processing.

Benefits of technology

Ensures stable decoding and output of video streams with multiple layers by aligning flags for IRAP and GDR pictures, preventing decoder crashes and ensuring bitstream compatibility, thus enhancing video playback reliability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide systems and methods for decoding a coded video stream.SOLUTION: A method includes the steps of: receiving a coded video stream that includes an access unit, including a picture; signaling a first flag, in an access unit delimiter of the coded video stream, the first flag indicating whether the access unit includes either one of an intra random access point (IRAP) picture and a gradual decoding refresh (GDR) picture; signaling a second flag, in a picture header of the coded video stream, the second flag indicating whether the picture is the IRAP picture; and decoding the picture, as a current picture, based on the signaling of the first flag and the second flag. A value of the first flag and a value of the second flag are aligned.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Patent Application No. 63 / 037,903, filed June 11, 2020, U.S. Provisional Patent Application No. 63 / 036,335, filed June 8, 2020, U.S. Provisional Patent Application No. 63 / 035,274, filed June 5, 2020, U.S. Provisional Patent Application No. 63 / 027,826, filed May 20, 2020, and U.S. Patent Application No. 17 / 320,764, filed May 14, 2021, the disclosures of which are incorporated herein by reference in their entireties.

[0002] FIELD Embodiments of the present disclosure relate to video encoding and decoding, and more particularly to random access pictures in coded video streams having multiple layers and their output processing. [Background technology]

[0003] Video encoding and decoding using inter-picture prediction with motion compensation has been used before. Uncompressed digital video can include a series of pictures, each with spatial dimensions of, for example, 1920 x 1080 luma samples and associated chroma samples. The series of pictures can have a fixed or variable picture rate (also informally known as a frame rate), for example, 60 pictures per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video (1920 x 1080 luma sample resolution at a 60 Hz frame rate) with 8 bits per sample requires a bandwidth approaching 1.5 Gbit / s. One hour of such video requires more than 600 GB of storage space.

[0004] One goal of video encoding and decoding is to reduce redundancy in the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage requirements by two or more orders of magnitude, in some cases. Both lossless and lossy compression, as well as combinations of them, can be used. Lossless compression refers to techniques that allow an exact replica of the original signal to be restored from the compressed version. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signal may be small enough that the reconstructed signal is useful for the intended application. For video, lossy compression is widely adopted. The amount of acceptable distortion varies depending on the application. For example, users of certain consumer streaming applications may tolerate higher distortion than users of television posting applications. The achievable compression ratio may reflect that higher compression ratios are achieved with higher acceptable / tolerable distortion.

[0005] Video encoders and decoders can utilize techniques in several broad categories, such as motion compensation, transforms, quantization, and entropy coding, some of which are introduced below.

[0006] Previously, video coders and decoders tended to operate with a given picture size that remained constant and was defined for a coded video sequence (CVS), group of pictures (GOP), or similar multi-picture timeframe. For example, MPEG-2 used system design to vary the horizontal resolution (and thus the picture size) depending on factors such as scene activity, but only in I-pictures and therefore typically for GOPs. Reference picture resampling to use different resolutions within a CVS is used, for example, in ITU-T Rec. H.263 Annex P. However, here the picture size remains the same; only the reference picture is resampled, and 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 individual macroblocks to be resampled upward or downward by a factor of two (in each dimension). Again, the picture size remains the same. The size of the macroblock is fixed in H.263 and does not need to be signaled.

[0007] Resizing predicted pictures has become more mainstream in modern video coding. For example, VP9 allows for resampling of reference pictures and changing the resolution of the entire picture. Similarly, certain proposals for VVC (e.g., Hendry et al., "On adaptive resolution change (ARC) for VVC," Joint Video Team document JVET-M 0135-v1, January 9-19, 2019, incorporated herein in its entirety) allow for resampling of the entire reference picture to a different (higher or lower) resolution. Such documents propose different candidate resolutions that are coded in the sequence parameter set and referenced by per-picture syntax elements in the picture parameter set.

[0008] Bross et al., "Versatile Video Coding (Draft 9)," Joint Video Experts Team document JVET-R 2001-vA, April 2020, is incorporated herein in its entirety. Summary of the Invention [Means for solving the problem]

[0009] In coded video streams, it is widely used to indicate random access point information in high-level syntax structures such as network abstraction layer (NAL) unit headers, parameter sets, picture headers, or slice headers. Based on the random access information, the decoded first picture associated with the random access picture is managed. In this disclosure, some related syntax elements and constraints are described to clarify the decoded picture management related to the random access process.

[0010] When a video bitstream is randomly accessed through trick mode play, intra random access point (IRAP) pictures can enable random access to midpoints in the bitstream and successful decoding of the video bitstream at the random access points. One possible method is to gradually refresh scenes with some recovery time. In VVC and other video codecs, gradual decoding refresh (GDR) pictures and access units (AUs) are defined to specify the syntax and semantics of random access operations with gradual decoding refresh. This disclosure describes the syntax, semantics, and constraints of GDR to correctly specify its signaling and decoding process.

[0011] When one or more reference picture lists are constructed for inter prediction in P or B slices, one or more pictures may be unavailable due to random access or unintended picture loss. To avoid a decoder crash or unintended behavior, it is desirable to generate unavailable pictures with initial pixel and parameter values. After generating the unavailable picture, it may be necessary to check the verification of all reference pictures in the reference picture list.

[0012] Embodiments of the present disclosure relate to random access pictures and their output processing in coded video streams with multiple layers. Embodiments of the present disclosure relate to random access pictures and their first picture output indication in coded video streams with multiple layers. Embodiments of the present disclosure relate to signaling random access pictures using gradual decoding refresh and restoration points in coded video streams with multiple layers. Embodiments of the present disclosure relate to reference picture list construction and unavailable picture generation in coded video streams with multiple layers. Embodiments of the present disclosure include techniques for signaling adaptive picture sizes in video bitstreams.

[0013] One or more embodiments of the present disclosure include a method, executed by at least one processor, that includes receiving an encoded video stream including an access unit containing a picture, signaling a first flag in an access unit delimiter of the encoded video stream that indicates whether the access unit includes one of an Intra Random Access Point (IRAP) picture and a Gradual Decoding Refresh (GDR) picture, signaling a second flag in a picture header of the encoded video stream that indicates whether the picture is an IRAP picture, and decoding the picture as a current picture based on the signaling of the first flag and the second flag, wherein the value of the first flag and the value of the second flag are aligned.

[0014] According to one embodiment, the method further comprises signaling a third flag in the picture header of the encoded video stream indicating whether the picture is a GDR picture or not, wherein the value of the first flag and the value of the third flag are aligned.

[0015] According to one embodiment, the third flag is signaled based on the second flag indicating that the picture is not an IRAP picture.

[0016] According to one embodiment, the first flag has a value indicating that the picture is one of an IRAP picture and a GDR picture, the second flag has a value indicating that the picture is an IRAP picture, and the method further comprises signaling a third flag in a slice header of a slice of the picture of the coded video stream indicating whether any pictures before the IRAP picture are to be output.

[0017] According to one embodiment, the method further includes a step of determining a network abstraction layer (NAL) unit type of the slice, and a third flag is signaled based on the determined NAL unit type.

[0018] According to one embodiment, the third flag is signaled based on the NAL unit type being determined to be equal to IDR_W_RADL, IDR_N_LP, or CRA_NUT.

[0019] According to one embodiment, the method further comprises signaling a fourth flag in the picture header of the encoded video stream indicating whether the picture is a GDR picture or not, the value of the first flag and the value of the fourth flag being aligned.

[0020] According to one embodiment, the third flag is signaled based on the second flag indicating that the picture is not an IRAP picture.

[0021] According to one embodiment, the decoding step includes the steps of building a reference picture list, generating unavailable reference pictures in the reference picture list, and checking bitstream compatibility for reference pictures in the reference picture list, subject to the following constraints: the number of entries indicated to be in the reference picture list is greater than or equal to the number of active entries indicated to be in the reference picture list, each picture referenced by an active entry in the reference picture list is present in the decoded picture buffer (DPB) and has a temporal identifier value less than or equal to the temporal identifier value of the current picture, and each picture referenced by an entry in the reference picture list is indicated by a picture header flag as potentially being a reference picture rather than the current picture.

[0022] According to one embodiment, the step of verifying bi-stream compatibility is performed based on determining that the current picture is an independent decoder refresh (IDR) picture, a clean random access (CRA) picture, or a gradual decoding refresh (GDR) picture.

[0023] According to one or more embodiments, a system is provided that includes at least one processor configured to receive an encoded video stream that includes access units containing pictures, and a memory that stores computer code including: first signaling code configured to cause the at least one processor to signal a first flag in an access unit delimiter of the encoded video stream that indicates whether the access unit includes one of an Intra Random Access Point (IRAP) picture and a Gradual Decoding Refresh (GDR) picture, second signaling code configured to cause the at least one processor to signal a second flag in a picture header of the encoded video stream that indicates whether the picture is an IRAP picture, and decoding code configured to cause the at least one processor to decode the picture as a current picture based on the signaling of the first flag and the second flag, wherein the values ​​of the first flag and the second flag are aligned.

[0024] According to one embodiment, the computer code comprises: The video signaling system further includes a third signaling code configured to cause at least one processor to signal a third flag in a picture header of the encoded video stream indicating whether the picture is a GDR picture, wherein the value of the first flag and the value of the third flag are aligned.

[0025] According to one embodiment, the third flag is signaled based on the second flag indicating that the picture is not an IRAP picture.

[0026] According to one embodiment, the first flag has a value indicating that the picture is one of an IRAP picture and a GDR picture, the second flag has a value indicating that the picture is an IRAP picture, and the computer code further includes third signaling code configured to cause the at least one processor to signal a third flag indicating whether any pictures before the IRAP picture in a slice header of a slice of the picture of the encoded video stream have been output.

[0027] According to one embodiment, the computer code further includes determining code configured to cause at least one processor to determine a network abstraction layer (NAL) unit type of the slice, and the third flag is signaled based on the determined NAL unit type.

[0028] According to one embodiment, the third flag is signaled based on the NAL unit type being determined to be equal to IDR_W_RADL, IDR_N_LP, or CRA_NUT.

[0029] According to one embodiment, the computer code further includes a fourth signaling codec configured to cause the at least one processor to signal a fourth flag in a picture header of the encoded video stream indicating whether the picture is a GDR picture, and the value of the first flag and the value of the fourth flag are aligned.

[0030] According to one embodiment, the third flag is signaled based on the second flag indicating that the picture is not an IRAP picture.

[0031] According to one embodiment, the decoding code includes construction code configured to cause at least one processor to construct a reference picture list; generation code configured to cause the at least one processor to generate reference pictures that are not available in the reference picture list; and verification code configured to cause the at least one processor to verify bitstream compatibility of reference pictures in the reference picture list, wherein the following constraints apply: the number of entries indicated to be in the reference picture list is greater than or equal to the number of active entries indicated to be in the reference picture list; each picture referenced by an active entry in the reference picture list is present in the decoded picture buffer (DPB) and has a temporal identifier value that is less than or equal to the temporal identifier value of the current picture; and each picture referenced by an entry in the reference picture list is not the current picture but is indicated as a possible reference picture by a picture header flag.

[0032] According to one or more embodiments, a non-transitory computer-readable medium is provided that stores computer instructions that, when executed by at least one processor receiving an encoded video stream that includes an access unit that includes a picture, cause the at least one processor to perform the following steps: signaling a first flag in an access unit delimiter of the encoded video stream that indicates whether the access unit includes one of an Intra Random Access Point (IRAP) picture and a Gradual Decoding Refresh (GDR) picture; signaling a second flag in a picture header of the encoded video stream that indicates whether the picture is an IRAP picture; and decoding the picture as a current picture based on the signaling of the first flag and the second flag, wherein the values ​​of the first flag and the second flag are aligned.

[0033] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Brief explanation of the drawings]

[0034] [Figure 1] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to one embodiment. [Figure 2] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to one embodiment. [Figure 3] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment. [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment. [Figure 5A] 1 is a schematic diagram of a first configuration for signaling ARC parameters according to an embodiment of the comparison technique; [Figure 5B] 10 is a schematic diagram of a second configuration for signaling ARC parameters according to an embodiment of the comparison technique. [Figure 6A] FIG. 2 is a schematic diagram of a first configuration for signaling ARC parameters according to one embodiment; [Figure 6B] FIG. 10 is a schematic diagram of a second configuration for signaling ARC parameters according to one embodiment. [Figure 6C] FIG. 10 is a schematic diagram of a third configuration for signaling ARC parameters according to one embodiment. [Figure 7A] 10 is a schematic diagram of an excerpt of a tile group header according to one embodiment. [Figure 7B] FIG. 1 is a schematic diagram of an excerpt of a sequence parameter set according to one embodiment. [Figure 8] 1 is an example of a prediction structure for scalability with adaptive resolution change. [Figure 9A] FIG. 2 illustrates an example of a syntax table according to one embodiment. [Figure 9B] FIG. 2 illustrates an example of a syntax table according to one embodiment. [Figure 10]FIG. 10 is a schematic diagram of a simplified block diagram of parsing and decoding POC cycles per access unit and access unit count values, according to one embodiment. [Figure 11] FIG. 1 is a schematic diagram of a video bitstream structure including multi-layer sub-pictures according to one embodiment. [Figure 12] FIG. 10 is a schematic diagram of a display of a selected subpicture with enhanced resolution, according to one embodiment. [Figure 13] FIG. 1 is a block diagram of a decoding and display process for a video bitstream containing multi-layer subpictures according to one embodiment. [Figure 14] FIG. 1 is a schematic diagram of a 360 video display with an enhancement layer of sub-pictures, according to one embodiment. [Figure 15A] 10 illustrates an example layout of a divided sub-picture according to an embodiment. [Figure 15B] FIG. 2 illustrates an example of corresponding sub-picture size and position information for one sub-picture, according to one embodiment. [Figure 16] 15A-15B show corresponding picture prediction structures for the sub-pictures shown in FIGS. [Figure 17] 1 illustrates an example of an input picture divided into multiple sub-regions that may be coded with one or more layers, according to one embodiment. [Figure 18] FIG. 18 illustrates the corresponding layer and picture prediction structure with local-region spatial scalability format for the sub-regions shown in FIG. 17. [Figure 19A] 1 is a schematic diagram of an excerpt of a video parameter set according to one embodiment; [Figure 19B] FIG. 1 is a schematic diagram of an excerpt of a sequence parameter set according to one embodiment. [Figure 20] 10 is an example of a syntax table for subpicture layout information according to one embodiment. [Figure 21] 1 is an example of a syntax table showing output layers and profile / tier / level information for each output layer set, according to one embodiment. [Figure 22]1 is an example syntax table illustrating output layer modes for each output layer set, according to one embodiment. [Figure 23] 10 is an example syntax table showing the current subpicture of each layer for each output layer set. [Figure 24] 10 is an example of a syntax table for a video parameter set RBSP. [Figure 25] 10 is an example of a syntax table showing an output layer set in output layer set mode. [Figure 26] 10 is an example of a syntax table for indicating a random access point associated with an IRAP picture or GDR picture in a picture header. [Figure 27] 10 is an example of a syntax table showing a random access AU within an AU delimiter. [Figure 28] 10 is an example of a syntax table for indicating the presence of an IRAP picture in a picture header. [Figure 29] 10 is an example of a syntax table showing the output of the first picture in a slice header. [Figure 30] 10 is an example of a syntax table for indicating the presence of IRAP and GDR pictures in an AU delimiter. [Figure 31] 1 is an example of a syntax table for indicating a GDR picture and its restoration point in a picture header. [Figure 32] FIG. 1 is a simplified block diagram schematic of reference picture list construction and unavailable picture generation. [Figure 33] FIG. 2 is a block diagram of computer code according to an embodiment. [Figure 34] FIG. 1 illustrates a computer system suitable for implementing embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0035] FIG. 1 illustrates 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 the case of one-way data transmission, a first terminal (110) may locally encode video data for transmission to another terminal (120) via the network (150). The second terminal (120) may receive the other terminal's encoded video data from the network (150), decode the encoded data, and display the recovered video data. One-way data transmission may be common in media serving applications, for example.

[0036] 1 illustrates a second pair of terminals (130, 140) provided to support bidirectional transmission of encoded video, such as might occur during a video conference. For bidirectional transmission of data, each terminal (130, 140) can encode video data captured at its local location for transmission to the other terminal over the network (150). Each terminal (130, 140) can also receive encoded video data transmitted by the other terminal, decode the encoded data, and display the decoded video data on a local display device.

[0037] In FIG. 1 , the terminals (110-140) may be depicted as servers, personal computers, smartphones, and / or any other type of terminal. For example, the terminals (110-140) may be laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. The network (150) represents any number of networks that convey encoded video data between the terminals (110-140), including, for example, wired and / or wireless communication networks. The communication network (150) may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this discussion, the architecture and topology of the network (150) may not be important to the operation of the present disclosure, unless otherwise described herein.

[0038] 2 shows the arrangement of a video encoder and decoder in a streaming environment as an example of an application for the disclosed subject matter. The disclosed subject matter may be equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.

[0039] As shown in FIG. 2, the streaming system (200) may include a capture subsystem (213) that may include a video source (201) and an encoder (203). The video source (201) may be, for example, a digital camera and may be configured to create an uncompressed video sample stream (202). The uncompressed video sample stream (202) may provide a higher amount of data compared to an encoded video bitstream and may be processed by an encoder (203) coupled to the camera (201). The encoder (203) may include hardware, software, or a combination thereof for enabling or implementing aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream (204) may contain a lower amount of data compared to the sample stream and may be stored on a streaming server (205) for future use. One or more streaming clients (206) may access the streaming server (205) to obtain a video bitstream (209), which may be a replica of the encoded video bitstream (204).

[0040] In embodiments, the streaming server (205) may also function as a Media-Aware Network Element (MANE). For example, the streaming server (205) may be configured to prune the encoded video bitstream (204) to tailor potentially different bitstreams to one or more of the streaming clients (206). In embodiments, a MANE may be provided separately from the streaming server (205) in the streaming system (200).

[0041] The streaming client (206) may include a video decoder (210) and a display (212). The video decoder (210) may, for example, decode a video bitstream (209), which may be an input replica of the encoded video bitstream (204), and generate an output video sample stream (211) that may be rendered on a display (212) or another rendering device (not shown). In some streaming systems, the video bitstreams (204, 209) may be encoded according to a particular video encoding / compression standard. Examples of such standards include, but are not limited to, ITU-T Recommendation H.265. In one example, a video encoding standard under development is informally known as Versatile Video Coding (VVC). Embodiments of the present disclosure may be used in the context of VVC.

[0042] FIG. 3 illustrates an exemplary functional block diagram of a video decoder (210) attached to a display (212) according to one embodiment of the present disclosure.

[0043] The video decoder (210) may include a channel (312), a receiver (310), a buffer memory (315), an entropy decoder / analyzer (320), a scaler / inverse transform unit (351), an intra-prediction unit (352), a motion-compensated prediction unit (353), an aggregator (355), a loop filter unit (356), a reference picture memory (357), and a current picture memory (). In at least one embodiment, the video decoder (210) may include an integrated circuit, a series of integrated circuits, and / or other electronic circuitry. The video decoder (210) may also be embodied partially or entirely in software running on one or more CPUs with associated memory.

[0044] In this and other embodiments, the receiver (310) may receive one or more coded video sequences, one coded video sequence at a time, to be decoded by the decoder (210), with the decoding of each coded video sequence being independent of the 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 the coded video data. The receiver (310) may receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, that may be forwarded to a respective using entity (not shown). The receiver (310) may separate the coded video sequences from other data. To combat network jitter, a buffer memory (315) may be coupled between the receiver (310) and the entropy decoder / analyzer (320) (hereinafter, the “analyzer”). When the receiver (310) is receiving data from a store-and-forward device of sufficient bandwidth and controllability or from an asynchronous network, the buffer (315) may not be used or may be small. For use in best effort packet networks such as the Internet, a buffer (315) may be required, can be relatively large, and can be adaptively sized.

[0045] The video decoder (210) may include a parser (320) for reconstructing symbols (321) from the entropy-coded video sequence. These symbol categories include, for example, information used to manage the operation of the decoder (210) and, potentially, information for controlling a rendering device, such as a display (212), which may be coupled to the decoder as shown in FIG. 2. The rendering device control information may be in the form of a Supplementary Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (320) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow principles well known to those skilled in the art, including variable-length coding, Huffman coding, arithmetic coding with or without context-sensitivity, etc. The analyzer (320) can extract from the coded video sequence a set of subgroup parameters for at least one of a subgroup of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroup can include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The analyzer (320) can also extract from the coded video sequence information such as transform coefficients, quantization parameter values, motion vectors, etc.

[0046] The analyzer (320) can perform entropy decoding / analysis operations on the video sequence received from the buffer (315) to produce symbols (321).

[0047] The reconstruction of the symbols (321) may involve several different units, depending on the type of coded video picture or portion thereof (e.g., inter-picture and intra-picture, inter-block and intra-block, etc.), as well as other factors. Which units are involved and how they are involved may be controlled by subgroup control information parsed from the coded video sequence by the parser (320). The flow of such subgroup control information between the parser (320) and the following units is not shown for clarity.

[0048] In addition to the functional blocks already mentioned, decoder 210 may be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate.

[0049] One unit may be a scalar / inverse transform unit (351), which may receive quantized transform coefficients as well as control information from the analyzer (320) including which transform to use, block size, quantization coefficients, quantization scaling matrices, etc. as symbol(s) (321). The scalar / inverse transform unit (351) may output blocks comprising sample values ​​that may be input to an aggregator (355).

[0050] In some cases, the output samples of the scaler / inverse transform unit (351) may relate to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by an intra-picture prediction unit (352). In some cases, the intra-picture prediction unit (352) generates blocks of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from the current (partially reconstructed) picture from a current picture memory (358). The aggregator (355) may optionally add the prediction information generated by the intra-prediction unit (352) to the output sample information from the scaler / inverse transform unit (351) on a sample-by-sample basis.

[0051] In other cases, the output samples of the scaler / inverse transform unit (351) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion-compensated prediction unit (353) may access the reference picture memory (357) to fetch samples used for prediction. After motion-compensating the fetched samples according to the symbols (321) associated with the block, these samples may be added by the aggregator (355) to the output of the scaler / inverse transform unit (351) to generate output sample information (in this case, referred to as residual samples or residual signals). The addresses in the reference picture memory (357) from which the motion-compensated prediction unit (353) fetches prediction samples may be controlled by a motion vector. The motion vector may be available to the motion-compensated prediction unit (353), for example, in the form of symbols (321) that may have X, Y, and reference picture components. Motion compensation may also include interpolation of sample values ​​fetched from the reference picture memory (357) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.

[0052] The output samples of the aggregator (355) may be subjected to various loop filtering techniques in the loop filter unit (356). Video compression techniques may include in-loop filtering techniques controlled by parameters contained in the coded video bitstream and available to the loop filter unit (356) as symbols (321) from the analyzer (320), but may also be responsive to meta-information obtained during decoding of a coded picture or previous (in decoding order) part of the coded video sequence, or to previously reconstructed and loop-filtered sample values.

[0053] The output of the loop filter unit (356) can be a sample stream that can be output to a rendering device such as a display (212) and can also be stored in a reference picture memory (357) for use in future inter-picture prediction.

[0054] Once fully reconstructed, a particular coded picture can be used as a reference picture for future prediction. Once a coded picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the analyzer (320)), the current reference picture can become part of the reference picture memory (357), and fresh current picture memory can be reallocated before starting reconstruction of the next coded picture.

[0055] The video decoder (210) may perform decoding operations according to a predetermined video compression technology, which may be documented in a standard such as ITU-T Rec. H.265. The encoded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that it conforms to the video compression technology or standard's syntax and the video compression technology document or standard, particularly the profile document therein. To comply with some video compression technologies or standards, the complexity of the encoded video sequence may also be within a range defined by the level of the video compression technology or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further limited by a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled in the encoded video sequence.

[0056] In one embodiment, the receiver (310) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence. The additional data may be used by the video decoder (210) to properly 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 enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0057] FIG. 4 illustrates an exemplary functional block diagram of a video encoder (203) associated with a video source (201), according to one embodiment of the present disclosure.

[0058] The video encoder (203) may include an encoder, for example, a source encoder (430), an encoding engine (432), a (local) decoder (433), a reference picture memory (434), a predictor (435), a transmitter (440), an entropy encoder (445), a controller (450), and a channel (460).

[0059] The encoder (203) can receive video samples from a video source (201) (not part of the encoder) that can capture video images to be encoded by the encoder (203).

[0060] The video source (201) may provide the source video sequence to be encoded by the encoder (203) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 YCrCB, RGB, etc.), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media serving 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 multiple individual pictures that, when viewed sequentially, create motion. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art will readily understand the relationship between pixels and samples. The following description will focus on samples.

[0061] According to one embodiment, the encoder (203) may encode and compress pictures of a source video sequence into an encoded video sequence (443) in real time or under any other time constraints, as required by the application. Enforcing an appropriate encoding rate is one function of the controller (450). The controller (450) may also control and be functionally coupled to other functional units, as described below. Coupling is not shown for clarity. Parameters set by the controller (450) may include rate control-related parameters (e.g., picture skip, quantization, lambda value for rate-distortion optimization techniques), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art will readily identify other functions of the controller (450) as they may relate to optimizing the video encoder (203) for a particular system design.

[0062] Some video encoders operate in a manner that a skilled person would easily recognize as a "coding loop." As an oversimplified explanation, the encoding loop may consist of a source encoder (430) encoding portion (responsible for creating symbols based on the input picture to be coded and reference pictures), a (local) decoder (433) embedded in the encoder (203), and a (remote) decoder (434) that reconstructs the symbols and creates sample data (if the compression between the symbols and the coded video bitstream is lossless for the particular video compression technique). The reconstructed sample stream is input into a reference picture memory (434). Because decoding of the symbol stream yields bit-accurate results regardless of the decoder's location (local or remote), the reference picture memory contents are also bit-accurate between the local encoder and the remote encoder. In other words, the encoder's prediction portion "sees" the exact same sample values ​​as the decoder "sees" when using prediction during decoding. This basic principle of reference picture synchrony (and the drift that occurs when synchrony cannot be maintained, for example due to channel errors) is known to those skilled in the art.

[0063] The operation of the "local" decoder (433) may be the same as that of the "remote" decoder (210), which has already been described in detail above in connection with Figure 3. However, because symbols are available and the encoding / decoding of symbols into an encoded video sequence by the entropy coder (445) and analyzer (320) may be lossless, the entropy decoding portion of the decoder (210), including the channel (312), receiver (310), buffer (315), and analyzer (320), may not be fully implemented in the local decoder (433).

[0064] An observation that can be made at this point is that any decoder technology, with the exception of parsing / entropy decoding, present in the decoder may need to be present in substantially identical functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on decoder operation. Descriptions of encoder technology can be omitted, as they may be the inverse of the decoder technology described generically. Only in certain areas are more detailed descriptions required and are provided below.

[0065] As part of its operation, the source encoder (430) may perform motion-compensated predictive encoding, which predictively encodes an input frame with reference to one or more previously encoded frames from the video sequence designated as “reference frames.” In this manner, the encoding engine (432) encodes differences between pixel blocks of the input frame and pixel blocks of reference frames that may be selected as predictive references for the input frame.

[0066] The local video decoder (433) may decode the encoded video data of a frame that may be designated as a reference frame based on symbols created by the source encoder (430). The operation of the encoding engine (432) may advantageously be a lossy process. When the encoded video data is decoded by a video decoder (not shown in FIG. 4), the reconstructed video sequence may typically be a replica of the source video sequence, possibly with some errors. The local video decoder (433) may replicate the decoding process that may be performed by the video decoder on the reference frame and store the reconstructed reference frame in the reference picture memory (434). In this way, the encoder (203) may locally store a replica of the reconstructed reference frame that has common content with a reconstructed reference frame (without transmission errors) obtained by the far-end video decoder.

[0067] The predictor (435) may perform the prediction search of the coding engine (432). That is, for a new frame to be encoded, the predictor (435) may search the reference picture memory (434) for specific metadata that serve as appropriate prediction references for the new picture, such as sample data (as candidate reference pixel blocks) or reference picture motion vectors, block shapes, etc. The predictor (435) may operate on a sample block-pixel block basis to find appropriate prediction references. In some cases, as determined by the search results obtained by the predictor (435), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (434).

[0068] The controller (450) may manage the encoding operations of the video encoder (430), including, for example, setting parameters and subgroup parameters used to encode the video data.

[0069] The output of all the aforementioned functional units may undergo entropy coding in an entropy coder (445), which converts the symbols produced by the various functional units into an encoded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.

[0070] The transmitter (440) can buffer the encoded video sequence created by the entropy encoder (445) and prepare it for transmission over a communication channel (460), which can be a hardware / software link to a storage device that stores the encoded video data. The transmitter (440) can merge the encoded video data from the video encoder (430) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).

[0071] The controller (450) may manage the operation of the encoder (203). During encoding, the controller (450) may assign a particular coded picture type to each coded picture, which may affect the coding technique that may be applied to the respective picture. For example, pictures are often assigned as intra-pictures (I-pictures), predicted pictures (P-pictures), or bidirectionally predicted pictures (B-pictures).

[0072] An intra-picture (I-picture) is one that can be coded and decoded without using other frames in a sequence as a source of prediction. Some video codecs allow different types of intra-pictures, including, for example, independent decoder refresh (IDR) pictures. Those skilled in the art are aware of these variations of I-pictures and their respective uses and characteristics.

[0073] A predicted picture (P picture) may be one that can be coded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict the sample values ​​of each block.

[0074] Bidirectionally predicted pictures (B-pictures) may be those that can be coded and decoded using intra- or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, multiple predicted pictures may use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0075] A source picture is typically spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to the block's respective picture. For example, blocks of an I-picture may be nonpredictively coded, or they may be predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra-prediction). Pixel blocks of a P-picture may be nonpredictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be nonpredictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.

[0076] The video encoder (203) may perform encoding operations according to a predetermined video encoding technique or standard, such as ITU-T Rec. H.265. In its operations, the video encoder (203) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancies in the input video sequence. Thus, the encoded video data may conform to the syntax specified by the video encoding technique or standard being used.

[0077] In one embodiment, the transmitter (440) may transmit additional data along with the encoded video. The video encoder (430) may include such data as part of the encoded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures or slices, Supplemental Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.

[0078] Before describing certain aspects of embodiments of the present disclosure in more detail, some terms that will be referenced in the remainder of the specification are introduced below.

[0079] Hereinafter, "subpicture" refers to a rectangular arrangement of samples, blocks, macroblocks, coding units, or similar entities that may be semantically grouped and coded independently at varying resolutions. One or more subpictures may form a picture. One or more coded subpictures may form a coded picture. One or more subpictures may be assembled into a picture, and one or more subpictures may be extracted from a picture. In certain circumstances, one or more coded subpictures may be assembled in the compressed domain without transcoding the coded picture to the sample level. And, in the same or certain other cases, one or more coded subpictures may be extracted from a coded picture in the compressed domain.

[0080] "Adaptive resolution change" (ARC) hereafter refers to a mechanism that enables changing the resolution of pictures or sub-pictures in a coded video sequence, for example, by reference picture resampling. Hereinafter, "ARC parameters" refers to the control information needed to perform adaptive resolution change, which may include, for example, filter parameters, scaling factors, output and / or reference picture resolutions, various control flags, etc.

[0081] The above description focuses on encoding and decoding of a single, semantically independent coded video picture. Before describing the implications of encoding / decoding multiple sub-pictures with independent ARC parameters and the additional complexity that it implies, an embodiment for signaling ARC parameters shall be described.

[0082] Referring to Figures 6A-6C, several novel exemplary embodiments for signaling ARC parameters are shown. As noted for each embodiment, they have particular advantages in terms of coding efficiency, complexity, and architecture. A video coding standard or technology may implement one or more of these embodiments and may also include embodiments known from comparable technologies for signaling ARC parameters. Examples of comparable technology embodiments include the examples shown in Figures 5A-5B. It is contemplated that the novel embodiments are not mutually exclusive and may be included in a standard or technology that also includes comparable technology embodiments, so that either may be used based on application needs, related standard technology, or encoder choice.

[0083] Classes of ARC parameters can include (1) up / downsample coefficients separated or combined in the X and Y dimensions, or (2) up / downsample coefficients indicating a constant speed zoom in / out of a given number of pictures with the addition of a time dimension. Either of the above two may involve encoding or decoding one or more syntax elements that can point to a table containing the elements. Such syntax elements may be short in length in some embodiments.

[0084] "Resolution" may refer to the resolution of the X or Y dimension in units of sample, block, macroblock, CU, or any other suitable granularity, of an input picture, an output picture, a reference picture, a coded picture, combined or individual. When there are two or more resolutions (e.g., one for the input picture, one for the reference picture, etc.), one set of values ​​may be inferred from another set of values ​​in certain cases. Resolution may be gated, for example, by the use of a flag. More detailed examples of resolution are provided further below.

[0085] The "warping" coordinates may be of appropriate granularity, as described above, similar to those used in H.263 Annex P. H.263 Annex P defines one efficient way of encoding such warping coordinates, but other, potentially more efficient methods are also possible. For example, Annex P's variable-length, reversible "Huffman"-style encoding of warping coordinates could be replaced by an appropriate-length binary encoding, where the length of the binary codeword could be derived, for example, from the maximum picture size, possibly multiplied by a specific factor and offset by a specific value to allow "warping" outside the bounds of the maximum picture size.

[0086] With regard to the upsample or downsample filter parameters, in the simplest case, there may be only a single filter for upsampling and / or downsampling. However, in certain cases, it may be advantageous to allow more flexibility in filter design than can be implemented by signaling filter parameters. Such parameters may be selected via an index in a list of possible filter designs, the filter may be fully specified (e.g., via a list of filter coefficients using an appropriate entropy coding technique), and / or the filter may be selected implicitly via an up / downsample ratio signaled according to one of the mechanisms described above.

[0087] In the following, we take the example of encoding a finite set of up / downsample coefficients (the same coefficients used in both the X and Y dimensions) denoted by a codeword. The codeword can be advantageously variable-length coded, for example, by using Ext-Golomb codes common to certain syntax elements in video coding specifications such as H.264 and H.265. One suitable mapping of values ​​to up / downsample coefficients can, for example, follow Table 1 below.

[0088] [Table 1]

[0089] Many similar mappings can be devised according to the needs of the application and the capabilities of the upscaling and downscaling mechanisms available in the video compression technology or standard. The table can be extended to more values. The values ​​can also be represented by entropy coding mechanisms other than Ext-Golomb codes (e.g., using binary coding), which may have particular advantages if the resampling factor is of interest outside the video processing engine itself (first and foremost, the decoder and encoder), e.g., by MANE. Note that in the (probably) most common case where no resolution change is required, one can choose a short (e.g., only a single bit, as shown in the second row of Table 1) Ext-Golomb code, which may have coding efficiency advantages over using a binary code in the most common case.

[0090] The number of entries in a table, as well as their semantics, may be fully or partially configurable. For example, the basic outline of the table may be conveyed in a "high" parameter set, such as a sequence or decoder parameter set. Alternatively or additionally, one or more such tables may be defined in a video coding technology or standard and may be selected, for example, via a decoder or sequence parameter set.

[0091] The following describes how the upsample / downsample coefficients (ARC information) coded as described above can be included in a video coding technique or standard syntax. Similar considerations can also be applied to one or several codewords that control an up / downsample filter. The following also provides a description of when a relatively large amount of data is required for a filter or other data structure.

[0092] 5A, H.263 Annex P includes ARC information (502) in the form of four warping coordinates within the picture header (501), specifically within the H.263 PLUSPTYPE (503) header extension. Such a design may be sensible when (a) there is a picture header available and (b) frequent changes to the ARC information are expected. However, the overhead when using H.263-style signaling can be very high, and because picture headers can be transient in nature, scaling factors may not be related to picture boundaries.

[0093] Referring to Figure 5B, JVCET-M 135-v1 includes ARC reference information (505) (index) located in a picture parameter set (504) that indexes a table (506) containing target resolutions located in a sequence parameter set (507). The placement of possible resolutions in the table (506) within the sequence parameter set (507) can be justified by using the SPS (507) as an interoperability negotiation point during capability exchange. Resolution can be varied within the limits set by the values ​​in the table (506) on a picture-by-picture basis by referencing the appropriate picture parameter set (504).

[0094] Referring to Figures 6A-6C, the following embodiments of the present disclosure can convey ARC information in a video bitstream, for example, to a decoder of the present disclosure. Each of these embodiments has specific advantages over the comparable techniques described above. The embodiments may coexist in the same video coding technology or standard.

[0095] In the embodiment referring to FIG. 6A , the ARC information (509), such as a resampling (zoom) factor, may reside in a header (508), such as a slice header, a GOB header, a tile header, or a tile group header. As an example, FIG. 6A shows the header (508) as a tile group header. Such a configuration may be appropriate when the ARC information is small, such as a single variable-length ue(v) or a fixed-length codeword of a few bits, as shown in Table 1. Having the ARC information directly in the tile group header has the added advantage that the ARC information may be applicable to, for example, a subpicture represented by the tile group corresponding to the tile group header, rather than to the entire picture. Additionally, even if a video compression technology or standard uses only whole-picture adaptive resolution changes (as opposed to, for example, tile-group-based adaptive resolution changes), placing the ARC information in the tile group header (e.g., in an H.263-style picture header) has certain advantages in terms of error resilience. The above description has been given for the case where the ARC information (509) is present in the tile group header, but it goes without saying that the above description is equally applicable to the case where the ARC information (509) is present in, for example, a slice header, a GOB header, or a tile header.

[0096] In the same or another embodiment referring to FIG. 6B, the ARC information (512) itself may reside in an appropriate parameter set (511), such as a picture parameter set, a header parameter set, a tile parameter set, or an adaptive parameter set. As an example, FIG. 6B illustrates the parameter set (511) as an adaptive parameter set (APS). The scope of the parameter set may advantageously be smaller than or equal to a picture. For example, the scope of the parameter set may be a tile group. The use of the ARC information (512) may be implicit by the activation of an associated parameter set. For example, if a video coding technology or standard contemplates only picture-based ARC, a picture parameter set or equivalent may be appropriate as the associated parameter set.

[0097] In the same or another embodiment, referring to Figure 6C, the ARC reference information (513) may reside in a tile group header (514) or a similar data structure. The ARC reference information (513) may point to a subset of the ARC information (515) available in a parameter set (516) that has a scope greater than a single picture. For example, the parameter set (516) may be a sequence parameter set (SPS) or a decoder parameter set (DPS).

[0098] The implicit activation of the additional level of indirection of PPS from the tile group header, PPS, or SPS used in JVET-M 0135-v1 may be unnecessary because picture parameter sets, like sequence parameter sets, can be used for feature negotiation or announcement. However, if the ARC information should be applicable to, for example, subpictures also represented by tile groups, a parameter set whose activation scope is limited to the tile group (e.g., an adaptive parameter set or header parameter set) may be a better choice. Also, if the ARC information is of non-negligible size, for example, if it contains filter control information such as a large number of filter coefficients, parameterization may be a better choice than using a direct header from the perspective of coding efficiency, because these settings may be reusable by future pictures or subpictures by referencing the same parameter set.

[0099] When using a sequence parameter set or another higher parameter set with a scope spanning multiple pictures, certain considerations may apply.

[0100] (1) The parameter set (516) for storing the ARC information (515) in a table can be a sequence parameter set in some cases, but advantageously a decoder parameter set in other cases. The decoder parameter set can have multiple CVSs, i.e., activation ranges for all coded video bits in the coded video stream, i.e., from the session start to the session end. Such ranges may be more appropriate because possible ARC factors may be decoder capabilities, likely implemented in hardware, and hardware capabilities tend not to change with CVS (at least in some entertainment systems, for group of pictures of ½ length or less). Nevertheless, some embodiments may include an ARC information table in the sequence parameter set described herein, particularly in connection with point (2) below.

[0101] (2) The ARC reference information (513) may advantageously be placed directly in the header (514) (e.g., Picture / Slice / Tile / GOB / Tile Group Header; hereafter, Tile Group Header) rather than in the picture parameter set as in JVCET-M 0135-v1. This is because if an encoder wants to change a single value in a picture parameter set, such as the ARC reference information, the encoder may have to create a new PPS and reference the new PPS. If only the ARC reference information changes but other information remains, such as quantization matrix information in the PPS, such information may be significant in size and would need to be retransmitted to complete the new PPS. The ARC reference information may be a single codeword, such as an index into an ARC information table, where the only value that changes is the ARC reference information, making it cumbersome and wasteful to retransmit all the quantization matrix information, for example. Therefore, placing the ARC reference information directly in the header (e.g., Header (514)), as proposed in JVET-M 0135-v1, can be significantly better in terms of coding efficiency, since it avoids the indirection via the PPS. Also, putting the ARC reference information in the PPS has the additional disadvantage that the ARC information referenced by the ARC reference information must apply to the entire picture, not to subpictures, because the scope of the picture parameter set activation is the picture.

[0102] In the same or another embodiment, the signaling of ARC parameters can follow a detailed example as outlined in Figures 7A-7B, which show syntax diagrams. The notation of such syntax diagrams loosely follows C-style programming. Bold lines indicate syntax elements present in the bitstream, while non-bold lines often indicate control flow or variable setting.

[0103] As an example of a header syntax structure applicable to a (possibly rectangular) portion of a picture, the tile group header (600) can conditionally include the variable-length Exp-Golomb coding syntax element dec_pic_size_idx (602) (shown in bold). The presence of this syntax element in the tile group header (600) can be gated by the use of adaptive resolution (603). Here, the value of the adaptive resolution flag is not shown in bold, which means that the flag is present in the bitstream at the point where it occurs in the syntax diagram. Whether adaptive resolution is used for this picture or part of it can be signaled in any high-level syntax structure, inside or outside the bitstream. In the example shown in Figures 7A-7B, adaptive resolution is signaled in the sequence parameter set (610) as outlined below.

[0104] Figure 7B shows an excerpt of a sequence parameter set (610). The first syntax element shown is adaptive_pic_resolution_change_flag (611). When true, such a flag can indicate the use of adaptive resolution, which may require specific control information. In this example, such control information is conditionally present based on the value of the flag based on an if() statement (612) in the sequence parameter set (610) and the tile group header (600).

[0105] When adaptive resolution is used, in this example, the encoding is at an output resolution (613) in samples. The output resolution (613) in this exemplary embodiment refers to both the syntax elements output_pic_width_in_luma_samples and output_pic_height_in_luma_samples, which together can define the resolution of the output picture. Elsewhere in a video coding technology or standard, specific restrictions on either value may be defined. For example, a level definition may limit the number of total output samples that can be the product of the values ​​of the above two syntax elements. Also, a particular video coding technology or standard, or an external technology or standard, such as a system standard, may limit the numbering range (e.g., one or both dimensions must be divisible by a power of two) or the aspect ratio (e.g., width and height must have a relationship such as 4:3 or 16:9). Such restrictions may be introduced to facilitate hardware implementation or for other reasons.

[0106] In certain applications, it may be desirable for the encoder to instruct the decoder to use a particular reference picture size rather than implicitly assuming the size to be the output picture size. In this example, the syntax element reference_pic_size_present_flag (614) gates the conditional presence of the reference picture dimensions (615) (again, the numbers refer to both width and height in the exemplary embodiment).

[0107] 7B further illustrates a table of possible decoded picture widths and heights. Such a table can be represented, for example, by a table designation (616) (e.g., syntax element num_dec_pic_size_in_luma_samples_minus1). The syntax element "minus1" can refer to an interpretation of the value of that syntax element. For example, if the encoded value of the syntax element is 0, there is one table entry. If the encoded value is 5, there are six table entries. For each "line" in the table, the width and height of the decoded picture are then included in the syntax as a table entry (617).

[0108] The presented table entries (617) can be indexed using the syntax element dec_pic_size_idx (602) in the tile group header (600), thereby allowing for different decoding sizes, and in fact zoom factors, per tile group.

[0109] Some video coding technologies or standards, such as VP9, ​​support spatial scalability by implementing some form of reference picture resampling in conjunction with temporal scalability (which may be signaled quite differently than the embodiments of the present disclosure) to enable spatial scalability. In particular, certain reference pictures can be upsampled to higher resolutions using ARC-style techniques to form the basis of spatial enhancement layers. Such upsampled pictures can then be refined using regular prediction mechanisms at higher resolutions to add detail.

[0110] Embodiments of the present disclosure can be used in such environments. In some cases, in the same or another embodiment, a value in a network abstraction layer (NAL) unit header, such as a Time ID field, can be used to indicate not only a temporal layer but also a spatial layer. Doing so has certain advantages in certain system designs. For example, existing Selected Forwarding Units (SFUs) created and optimized for temporal layer selective forwarding based on NAL unit header Time ID values ​​can be used without modification for scalable environments. To enable this, embodiments of the present disclosure can include a mapping between coded picture sizes and temporal layers indicated by the Time ID field in the NAL unit header.

[0111] In some video coding techniques, an access unit (AU) can refer to a coded picture, slice, tile, NAL unit, etc. that is captured and constructed into a respective picture / slice / tile / NAL unit bitstream at a given time instance. An example of such a temporal instance could be composition time.

[0112] In High Efficiency Video Coding (HEVC) and certain other video coding technologies, a picture order count (POC) value can be used to indicate a reference picture selected from multiple reference pictures stored in a decoded picture buffer (DPB). When an access unit (AU) includes one or more pictures, slices, or tiles, each picture, slice, or tile belonging to the same AU can have the same POC value, from which it can be derived that they were created from content with the same composition time. In other words, in a scenario where two pictures / slices / tiles carry the same given POC value, it can be determined that the two pictures / slices / tiles belong to the same AU and have the same composition time. Conversely, two pictures / tiles / slices with different POC values ​​can indicate that the pictures / slices / tiles belong to different AUs and have different composition times.

[0113] In one embodiment of the present disclosure, the aforementioned rigid relationship can be relaxed in that an access unit can contain pictures, slices, or tiles with different POC values. By allowing different POC values ​​within an AU, it becomes possible to use POC values ​​to identify potentially independently decodable pictures / slices / tiles that have the same presentation time. Thus, embodiments of the present disclosure can enable support for multiple scalable layers without modifying reference picture selection signaling (e.g., reference picture set signaling or reference picture list signaling), as described in more detail below.

[0114] In one embodiment, it is still desirable to be able to identify the AU to which a picture / slice / tile belongs from the POC value alone, relative to other pictures / slices / tiles with different POC values, which can be achieved in the embodiments described below.

[0115] In the same or other embodiments, the access unit count (AUC) may be signaled in a high-level syntax structure such as a NAL unit header, slice header, tile group header, SEI message, parameter set, or AU delimiter. 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 a distinct compositing time instance. The AUC value may be equal to a multiple of the POC value. The AUC value can be calculated by dividing the POC value by an integer value. In some cases, the division operation may impose a certain burden on the decoder implementation. In such cases, a small limitation on the numbering space of the AUC values ​​may allow for the replacement of the division operation with a shift operation, as performed by embodiments of the present disclosure. For example, the AUC value may be equal to the most significant bit (MSB) value of the POC value range.

[0116] In the same embodiment, the value of the POC cycle per AU (e.g., syntax element poc_cycle_au) may be signaled in a high-level syntax structure such as a NAL unit header, a slice header, a tile group header, an SEI message, a parameter set, or an AU delimiter. The poc_cycle_au syntax element 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, pictures, slices, or tiles with POC values ​​equal to 0-3 are associated with AUs with AUC values ​​equal to 0, and pictures, slices, or tiles with POC values ​​equal to 4-7 are associated with AUs with AUC values ​​equal to 1. Thus, the value of AUC can be inferred by embodiments of the present disclosure by dividing the POC value by the value of poc_cycle_au.

[0117] In the same or another embodiment, the value of poc_cycle_au may be derived from information identifying the number of spatial or SNR layers in the coded video sequence, for example, located in a video parameter set (VPS). A brief description of such a relationship follows. While the derivation described above can save several bits in the VPS and thus improve coding efficiency, it may be advantageous to explicitly code poc_cycle_au in a suitable higher-level syntax structure hierarchically below the video parameter set to minimize poc_cycle_au for a given small portion of the bitstream, such as a picture. This optimization can save more bits than can be saved through the derivation process described above, because the POC value (and / or the values ​​of syntax elements that indirectly reference the POC) can be coded in a lower-level syntax structure.

[0118] In the same or another embodiment, Figure 9A shows an example of a syntax table for signaling the vps_poc_cycle_au (632) syntax element in the VPS (630) or SPS, which indicates the poc_cycle_au used for all pictures / slices in the coded video sequence, and Figure 9B shows an example of a syntax table for signaling the slice_poc_cycle_au (642) syntax element, which indicates the poc_cycle_au of the current slice in the slice header (640). If the POC value increases uniformly per AU, set vps_contant_poc_cycle_per_au (634) in the VPS (630) to 1 and signal vps_poc_cycle_au (632) in the VPS (630). In this case, slice_poc_cycle_au (642) is not explicitly signaled, and the AUC value per AU is calculated by dividing the POC value by vps_poc_cycle_au (632). If the POC value does not increase uniformly per AU, vps_contant_poc_cycle_per_au (634) in VPS (630) is set to 0. In this case, vps_access_unit_cnt is not signaled, and slice_access_unit_cnt is signaled in the slice header for each slice or picture. Each slice or picture may have a different value of slice_access_unit_cnt. The AUC value per AU is calculated by dividing the POC value by slice_poc_cycle_au (642).

[0119] FIG. 10 shows a block diagram illustrating the relevant workflow of an embodiment. For example, the decoder (or encoder) analyzes the VPS / SPS to identify whether the POC cycle per AU is constant (652). The decoder (or encoder) then makes a decision based on whether the POC cycle per AU is constant within the encoded video sequence (654). That is, if the POC cycle per AU is constant, the decoder (or encoder) calculates an access unit count value from the sequence-level poc_cycle_au value and the POC value (656). Alternatively, if the POC cycle per AU is not constant, the decoder (or encoder) calculates an access unit count value from the picture-level poc_cycle_au value and the POC value (658). In either case, the decoder (or encoder) can then repeat the process by, for example, analyzing the VPS / SPS to identify whether the POC cycle per AU is constant (662).

[0120] In the same or other embodiments, pictures, slices, or tiles corresponding to AUs with the same AUC value may be associated with the same decoding or output time instance, even if the POC values ​​of the pictures, slices, or tiles are different. Thus, all or a subset of pictures, slices, or tiles associated with the same AU can be decoded in parallel and output simultaneously, without dependency between analysis / decoding across pictures, slices, or tiles within the same AU.

[0121] In the same or other embodiments, pictures, slices, or tiles corresponding to AUs with the same AUC value may be associated with the same composition / display time instance, even if the POC values ​​of the pictures, slices, or tiles are different. If composition time is included in the container format, pictures may be displayed at the same time instance if they have the same composition time, even if they correspond to different AUs.

[0122] In the same or other embodiments, each picture, slice, or tile may have the same temporal identifier (e.g., syntax element temporal_id) within the same AU. All or a subset of the pictures, slices, or tiles corresponding to a time instance may be associated with the same temporal sublayer. In the same or other embodiments, each picture, slice, or tile may have the same or different spatial layer id (e.g., syntax element layer_id) within the same AU. All or a subset of the pictures, slices, or tiles corresponding to a time instance may be associated with the same or different spatial layers.

[0123] 8 shows an example of a video sequence structure (680) with temporal_id, layer_id, and combinations of POC and AUC values ​​with 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, respectively. Regardless of the values ​​of temporal_id and layer_id, the value of POC increases by 1 for each picture. In this example, the value of poc_cycle_au may be equal to 2. In one embodiment, the value of poc_cycle_au may be set equal to the number of (spatial scalability) layers. In this example, the value of POC increases by 2 and the value of AUC increases by 1. As an example, Figure 8 shows, within the first AU (AUC=0), an I slice (681) with POC 0, TID 0, and LID 0, and a B slice (682) with POC 1, TID 0, and LID 1. Within the second AU (AUC=1), Figure 8 shows a B slice (683) with POC 2, TID 1, and LID 0, and a B slice (684) with POC 3, TID 1, and LID 1. Within the third AU (AUC=3), Figure 8 shows a B slice (685) with POC 4, TID 0, and LID 0, and a B slice (686) with POC 5, TID 0, and LID 1.

[0124] In the above embodiments, all or a subset of the inter-picture or inter-layer prediction structure and reference picture indication may be supported by using the existing reference picture set (RPS) signaling or reference picture list (RPL) signaling in HEVC. In the RPS or RPL, the selected reference picture is indicated by signaling the value of POC or the delta value of POC between the current picture and the selected reference picture. In embodiments of the present disclosure, the RPS and RPL can be used to indicate the inter-picture or inter-layer prediction structure without changing the signaling, but with the following limitations: If the value of the temporal_id of a reference picture is greater than the value of the temporal_id of the current picture, the current picture may not use the reference picture for motion compensation or other prediction. If the value of the layer_id of a reference picture is greater than the value of the layer_id of the current picture, the current picture may not use the reference picture for motion compensation or other prediction.

[0125] In the same and other embodiments, the scaling of motion vectors based on POC differences for temporal motion vector prediction can be disabled across multiple pictures in an access unit.Thus, although each picture may have a different POC value within an access unit, reference pictures with different POCs within the same AU may be considered as reference pictures with the same time instance, so the motion vectors are not scaled and are not used for temporal motion vector prediction within the access unit.Thus, in an embodiment, the motion vector scaling function can return 1 when the reference picture belongs to the AU associated with the current picture.

[0126] In the same and other embodiments, if the spatial resolution of the reference picture is different from the spatial resolution of the current picture, scaling of the motion vector based on the POC difference for temporal motion vector prediction can be optionally disabled across multiple pictures. If motion vector scaling is enabled, the motion vector can be scaled based on both the POC difference and the spatial resolution ratio between the current picture and the reference picture.

[0127] In the same or another embodiment, the motion vectors may be scaled based on the AUC difference instead of the POC difference for temporal motion vector prediction, especially when poc_cycle_au has non-uniform values ​​(when vps_contant_poc_cycle_per_au==0). Otherwise (when vps_contant_poc_cycle_per_au==1), the scaling of the motion vectors based on the AUC difference may be identical to the scaling of the motion vectors based on the POC difference.

[0128] In the same or another embodiment, when a motion vector is scaled based on the AUC difference, a reference motion vector within the same AU (having the same AUC value) as the current picture is not scaled based on the AUC difference and is used for motion vector prediction without scaling or with scaling based on the spatial resolution ratio between the current picture and the reference picture.

[0129] In the same and other embodiments, the AUC value is used to identify AU boundaries and is used for hypothetical reference decoder (HRD) operations that require input and output timing with AU granularity. In most cases, the decoded picture with the highest layer within the AU can be output for display. The AUC value and layer_id value can be used to identify the output picture.

[0130] In one embodiment, a picture may contain one or more subpictures. Each subpicture may cover a local area or the 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 comprised by one or more subpictures may or may not cover the entire area of ​​the picture. When a picture is composed of subpictures, the area supported by the subpicture may be the same as the area supported by the picture.

[0131] In the same embodiment, a sub-picture may be coded by a coding method similar to that used for a coded picture. A sub-picture may be coded independently or may be coded depending on another sub-picture or coded picture. A sub-picture may or may not have analysis dependency from another sub-picture or coded picture.

[0132] In the same embodiment, the coded sub-pictures may be included in one or more layers. The coded sub-pictures within a layer may have different spatial resolutions. The original sub-pictures may be spatially resampled (upsampled or downsampled), coded with different spatial resolution parameters, and included in the bitstream corresponding to the layer.

[0133] In the same or another embodiment, a sub-picture with (W, H) can be coded and included in the coded bitstream corresponding to layer 0, while (W*S w,k ,H*S h,k ) can be coded and included in the coded bitstream corresponding to layer k, and w,k , S h,k indicates the horizontal and vertical resampling ratio. S w,k , S h,kIf the value of is greater than 1, resampling is equivalent to upsampling. On the other hand, if S w,k , S h,k If the value of is less than 1, resampling is equivalent to downsampling.

[0134] In the same or another embodiment, a coded subpicture within a layer may have a different visual quality than a coded subpicture within another layer, either within the same subpicture or a different subpicture. For example, subpicture i within layer n may have a quantization parameter Q i,n and subpicture j in layer m is coded with the quantization parameter Q j,m is encoded as

[0135] In the same or another embodiment, coded sub-pictures within a layer may be independently decodable without parsing or decoding dependencies from coded sub-pictures in another layer of the same local region. A sub-picture layer that may be independently decodable without reference to another sub-picture layer of the same local region is an independent sub-picture layer. Coded sub-pictures within an independent sub-picture layer may or may not have decoding or parsing dependencies from previously coded sub-pictures in the same sub-picture layer, but coded sub-pictures may not have any dependencies from coded pictures in another sub-picture layer.

[0136] In the same or another embodiment, coded subpictures within a layer may be dependently decodable, with any parsing or decoding dependency from coded subpictures in another layer of the same local region. A subpicture layer that may be dependently decodable by reference to another subpicture layer of the same local region is a dependent subpicture layer. Coded subpictures within a dependent subpicture may refer to coded subpictures belonging to the same subpicture, previously coded subpictures in the same subpicture layer, or both reference subpictures.

[0137] In the same or another embodiment, a coded subpicture includes one or more independent subpicture layers and one or more dependent subpicture layers. However, there may be at least one independent subpicture layer for a coded subpicture. An independent subpicture layer may have a value of a layer identifier (e.g., syntax element layer_id), which may be present in the NAL unit header or another high-level syntax structure, equal to 0. A subpicture layer with layer_id equal to 0 may be a base subpicture layer.

[0138] In the same or another embodiment, a picture may include one or more foreground subpictures and one background subpicture. The area supported by a background subpicture may be equal to the area of ​​the picture. The area supported by a foreground subpicture may overlap with the area supported by a background subpicture. A background subpicture may be a base subpicture layer, and a foreground subpicture may be a non-base (enhanced) subpicture layer. One or more non-base subpicture layers may reference the same base layer for decoding. Each non-base subpicture layer with layer_id equal to a may reference a non-base subpicture layer with layer_id equal to b, where a is greater than b.

[0139] In the same or another embodiment, a picture may contain one or more foreground subpictures, with or without background subpictures. Each subpicture may have its own base subpicture layer and one or more non-base (enhancement) layers. Each base subpicture layer may be referenced by one or more non-base subpicture layers. Each non-base subpicture layer with layer_id equal to a may reference a non-base subpicture layer with layer_id equal to b, where a is greater than b.

[0140] In the same or another embodiment, a picture may contain one or more foreground subpictures, with or without background subpictures. Each coded subpicture in a (base or non-base) subpicture layer may be referenced by one or more non-base layer subpictures that belong to the same subpicture and by one or more non-base layer subpictures that do not belong to the same subpicture.

[0141] In the same or another embodiment, a picture may contain one or more foreground subpictures, with or without background subpictures. A subpicture in layer a may be further divided into multiple subpictures within the same layer. One or more coded subpictures in layer b may reference divided subpictures in layer a.

[0142] In the same or another embodiment, a coded video sequence (CVS) may be a group of coded pictures. A CVS may include one or more coded sub-picture sequences (CSPS), where a CSPS may be a group of coded sub-pictures covering the same local region of a picture. A CSPS may have the same or a different temporal resolution than the coded video sequence.

[0143] In the same or another embodiment, a CSPS may be coded and included in one or more layers. A CSPS may include or consist of one or more CSPS layers. Decoding one or more CSPS layers corresponding to a CSPS can reconstruct a sequence of sub-pictures corresponding to the same local region.

[0144] In the same or different embodiments, 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.

[0145] In the same or another embodiment, a CSPS layer may have a different temporal resolution (e.g., frame rate) than another CSPS layer, and the original (uncompressed) sub-picture sequence may be temporally resampled (upsampled or downsampled), coded with different temporal resolution parameters, and included in the bitstream corresponding to the layer.

[0146] In the same or another embodiment, a sub-picture sequence having a frame rate F may be coded and included in the coded bitstream corresponding to layer 0, where F*S t,k A temporally upsampled (or downsampled) sub-picture sequence from the original sub-picture sequence having t,k denotes the temporal sampling ratio of layer k. S t,k If the value of is greater than 1, the temporal resampling process is equivalent to frame rate up-conversion. t,k If the value of is less than 1, the temporal resampling process is equivalent to a frame rate down-conversion.

[0147] In the same or another embodiment, when a subpicture with CSPS layer a is referenced by a subpicture with CSPS layer b for motion compensation or any inter-layer prediction, if the spatial resolution of CSPS layer a differs from the spatial resolution of CSPS layer b, the decoded pixels in CSPS layer a are resampled and used for the reference. The resampling process may require up-sampling filtering or down-sampling filtering.

[0148] FIG. 11 shows an exemplary video stream including a background video CSPS with layer_id equal to 0 and a plurality of foreground CSPS layers. The encoded subpicture may comprise one or more extended CSPS layers (704), while the background area that does not belong to any foreground CSPS layer may comprise a base layer (702). The base layer (702) can include both the background area and the foreground area, while the extended CSPS layer (704) includes the foreground area. The extended CSPS layer (704) may have better visual quality than the base layer (702) in the same area. The extended CSPS layer (704) can refer to the reconstructed pixels and the motion vectors of the base layer (702) corresponding to the same area.

[0149] In the same or another embodiment, the video bitstream corresponding to the base layer (702) is included in a track, and the CSPS layer (704) corresponding to each subpicture is included in a separate track within the video file.

[0150] In the same or another embodiment, the video bitstream corresponding to the base layer (702) is included in a track, and the CSPS layer (704) having the same layer_id is included in a separate track. In this example, the track corresponding to layer k includes only the CSPS layer (704) corresponding to layer k.

[0151] In the same or another embodiment, each CSPS layer (704) of each subpicture is stored in a separate track. Each track may or may not have a syntax analysis or decoding dependency from one or more other tracks.

[0152] In the same or another embodiment, each track can include bitstreams corresponding to the CSPS layers (704) from layer i to layer j of all or a subset of the subpictures, where 0 < i <= j <= k and k is the top layer of the CSPS.

[0153] In the same or another embodiment, a picture includes or consists of one or more associated media data including a depth map, an alpha map, 3D geometry data, an occupancy map, etc. Such associated timed media data may be divided into one or more data substreams, each corresponding to one subpicture.

[0154] In the same or another embodiment, FIG. 12 illustrates an example of a video conference based on a multi-layer subpicture method. The video stream includes one base layer video bitstream corresponding to a background picture and one or more enhancement layer video bitstreams corresponding to foreground subpictures. Each enhancement layer video bitstream can correspond to a CSPS layer. The display initially displays a picture corresponding to the base layer (712). The base layer (712) can include one or more user pictures within a picture (PIP). When a specific user is selected under client control, the enhanced CSPS layer (714) corresponding to the selected user is encoded and displayed at enhanced quality or spatial resolution.

[0155] Figure 13 shows a diagram for the operation of an embodiment. In an embodiment, a decoder may decode a video bitstream including multiple layers, such as a base layer and one or more enhanced CSPS layers (722). The decoder may then identify a background region and one or more foreground subpictures (724) and make a determination as to whether a particular subpicture region is selected (726). For example, if a particular subpicture region corresponding to a user's PIP is selected (Yes), the decoder may decode and display an enhanced subpicture corresponding to the selected user (728). For example, the decoder may decode and display an image corresponding to the enhanced CSPS layer (714). If a particular subpicture region is not selected (No), the decoder may decode and display a background region (730). For example, the decoder may decode and display an image corresponding to the base layer (712).

[0156] In the same or another embodiment, a network intermediate box (such as a router) can select a subset of layers to send to a user depending on its bandwidth. Picture / subpicture organization can be used for bandwidth adaptation. For example, if a user does not have the bandwidth, the router selects a strip of layers or some subpictures due to their importance or based on the settings used. In one embodiment, such processing may be done dynamically to adapt to bandwidth.

[0157] Figure 14 shows an example use case for 360 video. When a spherical 360 picture (742) is projected onto a planar picture, the projected spherical 360 picture (742) may be divided into multiple sub-pictures (745) as a base layer (744). An enhancement layer (746) of a particular one of the sub-pictures (745) may be encoded and transmitted to a client. A decoder may decode both the base layer (744) including all of the sub-pictures (745) and the enhancement layer (746) of a selected one of the sub-pictures (745). When the current viewport is the same as the selected one of the sub-pictures (745), the displayed picture may have higher quality using the decoded sub-picture (745) with the enhancement layer (746). Otherwise, the decoded picture with the base layer (744) may be displayed at a lower quality.

[0158] In the same or another embodiment, any layout information for display may be present in the file as auxiliary information (such as an SEI message 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 a user's customized settings.

[0159] In one embodiment, when an 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 top-left corner offset information (x_offset, y_offset) may be signaled. Figure 15A shows an example of a layout of divided sub-pictures (752), Figure 15B shows an example of corresponding sub-picture size and position information of one of the sub-pictures (752), and Figure 16 shows the corresponding picture prediction structure. Layout information including sub-picture size(s) and sub-picture position(s) may be signaled in a high-level syntax structure, such as parameter set(s), a slice or tile group header, or an SEI message.

[0160] In the same embodiment, each sub-picture corresponding to an independent layer may have its unique POC value within the AU. When indicating reference pictures among pictures stored in the DPB using syntax elements of the RPS or RPL structure, the POC value of each sub-picture corresponding to a layer may be used.

[0161] In the same or another embodiment, the layer_id may not be used and the POC(delta) value may be used to indicate the (inter-layer) prediction structure.

[0162] In the same embodiment, a sub-picture with a POC value equal to N corresponding to a layer (or local region) may or may not be used as a reference picture for a sub-picture with a POC value equal to K+N corresponding to the same layer (or the same local region) for motion compensated prediction. In most cases, the value of the number K may be equal to the maximum number of (independent) layers, which may be the same as the number of sub-regions.

[0163] In the same or another embodiment, Figures 17-18 show an extended case of Figures 15A-15B and 16. When an input picture is divided into multiple (e.g., four) sub-regions, each local region may be coded with 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 using one or more independent layers and zero or more dependent layers.

[0164] In the same embodiment, referring to Figure 17, the input picture may be divided into four sub-regions, including an upper-left sub-region (762), an upper-right sub-region (763), a lower-left sub-region (764), and a lower-right sub-region (765). The upper-right sub-region (763) may be coded as two layers, layer 1 and layer 4, and the lower-right sub-region (765) may be coded as two layers, layer 3 and layer 5. In this case, layer 4 may reference layer 1 for motion-compensated prediction, and layer 5 may reference layer 3 for motion compensation.

[0165] In the same or another embodiment, in-loop filtering across layer boundaries (such as deblocking filtering, adaptive in-loop filtering, reshaper, bilateral filtering, or any deep learning-based filtering) can be (optionally) disabled.

[0166] In the same or another embodiment, motion compensated prediction or intra-block replication across layer boundaries can (optionally) be disabled.

[0167] In the same or another embodiment, boundary padding for motion-compensated prediction or in-loop filtering at subpicture boundaries may optionally be processed. A flag indicating whether boundary padding is processed or not may be signaled in a high-level syntax structure such as a parameter set (VPS, SPS, PPS, or APS), a slice or tile group header, or an SEI message.

[0168] In the same or another embodiment, layout information for sub-regions (or sub-pictures) may be signaled in the VPS or SPS. Figure 19A shows example syntax elements for the VPS (770), and Figure 19B shows example syntax elements for the SPS (780). In this example, the vps_sub_picture_dividing_flag (772) is signaled in the VPS (770). The flag may indicate whether the input picture is divided into multiple sub-regions. When the value of the vps_sub_picture_dividing_flag (772) is equal to 0, the input picture in the coded video sequence corresponding to the current VPS may not be divided into multiple sub-regions. In this case, the input picture size may be equal to the coded picture size (pic_width_in_luma_samples (786), pic_height_in_luma_samples (788)) signaled in the SPS (680). When the value of vps_sub_picture_dividing_flag (772) 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 (774) and vps_full_pic_height_in_luma_samples (776) are signaled in the VPS (770). The values ​​of vps_full_pic_width_in_luma_samples (774) and vps_full_pic_height_in_luma_samples (776) may be equal to the width and height of the input picture, respectively.

[0169] In the same embodiment, the values ​​of vps_full_pic_width_in_luma_samples (774) and vps_full_pic_height_in_luma_samples (776) may not be used for decoding, but may be used for compositing and display.

[0170] In the same embodiment, when the value of vps_sub_picture_dividing_flag (772) is equal to 1, the syntax elements pic_offset_x (782) and pic_offset_y (784) may be signaled in the SPS (780) corresponding to a particular layer(s). In this case, the coded picture size (pic_width_in_luma_samples (786), pic_height_in_luma_samples (788)) signaled in the SPS (780) may be equal to the width and height of the sub-region corresponding to a particular layer. Also, the location of the upper left corner of the sub-region (pic_offset_x (782), pic_offset_y (784)) may be signaled in the SPS (780).

[0171] In the same embodiment, the position information of the upper left corner of the sub-region (pic_offset_x (782), pic_offset_y (784)) may not be used for decoding, but may be used for compositing and display.

[0172] In the same or another embodiment, layout information (size and position) of all or a subset of subregions of an input picture, as well as inter-layer dependency information, may be signaled in a parameter set or SEI message. Figure 20 illustrates an example of syntax elements indicating information about the layout of subregions, inter-layer dependencies, and relationships between subregions and one or more layers. In this example, the syntax element num_sub_region (791) indicates the number of (rectangular) subregions in the current coded video sequence. The syntax element num_layers (792) indicates the number of layers in the current coded video sequence. The value of num_layers (792) may be greater than or equal to the value of num_sub_region (791). If any subregion is coded as a single layer, the value of num_layers (792) may be equal to the value of num_sub_region (791). If one or more subregions are coded as multiple layers, the value of num_layers (792) may be greater than the value of num_sub_region (791). The syntax element direct_dependency_flag[i][j] (793) indicates the dependency from the jth layer to the ith layer. The syntax element num_layers_for_region[i] (794) indicates the number of layers associated with the i-th subregion. The syntax element sub_region_layer_id[i][j] (795) indicates the layer_id of the jth layer associated with the i-th subregion. The syntax elements sub_region_offset_x[i] (796) and sub_region_offset_y[i] (797) indicate the horizontal and vertical positions, respectively, of the top left corner of the i-th subregion. The syntax elements sub_region_width[i] (798) and sub_region_height[i] (799) indicate the width and height, respectively, of the i-th subregion.

[0173] In one embodiment, one or more syntax elements specifying an output layer set to indicate one of multiple layers to be output with or without profile hierarchical level information may be signaled in a high-level syntax structure (e.g., a VPS, DPS, SPS, PPS, APS, or SEI message). With reference to Figure 21, a syntax element num_output_layer_sets (804) may be signaled in the VPS to indicate the number of output layer sets (OLSs) in the coded video sequence that references the VPS. For each output layer set, a syntax element output_layer_flag (810) may be signaled the same number of times as the number of output layers.

[0174] In the same embodiment, a syntax element output_layer_flag (810) equal to 1 specifies that the i-th layer is to be output. A syntax element output_layer_flag (810) equal to 0 specifies that the i-th layer is not to be output.

[0175] In the same or another embodiment, one or more syntax elements specifying profile tier level information for each output tier set may be signaled in a high-level syntax structure (e.g., a VPS, DPS, SPS, PPS, APS, or SEI message). Further referring to FIG. 21 , a syntax element num_profile_tier_level (806) indicating the number of profile tier level information per OLS in the coded video sequence that references the VPS may be signaled within the VPS. For each output tier set, a set of profile tier level information syntax elements, or an index indicating a particular profile tier level information among the entries in the profile tier level information, may be signaled the same number of times as the number of output tiers.

[0176] In the same embodiment, the syntax element profile_tier_level_idx[i][j] (812) specifies an index into the list of profile_tier_level() (808) syntax structures in the VPS for the profile_tier_level() (808) syntax structure that applies to the jth tier of the ith OLS.

[0177] Profiles, tiers, and levels (and their corresponding information) can specify restrictions on a bitstream and, therefore, restrictions on the capabilities required to decode the bitstream. Profiles, tiers, and levels (and their corresponding information) can also be used to indicate interoperability points between individual decoder implementations. A profile may, for example, be a subset of the entire bitstream syntax of a standard. Each profile (and its corresponding information) can specify a subset of algorithmic features and restrictions that may be supported by all decoders conforming to the profile. Tiers and levels may be specified within each profile, and a level of a hierarchy may be a specified set of constraints imposed on the values ​​of syntax elements in the bitstream. Each level of a hierarchy (and its corresponding information) may specify a set of restrictions on the values ​​and / or arithmetic combinations of values ​​that syntax elements of this disclosure may take. While the same set of tier and level definitions may be used in all profiles, individual implementations may support different tiers, and within a tier, different levels for each supported profile. For any given profile, the level of a hierarchy may correspond to a particular decoder processing load and memory capabilities. Levels specified in lower tiers may be more constrained than levels specified in higher tiers.

[0178] In the same or another embodiment, referring to FIG. 22, the syntax elements num_profile_tier_level (806) and / or num_output_layer_sets (804) may be signaled if the maximum number of layers is greater than 1 (vps_max_layers_minus1>0).

[0179] In the same or another embodiment, referring to FIG. 22, a syntax element vps_output_layers_mode[i] (822) may be present in the VPS to indicate the mode of output layer signaling for the i-th output layer set.

[0180] In the same embodiment, a syntax element vps_output_layers_mode[i] (822) equal to 0 specifies that only the top layer is output in the i-th output layer set. A syntax element vps_output_layers_mode[i] (822) equal to 1 specifies that all layers are output in the i-th output layer set. A syntax element vps_output_layers_mode[i] (822) equal to 2 specifies that the layer to be output is the layer that has vps_output_layer_flag[i][j] equal to 1 set for the i-th output layer. More values ​​may be reserved.

[0181] In the same embodiment, the syntax element output_layer_flag[i][j] (810) may or may not be signaled depending on the value of the syntax element vps_output_layers_mode[i] (822) of the i-th output layer set.

[0182] In the same or another embodiment, referring to Figure 22, there may be a flag vps_ptl_signal_flag[i] (824) for the i-th output tier set. Depending on the value of vps_ptl_signal_flag[i] (824), the profile tier level information for the i-th output tier set may or may not be signaled.

[0183] In the same or another embodiment, referring to FIG. 23, the number of subpictures in the current CVS, max_subpics_minus1, may be signaled in a high-level syntax structure (e.g., a VPS, DPS, SPS, PPS, APS, or SEI message).

[0184] In the same embodiment, referring to FIG. 23, if the number of sub-pictures is greater than 1 (max_subpics_minus1>0), the sub-picture identifier sub_pic_id[i] (821) for the i-th sub-picture may be signaled.

[0185] In the same or another embodiment, one or more syntax elements indicating subpicture identifiers belonging to each layer of each output layer set may be signaled in the VPS. Referring to Figure 23, the identifier sub_pic_id_layer[i][j][k] (826) indicates the kth subpicture present in the jth layer of the ith output layer set. Using the information in the identifier sub_pic_id_layer[i][j][k] (826), a decoder can recognize which subpictures it can decode and output for each layer of a particular output layer set.

[0186] In one embodiment, a picture header (PH) is a syntax structure that contains syntax elements that apply to all slices of a coded picture. A picture unit (PU) is a set of NAL units that are associated with each other according to specified classification rules, are consecutive in decoding order, and contain exactly one coded picture. A PU may contain a picture header (PH) and one or more video coding layer (VCL) NAL units that make up a coded picture.

[0187] In one embodiment, the SPS (RBSP) may be available to the decoding process before being referenced by being included in at least one AU with TemporalId equal to 0 or provided via external means.

[0188] In one embodiment, the SPS (RBSP) may be available to the decoding process before being referenced by being included in at least one AU with TemporalId equal to 0 in a CVS containing one or more PPSs that reference the SPS, or by being provided via external means.

[0189] In one embodiment, an SPS (RBSP) may be made available to the decoding process before being referenced by one or more PPSs by being included in at least one PU with a nuh_layer_id equal to the lowest nuh_layer_id value of a PPS NAL unit that references an SPS NAL unit in a CVS containing one or more PPSs that reference the SPS, or by being provided via external means.

[0190] In one embodiment, an SPS (RBSP) may be made available to the decoding process before being referenced by one or more PPSs by being included in at least one PU with TemporalId equal to 0 and nuh_layer_id equal to the lowest nuh_layer_id value of a PPS NAL unit that references the SPS NAL unit, or by being provided via external means.

[0191] In one embodiment, the SPS (RBSP) may be available to the decoding process before being referenced by one or more PPSs by being included in at least one PU having a TemporalId equal to 0 and a nuh_layer_id equal to the lowest nuh_layer_id value of a PPS NAL unit that references an SPS NAL unit in a CVS that contains one or more PPSs that reference the SPS, or may be provided via external means.

[0192] In the same or another embodiment, the identifier pps_seq_parameter_set_id specifies the value of the identifier sps_seq_parameter_set_id of the referenced SPS. The value of the identifier pps_seq_parameter_set_id may be the same for all PPSs referenced by a coded picture in a coded layer video sequence (CLVS).

[0193] In the same or another embodiment, all SPS NAL units with a particular value of the identifier sps_seq_parameter_set_id in the CVS may have the same content.

[0194] In the same or another embodiment, regardless of the nuh_layer_id value, SPS NAL units may share the same value space of the identifier sps_seq_parameter_set_id.

[0195] In the same or another embodiment, the nuh_layer_id value of an SPS NAL unit may be equal to the lowest nuh_layer_id value of the PPS NAL unit that references the SPS NAL unit.

[0196] In one embodiment, if an SPS with nuh_layer_id equal to m is referenced by one or more PPSs with nuh_layer_id equal to n, the layer with nuh_layer_id equal to m may be the same as the referenced layer (direct or indirect) of the layer with nuh_layer_id equal to n or the layer with nuh_layer_id equal to m.

[0197] In one embodiment, the PPS (RBSP) may be available to the decoding process before being referenced by being included in at least one AU with a TemporalId equal to the TemporalId of the PPS NAL unit, or by being provided via external means.

[0198] In one embodiment, the PPS (RBSP) may be made available to the decoding process before it is referenced by being included in at least one AU with a TemporalId equal to the TemporalId of the PPS NAL unit in the CVS containing one or more PHs (or coded slice NAL units) that reference the PPS, or by being provided via external means.

[0199] In one embodiment, a PPS (RBSP) can be made available for decoding before being referenced by one or more PHs (or coded slice NAL units) by being included in at least one PU having a nuh_layer_id equal to the lowest nuh_layer_id value of a coded slice NAL unit that references the PPS NAL unit in the CVS, which contains one or more PHs (or coded slice NAL units) that reference the PPS, or is provided via external means.

[0200] In one embodiment, a PPS (RBSP) can be made available for decoding before being referenced by one or more PHs (or coded slice NAL units) by being included in at least one PU having a TemporalId equal to the TemporalId of the PPS NAL unit and a nuh_layer_id equal to the lowest nuh_layer_id value of the coded slice NAL units that reference the PPS or that reference a PPS NAL unit in a CVS provided via external means.

[0201] In the same or another embodiment, the identifier ph_pic_parameter_set_id in PH specifies the value of the identifier pps_pic_parameter_set_id of the reference PPS in use. The value of pps_seq_parameter_set_id may be the same in all PPSs referenced by coded pictures in the CLVS.

[0202] In the same or another embodiment, all PPS NAL units with a particular value of the identifier pps_pic_parameter_set_id within a PU may have the same content.

[0203] In the same or another embodiment, regardless of the nuh_layer_id value, PPS NAL units may share the same value space of the identifier pps_pic_parameter_set_id.

[0204] In the same or another embodiment, the nuh_layer_id value of a PPS NAL unit may be equal to the lowest nuh_layer_id value of a coded slice NAL unit that references a NAL unit that references the PPS NAL unit.

[0205] In one embodiment, when a PPS with nuh_layer_id equal to m is referenced by one or more coded slice NAL units with nuh_layer_id equal to n, the layer with nuh_layer_id equal to m may be the same as the (direct or indirect) reference layer of the layer with nuh_layer_id equal to n or the layer with nuh_layer_id equal to m.

[0206] In one embodiment, the PPS (RBSP) may be made available to the decoding process before being referenced by being included in at least one AU with a TemporalId equal to the TemporalId of the PPS NAL unit, or by being provided via external means.

[0207] In one embodiment, the PPS (RBSP) may be made available to the decoding process before it is referenced by being included in at least one AU with a TemporalId equal to the TemporalId of the PPS NAL unit in the CVS containing one or more PHs (or coded slice NAL units) that reference the PPS, or by being provided via external means.

[0208] In one embodiment, a PPS (RBSP) can be made available for decoding before being referenced by one or more PHs (or coded slice NAL units) by being included in at least one PU having a nuh_layer_id equal to the lowest nuh_layer_id value of a coded slice NAL unit that references the PPS NAL unit in the CVS, which contains one or more PHs (or coded slice NAL units) that reference the PPS, or is provided via external means.

[0209] In one embodiment, a PPS (RBSP) may be available for decoding processing before being referenced by one or more PHs (or coded slice NAL units) by being included in at least one PU having a TemporalId equal to the TemporalId of the PPS NAL unit and a nuh_layer_id equal to the lowest nuh_layer_id value of the coded slice NAL units that reference the PPS or that reference a PPS NAL unit in a CVS provided via external means.

[0210] In the same or another embodiment, the identifier ph_pic_parameter_set_id in the PH specifies the value of the identifier pps_pic_parameter_set_id of the reference PPS in use. The value of the identifier pps_seq_parameter_set_id may be the same in all PPSs referenced by coded pictures in the CLVS.

[0211] In the same or another embodiment, all PPS NAL units with a particular value of pps_pic_parameter_set_id within a PU may have the same content.

[0212] In the same or another embodiment, regardless of the nuh_layer_id value, PPS NAL units may share the same value space of the identifier pps_pic_parameter_set_id.

[0213] In the same or another embodiment, the nuh_layer_id value of a PPS NAL unit may be equal to the lowest nuh_layer_id value of a coded slice NAL unit that references a NAL unit that references the PPS NAL unit.

[0214] In one embodiment, when a PPS with nuh_layer_id equal to m is referenced by one or more coded slice NAL units with nuh_layer_id equal to n, the layer with nuh_layer_id equal to m may be the same as the (direct or indirect) reference layer of the layer with nuh_layer_id equal to n or the layer with nuh_layer_id equal to m.

[0215] An output layer may be a layer in the output layer set that is output. An output layer set (OLS) may be a specified set of layers, where one or more layers in the layer set are designated to be output layers. An output layer set (OLS) layer index is an index of a layer in the OLS into the list of layers in the OLS.

[0216] A sub-layer may be a temporal scalable layer of a temporal scalable bitstream of a sub-layer that contains VCL NAL units and associated non-VCL NAL units with a particular value of the TemporalId variable. A sub-layer representation may be a subset of the bitstream that contains the NAL units of a particular sub-layer and lower sub-layers.

[0217] The VPS RBSP may be available to the decoding process before being referenced, either by being included in at least one AU with TemporalId equal to 0, or by being provided via external means. All VPS NAL units with a particular value of vps_video_parameter_set_id in a CVS may have the same content.

[0218] With reference to FIGS. 24-25, the syntax elements of an exemplary VPS RBSP are described below.

[0219] The syntax element vps_video_parameter_set_id (842) provides an identifier for the VPS for reference by other syntax elements. The value of the syntax element vps_video_parameter_set_id (842) may be greater than 0.

[0220] The syntax element vps_max_layers_minus1(802)+1 specifies the maximum number of layers allowed within each CVS that references the VPS.

[0221] The syntax element vps_max_sublayers_minus1 (846)+1 specifies the maximum number of temporal sublayers that can exist in a layer within each CVS that references the VPS. The value of the syntax element vps_max_sublayers_minus1 (846) can range from 0 to 6, inclusive.

[0222] A syntax element vps_all_layers_same_num_sublayers_flag (848) equal to 1 specifies that the number of temporal sublayers is the same for all layers in each CVS that references the VPS. A syntax element vps_all_layers_same_num_sublayers_flag (848) equal to 0 specifies that layers in each CVS that references the VPS may or may not have the same number of temporal sublayers. If not present, the value of vps_all_layers_same_num_sublayers_flag (848) may be inferred to be equal to 1.

[0223] The syntax element vps_all_independent_layers_flag (850) equal to 1 specifies that all layers in the CVS are coded independently without using inter-layer prediction. The syntax element vps_all_independent_layers_flag (850) equal to 0 specifies that one or more of the layers in the CVS can use inter-layer prediction. If not present, the value of vps_all_independent_layers_flag (850) may be inferred to be equal to 1.

[0224] The syntax element vps_layer_id[i] (852) specifies the nuh_layer_id value for the i-th layer. For any two non-negative integer values ​​of m and n, when m is less than n, the value of vps_layer_id[m] can be less than vps_layer_id[n].

[0225] A syntax element vps_independent_layer_flag[i] (854) equal to 1 specifies that the layer with index i does not use inter-layer prediction. A syntax element vps_independent_layer_flag[i] (854) equal to 0 specifies that the layer with index i can use inter-layer prediction, provided that a syntax element vps_direct_ref_layer_flag[i][j] with j in the range 0 to i-1 is present in the VPS. If not present, the value of the syntax element vps_independent_layer_flag[i] (854) can be inferred to be equal to 1.

[0226] The syntax element vps_direct_ref_layer_flag[i][j] 856 equal to 0 specifies that the layer with index j is not a direct reference layer for the layer with index i. The syntax element vps_direct_ref_layer_flag[i][j] 856 equal to 1 specifies that the layer with index j is a direct reference layer for the layer with index i. For i and j in the range 0 to vps_max_layers_minus1, if the syntax element vps_direct_ref_layer_flag[i][j] 856 is not present, it may be inferred to be equal to 0. If the syntax element vps_independent_layer_flag[i] 854 is equal to 0, there may be at least one value of j in the range 0 to i-1, inclusive, such that the value of the syntax element vps_direct_ref_layer_flag[i][j] 856 is equal to 1.

[0227] The variables NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r], and LayerUsedAsRefLayerFlag[j] can be derived as follows: for(i=0;i<=vps_max_layers_minus1;i++){ for(j=0;j<=vps_max_layers_minus1;j++){ dependencyFlag[i][j]=vps_direct_ref_layer_flag[i][j] for(k=0;k <i;k++) if(vps_direct_ref_layer_flag[i][k]&&dependencyFlag[k][j]) dependencyFlag[i][j]=1 } LayerUsedAsRefLayerFlag[i]=0 } for(i=0;i<=vps_max_layers_minus1;i++){ for(j=0,d=0,r=0;j<=vps_max_layers_minus1;j++){(37) if(vps_direct_ref_layer_flag[i][j]){ DirectRefLayerIdx[i][d++]=j LayerUsedAsRefLayerFlag[j]=1 } if(dependencyFlag[i][j]) RefLayerIdx[i][r++]=j } NumDirectRefLayers[i]=d NumRefLayers[i]=r }

[0228] The variable GeneralLayerIdx[i], which specifies the layer index of the layer with nuh_layer_id equal to vps_layer_id[i] (852), can be derived as follows: for(i=0;i<=vps_max_layers_minus1;i++)(38) GeneralLayerIdx[vps_layer_id[i]]=i

[0229] It may be a bitstream compatibility requirement that for any two different values ​​of i and j, both in the range from 0 to vps_max_layers_minus1 (846), when dependencyFlag[i][j] is equal to 1, the values ​​of chroma_format_idc and bit_depth_minus8 applied to the i-th layer may be equal to the values ​​of chroma_format_idc and bit_depth_minus8 applied to the j-th layer, respectively.

[0230] The syntax element max_tid_ref_present_flag[i] (858) equal to 1 specifies that the syntax element max_tid_il_ref_pics_plus1[i] (860) is present. The syntax element max_tid_ref_present_flag[i] (858) equal to 0 specifies that the syntax element max_tid_il_ref_pics_plus1[i] (860) is not present.

[0231] The syntax element max_tid_il_ref_pics_plus1[i] (860) equal to 0 specifies that inter-layer prediction is not used by non-IRAP pictures of the i-th layer. The syntax element max_tid_il_ref_pics_plus1[i] (860) greater than 0 specifies that pictures with TemporalId greater than max_tid_il_ref_pics_plus1[i]-1 are not used as inter-layer reference pictures (ILRPs) to decode pictures of the i-th layer. If not present, the value of the syntax element max_tid_il_ref_pics_plus1[i] (860) may be inferred to be equal to 7.

[0232] The syntax element each_layer_is_an_ols_flag (862) equal to 1 specifies that each OLS contains only one layer, each layer in the CVS that references the VPS is itself an OLS, and the single contained layer is the only output layer. The syntax element each_layer_is_an_ols_flag (862) equal to 0 specifies that an OLS can contain multiple layers. If the syntax element vps_max_layers_minus1 is equal to 0, the value of the syntax element each_layer_is_an_ols_flag (862) can be inferred to be equal to 1. Otherwise, when the syntax element vps_all_independent_layers_flag (854) is equal to 0, the value of each syntax element each_layer_is_an_ols_flag (862) can be inferred to be equal to 0.

[0233] The syntax element ols_mode_idc (864) equal to 0 specifies that the total number of OLSs specified by the VPS is equal to vps_max_layers_minus1+1, where the i-th OLS contains layers with layer indices 0 to i, inclusive, and for each OLS, only the top layer of the OLS is output.

[0234] The syntax element ols_mode_idc (864) equal to 1 specifies that the total number of OLSs specified by the VPS is equal to vps_max_layers_minus1+1, where the i-th OLS contains layers with layer indices greater than or equal to 0 and less than or equal to i, and for each OLS, all layers in the OLS are output.

[0235] The syntax element ols_mode_idc (864) equal to 2 specifies that the total number of OLSs specified by the VPS is explicitly signaled, that for each OLS the output layer is explicitly signaled, and that other layers are layers that are direct or indirect reference layers of the output layer of the OLS.

[0236] The value of the syntax element ols_mode_idc (864) may range from 0 to 2, inclusive. The value 3 of the syntax element ols_mode_idc (864) may be reserved for future use by ITU-T|ISO / IEC.

[0237] If the syntax element vps_all_independent_layers_flag (850) is equal to 1 and each_layer_is_an_ols_flag (862) is equal to 0, the value of the syntax element ols_mode_idc (864) can be inferred to be equal to 2.

[0238] The syntax element num_output_layer_sets_minus1 (866)+1 specifies the total number of OLSs specified by the VPS when the syntax element ols_mode_idc (864) is equal to 2.

[0239] The variable TotalNumOlss, which specifies the total number of OLSs specified by the VPS, can be derived as follows: if(vps_max_layers_minus1==0) TotalNumOlss=1 else if(each_layer_is_an_ols_flag||ols_mode_idc==0||ols_mode_idc==1) TotalNumOlss=vps_max_layers_minus1+1 else if(ols_mode_idc==2) TotalNumOlss=num_output_layer_sets_minus1+1

[0240] The syntax element ols_output_layer_flag[i][j] (868) equal to 1 specifies that the layer with nuh_layer_id equal to vps_layer_id[j] is the output layer of the ith OLS when the syntax element ols_mode_idc (864) is equal to 2. The syntax element ols_output_layer_flag[i][j] (868) equal to 0 specifies that the layer with nuh_layer_id equal to vps_layer_id[j] is not the output layer of the ith OLS when the syntax element ols_mode_idc (864) is equal to 2.

[0241] The variable NumOutputLayersInOls[i] specifying the number of output layers in the i-th OLS, the variable NumSubLayersInLayerInOLS[i][j] specifying the number of sublayers in the j-th layer in the i-th OLS, the variable OutputLayerIdInOls[i][j] specifying the nuh_layer_id value of the j-th output layer in the i-th OLS, and the variable LayerUsedAsOutputLayerFlag[k] specifying whether the k-th layer is used as an output layer in at least one OLS may be derived as follows: NumOutputLayersInOls[0]=1 OutputLayerIdInOls[0][0]=vps_layer_id[0] NumSubLayersInLayerInOLS[0][0]=vps_max_sub_layers_minus1+1 LayerUsedAsOutputLayerFlag[0]=1 for(i=1,i<=vps_max_layers_minus1;i++){ if(each_layer_is_an_ols_flag||ols_mode_idc<2) LayerUsedAsOutputLayerFlag[i]=1 else / *(!each_layer_is_an_ols_flag&&ols_mode_idc==2)* / LayerUsedAsOutputLayerFlag[i]=0 } for(i=1;i<TotalNumOlss;i++) if(each_layer_is_an_ols_flag||ols_mode_idc==0){ NumOutputLayersInOls[i]=1 OutputLayerIdInOls[i][0]=vps_layer_id[i] for(j=0;j<i&&(ols_mode_idc==0);j++) NumSubLayersInLayerInOLS[i][j]=max_tid_il_ref_pics_plus1[i] NumSubLayersInLayerInOLS[i][i]=vps_max_sub_layers_minus1+1 }else if(ols_mode_idc==1){ NumOutputLayersInOls[i]=i+1 for(j=0;j<NumOutputLayersInOls[i];j++){ OutputLayerIdInOls[i][j]=vps_layer_id[j] NumSubLayersInLayerInOLS[i][j]=vps_max_sub_layers_minus1+1 } }else if(ols_mode_idc==2){ for(j=0;j<=vps_max_layers_minus1;j++){ layerIncludedInOlsFlag[i][j]=0 NumSubLayersInLayerInOLS[i][j]=0 } for(k=0,j=0;k<=vps_max_layers_minus1;k++)(40) if(ols_output_layer_flag[i][k]){ layerIncludedInOlsFlag[i][k]=1 LayerUsedAsOutputLayerFlag[k]=1 OutputLayerIdx[i][j]=k OutputLayerIdInOls[i][j++]=vps_layer_id[k] NumSubLayersInLayerInOLS[i][j]=vps_max_sub_layers_minus1+1 } NumOutputLayersInOls[i]=j for(j=0;j<NumOutputLayersInOls[i];j++){ idx=OutputLayerIdx[i][j] for(k=0;k<NumRefLayers[idx];k++){ layerIncludedInOlsFlag[i][RefLayerIdx[idx][k]]=1 if(NumSubLayersInLayerInOLS[i][RefLayerIdx[idx][k]]< max_tid_il_ref_pics_plus1[OutputLayerIdInOls[i][j]]) NumSubLayersInLayerInOLS[i][RefLayerIdx[idx][k]]= max_tid_il_ref_pics_plus1[OutputLayerIdInOls[i][j]] } } }

[0242] For each value of i in the range from 0 to vps_max_layers_minus1, inclusive, the values ​​of LayerUsedAsRefLayerFlag[i] and LayerUsedAsOutputLayerFlag[i] may not all be equal to 0. In other words, there may be no layers that are not the output layer of at least one OLS or a direct reference layer of another layer.

[0243] For each OLS, there can be at least one layer that is the output layer, i.e., for any i in the range 0 to TotalNumOlss-1, inclusive, the value of NumOutputLayersInOls[i] can be 1 or greater.

[0244] The variable NumLayersInOls[i] that specifies the number of layers of the i-th OLS and the variable LayerIdInOls[i][j] that specifies the nuh_layer_id value of the j-th layer of the i-th OLS can be derived as follows: NumLayersInOls[0]=1 LayerIdInOls[0][0]=vps_layer_id[0] for(i=1;i <TotalNumOlss;i++){ if(each_layer_is_an_ols_flag){ NumLayersInOls[i]=1 LayerIdInOls[i][0]=vps_layer_id[i] }else if(ols_mode_idc==0||ols_mode_idc==1){ NumLayersInOls[i]=i+1 for(j=0;j <NumLayersInOls[i];j++) LayerIdInOls[i][j]=vps_layer_id[j] }else if(ols_mode_idc==2){ for(k=0,j=0;k<=vps_max_layers_minus1;k++) if(layerIncludedInOlsFlag[i][k]) LayerIdInOls[i][j++]=vps_layer_id[k] NumLayersInOls[i]=j } }

[0245] The variable OlsLayerIdx[i][j], which specifies the OLS layer index of the layer whose nuh_layer_id is equal to LayerIdInOls[i][j], is derived as follows: for(i=0;i <TotalNumOlss;i++) for j=0;j <NumLayersInOls[i];j++) OlsLayerIdx[i][LayerIdInOls[i][j]]=j

[0246] The lowest layer in each OLS may be an independent layer. That is, for each i in the range 0 to TotalNumOlss-1, inclusive, the value of vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]] may be 1. Each layer may be included in at least one OLS specified by the VPS. In other words, for each layer with a particular value of nuh_layer_id, nuhLayerId equal to one of vps_layer_id[k], for k in the range 0 to vps_max_layers_minus1, inclusive, there may be at least one pair of i and j values, where i is in the range 0 to TotalNumOlss-1, inclusive, and j is in the range NumLayersInOls[i]-1, inclusive, such that the value of LayerIdInOls[i][j] equals nuhLayerId.

[0247] In one embodiment, the decoding process may operate as follows on the current picture (eg, sytax element CurrPic) to set the syntax element PictureOutputFlag.

[0248] PictureOutputFlag is set equal to 0 if one of the following conditions is true: (1) The current picture is an RASL picture and the associated IRAP picture's NoOutputBeforeRecoveryFlag is equal to 1; (2) gdr_enabled_flag is equal to 1 and the current picture is a GDR picture with NoOutputBeforeRecoveryFlag equal to 1; (3) gdr_enabled_flag is equal to 1, the current picture is associated with a GDR picture whose NoOutputBeforeRecoveryFlag is equal to 1, and the PicOrderCntVal of the current picture is less than the RpPicOrderCntVal of the associated GDR picture; (4) sps_video_parameter_set_id is greater than 0, ols_mode_idc is equal to 0, and the current AU contains a picture (e.g., syntax element picA) that satisfies all of the following conditions: (a) PicA has PictureOutputFlag equal to 1, (b) PicA has nuh_layer_id nuhLid greater than the current picture, and (c) PicA belongs to the output layer of OLS (i.e., OutputLayerIdInOls[TargetOlsIdx][0] is equal to nuhLid). (5) sps_video_parameter_set_id is greater than 0, ols_mode_idc is equal to 2, and ols_output_layer_flag[TargetOlsIdx][GeneralLayerIdx[nuh_layer_id]] is equal to 0.

[0249] If none of the above conditions are true, the syntax element PictureOutputFlag may be set equal to the syntax element pic_output_flag.

[0250] After all slices of the current picture have been decoded, the current decoded picture may be marked as "used for short-term reference" and each ILRP entry in RefPicList[0] or RefPicList[1] may be marked as "used for short-term reference".

[0251] In the same or other embodiments, if each layer is an output layer set, the syntax element PictureOutputFlag is set equal to pic_output_flag, regardless of the value of the syntax element ols_mode_idc (864).

[0252] In the same or another embodiment, the syntax element PictureOutputFlag is set equal to 0 if sps_video_parameter_set_id is greater than 0, each_layer_is_an_ols_flag (862) is equal to 0, ols_mode_idc (864) is equal to 0, and the current AU contains a picture picA that satisfies all of the following conditions: PicA has PictureOutputFlag equal to 1, PicA has a nuh_layer_id nuhLid greater than that of the current picture, and PicA belongs to the output layer of OLS (i.e., OutputLayerIdInOls[TargetOlsIdx][0] is equal to nuhLid).

[0253] In the same or another embodiment, the syntax element PictureOutputFlag is set equal to 0 if sps_video_parameter_set_id is greater than 0, each_layer_is_an_ols_flag is equal to 0, ols_mode_idc is equal to 2, and ols_output_layer_flag[TargetOlsIdx][GeneralLayerIdx[nuh_layer_id]] is equal to 0.

[0254] An Intra Random Access Point (IRAP) picture may be a coded picture for random access, which may be an Instantaneous Decoding Refresh (IDR) picture supporting a closed group picture structure, or a Clean Random Access (CRA) picture supporting an open group picture structure. A Gradual Decoding Refresh (GDR) picture may be a picture for gradual random access with partial refresh of the picture.

[0255]

[00110] Embodiments of the present disclosure may include syntax elements that indicate an IRAP picture or a GDR picture. For example, referring to Figure 26, picture header (1) may be provided. In picture header (1), a flag ph_gdr_or_irap_pic_flag(2) may be signaled. The flag indicates that an IRAP picture or a GDR picture is present in the current PU associated with picture header (1).

[0256] In the same or another embodiment, the flag ph_no_output_of_prior_pics_flag(3) may be conditionally signaled only if ph_gdr_or_irap_pic_flag(2) is equal to 1, as shown in Figure 26. The value of ph_no_output_of_prior_pics_flag(3) may be used for outputting and removing pictures from the DPB. The value of the flag may affect the output of previously decoded pictures in the DPB after decoding of a picture in a CVSS AU that is not the first AU in the bitstream.

[0257] Because the constraint specified by the semantics of ph_gdr_or_irap_pic_flag can be "unidirectional," such that the flag ph_gdr_or_irap_pic_flag equal to 1 specifies that the current picture is a GDR or IRAP picture, there is a potential problem that an IRAP picture can have ph_gdr_or_irap_pic_flag equal to 0. The flag ph_gdr_or_irap_pic_flag equal to 0 specifies that the current picture is not a GDR picture and may or may not be an IRAP picture. If the value of ph_gdr_or_irap_pic_flag for an IRAP picture is equal to 0, the value of ph_no_output_of_prior_pics_flag can be used for DPB operations without signaling or inference rules.

[0258] To address potential issues, in one embodiment, the semantic constraint of ph_gdr_or_irap_pic_flag(2) can be specified as "bidirectional", so that ph_no_output_of_prior_pics_flag(3) may need to be signaled when the current picture is an IRAP picture. The flag ph_gdr_or_irap_pic_flag(2) equal to 1 specifies that the current picture is a GDR or IRAP picture. The flag ph_gdr_or_irap_pic_flag(2) equal to 0 specifies that the current picture is neither a GDR nor an IRAP picture.

[0259] In the same or another embodiment, the inference rule for the ph_no_output_of_prior_pics_flag(3) value, if not present, may be specified as follows: The flag ph_no_output_of_prior_pics_flag(3) affects the output of previously decoded pictures in the DPB after decoding of a picture in a CVSS AU that is not the first AU in the bitstream. If present, it may be a bitstream conformance requirement that the value of ph_no_output_of_prior_pics_flag(3) must be the same for all pictures in the AU.

[0260] If ph_no_output_of_prior_pics_flag(3) is present in the picture header(1) of a picture in the AU, the ph_no_output_of_prior_pics_flag(3) value of the AU is the ph_no_output_of_prior_pics_flag(3) value of the picture in the AU. If not present, the value of ph_no_output_of_prior_pics_flag(3) may be inferred to be equal to 0.

[0261] 27, the AU delimiter (10) can be used to indicate the start of an AU, whether the AU is an IRAP or GDR AU, and the type of slices present in the coded picture within the AU that contains the AU delimiter NAL unit. When a bitstream contains only one layer, there may be no standard decoding process associated with the AU delimiter (10).

[0262] In AU delimiter (10), aud_irap_or_gdr_au_flag(12) may indicate the presence of an IRAP or GDR AU and may be signaled as shown in Figure 27. A flag aud_irap_or_gdr_au_flag(12) equal to 1 may specify that the AU containing the AU delimiter is an IRAP or GDR AU. Also, a flag aud_irap_or_gdr_au_flag(12) equal to 0 may indicate that the AU containing the AU delimiter (10) is neither an IRAP nor a GDR AU.

[0263] In the same or another embodiment, the IRAP or GDR AU flag aud_irap_or_gdr_au_flag(12) may be present if the bitstream has multiple layers and sps_video_parameter_set_id is greater than 0. Video coding technologies or standards may require the presence of AU delimiters for multi-layer bitstreams.

[0264] In the same or another embodiment, referring to Figures 26-27, when aud_irap_or_gdr_au_flag(12) is present and the value of aud_irap_or_gdr_au_flag(12) is equal to 1, the value of ph_gdr_or_irap_pic_flag(2) may be required to be equal to 1. This is because when aud_irap_or_gdr_au_flag(12) in AU delimiter(10) is 1, each PU may have a GDR or IRAP picture.

[0265] In the same or another embodiment, when pps_mixed_nalu_types_in_pic_flag is 1, the value of ph_no_output_of_prior_pics_flag may not be present, and when pps_mixed_nalu_types_in_pic_flag is determined (e.g., by the decoder) to be present, the value of ph_no_output_of_prior_pics_flag(3) may be ignored.

[0266] In the same or another embodiment, ph_no_output_of_prior_pics_flag(3) may affect the output of previously decoded pictures in the DPB after decoding of a picture in a CVSS AU that is not the first AU in the bitstream. If not present, the value of ph_no_output_of_prior_pics_flag(3) may be inferred to be equal to 1.

[0267] In the same or another embodiment, to solve the problem of the value of ph_no_output_of_prior_pics_flag(3) being used without an inference rule, if ph_no_output_of_prior_pics_flag(3) is not present and ph_gdr_or_irap_pic_flag(2) is equal to 1, ph_gdr_or_irap_pic_flag(2) can be replaced with ph_irap_pic_flag(6) in the picture header(1), as shown in Figure 28. The flag ph_irap_pic_flag(6) equal to 1 can specify that the current picture is an IRAP picture. The flag ph_irap_pic_flag(6) equal to 0 can specify that the current picture is not an IRAP picture.

[0268] In the same or another embodiment, to solve the problem of the value of ph_no_output_of_prior_pics_flag(3) being used without an inference rule, when ph_no_output_of_prior_pics_flag(3) is not present and ph_gdr_or_irap_pic_flag(2) is equal to 1, ph_no_output_of_prior_pics_flag(3) in the picture header (1) may be replaced with sh_no_output_of_prior_pics_flag(23) in the slice header (20), as shown in Figure 29.

[0269] In the same embodiment, sh_no_output_of_prior_pics_flag (23) may be conditionally present in the slice header (20) only if the NAL unit type of the current VCL NAL is equal to IDR_W_RADL, IDR_N_LP, or CRA_NUT. IDR_W_RADL is a NAL unit type that contains a coded slice segment of an IDR picture that does not have an associated RADL picture present in the bitstream, but may have an associated RADL picture in the bitstream. IDR_N_LP may be a NAL unit type that contains a coded slice segment of an IDR picture that does not have an associated first picture present in the bitstream. CRA_NUT is a NAL unit type that contains a coded slice segment of a CRA picture.

[0270] In the same or another embodiment, sh_no_output_of_prior_pics_flag(23) may affect the output of previously decoded pictures in the DPB after decoding of a picture in a CVSS AU that is not the first AU in the bitstream.

[0271] In the same or another embodiment, it may be a bitstream compatibility requirement that, if present, the value of sh_no_output_of_prior_pics_flag(23) should be the same for all pictures in an AU. If sh_no_output_of_prior_pics_flag(23) is present in the slice header (20) of a picture in the AU, the sh_no_output_of_prior_pics_flag(23) value for the AU may be the sh_no_output_of_prior_pics_flag(23) value of the picture in the AU.

[0272] In the same or another embodiment, the value of sh_no_output_of_prior_pics_flag(23) may not be present when pps_mixed_nalu_types_in_pic_flag in the picture parameter set is equal to 1. If present, the value of sh_no_output_of_prior_pics_flag(23) may be ignored.

[0273] In the same or another embodiment, aud_irap_au_flag(16) may be present in AU delimiter(10), as shown in Figure 30. The flag aud_irap_au_flag(16) equal to 1 may specify that the AU containing AU delimiter(10) is an IRAP AU. The flag aud_irap_au_flag(16) equal to 0 may indicate that the AU containing AU delimiter(10) is not an IRAP AU.

[0274] Also in this embodiment, when aud_irap_au_flag(16) is present, the value of ph_irap_pic_flag(6) in picture header(1) may be equal to aud_irap_au_flag(16) in AU delimiter(10). Flag ph_irap_pic_flag(7) equal to 1 may specify that the picture associated with PH(1) is an IRAP picture. Flag ph_irap_pic_flag(6) equal to 0 may specify that the picture associated with PH(1) is not an IRAP picture.

[0275] In the same or another embodiment, aud_gdr_au_flag(17) may be present in AU delimiter(10), as shown in Figure 30. The flag aud_gdr_au_flag(17) equal to 1 may indicate that the AU containing AU delimiter(10) is a GDR AU. The flag aud_irap_au_flag(17) equal to 0 may indicate that the AU containing AU delimiter(10) is not a GDR AU.

[0276] Also in this embodiment, if aud_gdr_au_flag(17) in AU delimiter(10) is present, the value of ph_gdr_pic_flag(7) in picture header(1) may be equal to aud_gdr_au_flag(17) in AU delimiter(10). Flag ph_gdr_pic_flag(7) equal to 1 may specify that the picture associated with PH(1) is a GDR picture. Flag ph_gdr_pic_flag(7) equal to 0 may specify that the picture associated with PH(1) is not a GDR picture.

[0277] Gradual decoding refresh (GDR) may be specified by the following definition: GDR AU: An AU in which there are PUs for each layer specified in the VPS, and the coded pictures in each PU are GDR pictures. GDR PU: A PU whose coded picture is a GDR picture. GDR picture: A picture in which each VCL NAL unit has nal_unit_type equal to GDR_NUT. GDR subpicture: A subpicture in which each VCL NAL unit has nal_unit_type equal to GDR_NUT. GDR_NUT: NAL unit type containing coded tile groups of a GDR picture.

[0278] According to an embodiment, the first picture in a bitstream in decoding order may be an IRAP or GDR picture. Subsequent pictures associated with an IRAP or GDR picture may also follow the IRAP or GDR picture in decoding order. Pictures that follow the associated IRAP picture in output order and precede the associated IRAP picture in decoding order may not be allowed.

[0279] In one embodiment, referring to Figure 31, syntax elements indicating GDR are signaled in PH(1), such as ph_gdr_pic_flag(7). If not present, the value of ph_gdr_pic_flag(7) can be inferred to be equal to 0. When sps_gdr_enabled_flag is equal to 0, the value of ph_gdr_pic_flag(7) can be inferred to be equal to 0. The syntax element ph_recovery_poc_cnt(32) can specify the recovery points of decoded pictures in output order.

[0280] If the current picture is a GDR picture, the variable recoveryPointPocVal may be derived as follows: recoveryPointPocVal=PicOrderCntVal+ph_recovery_poc_cnt

[0281] In the same or another embodiment, as shown in FIG. 31, ph_recovery_poc_cnt(34) is signaled after signaling the Picture Order Count (POC) syntax elements (e.g., ph_pic_order_cnt_lsb(32) and ph_poc_msb_cycle_val(36)), because PicOrderCntVal used to derive recoveryPointPocVal is derived from the values ​​of ph_pic_order_cnt_lsb(32) and ph_poc_msb_cycle_val(36)).

[0282] If the current picture is a GDR picture and there is a picture picA following the current GDR picture in decoding order in the CLVS with a PicOrderCntVal equal to recoveryPointPocVal, then the picture picA can be called a recovery point picture. Otherwise, the first picture in output order in the CLVS with a PicOrderCntVal greater than recoveryPointPocVal can be called a recovery point picture. A recovery point picture does not have to precede the current GDR picture in decoding order. A picture associated with the current GDR picture and with a PicOrderCntVal less than recoveryPointPocVal may be called a recovery picture of the GDR picture. The value of ph_recovery_poc_cnt(34) may be greater than or equal to 0 and less than or equal to MaxPicOrderCntLsb-1.

[0283] In the same or another embodiment, the restoration point picture does not have to precede the current GDR picture in both decoding order and output order.

[0284] In the same or another embodiment, the reconstructed picture may not precede the current GDR picture in both decoding order and output order.

[0285] In the same or another embodiment, a restored picture may precede its associated restoration point picture in both decoding order and output order.

[0286] In the same or another embodiment, when the current picture is a GDR picture or a reconstructed picture of a GDR picture and contains a non-CTU aligned boundary between a "refresh region" (i.e., a region that, if present, has an exact match of decoded sample values ​​when starting the decoding process from the GDR picture compared to starting the decoding process in decoding order from the previous IRAP picture) and a "dirty region" (i.e., a region that, if present, may not have an exact match of decoded sample values ​​when starting the decoding process from the GDR picture compared to starting the decoding process in decoding order from the previous IRAP picture), it may be necessary to disable chroma residual scaling of luma mapping with chroma scaling (LMCS) in the current picture to avoid the "dirty region" and affect the decoded sample values ​​of the "refresh region."

[0287] In the same or another embodiment, the value of recoveryPointPocVal for layer A may be greater than or equal to the recoveryPointPocVal of layer A's reference layer.

[0288] In the same or another embodiment, the value of recoveryPointPocVal of a layer A with layerId equal to m may be greater than or equal to the recoveryPointPocVal of another layer B with layerId equal to n, where m is greater than n.

[0289] In the same or another embodiment, the value of recoveryPointPocVal of a layer A with layerId equal to m may be greater than or equal to the recoveryPointPocVal of another layer B with layerId equal to n, where m is greater than n and layers A and B belong to the same output layer set.

[0290] In the same or another embodiment, the value of recoveryPointPocVal for layer A may be equal to the recoveryPointPocVal of layer A's reference layer.

[0291] In the same or another embodiment, the value of recoveryPointPocVal of a layer A with layerId equal to m may be equal to the recoveryPointPocVal of another layer B with layerId equal to n, where m is greater than n.

[0292] In the same or another embodiment, the value of recoveryPointPocVal of a layer A whose layerId is equal to m may be equal to the recoveryPointPocVal of another layer B whose layerId is equal to n, where m is greater than n and layers A and B belong to the same output layer set.

[0293] In the same or another embodiment, when pps_mixed_nalu_types_in_pic_flag is equal to 1, the following may apply: (1) A picture shall have at least two subpictures. (2) The VCL NAL units of a picture shall have two or more distinct nal_unit_type values. (3) There shall be no VCL NAL units of a picture with nal_unit_type equal to GDR_NUT. (4) The picture shall not be a restoration or reconstruction picture associated with a GDR picture. (5) When a VCL NAL unit of at least one subpicture of a picture has a particular value of nal_unit_type equal to IDR_W_RADL, IDR_N_LP, or CRA_NUT, all VCL NAL units of other subpictures in the picture shall have nal_unit_type equal to TRAIL_NUT.

[0294] TRAIL_NUT is a NAL unit type that contains coded tile groups of VCL non-STSA trailing pictures.

[0295] At the beginning of the decoding process for each slice of a picture, a decoding process for reference picture list construction may be invoked to derive reference picture list 0 (RefPicList[0]) and reference picture list 1 (RefPicList[1]). After constructing one or more reference picture lists, a decoding process for reference picture marking may be invoked, and reference pictures may be marked as "unused for reference," "used for short-term reference," or "used for long-term reference."

[0296] Referring to Figure 32, according to an embodiment, a decoding process (40) may be performed by a decoder. The decoding process (40) may construct one or more reference picture lists (RPLs) (42). When the one or more reference picture lists are constructed, one or more pictures may be unavailable due to random access or unintentional picture loss. The decoder may determine whether a reference picture in the RPL is available in the DPB (44). If a reference picture is determined to be unavailable, the unavailable reference picture may be marked as "no reference picture." To avoid a decoder crash or unintended behavior, the unavailable reference picture may be immediately generated using pixel and parameter default values ​​(46). After generating the unavailable reference picture (and / or after determining that a reference picture is available), the decoder may verify the verification of all reference pictures in the reference picture list, including the generated picture (48).

[0297] In the same or another embodiment, one or more reference picture lists are constructed by parsing RPL syntax elements in the SPS, PH, and / or SH (42). After the constructing step (42), one or more reference pictures in the RPL list may be unavailable because a random access skipped first picture (RASL) associated with a CRA picture may be discarded by the decoder or system or may not be decoded correctly if a random access occurs at the CRA picture. The unavailable reference pictures may be generated using default pixel and parameter values ​​(46).

[0298] In the same or another embodiment, if the current picture is an IDR picture with sps_idr_rpl_present_flag equal to 1 or pps_rpl_info_in_ph_flag equal to 1, a CRA picture with NoOutputBeforeRecoveryFlag equal to 1, or a GDR picture with NoOutputBeforeRecoveryFlag equal to 1, at least one of the following decoding processes to generate an unavailable reference picture (46) is invoked, which may only need to be invoked for the first slice of the picture:

[0299] A. General Decoding Process for Generating Unavailable Reference Pictures This process may be called once per coded picture if the current picture is an IDR picture with sps_idr_rpl_present_flag equal to 1 or pps_rpl_info_in_ph_flag equal to 1, a CRA picture with NoOutputBeforeRecoveryFlag equal to 1, or a GDR picture with NoOutputBeforeRecoveryFlag equal to 1. When this process is called, the following may apply: for i in the range 0 to 1, inclusive, and j in the range 0 to num_ref_entries[i][RplsIdx[i]]-1, inclusive, i.e., for each RefPicList[i][j] equal to "no reference picture", a picture is generated as described below in "Generating One Unavailable Picture", and the following applies: (1) The value of nuh_layer_id of the picture to be created is set equal to the nuh_layer_id of the current picture. (2) If st_ref_pic_flag[i][RplsIdx[i]][j] is equal to 1 and inter_layer_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0, the value of the PicOrderCntVal of the generated picture is set equal to RefPicPocList[i][j] and the generated picture is marked as "used for short-term reference." (3) Otherwise, if st_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0 and inter_layer_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0, then the value of PicOrderCntVal for the generated picture is set equal to RefPicLtPocList[i][j], the value of ph_pic_order_cnt_lsb for the generated picture is inferred to be equal to (RefPicLtPocList[i][j]&(MaxPicOrderCntLsb-1)), and the generated picture is marked as "used for long-term reference." (4) The value of PictureOutputFlag of the generated reference picture is set to 0. (5) RefPicList[i][j] is set to the generated reference picture. (6) The value of TemporalId of the generated picture is set equal to the TemporalId of the current picture. (7) The value of ph_non_ref_pic_flag of the generated picture is set equal to 0. (8) The value of ph_pic_parameter_set_id of the generated picture is set equal to the ph_pic_parameter_set_id of the current picture.

[0300] The flag ph_non_ref_pic_flag equal to 1 may specify that the picture associated with PH is never used as a reference picture. The flag ph_non_ref_pic_flag equal to 0 specifies that the picture associated with PH may or may not be used as a reference picture.

[0301] B. Creating a Single Unusable Picture When this process is called, it will produce an unusable picture as follows: (1) Picture sample array S L The value of each element in is set equal to 1<<(BitDepth-1). (2) When sps_chroma_format_idc is not 0, the sample array S for the picture Cb ,S Cr The value of each element of is set equal to 1<<(BitDepth-1). (3) The prediction mode CuPredMode[0][x][y] is set equal to MODE_INTRA if x is greater than or equal to 0 and less than or equal to pps_pic_width_in_luma_samples-1 and y is greater than or equal to 0 and less than or equal to pps_pic_height_in_luma_samples-1.

[0302] In the same or another embodiment, after generating an unavailable reference picture in the RPL list, a bitstream conformance check of all or active reference pictures in the RPL list may be invoked, for example, by a decoder. For example, the decoder may check that the following constraints apply to bitstream conformance: (1) For each i equal to 0 or 1, num_ref_entries[i][RplsIdx[i]] shall not be less than NumRefIdxActive[i]. (2) The picture referenced by each active entry in RefPicList[0] or RefPicList[1] shall be present in the DPB and shall have a TemporalId less than or equal to the current picture's TemporalId. (3) The picture referenced by each entry in RefPicList[0] or RefPicList[1] shall not be the current picture and shall have ph_non_ref_pic_flag equal to 0. (4) A short-term reference picture (STRP) entry in RefPicList[0] or RefPicList[1] of a slice of a picture and a long-term reference picture (LTRP) entry in RefPicList[0] or RefPicList[1] of the same slice or a different slice of the same picture must not refer to the same picture. (5) The difference between the PicOrderCntVal of the current picture and the PicOrderCntVal of the picture referenced by the entry is 2 24 There must be no more LTRP entries in RefPicList[0] or RefPicList[1]. (6) Let setOfRefPics be the set of unique pictures referenced by all entries in RefPicList[0] that have the same nuh_layer_id as the current picture and all entries in RefPicList[1] that have the same nuh_layer_id as the current picture. The number of pictures in setOfRefPics must be less than or equal to MaxDpbSize-1, where MaxDpbSize is , and setOfRefPics must be the same for all slices of a picture. (7) When the current slice has nal_unit_type equal to STSA_NUT, there shall be no active entries in RefPicList[0] or RefPicList[1] with TemporalId equal to that of the current picture and nuh_layer_id equal to that of the current picture. (8) If the current picture is a picture that follows, in decoding order, a Stepwise Temporal Sub-Layer Access (STSA) picture with a TemporalId equal to the current picture and a nuh_layer_id equal to the current picture, then there shall be no picture that precedes the STSA picture in decoding order, has a TemporalId equal to the current picture, and has a nuh_layer_id equal to the current picture that is included as an active entry in RefPicList[0] or RefPicList[1]. (9) If the current subpicture having a TemporalId equal to a specific value tId, a nuh_layer_id equal to a specific value layerId, and a subpicture index equal to a specific value subpicIdx is a subpicture that follows, in decoding order, an STSA subpicture having a TemporalId equal to tId, a nuh_layer_id equal to layerId, and a subpicture index equal to subpicIdx, then there shall be no picture with a TemporalId equal to tId and a nuh_layer_id equal to layerId that precedes, in decoding order, the picture containing the STSA subpicture that is included as an active entry in RefPicList[0] or RefPicList[1]. (10) When the current picture with nuh_layer_id equal to a particular value layerId is an IRAP picture, there shall be no pictures referenced by entries in RefPicList[0] or RefPicList[1] that precede, in output order or decoding order, the preceding IRAP picture (if any) with nuh_layer_id equal to layerId in decoding order. (11) When the current subpicture with nuh_layer_id equal to a particular value layerId and subpicture index equal to a particular value subpicIdx is an IRAP subpicture, there shall be no pictures referenced by entries in RefPicList[0] or RefPicList[1] that precede, in output order or decoding order, any preceding picture (if any) that contains an IRAP subpicture with nuh_layer_id equal to layerId and subpicIdx in decoding order. (12) If the current picture is not a RASL picture associated with a CRA picture whose NoOutputBeforeRecoveryFlag is 1, there shall be no pictures referenced by active entries in RefPicList[0] or RefPicList[1] generated by the decoding process to generate unavailable reference pictures for the CRA picture associated with the current picture. (13) If the current subpicture is not a RASL subpicture associated with a CRA subpicture in a CRA picture whose NoOutputBeforeRecoveryFlag is 1, there shall be no pictures referenced by active entries in RefPicList[0] or RefPicList[1] generated by the decoding process to generate unavailable reference pictures for the CRA picture containing the CRA subpicture associated with the current subpicture. (14) If the current picture with nuh_layer_id equal to the specified value layerId is not one of the following, there should be no pictures referenced by entries in RefPicList[0] or RefPicList[1] generated by the decoding process to generate unavailable reference pictures for the IRAP picture or GDR picture associated with the current picture: (a) An IDR picture where sps_idr_rpl_present_flag is 1 or pps_rpl_info_in_ph_flag is 1. (b) A CRA picture with NoOutputBeforeRecoveryFlag set to 1. (c) A picture associated with a CRA picture in which NoOutputBeforeRecoveryFlag is 1, and which is earlier in decoding order than the first picture associated with the same CRA picture. (d) The first picture associated with a CRA picture whose NoOutputBeforeRecoveryFlag is 1. (e) GDR picture with NoOutputBeforeRecov.eryFlag set to 1. (f) A restored picture of a GDR picture where NoOutputBeforeRecoveryFlag is 1 and nuh_layer_id is layerId. (15) If the current subpicture, whose nuh_layer_id is equal to a specific value layerId and whose subpicture index is equal to a specific value subpicIdx, is not one of the following, there shall be no pictures referenced by entries in RefPicList[0] or RefPicList[1] generated by the decoding process to generate unavailable reference pictures for an IRAP or GDR picture that contains an IRAP or GDR subpicture associated with the current subpicture. (a) An IDR sub-picture within an IDR picture where sps_idr_rpl_present_flag is 1 or pps_rpl_info_in_ph_flag is 1. (b) A CRA sub-picture within a CRA picture where NoOutputBeforeRecoveryFlag is 1. (c) A sub-picture associated with a CRA sub-picture in a CRA picture in which NoOutputBeforeRecoveryFlag is 1, and which is earlier in decoding order than the first picture associated with the same CRA picture. (d) The leading sub-picture associated with a CRA sub-picture in a CRA picture in which NoOutputBeforeRecoveryFlag is 1. (e) A GDR sub-picture within a GDR picture where NoOutputBeforeRecoveryFlag is 1. (f) A sub-picture within a restored picture of a GDR picture where NoOutputBeforeRecoveryFlag is 1 and nuh_layer_id is layerId. (16) When the current picture follows an IRAP picture with the same value of nuh_layer_id in both decoding order and output order, no picture referenced by an active entry in RefPicList[0] or RefPicList[1] precedes that IRAP picture in output order or decoding order. (17) When the current subpicture follows an IRAP subpicture with the same value of nuh_layer_id and the same value of subpicture index in both decoding order and output order, no picture referenced by an active entry in RefPicList[0] or RefPicList[1] precedes the picture containing that IRAP subpicture in output order or decoding order. (18) When the current picture traverses the IRAP picture with the same value of nuh_layer_id and the first picture, if any, associated with that IRAP picture in both decoding order and output order, there shall be no picture referenced by an entry in RefPicList[0] or RefPicList[1] that precedes that IRAP picture in output order or decoding order. (19) When the current subpicture follows an IRAP subpicture with the same value of nuh_layer_id and the same value of subpicture index, and the first subpicture, if any, associated with that IRAP subpicture in both decoding order and output order, no picture referenced by an entry in RefPicList[0] or RefPicList[1] shall precede the picture containing that IRAP subpicture in output order or decoding order. (20) If the current picture is a random access decodable first (RADL) picture, there shall be no active entries in RefPicList[0] or RefPicList[1], which are either: (a) The RASL picture's pps_mixed_nalu_types_in_pic_flag is 0. This means that an active entry in the RPL of a RADL picture may reference a RADL picture that has pps_mixed_nalu_types_in_pic_flag equal to 1. However, such a RADL picture can still be decoded correctly when decoding starts from the associated CRA picture, since a RADL picture only references RADL subpictures in the referenced RASL picture, as imposed by the following constraint that does not allow RADL subpictures to reference RADL subpictures, and therefore the RADL subpictures in the referenced RASL picture are decoded correctly. (b) A picture that precedes the associated IRAP picture in decoding order. (21) When the current subpicture with nuh_layer_id equal to the specified value layerId and subpicture index equal to the specified value subpicIdx is a RADL subpicture, there shall be no active entries in RefPicList[0] or RefPicList[1] that are either: (a) The picture with nuh_layer_id equal to layerId contains a RASL subpicture with a subpicture index equal to subpicIdx. (b) The picture that precedes in decoding order the picture containing the associated IRAP sub-picture. (22) The picture referenced by each ILRP entry, if present in RefPicList[0] or RefPicList[1] of a slice of the current picture, is subject to the following constraints: (a) The picture is assumed to be in the same AU as the current picture. (b) The picture shall be present in the DPB. (c) The picture shall have a nuh_layer_id refPicLayerId that is less than the nuh_layer_id of the current picture. (d) One of the following constraints applies: the picture shall be an IRAP picture; or the picture shall have a TemporalId less than or equal to Max(0,vps_max_tid_il_ref_pics_plus1[currLayerIdx][refLayerIdx]-1), where currLayerIdx and refLayerIdx are equal to GeneralLayerIdx[nuh_layer_id] and GeneralLayerIdx[refpicLayerId], respectively. (23) Each ILRP entry shall be an active entry if it exists in RefPicList[0] or RefPicList[1] of a slice. (24) If vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 0 and sps_num_subpics_minus1 is greater than 0, then either (but not both) of the following two conditions shall be true: (a) The picture referenced by each active entry in RefPicList[0] or RefPicList[1] has the same subpicture layout as the current picture (i.e., the SPSs referenced by that picture and the current picture have the same value of sps_num_subpics_minus1 and the same values ​​of sps_subpic_ctu_top_left_x[j], sps_subpic_ctu_top_left_y[j], sps_subpic_width_minus1[j], and sps_subpic_height_minus1[j], for each value of j in the range from 0 to sps_num_subpics_minus1, respectively). (b) The picture referenced by each active entry in RefPicList[0] or RefPicList[1] is an ILRP whose sps_num_subpics_minus1 has a value of 0.

[0303] C. Reference Picture Marking Decoding Process In the same or another embodiment, when a reference picture is marked, the following decoding process may be invoked.

[0304] This process may be invoked once per picture, after the decoding processes for the slice header and for building the reference picture list for the slice, but before the decoding of the slice data. This process may mark one or more reference pictures in the DPB as "unused for reference" or "used for long-term reference".

[0305] A decoded picture in the DPB can be marked as "unused for reference," "used for short-term reference," or "used for long-term reference," but only one of these three can be marked at any given moment during the operation of the decoding process. Assigning one of these markings to a picture can implicitly remove another of these markings, if applicable. When a picture is referred to as being marked as "used for reference," this refers collectively to a picture being marked as "used for short-term reference" or "used for long-term reference" (but not both).

[0306] STRPs and ILRPs can be identified by their nuh_layer_id and PicOrderCntVal values. LTRPs can be identified by their nuh_layer_id value and the Log 2(MaxLtPicOrderCntLsb) LSB of their PicOrderCntVal value.

[0307] If the current picture is a CLVSS picture, all current reference pictures in the DPB that have the same nuh_layer_id as the current picture (if any) may be marked as "unused for reference".

[0308] Otherwise, the following may apply. (1) For each LTRP entry in RefPicList[0] or RefPicList[1], if the picture is an LTRP with the same nuh_layer_id as the current picture, then the picture is marked as "used for long-term reference." (2) A reference picture with the same nuh_layer_id as the current picture in the DPB that is not referenced by any entry in RefPicList[0] or RefPicList[1] is considered "unused for reference." (3) For each ILRP entry in RefPicList[0] or RefPicList[1], the picture is marked as "used for long-term reference."

[0309] In the same or another embodiment, for each LTRP entry in RefPicList[0] or RefPicList[1], if a picture with the same nuh_layer_id as the current picture is marked as "used for short-term reference", then the picture is marked as "used for long-term reference".

[0310] In the same or another embodiment, when one or more RPL lists are constructed, the following may apply. For each RefPicList[i][j], i ranges from 0 to 1, inclusive, and j ranges from 0 to num_ref_entries[i][RplsIdx[i]]-1, inclusive, i.e., a picture equivalent to "no reference picture" is generated.

[0311] In the same or another embodiment, when one or more RPL lists are constructed, the following may apply. For each RefPicList[i][j], i ranges from 0 to 1, inclusive, and j ranges from 0 to NumRefIdxActive[i]-1, inclusive, i.e., a picture equivalent to "no reference picture" is generated.

[0312] In the decoding process for reference picture list construction, the missing reference pictures in the DPB can be set equal to "No Reference Picture". Unavailable pictures equal to "No Reference Picture" are generated via the decoding process for generating unavailable reference pictures for conformance checking purposes. The problem is that not only unavailable reference pictures within the same layer, but also unavailable inter-layer reference pictures within a reference layer are set equal to "No Reference Picture", as follows: if(!inter_layer_ref_pic_flag[i][RplsIdx[i]][j]){ if(st_ref_pic_flag[i][RplsIdx[i]][j]){ RefPicPocList[i][j]=pocBase+DeltaPocValSt[i][RplsIdx[i]][j] if(there is reference picture picA in the DPB with the same nuh_layer_id as the current picture and PicOrderCntVal equal to RefPicPocList[i][j]) RefPicList[i][j]=picA else RefPicList[i][j]=“no reference picture” pocBase=RefPicPocList[i][j] }else{ if(!delta_poc_msb_cycle_present_flag[i][k]){ if(there is reference picA in the DPB with the same nuh_layer_id as the current picture and PicOrderCntVal&(MaxPicOrderCntLsb-1)equal to PocLsbLt[i][k]) RefPicList[i][j]=picA else RefPicList[i][j]=“no reference picture” RefPicLtPocList[i][j]=PocLsbLt[i][k] }else{ if(there is areference picA in the DPB with the same nuh_layer_id as the current picture and PicOrderCntVal equal to FullPocLt[i][k]) RefPicList[i][j]=picA else RefPicList[i][j]=“no reference picture” RefPicLtPocList[i][j]=FullPocLt[i][k] } k++ } }else{ layerIdx=DirectRefLayerIdx[GeneralLayerIdx[nuh_layer_id]][ilrp_idx[i][RplsIdx][j]] refPicLayerId=vps_layer_id[layerIdx] if(there is a reference picture picA in the DPB with nuh_layer_id equal to refPicLayerId and the same PicOrderCntVal as the current picture) RefPicList[i][j]=picA else RefPicList[i][j]=“no reference picture” }

[0313] However, in the decoding process for generating unavailable reference pictures, all unavailable pictures equal to "No Reference Picture" may be treated as reference pictures within the same layer, resulting in the nuh_layer_id and PicOrderCntVal values ​​of unavailable inter-layer reference pictures being set to correct values. Also, unavailable inter-layer reference pictures are not correctly marked as "used for long-term reference." These incorrect values ​​will cause errors in the decoding process of subsequent pictures and bitstream conformance checking. Therefore, according to an embodiment, unavailable inter-layer reference pictures equal to "No Reference Picture" should be correctly generated as follows:

[0314] D. Improved Decoding Process for Generating Unavailable Reference Pictures This process is called once per coded picture when the current picture is an IDR picture with sps_idr_rpl_present_flag equal to 1 or pps_rpl_info_in_ph_flag equal to 1, a CRA picture with NoOutputBeforeRecoveryFlag equal to 1, or a GDR picture with NoOutputBeforeRecoveryFlag equal to 1.

[0315] When this process is invoked, for each RefPicList[i][j], with i in the range 0 to 1, inclusive, and j in the range 0 to num_ref_entries[i][RplsIdx[i]]-1, inclusive, i.e., i equal to "no reference picture", pictures can be generated as described previously in this disclosure, and the following may apply: (1) If inter_layer_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0, the value of nuh_layer_id of the generated picture is set equal to the nuh_layer_id of the current picture. (2) Otherwise (inter_layer_ref_pic_flag[i][RplsIdx[i]][j] is equal to 1), the value of nuh_layer_id of the generated picture is set equal to vps_layer_id[DirectRefLayerIdx[GeneralLayerIdx[nuh_layer_id]][ilrp_idx[i][RplsIdx][j]]]. (3) If st_ref_pic_flag[i][RplsIdx[i]][j] is equal to 1 and inter_layer_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0, the value of the PicOrderCntVal of the generated picture is set equal to RefPicPocList[i][j] and the generated picture is marked as "used for short-term reference." (4) If st_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0 and inter_layer_ref_pic_flag[i][RplsIdx[i]][j] is equal to 0, the value of the generated picture's PicOrderCntVal is set equal to RefPicLtPocList[i][j], the value of the generated picture's ph_pic_order_cnt_lsb is inferred to be equal to (RefPicLtPocList[i][j] & (MaxPicOrderCntLsb-1)), and the generated picture is marked as "used for long-term reference." (5) Alternatively, if inter_layer_ref_pic_flag[i][RplsIdx[i]][j] is equal to 1, the value of PicOrderCntVal of the generated picture is set equal to PicOrderCntVal of the current picture, the value of ph_pic_order_cnt_lsb of the generated picture is inferred to be equal to ph_pic_order_cnt_lsb of the current picture, and the generated picture is marked as "used for long-term reference." (6) The value of PictureOutputFlag of the generated reference picture is set to 0. (7) RefPicList[i][j] is set to the generated reference picture. (8) The value of TemporalId of the generated picture is set equal to the TemporalId of the current picture. (9) The value of ph_non_ref_pic_flag of the generated picture is set equal to 0. (10) The value of ph_pic_parameter_set_id of the generated picture is set equal to the ph_pic_parameter_set_id of the current picture.

[0316] In the decoding process for reference picture marking described above, the following sentence is modified to clarify the marking process: For each LTRP entry in RefPicList[0] or RefPicList[1], if the picture is a STRP with the same nuh_layer_id as the current picture, then the picture is marked as "used for long term reference".

[0317] As a first option, the original sentence is modified as follows: For each LTRP entry in RefPicList[0] or RefPicList[1], if the picture is currently marked as "used for short-term reference" with the same nuh_layer_id as the current picture, then the picture is marked as "used for long-term reference".

[0318] As a second option, the original sentence is modified as follows: For each LTRP entry in RefPicList[0] or RefPicList[1], if the picture is an LTRP with the same nuh_layer_id as the current picture, then the picture is marked as "used for long-term reference".

[0319] The original sentence is a little confusing because it says that STRP is "used for long-term reference." If the original intent of the sentence is to mark the LTRP picture of the current picture in RefPicList[0] or RefPicList[1] as "used for long-term reference," then option 1 can be used when the LTRP is currently marked as "used for short-term reference." Otherwise, option 2 can be used.

[0320] E. Improved Decoding Process for Reference Picture List Construction In HEVC, the reference picture list is constructed after generating unavailable reference pictures in the RPS. In VVC (current draft), the reference picture list is constructed before generating unavailable reference pictures in the RPS. If the bitstream conformance check is performed before generating unavailable reference pictures as previously specified, the bitstream will not be able to comply with the specified constraints. To clarify the order, the decoding process can be modified as follows to have the following constraints on bitstream conformance: (1) For each i equal to 0 or 1, num_ref_entries[i][RplsIdx[i]] shall not be less than NumRefIdxActive[i]. (2) The picture referenced by each active entry in RefPicList[0] or RefPicList[1] shall be present in the DPB and shall have a TemporalId less than or equal to the current picture's TemporalId. (3) The picture referenced by each entry in RefPicList[0] or RefPicList[1] shall not be the current picture and shall have ph_non_ref_pic_flag equal to 0. (4) An STRP entry in RefPicList[0] or RefPicList[1] of a slice of a picture and an LTRP entry in RefPicList[0] or RefPicList[1] of the same slice or a different slice of the same picture shall not refer to the same picture. (5) The difference between the PicOrderCntVal of the current picture and the PicOrderCntVal of the picture referenced by the entry is 2 24 There must be no more LTRP entries in RefPicList[0] or RefPicList[1]. (6) Let setOfRefPics be the set of unique pictures referenced by all entries in RefPicList[0] that have the same nuh_layer_id as the current picture and all entries in RefPicList[1] that have the same nuh_layer_id as the current picture. The number of pictures in setOfRefPics must be less than or equal to MaxDpbSize-1, and MaxDpbSize and setOfRefPics must be the same for all slices of a picture. (7) When the current slice has nal_unit_type equal to STSA_NUT, there shall be no active entries in RefPicList[0] or RefPicList[1] with TemporalId equal to that of the current picture and nuh_layer_id equal to that of the current picture. (8) If the current picture is a picture that follows, in decoding order, an STSA picture that has a TemporalId equal to the current picture and a nuh_layer_id equal to the current picture, then there shall be no picture that precedes the STSA picture in decoding order and has a TemporalId equal to the current picture and a nuh_layer_id equal to the current picture that is included as an active entry in RefPicList[0] or RefPicList[1]. (9) If the current subpicture having a TemporalId equal to a specific value tId, a nuh_layer_id equal to a specific value layerId, and a subpicture index equal to a specific value subpicIdx is a subpicture that follows, in decoding order, an STSA subpicture having a TemporalId equal to tId, a nuh_layer_id equal to layerId, and a subpicture index equal to subpicIdx, then there shall be no picture with a TemporalId equal to tId and a nuh_layer_id equal to layerId that precedes, in decoding order, the picture containing the STSA subpicture that is included as an active entry in RefPicList[0] or RefPicList[1]. (10) When the current picture with nuh_layer_id equal to a particular value layerId is an IRAP picture, there shall be no pictures referenced by entries in RefPicList[0] or RefPicList[1] that precede, in output order or decoding order, the preceding IRAP picture (if any) with nuh_layer_id equal to layerId in decoding order. (11) When the current subpicture with nuh_layer_id equal to a particular value layerId and subpicture index equal to a particular value subpicIdx is an IRAP subpicture, there shall be no pictures referenced by entries in RefPicList[0] or RefPicList[1] that precede, in output order or decoding order, any preceding picture (if any) that contains an IRAP subpicture with nuh_layer_id equal to layerId and subpicIdx in decoding order. (12) If the current picture is not a RASL picture associated with a CRA picture whose NoOutputBeforeRecoveryFlag is 1, there shall be no pictures referenced by active entries in RefPicList[0] or RefPicList[1] generated by the decoding process to generate unavailable reference pictures for the CRA picture associated with the current picture. (13) If the current subpicture is not a RASL subpicture associated with a CRA subpicture in a CRA picture whose NoOutputBeforeRecoveryFlag is 1, there shall be no pictures referenced by active entries in RefPicList[0] or RefPicList[1] generated by the decoding process to generate unavailable reference pictures for the CRA picture containing the CRA subpicture associated with the current subpicture. (14) If the current picture with nuh_layer_id equal to the specified value layerId is not one of the following, there should be no pictures referenced by entries in RefPicList[0] or RefPicList[1] generated by the decoding process to generate unavailable reference pictures for the IRAP picture or GDR picture associated with the current picture: (a) An IDR picture where sps_idr_rpl_present_flag is 1 or pps_rpl_info_in_ph_flag is 1. (b) A CRA picture with NoOutputBeforeRecoveryFlag set to 1. (c) A picture associated with a CRA picture in which NoOutputBeforeRecoveryFlag is 1, and which is earlier in decoding order than the first picture associated with the same CRA picture. (d) The first picture associated with a CRA picture whose NoOutputBeforeRecoveryFlag is 1. (e) A GDR picture with NoOutputBeforeRecoveryFlag set to 1. (f) A restored picture of a GDR picture where NoOutputBeforeRecoveryFlag is 1 and nuh_layer_id is layerId. (15) If the current subpicture, whose nuh_layer_id is equal to a specific value layerId and whose subpicture index is equal to a specific value subpicIdx, is not one of the following, there shall be no pictures referenced by entries in RefPicList[0] or RefPicList[1] generated by the decoding process to generate unavailable reference pictures for an IRAP or GDR picture that contains an IRAP or GDR subpicture associated with the current subpicture. (a) An IDR sub-picture within an IDR picture where sps_idr_rpl_present_flag is 1 or pps_rpl_info_in_ph_flag is 1. (b) A CRA sub-picture within a CRA picture where NoOutputBeforeRecoveryFlag is 1. (c) A sub-picture associated with a CRA sub-picture in a CRA picture in which NoOutputBeforeRecoveryFlag is 1, and which is earlier in decoding order than the first picture associated with the same CRA picture. (d) The leading sub-picture associated with a CRA sub-picture in a CRA picture in which NoOutputBeforeRecoveryFlag is 1. (e) A GDR sub-picture within a GDR picture where NoOutputBeforeRecoveryFlag is 1. (f) A sub-picture within a restored picture of a GDR picture where NoOutputBeforeRecoveryFlag is 1 and nuh_layer_id is layerId. (16) When the current picture follows an IRAP picture with the same value of nuh_layer_id in both decoding order and output order, no picture referenced by an active entry in RefPicList[0] or RefPicList[1] precedes that IRAP picture in output order or decoding order. (17) When the current subpicture follows an IRAP subpicture with the same value of nuh_layer_id and the same value of subpicture index in both decoding order and output order, no picture referenced by an active entry in RefPicList[0] or RefPicList[1] precedes the picture containing that IRAP subpicture in output order or decoding order. (18) When the current picture traverses the IRAP picture with the same value of nuh_layer_id and the first picture, if any, associated with that IRAP picture in both decoding order and output order, there shall be no picture referenced by an entry in RefPicList[0] or RefPicList[1] that precedes that IRAP picture in output order or decoding order. (19) When the current subpicture follows an IRAP subpicture with the same value of nuh_layer_id and the same value of subpicture index, and the first subpicture, if any, associated with that IRAP subpicture in both decoding order and output order, no picture referenced by an entry in RefPicList[0] or RefPicList[1] shall precede the picture containing that IRAP subpicture in output order or decoding order. (20) If the current picture is a RADL picture, there shall be no active entries in RefPicList[0] or RefPicList[1], which are either: (a) The RASL picture's pps_mixed_nalu_types_in_pic_flag is 0. This means that an active entry in the RPL of a RADL picture may reference a RADL picture that has pps_mixed_nalu_types_in_pic_flag equal to 1. However, such a RADL picture can still be decoded correctly when decoding starts from the associated CRA picture, since a RADL picture only references RADL subpictures in the referenced RASL picture, as imposed by the following constraint that does not allow RADL subpictures to reference RADL subpictures, and therefore the RADL subpictures in the referenced RASL picture are decoded correctly. (b) A picture that precedes the associated IRAP picture in decoding order. (21) When the current subpicture with nuh_layer_id equal to the specified value layerId and subpicture index equal to the specified value subpicIdx is a RADL subpicture, there shall be no active entries in RefPicList[0] or RefPicList[1] that are either: (a) The picture with nuh_layer_id equal to layerId contains a RASL subpicture with a subpicture index equal to subpicIdx. (b) The picture that precedes in decoding order the picture containing the associated IRAP sub-picture. (22) The picture referenced by each ILRP entry, if present in RefPicList[0] or RefPicList[1] of a slice of the current picture, is subject to the following constraints: (a) The picture is assumed to be in the same AU as the current picture. (b) The picture shall be present in the DPB. (c) The picture shall have a nuh_layer_id refPicLayerId that is less than the nuh_layer_id of the current picture. (d) Any of the following constraints apply: the picture shall be an IRAP picture; the picture shall have a TemporalId less than or equal to Max(0,vps_max_tid_il_ref_pics_plus1[currLayerIdx][refLayerIdx]-1), where currLayerIdx and refLayerIdx are equal to GeneralLayerIdx[nuh_layer_id] and GeneralLayerIdx[refpicLayerId], respectively. (23) Each ILRP entry shall be an active entry if it exists in RefPicList[0] or RefPicList[1] of a slice. (24) If vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 0 and sps_num_subpics_minus1 is greater than 0, then either (but not both) of the following two conditions shall be true: (a) The picture referenced by each active entry in RefPicList[0] or RefPicList[1] has the same subpicture layout as the current picture (i.e., the SPSs referenced by that picture and the current picture have the same value of sps_num_subpics_minus1 and the same values ​​of sps_subpic_ctu_top_left_x[j], sps_subpic_ctu_top_left_y[j], sps_subpic_width_minus1[j], and sps_subpic_height_minus1[j], for each value of j in the range from 0 to sps_num_subpics_minus1, respectively). (b) The picture referenced by each active entry in RefPicList[0] or RefPicList[1] is an ILRP whose sps_num_subpics_minus1 has a value of 0.

[0321] According to an embodiment, the decoder can check whether the above constraints on bitstream compatibility are met, which can be done after invoking the decoding process to generate unavailable reference pictures, as described above.

[0322] Embodiments of the present disclosure may include at least one processor and a memory that stores computer code that, when executed by the at least one processor, may be configured to cause the at least one processor to perform functions of embodiments of the present disclosure.

[0323] For example, referring to FIG. 33, a decoder of the present disclosure may include at least one processor and memory storing computer code (80). The decoder may be configured to receive a bitstream including at least one coded picture and parameter set (e.g., SPS and VPS), a header (e.g., picture header and slice header), and an AU delimiter. The computer code may be configured to cause the at least one processor to perform any number of decoding operations (e.g., building a reference picture list, generating unavailable reference pictures, and checking bitstream conformance) and decoding-related aspects (e.g., signaling flags and other syntax elements in picture headers, slice headers, and access unit delimiters) as described herein. For example, the computer code (80) may include a plurality of signaling codes (81) and decoding codes (82).

[0324] The plurality of signaling codes (81) may include various signaling codes configured to cause at least one processor to signal (and / or infer) flags and other syntax elements within picture headers, slice headers, and access unit delimiters.

[0325] The decoding code (82) may be configured to cause at least one processor to decode one or more pictures. According to an embodiment, the decoding code (82) may include a construction code (83), a generation code (84), and a verification code (85). The construction code (83) may be configured to cause the at least one processor to construct a reference picture list. The generation code (84) may be configured to cause the at least one processor to generate unavailable reference pictures in the reference picture list. The verification code (85) may be configured to cause at least one processor to verify bitstream compatibility where the following constraints apply for reference pictures in the reference picture list: (a) the number of entries indicated to be in the reference picture list is greater than or equal to the number of active entries indicated to be in the reference picture list; (b) each picture referenced by an active entry in the reference picture list is present in the decoded picture buffer (DPB) and has a temporal identifier value less than or equal to the temporal identifier value of the current picture; and (c) each picture referenced by an entry in the reference picture list is indicated by a picture header flag that indicates it may be a reference picture other than the current picture.

[0326] The techniques described above can be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, Figure 34 illustrates a computer system (900) suitable for implementing embodiments of the disclosed subject matter.

[0327] Computer software can be encoded using any suitable machine code or computer language and can be subjected to assembly, compilation, linking, or similar mechanisms to create code containing instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., directly, or through interpretation, execution of microcode, etc.

[0328] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, and the like.

[0329] 34 for computer system (900) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure, nor should the arrangement of components be interpreted as having a dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system (900).

[0330] The computer system 900 may include certain human interface input devices that may respond to input by one or more users, such as tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), and olfactory input (not shown). The human interface devices may also be used to capture certain media that do not necessarily involve direct conscious human input, such as audio (e.g., speech, music, environmental sounds), images (e.g., scanned images, picture images obtained from a still image camera), and video (e.g., two-dimensional video, three-dimensional video, including stereoscopic video).

[0331] The input human interface devices may include one or more of a keyboard 901, a mouse 902, a trackpad 903, a touchscreen 910, a data glove, a joystick 905, a microphone 906, a scanner 907, and a camera 908 (only one of each is shown).

[0332] The computer system (900) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen (910), data gloves, or joystick (905), although haptic feedback devices that do not function as input devices may also be present). For example, such devices may include audio output devices (e.g., speakers (909), headphones (not shown)), visual output devices (e.g., screens (910), including CRT screens, LCD screens, plasma screens, and OLED screens, each with or without touchscreen input capability, each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output or three-dimensional hypervisor output via means such as stereo output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).

[0333] The computer system (900) may also include human-accessible storage devices and associated media such as optical media (921) such as CD / DVD ROM / RW (920), including CDs / DVDs, thumb drives (922), removable hard drives or solid state drives (923), legacy magnetic media such as tape and floppy disks (not shown), and specialized ROM / ASIC / PLD-based devices such as security dongles (not shown).

[0334] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not encompass transmission media, carrier waves, or other transitory signals.

[0335] The computer system (900) may also include interfaces to one or more communication networks. Networks may be, for example, wireless, wired, or optical. Networks may further be local, wide-area, metropolitan, vehicular, industrial, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet, WLAN, and cellular networks including GSM, 3G, 4G, 5G, LTE, etc.; TV wired or wireless wide-area digital networks including cable television, satellite television, and terrestrial broadcast television; and vehicular and industrial networks including CANbus, etc. Certain networks generally require an external network interface adapter connected to a particular general-purpose data port or peripheral bus (949) (e.g., a USB port on the computer system (900)); others are generally integrated into the core of the computer system (900) by connecting to a system bus, as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (900) can communicate with other entities. Such communications may be unidirectional, receive only (e.g., broadcast TV), unidirectional transmit only (e.g., from a CANbus to a particular CANbus device), or bidirectional, e.g., communications to other computer systems using a local area digital network or a wide area digital network. Such communications may include communications to a cloud computing environment (955). Specific protocols and protocol stacks may be used with each of these networks and network interfaces, as described above.

[0336] The aforementioned human interface devices, human-accessible storage devices, and network interfaces (954) can be connected to the core (940) of the computer system (900).

[0337] A core (940) may include specialized programmable processing devices in the form of one or more central processing units (CPUs) (941), graphics processing units (GPUs) (942), field programmable gate arrays (FPGAs) (943), task-specific hardware accelerators (944), etc. These devices may be connected via a system bus (948), along with read-only memory (ROM) (945), random access memory (946), and internal mass storage devices (947) such as a non-user-accessible internal hard drive or SSD. In some computer systems, the system bus (948) may be accessible in the form of one or more physical plugs, allowing expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (948) or via a peripheral bus (949). Peripheral bus architectures include PCI, USB, etc. A graphics adapter 950 may also be included in the core 940.

[0338] The CPU (941), GPU (942), FPGA (943), and accelerator (944) can execute specific instructions that, in combination, can constitute the aforementioned computer code. The computer code can be stored in ROM (945) or RAM (946). Transient data can also be stored in RAM (946), while persistent data can be stored, for example, in internal mass storage (947). The use of cache memory, which can be closely associated with one or more of the CPU (941), GPU (942), mass storage (947), ROM (945), RAM (946), etc., allows for fast storage and retrieval from any memory device.

[0339] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.

[0340] By way of example and not limitation, a computer system having the architecture (900), and in particular the core (940), 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 the user-accessible mass storage devices introduced above, as well as media associated with the core's (940) specific storage device of a non-transitory nature, such as the core's internal mass storage device (947) or ROM (945). Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the core (940). The computer-readable media may include one or more memory devices or chips according to particular needs. The software may cause the core (940), and in particular the processor (including a CPU, GPU, FPGA, etc.) therein, to perform particular processes or portions of particular processes described herein, including defining data structures stored in RAM (946) and modifying such data structures according to software-defined operations. Additionally, or alternatively, the computer system may provide functionality as a result of logic embodied in hardwired or otherwise circuitry (e.g., accelerator (944)), which may operate in place of or in conjunction with software to perform specific operations or portions of specific operations described herein. References to software may include logic, and vice versa, as appropriate. References to computer-readable media may encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, as appropriate. The present disclosure encompasses any suitable combination of hardware and software.

[0341] While this disclosure has described several exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within its spirit and scope. [Explanation of symbols]

[0342] 80 Computer Code 81 signaling code 82 Decryption Code 83 Construction Code 84 Generated Code 85 Verification Code 100 Communication Systems 110 Terminal 120 terminals 130 terminals 140 terminals 150 Network 200 Streaming System 201 Video Sources 202 uncompressed video sample streams 203 Encoder 204 Video Bitstream 205 Streaming Server 206 Streaming Client 209 Video Bitstream 210 Video Decoder 211 output video sample streams 212 Display 310 Receiver 312 channels 315 Buffer Memory 320 Analyzer 321 Symbol 351 Scaler / Inverse Transform 352 Intra-Image Prediction 353 Motion Compensation Prediction Unit 356 Loop Filter 357 Reference Image Memory 358 Current Picture 430 Source Encoder 432 encoding engine 433 Decoder 434 Reference Image Memory 435 Predictor 440 Transmitter 445 Entropy Encoder 450 Controller 460 channels 501 Picture Header 502 ARC information 503 ARC (Warping Coordinates) 504 Picture Parameter Set 505 ARC Reference Information 506 table 507 Sequence Parameter Set 508 header 509 ARC information 511 Adaptive Parameter Set 512 ARC information 513 ARC Reference Information 514 Tile Group Headers 515 ARC information 600 Tile Group Headers 516 parameter sets 602 Syntax element dec_pic_size_idx 603 Adaptive Resolution 610 Sequence Parameter Set 611 Syntax Elements 613 output resolution 615 Reference Picture Dimensions 617 Table Entries 681 I Slice 682 B slice 683 B slice 684 B slice 685 B slice 686 B slice 702 base layer 712 base layer 704 Extended CSPS Layer 714 Extended CSPS Layer 742 spherical 360 pictures 745 Subpictures 752 subpictures 746 Subpicture Enhancement Layer 762 Top Left Sub-area 763 Top Right Sub-area 764 bottom left sub-region 765 bottom right sub-area 941 CPU 942 GPU 943 Field Programmable Gate Area (FPGA) 944 Hardware Accelerator 948 System Bus 950 graphics adapter 954 network interface

Claims

1. A method executed by at least one processor, comprising: signaling a first flag indicating whether at least one picture is a Gradual Decoding Refresh (GDR) picture or an Intra Random Access Point (IRAP) picture, wherein the first flag being equal to 1 indicates that the at least one picture is a GDR picture or an IRAP picture, and the first flag being equal to 0 indicates that the at least one picture is not a GDR picture and / or an IRAP picture or is not an IRAP picture; signaling a second flag in a picture header, the second flag indicating whether the at least one picture is a GDR picture; determining that the at least one picture is a GDR picture by determining that the value of the first flag is 1 and adjusting the value of the second flag to be equal to the value of the first flag; encoding the at least one picture based on the first flag and the second flag; A method comprising:

2. The method of claim 1, wherein the second flag is signaled when the value of the first flag is equal to 1.

3. The method of claim 1, wherein a flag indicating whether the at least one picture is a GDR picture or an IRAP picture is signaled within a picture header structure or an access unit delimiter.

4. The method of claim 1, further comprising the step of signaling a third flag (sh_no_output_of_prior_pics_flag) signaled in a slice header structure when the first flag indicates that the at least one picture is from an IRAP picture or from a GDR picture, wherein the second flag indicates that the picture is an IRAP picture.

5. The method described in claim 4, wherein the third flag affects the output of previously coded pictures in the DPB after coding of a picture in a CVSS AU that is not the first AU in the bitstream.

6. The method described in claim 4, wherein bitstream compatibility requires that the value of the third flag be the same for all components in an access unit that has the third flag present in the slice header structure.

7. The method described in claim 4, wherein if all components in an access unit have the third flag present in the slice header structure, the value of the third flag in the slice header is also referred to as the value of the third flag of the access unit.

8. The method of claim 7, further comprising determining a Network Abstraction Layer (NAL) unit type of the slice; The method of claim 4 , wherein the third flag is signaled based on the determined NAL unit type.

9. The method of claim 8, wherein the third flag is signaled based on determining that the NAL unit type is equal to IDR_W_RADL, IDR_N_LP, or CRA_NUT.

10. When the second flag indicates that the at least one picture is a GDR picture, a variable recoveryPointPocVal is: The method of claim 1 , wherein recoveryPointPocVal is derived as follows: recoveryPointPocVal=PicOrderCntVal+ph_recovery_poc_cnt.

11. If the second flag indicates that the at least one picture is a GDR picture, and there is a picture picA that follows the current GDR picture in decoding order in a CLVS that has a PicOrderCntVal equal to recoveryPointPocVal, then the picture picA is a recovery point picture; 2. The method of claim 1, wherein if the second flag does not indicate that the at least one picture is a GDR picture or there is no picture picA that follows the current GDR picture in decoding order in the CLVS with a PicOrderCntVal equal to recoveryPointPocVal, the first picture in output order in the CLVS with a PicOrderCntVal greater than recoveryPointPocVal is taken as the recovery point picture.

12. The method of claim 11, wherein if the second flag indicates that the at least one picture is a GDR picture, the restoration point picture is not before the current GDR picture in decoding order; A picture associated with the current GDR picture and having a PicOrderCntVal less than recoveryPointPocVal is the recovered picture of the GDR picture; The method of claim 11, wherein the value of ph_recovery_poc_cnt (34) is greater than or equal to 0 and less than or equal to MaxPicOrderCntLsb-1.

13. An electronic device configured to perform a method according to any one of claims 1 to 12.

14. A computer program which, when executed by a processor, causes the processor to perform a method according to any one of claims 1 to 12.

15. A method for transmitting a video bitstream, executed by at least one processor, comprising: encoding the video data into a video bitstream, signaling a first flag indicating whether at least one picture is a Gradual Decoding Refresh (GDR) picture or an Intra Random Access Point (IRAP) picture, wherein the first flag being equal to 1 indicates that the at least one picture is a GDR picture or an IRAP picture, and the first flag being equal to 0 indicates that the at least one picture is not a GDR picture and / or an IRAP picture or is not an IRAP picture; signaling a second flag signaled in a picture header, the second flag indicating whether the at least one picture is a GDR picture; determining that the at least one picture is a GDR picture by determining that the value of the first flag is 1 and matching the value of the second flag with the value of the first flag; encoding the at least one picture based on the first flag and the second flag; encoding the video data into a video bitstream, transmitting the video bitstream; A method comprising:

16. An electronic device configured to perform the method of claim 15.

17. A computer program that, when executed by a processor, causes the processor to perform the method of claim 15.