Method for output layer set modes in multilayer video streams
By parsing the output layer set mode indicator in the VPS to identify and decode specific layers, the method addresses inefficient adaptive picture size changes in multi-layer video streams, enhancing compression efficiency and reducing bandwidth and storage requirements.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- TENCENT AMERICA LLC
- Filing Date
- 2025-03-06
- Publication Date
- 2026-04-21
AI Technical Summary
Existing video coding technologies struggle with inefficient handling of adaptive picture size changes, leading to suboptimal compression and decoding of video streams with multiple layers, particularly in advanced codecs like VVC, which affects bandwidth and storage requirements.
The method involves parsing an output layer set mode indicator in the video parameter set (VPS) to identify and decode specific picture output layers, allowing for adaptive picture size signaling and efficient decoding of multi-layer video streams.
This approach enhances compression efficiency and reduces bandwidth and storage needs by enabling adaptive resolution changes in video streams, improving the decoding process for multi-layer video codecs.
Smart Images

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