Method for output layer set mode in multi-layer video stream - Patents.com
By parsing the video parameter set to identify output layers within a bitstream, the method addresses the challenge of managing adaptive picture sizes in video compression, resulting in reduced bandwidth and storage requirements.
Patent Information
- Application Number
- JP2023098552
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-08-21
- Filing Date
- 2023-06-15
- Publication Date
- 2025-03-18
- Estimated Expiration
- 2040-11-09
AI Technical Summary
Existing video compression techniques struggle to efficiently manage adaptive picture sizes within a video bitstream, leading to increased bandwidth and storage requirements.
The method involves receiving a bitstream with multiple layers, parsing the video parameter set (VPS) to derive an output layer set mode indicator, and based on this indicator, identifying and decoding specific picture output layers.
This approach allows for efficient signaling and decoding of adaptive picture sizes, reducing bandwidth and storage needs while maintaining video quality.
Smart Images

Figure 0007648682000010 
Figure 0007648682000011 
Figure 0007648682000012
Abstract
Description
[Technical field]
[0001] [Related Applications] This application claims priority to U.S. Provisional Application No. 63 / 001,045, filed March 27, 2020, and U.S. Patent Application No. 17 / 000,018, filed August 27, 2020, which are incorporated by reference in their entireties.
[0002] [Technical field] The present disclosure relates to video compression techniques and inter- and intra-prediction in advanced video codecs. In particular, the present disclosure relates to next-generation video coding techniques, including High Efficiency Video Coding (HEVC) and beyond video coding / decoding techniques such as Versatile Video Coding (VVC). More specifically, aspects of the present disclosure are directed to methods, devices, and computer-readable media for providing a set of output layer derivations designed by advanced video coding techniques in coding video streams having multiple layers. [Background technology]
[0003] Video coding and decoding using inter- or intra-picture prediction with motion compensation has been known for decades. Uncompressed digital video can be composed of a sequence of pictures, each having spatial dimensions of, for example, 1920x1080 luminance samples and associated chrominance samples. The sequence of pictures may have a fixed or variable picture rate (also known informally as frame rate), for example, 60 pictures per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video (1920x1080 luminance sample resolution at 60 Hz frame rate) with 8 bits per sample requires a bandwidth approaching 1.5 Gbit / s. One hour of such video may require more than 600 Gbytes of storage space.
[0004] One goal of video coding and decoding can be the reduction of redundancy in the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage space requirements, in some cases by more than two orders of magnitude. Both lossy and lossless compression, and combinations thereof, can be utilized. Lossless compression refers to techniques where 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 signal and the reconstructed signal 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 tolerable distortion depends on the application, for example, a user of a particular consumer streaming application can tolerate higher distortion than a user of a television posting application. The achievable compression ratio can reflect that the higher the tolerable / tolerable distortion, the higher the compression ratio that can result.
[0005] Video encoders and decoders can utilize techniques from several broad categories, including, for example, motion compensation, transform, quantization, and entropy coding, some of which are introduced below.
[0006] Historically, video encoders and decoders have tended to operate with a given picture size that is defined and remains constant, often for a coded video sequence (CVS), Group of Pictures (GOP), or similar multi-picture time frame. For example, in Motion Picture Experts Group (MPEG)-2, system designs are known to vary the horizontal resolution (and therefore the picture size) depending on factors such as scene activity, not only for intra-frames (or i-frames, or i-pictures), but also typically for GOPs. Resampling of reference pictures for use of different resolutions in a CVS is known, for example from ITU-T Rec. H.263 Annex P. However, here the picture size does not change, so only the reference pictures are resampled, with the consequence that only a part of the picture canvas is used (in the case of downsampling) or only a part of the scene is captured (in the case of upsampling). Furthermore, H.263 Annex Q allows resampling of individual macroblocks by multiples of two (in each dimension), either upwards or downwards. Again, the picture size remains the same. In H.263 the size of the macroblocks is fixed and therefore does not need to be signaled.
[0007] Picture size changes in predicted pictures have become more mainstream in recent video coding. For example, VP9 allows reference picture resampling and changing the resolution of the whole picture. Similarly, certain proposals directed to 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 herein by reference in its entirety) allow resampling of the whole reference picture to a different—higher or lower—resolution. Hendry proposes different candidate resolutions to be coded in the sequence parameter set and referenced by per-picture syntax elements in the picture parameter set. Summary of the Invention
[0008] SUMMARY Techniques for adaptive picture size signaling within a video bitstream in accordance with various embodiments are disclosed.
[0009] According to an aspect of the present disclosure, a method of decoding includes: receiving a bitstream containing compressed video / image data, the bitstream including a plurality of layers; Parsing or deriving an output layer set mode indicator in a video parameter set (VPS) from the bitstream; 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. decoding the identified one or more picture output layers; may include:
[0010] The step of identifying the output layer set signaling based on the output layer set mode indicator further comprises: identifying a highest layer in the bitstream as the one or more picture output layers if the output layer set mode indicator in the VPS is a first value; identifying all layers in the bitstream as the one or more picture output layers if the output layer set mode indicator in the VPS is a second value; identifying the 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; may include:
[0011] The first value may be different from the second value and different from 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 the disclosure is not limited to the use of 0, 1, and 2 as described above.
[0013] The step of identifying the one or more picture output layers via the explicit signaling in the VPS may include: (i) parsing or deriving an output layer flag from the VPS; and (ii) setting a layer having the output layer flag equal to 1 to the one or more picture output layers.
[0014] The step of identifying the output layer set signaling based on the output layer set mode indicator further comprises: If the output layer set mode indicator in the VPS is a predefined value, the output layer set signaling may include identifying the 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 in the VPS includes the steps of: (i) parsing or deriving an output layer flag from the VPS; and (ii) setting a layer having the output layer flag equal to 1 to the one or more picture output layers, wherein the number of layers is greater than 2.
[0016] The output layer set signaling may include identifying the one or more picture output layers based on the explicit signaling in the VPS when the output layer set mode indicator is equal to two and the number of layers is greater than two.
[0017] The output layer set signaling may include, when the output layer set mode indicator is less than two and the number of layers is two, identifying a highest layer in the bitstream or all layers in the bitstream as the one or more picture output layers; The output layer set mode indicator is actually less than two, and the number of layers is actually two.
[0018] The number of output layer sets-1 indicator in the VPS indicates the number of output layers.
[0019] According to an embodiment, a VPS max layers-1 indicator in the VPS indicates the number of layers in the bitstream.
[0020] According to an embodiment, the output layer set mode flag [i][j] in the VPS indicates whether the jth layer of the ith output layer set is an output layer or not.
[0021] According to an embodiment, if the multiple 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, if each layer is an output layer set, the picture output flag in the VPS is set equal to the picture output flag signaled in the picture header, regardless of the value of the output layer set mode indicator.
[0023] Note: Pictures in output layers may or may not have PictureOutputFlag equal to 1. Pictures in non-output layers have PictureOutputFlag equal to 0. Pictures with PictureOutputFlag equal to 1 are output for display. Pictures with PictureOutputFlag equal to 0 are not output for display.
[0024] According to an embodiment, when a sequence parameter set (SPS) VSP identifier is greater than 0, indicating that more than one layer is present in the bitstream, a picture output flag is set equal to 0; When 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 contains a picture that satisfies all of the following conditions, including: having a picture output flag equal to 1, having a nuh layer identifier greater than that of the current picture and belonging to the output layer of the output layer set.
[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 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.
[0026] According to an embodiment, the method may further include controlling a display to display the decoded one or more picture output layers.
[0027] According to an aspect of the present disclosure, a non-transitory computer-readable storage medium storing instructions that, when executed, cause a system or device including one or more processors to: receiving a bitstream containing compressed video / image data, the bitstream including a plurality of layers; Parsing or deriving an output layer set mode indicator in a video parameter set (VPS) from the bitstream; 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; Decoding the identified one or more picture output layers. A non-transitory computer-readable storage medium.
[0028] According to an embodiment, the instructions are further configured to cause the system or device including the one or more processors to control a display to display the decoded one or more picture output layers.
[0029] According to an aspect of the disclosure, an apparatus may include at least one memory storing computer program code, and at least one processor configured to access the at least one memory and operate according to the computer program code. According to an embodiment, the computer program code comprises: receiving code configured to cause the at least one processor to receive a bitstream including compressed video / image data, the bitstream including a plurality of layers; parsing or deriving code configured to cause the 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 the at least one processor to identify an output layer set signaling based on the output layer set mode indicator; and a picture output layer identification code configured to cause the at least one processor to identify one or more picture output layers based on the identified output layer set signaling; decoding code configured to cause the at least one processor to decode the identified one or more picture output layers; may include:
[0030] According to an embodiment, the computer program code comprises: The method may further include display control code for causing the at least one processor to display the one or more picture output layers.
[0031] According to an aspect of the present disclosure, a method for signaling adaptive picture sizes in a video bitstream includes: receiving a bitstream of compressed video / image data, the bitstream including a plurality of layers; identifying a background region and one or more foreground sub-pictures; determining whether a particular sub-picture region is selected; based on determining that a particular sub-picture region has been selected, generating a dequantized block corresponding to the selected sub-picture region by a process including: parsing the bitstream, decoding an entropy coded bitstream, and dequantizing a corresponding block; may include:
[0032] The method may further include decoding and displaying the background region if the particular sub-picture region is not selected.
[0033] The bitstream may include syntax elements that specify which layers can be output at the decoder side.
[0034] The syntax elements may include a picture header that contains variable length Exp-Golomb coded syntax elements.
[0035] The method may further comprise the step of determining, based on signalling in the sequence parameters, whether adaptive resolution is used for the picture or part thereof.
[0036] The step of determining whether adaptive resolution is used for the picture or portion thereof may comprise determining whether a first syntax element, being a flag, indicates the use of adaptive resolution.
[0037] The method may include a step in which the encoder instructs the decoder to use a particular reference picture size, rather than implicitly assuming that size is the output picture size, by using a flag that controls the conditional presence of reference picture dimensions.
[0038] The syntax elements may include a table of possible decoded picture widths and heights.
[0039] According to an embodiment, values in the Network Abstraction Layer (NAL) unit header may be used to indicate spatial layers as well as time.
[0040] The value in the NAL unit header may be a Temporal Identifier (ID) field.
[0041] The method may further include, for example, in a scalable environment, using existing Selected Forwarding Units (SFUs) generated and optimized for temporal layer selective forwarding based on NAL unit header Temporal ID values without modification.
[0042] The method may further include mapping between a coding picture size and a temporal layer indicated by a Temporal ID field in the NAL unit header.
[0043] The method comprises: receiving additional data along with the encoded video, the additional data being included as part of the coded video sequence; and using the additional data to accurately decode the data and / or more accurately reconstruct the original video data.
[0044] The additional data may be in the form of one or more of: a temporal, spatial or SNR enhancement layer, a redundant slice, a redundant picture, a forward error correction code.
[0045] According to an aspect, a non-transitory computer-readable storage medium storing instructions that, when executed, cause a system or device including one or more processors to: receiving a bitstream of compressed video / image data, the bitstream including a plurality of layers; identifying a background region and one or more foreground subpictures; Determines whether a particular subpicture region is selected, based on determining that a particular sub-picture region has been selected, generating a dequantized block corresponding to the selected sub-picture region by a process including: parsing the bitstream, decoding an entropy coded bitstream, and dequantizing a corresponding block. A non-transitory computer-readable storage medium.
[0046] According to an embodiment, an apparatus 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 according to the computer program code, the computer program code comprising: receiving code configured to cause the at least one processor to receive a bitstream of compressed video / image data, the bitstream including a plurality of layers; an identification code configured to cause the at least one processor to identify a background region and one or more foreground sub-pictures; decision code configured to cause the at least one processor to determine whether a particular sub-picture region is selected; generation code configured to cause the at least one processor, based on determining that a particular sub-picture region has been selected, to generate a dequantized block corresponding to the selected sub-picture by a process including, but not limited to, parsing the bitstream, decoding an entropy coding bitstream, and dequantizing a corresponding block; Including, equipment. [Brief description of the drawings]
[0047] Further features, characteristics, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings.
[0048] [Figure 1] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system, according to an embodiment.
[0049] [Diagram 2] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system, according to an embodiment.
[0050] [Diagram 3] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to an embodiment;
[0051] [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder, according to an embodiment;
[0052] [Diagram 5] As shown, a schematic diagram of options for signaling ARC parameters according to prior art or embodiments.
[0053] [Figure 6] 1 is an example of a syntax table according to an embodiment.
[0054] [Figure 7] 1 is a schematic diagram of a computer system, according to one embodiment.
[0055] [Figure 8] 1 is an example of a prediction structure for scalability through adaptive resolution change.
[0056] [Figure 9] 1 is an example of a syntax table according to an embodiment.
[0057] [Figure 10] FIG. 13 is a schematic diagram of a simplified block diagram for parsing and decoding the POC cycles per access unit and the Access Unit Count value.
[0058] [Figure 11] 1 is a schematic diagram of a video bitstream including multi-layered sub-pictures.
[0059] [Figure 12] FIG. 13 is a schematic diagram of a display of a selected sub-picture with enhanced resolution.
[0060] [Figure 13] FIG. 2 is a block diagram of a video bitstream decoding and display process that includes multi-layered sub-pictures.
[0061] [Figure 14] FIG. 1 is a schematic diagram of a 360 video display with an enhancement layer of subpictures.
[0062] [Figure 15] 1 is an example of layout information for sub-pictures and corresponding layer and picture prediction structures.
[0063] [Figure 16] 13 is an example of layout information of sub-pictures and corresponding layer and picture prediction structures with local region spatial scalability modality.
[0064] [Figure 17] 13 is an example of a syntax table of sub-picture layout information.
[0065] [Figure 18] 13 is an example of a syntax table of a sub-picture layout information SEI message.
[0066] [Figure 19] 13 is an example of a syntax table showing output layers and profile / tier / level information for each output layer set.
[0067] [Figure 20] 13 is an example of a syntax table showing an output layer mode for each output layer set.
[0068] [Figure 21] 13 is an example of a syntax table showing pre-transmitted sub-pictures for each layer of each output layer set.
[0069] [Figure 22]13 is an example of a syntax table of a video parameter set RBSP.
[0070] [Figure 23] 13 is an example syntax table showing an output layer set with an output layer set mode indicator.
[0071] [Figure 24] A block diagram of a bitstream decoding process including indicating an output layer set with an output layer set mode indicator.
[0072] [Figure 25A] 11 illustrates information related to indicating an output layer set with an output layer set mode indicator. [Figure 25B] 11 illustrates information related to indicating an output layer set with an output layer set mode indicator. [Figure 25C] 11 illustrates information related to indicating an output layer set with an output layer set mode indicator. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0073] When a picture is coded into a bitstream consisting of multiple layers with different qualities, the bitstream may have syntax elements that specify which layers may be output at the decoder side. The set of layers to be output is defined as an output layer set. In modern video codecs that support multiple layers and scalability, one or more output layer sets are signaled in a video parameter set. Those syntax elements that specify the output layer sets and their dependencies, profile / tier / level and hypothetical decoder reference model parameters need to be efficiently signaled in the parameter set.
[0074] SUMMARY OF THE DISCLOSURE Embodiments of the present disclosure address one or more problems in the related art.
[0075] FIG. 1 illustrates a simplified block diagram of a communication system (100) according to an embodiment of the present disclosure. The system (100) may include at least two terminals (110, 120) interconnected via a network (150). In a unidirectional transmission of data, a first terminal (110) may code video data locally for transmission to the other terminal (120) via the network (150). The second terminal (120) may receive the coded video data of the other terminal from the network (150), decode the coded data, and display the recovered video data. Unidirectional data transmission may be common in media serving applications, etc.
[0076] 1 illustrates a second pair of terminals (130, 140) adapted to support bidirectional transmission of coded video, such as may occur during a video conference. In the bidirectional transmission of data, each terminal (130, 140) may code locally captured video data for transmission to the other terminal over the network (150). Each terminal 130, 140 may also receive coded video data transmitted by the other terminal, decode the coded data, and display the recovered video data on a local display device.
[0077] In FIG. 1, the terminals (110-140) are shown as a laptop 110, a personal computer (PC) 120, and mobile terminals 130 and 140, but the terminals (110-140) are not so limited and the terminals (110-140) may correspond to one or more or any combination of a server, a personal computer, a mobile device, a tablet, and a smartphone. Embodiments of the present disclosure have application with laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. The network (150) represents any number of networks that carry coded video data between the terminals (110-140), including, for example, wired and / or wireless communication networks. The communication network (150) may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include electronic communication networks, local area networks (LANs), wide area networks (WANs), and / or the Internet. For purposes of the present discussion, the architecture and topology of the network (150) may not be important to the operation of the present disclosure, unless otherwise noted below.
[0078] 2 illustrates an arrangement of video encoders and video decoders in a streaming environment as an example of an application of the disclosed embodiments. The present disclosure is equally applicable to video conferencing, digital television (TV), storage of compressed video on digital media including compact discs (CDs), digital versatile discs (DVDs), memory sticks, etc., other video-enabled applications, etc.
[0079] The streaming system may include a video source (201), configured to generate an uncompressed video sample stream (202), and a capture subsystem (213), which may include, for example, a digital camera. The sample stream (202) may be processed by an encoder (203), shown in FIG. 2 with a thick line to emphasize its high data volume when compared to an encoded video bitstream, coupled to the camera (201). The encoder (203) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream (204), shown in FIG. 2 with a thin line to emphasize its low data volume when compared to the sample stream (202), may be stored on a streaming server (205) for future use. One or more streaming clients (206, 208) may access the streaming server (205) to retrieve copies (207, 209) of the encoded video bitstream (204). The client (206) may include a video decoder (210). A video decoder (310) decodes an incoming copy of the encoded bitstream (207) and generates 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 a particular video coding / compression standard. Examples of these standards include ITU-T Recommendation H.265. The video coding standard under development is known informally as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.
[0080] FIG. 3 may be a functional block diagram of a video decoder (210) according to an embodiment of the disclosure.
[0081] The receiver (310) may receive one or more coded video sequences to be decoded by the video decoder (210), one coded video sequence at a time in the same or another embodiment, where the decoding of each coded video sequence is independent of the other coded video sequences. The coded video sequences may be received from a channel (312), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (310) may receive the coded video data along with other data, e.g., coded audio data and / or auxiliary data streams, which may be forwarded to a respective using entity (not shown). The receiver (310) may separate the coded video sequences from the other data. To eliminate network jitter, a buffer memory (315) may be connected between the receiver (310) and the entropy decoder / parser (320) (hereinafter the "parser"). When the receiver (310) is receiving data controllably from a storage / forwarding device of sufficient bandwidth or from an isosynchronous network, the buffer (315) may not be needed or may be small. For use in a best effort packet network such as the Internet, buffer (315) may be necessary and may be relatively large, and may advantageously be adaptively sized.
[0082] The video decoder (210) may include a parser (320) to reconstruct symbols (321) from the entropy coded video sequence. These categories of symbols include information used to manage the operation of the video decoder 210 and information for controlling a rendering device, such as the display 212, which may be coupled to the decoder, but is not an integral part of the decoder as shown in FIG. 2. The control information for the rendering device may be in the form of a Supplementary Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment. The parser (320) may parse / entropy decode the received code or video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without contextual dependency, etc. The parser 320 may extract a set of subgroup parameters from the coded video sequence for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the subgroup. Subgroups may include Groups of Pictures (GOPs), pictures, tiles, slices, macroblocks, Coding Units (CUs), blocks, Transform Units (TUs), Prediction Units (PUs), etc. The entropy decoder / parser may also extract information such as transform coefficients, quantization parameter values, motion vectors, etc. from the coded video sequence.
[0083] The parser (320) may perform entropy decoding / parsing operations on the video sequence received from the buffer (315) to generate symbols (321).
[0084] The reconstruction of the symbols (321) may include several different units, depending on the type of coded video picture or portion thereof (e.g., inter and intra pictures, inter and intra blocks) and other factors. Which units are included and how can be controlled by subgroup control information parsed from the coded video sequence by the parser (320). The subgroup control information may flow between the parser (320) and several units.
[0085] Beyond the functional blocks already mentioned, the decoder (210) may be conceptually subdivided into a number of functional units, as described below. In an actual implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is adequate.
[0086] The first unit is a scalar / inverse transform unit 351. The scalar / inverse transform unit (351) receives quantized transform coefficients and control information, including which transform should be used, block size, quantization coefficients, quantization scaling matrices, etc., as symbols (321) from the parser (320). It can output blocks containing sample values that can be input to an aggregator (355).
[0087] In some examples, the output samples of the scaler / inverse transform unit (351) may belong to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture, but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by an intra-picture prediction unit (352). In some cases, the intra-picture prediction unit (352) generates a block of the same size and shape as the block being reconstructed, using surrounding already reconstructed information fetched from the current (partially reconstructed) picture (358). The aggregator (355) adds, in some cases, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (352) to the output sample information provided by the scaler / inverse transform unit (351).
[0088] In other cases, the output samples of the scaler / inverse transform unit (351) may relate to an inter-coded, possibly motion-compensated, block. In such cases, the motion-compensated prediction unit (353) may access the reference picture memory (357) to fetch samples used for prediction. After motion-compensating the fetched samples according to the symbols (321) related to the block, these samples may be added by the aggregator (355) to the output of the scaler / inverse transform unit to generate output sample information (in this case referred to as residual samples or residual signals). The addresses in the reference picture memory from which the motion-compensated prediction unit fetches prediction samples may be controlled by the motion-compensated prediction unit's available motion vectors, e.g., in the form of symbols (321) that may have X, Y, and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory when sub-sample accurate motion vectors are in use, motion vector prediction mechanisms, etc.
[0089] The output samples of the aggregator (355) may be subjected to various loop filtering techniques in a loop filter unit (356). The video compression techniques are controlled by parameters contained 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 filter techniques that are responsive to meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, and that may also be responsive to previously reconstructed loop filtered sample values.
[0090] The output of the loop filter unit (356) may be a sample stream that can be output to a render device (212) and stored in a reference picture memory (356) for use in future inter-picture prediction.
[0091] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. Once a coded picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by parser 320), the current reference picture 356 can become part of reference picture memory 357, and fresh current picture memory can be reallocated before beginning reconstruction of a subsequent coded picture.
[0092] The video decoder (parser) 320 may perform decoding operations according to a given video compression technique, which may be defined in a standard such as ITU-T Rec H.265. The coding video sequence may comply with the syntax specified by the video compression technique or standard in use, in the sense that the coding video sequence complies with the syntax of the video compression technique or standard, as specified in the video compression technique or standard, and specifically in a profile document therein. Also, a requirement for compliance may be that the complexity of the coding video sequence is within the limits defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples / second), maximum reference picture size, etc. The limits set by the level may in some cases be further limited through a Hypothetical Reference Decoder (HDR) specification and metadata for HDR buffer management signaled in the coding video sequence.
[0093] In an 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 enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0094] FIG. 4 may be a functional block diagram of a video encoder (203) according to one embodiment of the disclosure.
[0095] The encoder (203) may receive video samples from a video source (201) (not part of the encoder) that may 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 presentation 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 number of individual pictures that, when viewed in succession, give the appearance of motion. 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., being used. Those skilled in the art will readily appreciate the relationship between pixels and samples. The following description focuses on samples.
[0097] According to an embodiment, the encoder (203) may code and compress pictures of a source video sequence into a coded video sequence (443) in real time or under any other time constraint required by the application. Enforcing an appropriate coding rate is one function of the controller (450). The controller (450) may control and is operatively coupled to other functional units as described below. Parameters set by the controller (450) may include rate control related parameters (picture skip, quantizer, lambda value for rate distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art will readily identify other functions of the controller 450 as they may relate to a video encoder (203) optimized for a particular system design.
[0098] Some video encoders operate in what those skilled in the art would immediately recognize as a "coding loop." As a very simplified explanation, the coding loop can include an encoder (203) (hereafter "source coder") (which generates symbols based on an input picture to be coded and reference pictures) and a coding portion of a (local) decoder (433) embedded within the encoder (203) that reconstructs the symbols to generate sample data that a (remote) decoder can generate (when any compression between the symbols and the coding video bitstream is lossless among the video compression techniques considered in the disclosed subject matter). The reconstructed sample stream is input to a reference picture memory 434. When the decoding of the symbol stream results in bit-exact results independent of the decoder location (local or remote), the contents of the reference picture buffer are also bit-exact between the local and remote encoders. In other words, the predictive portion of the encoder "sees" exactly the same sample values as the decoder "sees" when using prediction during decoding as reference picture samples. This basic principle of reference picture synchrony (and the resulting drift if synchrony cannot be maintained, for example 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), detailed above in connection with Figure 3. Referring also briefly to Figure 3, however, because symbols are available and the encoding / decoding of symbols into a coded 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), may not be fully implemented in the local decoder (433).
[0100] An observation to be made at this point is that any decoder techniques, other than parsing / entropy decoding, present in the decoder must also be present in substantially the same functional form as in the corresponding encoder. For this reason, the subject matter of the disclosure focuses on the decoder operation. A description of the encoder techniques can be omitted, as they are the inverse of the decoder techniques, which are described generically. Only in certain areas are more detailed descriptions necessary and are provided below.
[0101] In operation, in some examples, the source coder (203) may perform motion-compensated predictive coding, which predictively codes an input frame with reference to one or more previously coded frames from the video sequence designated as "reference frames." In this method, the coding engine (432) codes differences between pixel blocks of the input frame and pixel blocks of reference frames that may be selected as prediction references for the input frame.
[0102] The local video decoder (433) may decode the coded video data of frames, which may be designated as reference frames, 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 may be decoded in a video decoder (not shown in FIG. 4), the reconstructed video sequence may typically be a copy of the source video sequence with some errors. The local video decoder (433) may replicate the decoding process that may be performed by the video decoder on the reference frames, resulting in reconstructed reference frames to be stored in the reference picture cache (434). In this way, the encoder (203) may locally store copies of reconstructed reference frames that have common content with the reconstructed reference frames that would be obtained by the far-end video decoder (in the absence of transmission errors).
[0103] The predictor (435) may perform a prediction 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. that may serve as suitable prediction references for the new picture. The predictor (435) may operate on a sample block-pixel block basis to find a suitable prediction reference. In some examples, an input picture may have prediction references derived 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 the video data.
[0105] The output of all the aforementioned functional units may undergo entropy coding in an entropy coder (445), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing 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) to prepare it for transmission over a communication channel (460), which may be a hardware / software link to a storage device that may store the 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] A control unit (450) may manage the operation of the encoder (203). During coding, the control unit (450) may assign a particular coding picture type to each coding picture, which may affect the coding technique that may be applied to the respective picture. For example, pictures 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 frame in a sequence as a source of prediction. Some video codecs allow different kinds of intra pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art will recognize the variations of I-pictures and their respective applications and characteristics.
[0109] A predictive picture (P-picture) may be a picture that can be coded and decoded using intra- or inter-prediction, in most cases using one motion vector and reference index to predict the sample values of each block.
[0110] A bidirectionally predicted picture (B-picture) may be a picture that can be coded and decoded using intra- or inter-prediction, using up to two motion vectors and reference indices to predict the sample values of each block. Similarly, a multi-predictive picture can use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0111] A source picture may commonly be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples, respectively) and coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks determined by the coding assignment applied to the respective picture of the block. For example, blocks of I pictures may be non-predictively coded, or they may be predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of P pictures may be predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of B pictures may be non-predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.
[0112] The video coder (203) may perform coding operations according to a given video coding technique or standard, such as ITU-T Rec. H.265. In doing so, the video coder (203) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. The coding video data may therefore conform to a 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 temporal / spatial / SNR enhancement layers, other types of redundant data such as redundant pictures and slices, Supplementary Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.
[0114] Before describing particular aspects of the disclosed subject matter in further detail, it is necessary to introduce certain terms that will be referenced in the remainder of this description.
[0115] A sub-picture, hereinafter, may represent in some cases a rectangular configuration of samples, blocks, macroblocks, coding units, or similar entities that may be semantically grouped and coded independently at a modified resolution. One or more sub-pictures may be for a picture. One or more coding sub-pictures may form a coding picture. One or more sub-pictures may be assembled into a picture, and one or more sub-pictures may be extracted from a picture. In certain circumstances, one or more coding sub-pictures may be assembled into a coding picture in the compressed domain without conversion to the sample level, and in the same or certain other cases, one or more coding sub-pictures may be extracted from a coding picture in the compressed domain.
[0116] Adaptive Resolution Change (ARC) hereinafter refers to a mechanism that allows changing the resolution of pictures or sub-pictures in a coded video sequence, e.g. by reference picture resampling. ARC parameters hereinafter refer to the control information needed to perform adaptive resolution change. This may include, for example, filter parameters, scaling factors, output and / or reference picture resolutions, various control flags, etc.
[0117] The above description has focused on coding and decoding a single, semantically independent coded video picture, according to various embodiments. Before describing the meaning of coding / decoding multiple sub-pictures with independent ARC parameters and the additional complexities that are implied, the signaling of ARC parameters may be explained.
[0118] Referring to Figure 5, several novel options for signaling ARC parameters are shown. As noted with each of the options, a video coding standard or technology may select one or more of these options, or options known from the prior art, for signaling ARC parameters, which have certain advantages and certain disadvantages in terms of coding efficiency, complexity, and architecture. The options may not be mutually exclusive or may be interchanged based on application needs, technically relevant standards, or encoder preferences.
[0119] ARC parameter classes may include:
[0120] - separate or combined up / downsampling factors in X and Y dimensions;
[0121] -Up / down sample factor, indicating a constant speed zoom in / out for a given number of pictures with the addition of a time dimension;
[0122] - Either of the two above may involve the coding of one or more possibly short syntax elements which may point to a table containing the factors;
[0123] - Resolution in samples, blocks, macroblocks, CUs, or any other suitable units of granularity, of input pictures, output pictures, reference pictures, coding pictures, combined or separate, in the X or Y dimension. If there is more than one resolution (e.g. one for input pictures and one for reference pictures), in certain cases one set of values may be inferred from another set of values. This can be controlled, for example, by the use of flags. For more detailed examples see:
[0124] "Warping" coordinates include those used in H.263 Annex P, again with appropriate granularity as described above. H.263 Annex P defines one efficient way to code such warping coordinates, although other, potentially more efficient ways may be devised. For example, the variable-length reversible Huffman-type coding of Annex P warping coordinates may be replaced by an appropriate-length binary coding, where the length of the binary codewords may, for example, be derived from the maximum picture size, possibly multiplied by a particular coefficient and offset by a particular value, thus allowing "warping" outside the boundaries 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 more flexibility in the 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 an appropriate entropy coding technique), the filter may be selected implicitly through the up / down sample ratio, which is signaled according to any of the mechanisms mentioned above, etc.
[0126] In the following, we assume the coding of a finite set of up / down-sampling factors (the same factor to be used in both X and Y dimensions) indicated through a codeword, which can advantageously be a variable-length codeword using common Ext-Golomb codes for certain syntax elements in video coding specifications such as H.264 and H.265.
[0127] One suitable mapping of values to up- and / or down-sampling factors may, for example, be according to Table 1. [Table 1]
[0128] Many similar mappings can be devised according to the needs of the application and the capabilities of the up- and down-scaling mechanisms available in the video compression technology or standard. The table can be extended to more values. The values may be represented by entropy coding mechanisms other than Ext-Bolomb codes, for example using binary coding. It may have particular advantages when the resampling factor is targeted outside the video processing engines (mainly the encoders and decoders) themselves, for example by a MANET (Mobile ad hoc network). It should be noted that in the (probably) most common situation where no change in resolution is required, the Ext-Golomb code can be chosen to be short, only a single bit in the above table. It may have coding efficiency advantages over using binary codes in the most common case.
[0129] The number of entries in the table, along with their meaning, may be fully or partially configurable. For example, a basic outline of the table may be conveyed in a "high" parameter set, such as a sequence or decoder parameter set. Alternatively or in an embodiment, one or more such tables may be defined in a video coding technology or standard and may be selected, for example, via a decoder or sequence parameter set.
[0130] The following describes how the upsampling / downsampling factor (ARC information) coded as described above is included in a video coding technique or standard syntax. Similar considerations can be applied to one or several codeword controlled up / downsampling filters. See below for a discussion of when a relatively large amount of data is required for a filter or other data structure.
[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 wise design choice when (a) there is a picture header available, and (b) frequent changes of ARC information are expected. However, the overhead when using H.263-type signaling can be very large, and since picture headers can be transient in nature, scaling factors may not fall between picture boundaries.
[0132] The above-cited JVCET-M135-v1 includes ARC reference information (505) (index) located in a picture parameter set (504), an index table (506) containing target resolutions located in a sequence parameter set (SPS) (507). The placement of possible resolutions in the table (506) in the sequence parameter set (507) can be justified, in the words of the authors, using the SPS as an interoperability negotiation point during capability exchange. Resolution can vary, within the limits set by the values in the table (506), on a picture-by-picture basis by referencing the appropriate picture parameter set (504).
[0133] Returning to Figure 5, the following additional options may exist for carrying ARC information in the video bitstream: Each of these options has certain advantages over existing techniques, as discussed above, and the options may coexist within the same coding technique or standard.
[0134] In an embodiment, the ARC information (509), such as a resampling (zoom) factor, may be present in a slice header, a group of blocks (GOB) header, a tile header, or a tile group header (hereafter tile group header) (508). This is sufficient if the ARC information is small, e.g., a single variable-length ue(v) as described above or a fixed-length codeword of a few bits. Having the ARC information directly in the tile group header has the additional advantage that the ARC information is applicable to a sub-picture, e.g., represented by a tile group, rather than to the whole picture. See also below. Furthermore, even if a video compression technology or standard assumes adaptive resolution changes of the whole picture (as opposed to tile group based adaptive resolution changes, for example), putting the ARC information in the tile group header has certain advantages from the perspective of error resilience over putting it in the H.263 format picture header.
[0135] In the same or another embodiment, the ARC information (512) itself may reside in an appropriate parameter set (511), such as a picture parameter set (PPS), a header parameter set, a tile parameter set, an adaptive parameter set, etc. (denoted adaptive parameter set), where the parameter set is advantageously no larger than a picture, e.g., a tile group. Use of the ARC information is implicit through activation of the associated parameter set. For example, when a video coding technique or standard envisages 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 be present in a tile group header (514) or a similar data structure, and may represent a subset (515) of the ARC information available in a parameter set (516) that has a scope beyond a single picture, such as a sequence parameter set or a decoder parameter set.
[0137] As used in JVET-M0135-v1, an additional level of indirectly implied activation of PPS, PPS, SPS from the tile group header seems unnecessary since, just like the picture parameter set, just like the sequence parameter set, it can be used for capability negotiation declaration (certain standards like RFC3984 have). However, if the ARC information should also be applicable to, for example, sub-pictures represented by the tile group, a parameter set with activation scope limited to the tile group, like the adaptation parameter set or the header parameter set, may be a suitable choice. Also, if the ARC information is of negligible size and contains filter control information, for example, a large number of filter coefficients, a parameter set may be a suitable choice from the viewpoint of coding efficiency rather than using the header (508) directly, since these settings can be reused by future pictures or sub-pictures by referencing the same parameter set.
[0138] When using a sequence parameter set or another higher level parameter set with scope spanning multiple pictures, certain considerations apply:
[0139] 1. The parameter set that stores the ARC information table (516) may in some cases be a sequence parameter set, but in other cases 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 session start to the session end. Such ranges may be more appropriate since possible ARC factors are characteristics of the decoder, possibly implemented in hardware, and the hardware characteristics are CVSs, and tend not to change over lengths of one second or less (at least in some entertainment systems, Group of Pictures). That is, putting the table in a sequence parameter set is explicitly included in the placement options described herein, especially in connection with 2 below.
[0140] 2. The ARC information (513) may be advantageously placed directly in the Picture / Slice / Tile / GOB / Tile Group Header (hereafter Tile Group Header) (514) instead of in the Picture Parameter Set as in JVCET-M0135-v1. The reason is as follows: when an encoder wants to change a single value in a Picture Parameter Set, such as the ARC reference information, it must generate a new PPS and reference the new PPS. It is assumed that only the ARC reference information changes and other information, such as the quantization matrix information in the PPS, remains the same. Such information may be of significant size and may need to be retransmitted to complete the new PPS.
[0141] Since the ARC reference information, like an index in the table (513), may be a single codeword and may be the only value that changes, it would be cumbersome and wasteful to retransmit, for example, all of the quantization matrix information. Therefore, from the viewpoint of coding efficiency, it may be very appropriate to avoid the roundabout way through the PPS, as opposed to JVET-M0135-v1. Similarly, putting the ARC reference information in the PPS has the additional drawback that the ARC information referenced by the ARC reference information (513) necessarily applies to the whole picture and not to sub-pictures, since the scope of picture parameter set activation is the picture.
[0142] In the same or another embodiment, signaling of ARC parameters is described in detail below, as outlined in Figure 6. Figure 6 shows a syntax diagram in terms as used in video coding standards since at least 1993. The notation of such syntax diagrams closely follows C-style programming. In Figure 6, bolded lines indicate syntax elements that may appear in the bitstream. Non-bolded lines may indicate control flow or variable settings.
[0143] The tile group header (601) as an example syntax structure of a header applicable to a (possibly rectangular) picture portion may conditionally contain a variable-length Ext-Golomb coded syntax element dec_pic_size_idx (602) (shown in bold). The presence of this syntax element in the tile group header can be controlled in 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 where it occurs in the syntax diagram.
[0144] Whether adaptive resolution is used for this picture or part can be signaled in a high level syntax structure inside or outside the bitstream. In the example shown in Figure 6, it is signaled in the sequence parameter set outlined below.
[0145] 6, an excerpt of a sequence parameter set (610) is also shown. The first syntax element shown is adaptive_pic_resolution_change_flag (611). When true, the flag can indicate the use of adaptive resolution, which may require specific control information. In the example, such control information is conditionally present based on the value of the flag based on an if() statement in the parameter set (612) and the tile group header (601).
[0146] When adaptive resolution is used, the output resolution is coded in units of samples, in this example (613). Reference 613 represents both output_pic_width_in_luma_samples and output_pic_height_in_luma_samples, which together may define the resolution of the output picture. In other cases, a video coding technology or standard may define specific limitations on any value. For example, the level definition may limit the number of total output samples, which may be the product of the values of those two syntax elements. Also, a specific video coding technology or standard, or an external technology or standard, such as a system standard, may limit the numbering range (e.g., one or both dimensions must be divisible by a number that is a power of two), or the aspect ratio (e.g., width and height must have a relationship such as 4:3 or 16:9). Such limitations may be introduced to facilitate hardware implementation or for other reasons, and are well known in the art.
[0147] In certain applications, an encoder may instruct the decoder to use a particular reference picture size rather than implicitly assuming that size is the output picture size. In this example, the syntax element reference_pic_size_present_flag (614) controls the conditional presence of the reference picture dimensions (615) (again, the reference numbers represent both width and height).
[0148] Finally, in Figure 6, a table of possible decoded pictures with width and height is shown. Such a table can be represented, for example, by a table instruction (num_dec_pic_size_in_luma_samples_minus1) (616). "minus1" may represent an 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) in the tile group header, allowing different decoding sizes, effectively zoom factors, per tile group.
[0150] Certain video coding techniques or standards, e.g., VP9, support spatial scalability by implementing a specific form of reference picture resampling (signaled in a completely different way than the disclosed subject matter) in conjunction with temporal scalability to enable spatial scalability. In particular, certain reference pictures may be upsampled to a higher resolution using ARC-type techniques to form the basis of a spatial enhancement layer. These upsampled pictures may be refined using regular prediction mechanisms at higher resolutions to add details.
[0151] The disclosed subject matter can be used in such environments. In certain cases, in the same or another embodiment, values in the Network Abstraction Layer (NAL) unit header, e.g., a Temporal Identifier (ID) field, can be used to indicate not only temporal but also spatial layers. Doing so may provide certain advantages for certain system designs. For example, existing Selected Forwarding Units (SFUs) generated and optimized for temporal layer selective forwarding based on NAL unit header Temporal ID values can be used without modification in scalable environments. To be effective, there may be a requirement that the mapping between coding picture size and temporal layers 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 coding picture, slice, tile, NAL unit, etc., which is captured and composed into a respective picture / slice / tile / NAL unit bitstream at a given point in time. The point in time may be the composition time.
[0153] In HEVC, and certain other video coding techniques, a 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) includes 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 derived that they are 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 that the two pictures / slices / tiles belong to the same AU and have the same configuration time. Conversely, two pictures / tiles / slices having different POC values can indicate that the pictures / slices / tiles belong to different AUs and have different configuration times.
[0154] In an embodiment of the disclosed subject matter, the aforementioned strict relationship can be relaxed and an access unit can include pictures, slices, or tiles with different POC values. Allowing different POC values within an AU allows the POC values to be used to identify possibly independently decodable pictures / slices / tiles that have the same presentation time. This, in turn, can enable support for multiple scalable layers without modifying the reference picture selection signaling (e.g., reference picture set signaling or reference picture list signaling), as will be described in more detail below.
[0155] However, it is still desirable to be able to identify, from the POC value alone, the AU to which a picture / slice / tile belongs, for pictures / slices / tiles with different POC values. This can be achieved as described below.
[0156] In the same or other embodiments, an access unit count (AUC) may be signaled in a higher level syntax structure such as a NAL unit header, a slice header, a tile group header, a SEI message, a parameter set, or an AU delimiter. The value of AUC may be used to identify which NAL units, pictures, slices, or tiles belong to a given AU. The values of AUC may correspond to different configuration points in time. The AUC value may be equal to a multiple of the value of POC. 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 implementation of a decoder. In such cases, a small constraint in the numbering space of the AUC values allows 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, a value of POC cycle per AU (poc_cycle_au) may be signaled in a higher level syntax structure such as a NAL unit header, a slice header, a tile group header, a SEI message, a parameter set, or an AU delimiter. poc_cycle_au may indicate how many different consecutive POC values may be associated with the same AU. For example, if the value of poc_cycle_au is equal to 4, pictures, slices, or tiles with POC values equal to 0 to 3, inclusive, are associated with an AU with an AUC value equal to 0, and pictures, slices, or tiles with POC values equal to 4 to 7, inclusive, are associated with an AU with an AUC value equal to 1. Thus, the value of AUC 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 spatial or SNR layers in the coded video sequence, e.g. located in a video parameter set (VPS). Such possible relationships are briefly described below. Although the above derivation may save a small number of bits in the VPS and thus improve coding efficiency, it is advantageous to explicitly code poc_cycle_au in an appropriate higher-level syntax structure hierarchically below the video parameter set, so that poc_cycle_au can be minimized for a given small portion of the bitstream, such as a picture. This optimization may save more bits than can be saved through the above derivation process, since the POC value (and / or values of syntax elements that indirectly reference POC) may be coded in lower-level syntax structures.
[0159] In the same or another embodiment, Figure 9 shows an example of a syntax table for signaling the syntax element vps_poc_cycle_au in the VPS (or SPS) indicating the poc_cycle_au used for all pictures / slices in the coded video sequence, and the syntax element slice_poc_cycle_au indicating the poc_cycle_au of the current slice in the slice header. 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 value of AUC for each AU is calculated by dividing the value of POC 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 of slice_access_unit_cnt. The value of AUC for each AU is calculated by dividing the value of POC by slice_poc_cycle_au. Figure 10 shows a block diagram illustrating the related workflow.
[0160] In the same or another embodiment, pictures, slices, or tiles corresponding to AUs having the same AUC value may be associated with the same decoding or output time point, even though the values of the POC of the pictures, slices, or tiles may differ. Thus, 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 point, without having inter-parsing / decoding dependencies across pictures, slices, or tiles within the same AU.
[0161] In the same or another embodiment, pictures, slices, or tiles corresponding to AUs with the same AUC value may be associated with the same composition / display time, even though the POC values of the pictures, slices, or tiles may be different. When composition times are included in the container format, pictures can be displayed at the same time even if they correspond to different AUs if they have the same composition time.
[0162] In the same or other embodiments, each picture, slice, or tile may have the same temporal identifier (temporal_id) within the same AU. All or some of the pictures, slices, or tiles corresponding to a time point may be associated with the same temporal sub-layer. In the same or other embodiments, each picture, slice, or tile may have a different spatial layer identifier (layer_id) within the same AU. All or some of the pictures, slices, or tiles corresponding to a time point may be associated with the same or different spatial layers.
[0163] POC FIG. 8 shows an example of a video sequence structure with a combination of temporal_id, layer_id, POC, and AUC with adaptive resolution change. In this example, a picture, slice, or tile in the first AU with AUC=0 may have temporal_id=0 and layer_id=0 or 1, while a picture, slice, or tile in the second AU with AUC=1 may have temporal_id=1 and layer_id=0 or 1, respectively. 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 equal to the number of (spatial scalability) layers. In this example, the value of POC is therefore increased by 2 and the value of AUC is increased by 1.
[0164] In the above-mentioned embodiments, all or part of the reference picture indication and inter-picture or inter-layer prediction structure may be supported using the existing reference picture set (RPS) signaling or reference picture list (RPL) in HEVC. In RPS or RPL, a selected reference picture is indicated by signaling a value of POC or a delta value of POC between the current picture and the selected reference picture. In the disclosed subject matter, RPS and RPL can be used to indicate inter-picture or inter-layer prediction structure without changing the signaling, but with the following constraints: 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 may not use the reference picture for motion compensation or other prediction. 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 may not use the reference picture for motion compensation or other prediction.
[0165] In the same or other embodiment, the motion vector scaling based on POC difference for temporal motion vector prediction may be disabled across multiple pictures in an access unit. Thus, although each picture may have a different POC value within an access unit, 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 as reference pictures with the same time point. Thus, in an embodiment, when a reference picture belongs to the AU associated with the current picture, the motion vector scaling function may return 1.
[0166] In the same and other embodiments, motion vector scaling based on POC difference for temporal motion vector prediction may be optionally disabled across pictures when the spatial resolution of the reference picture differs from the spatial resolution of the current picture. When motion vector scaling is allowed, the motion vector is 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, motion vectors may be scaled based on AUC difference instead of POC difference for temporal motion vector prediction, especially when poc_cycle_au has a non-uniform value (when vps_contant_poc_cycle_per_au==0). In other cases (when vps_contant_poc_cycle_per_au==1), motion vector scaling based on AUC difference may be the same as motion vector scaling based on POC difference.
[0168] In the same or another embodiment, when a motion vector is scaled based on the AUC difference, reference motion vectors within the same AU as the current picture (having the same AUC value) are not scaled based on the AUC difference and used for motion vector prediction, with or without scaling 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 AU boundaries and is used for hypothetical reference decoder (HDR) operations that require AU granularity input and output timing. In many cases, the decoded picture with the highest layer within the AU may be output for display. The AUC value and layer_id value can be used to identify the output picture.
[0170] In an embodiment, a picture may be composed of one or more sub-pictures. Each sub-picture may cover a local area or the entire area of the picture. The area supported by a sub-picture may or may not overlap with the area supported by another sub-picture. The area composed by one or more sub-pictures may or may not cover the entire area of the picture. When a picture is composed of sub-pictures, the area supported by the sub-pictures is the same as the area supported by the picture.
[0171] In the same embodiment, the sub-pictures may be coded by a coding method similar to the coding method used for the coding picture. The sub-pictures may be coded independently or may depend on other sub-pictures or coding pictures. The sub-pictures may or may not have parsing dependencies from other sub-pictures or coding pictures.
[0172] In the same embodiment, the coding sub-pictures may be included in one or more layers. The coding sub-pictures within a layer may have different spatial resolutions. The original sub-pictures may be spatially resampled (upsampled or downsampled), coded with different spatial resolution parameters, and included in the bitstream corresponding to the layer.
[0173] In the same or another embodiment, a sub-picture having (W,H) may be coded and included in the coding bitstream corresponding to layer 0, where W denotes the width of the sub-picture and H denotes the height of the sub-picture. On the other hand, a sub-picture having the original spatial resolution and having (W*S w,k ,H*S h,k ) may be coded and included in the coding bitstream corresponding to layer k, where S w,k ,S h,kdenotes the horizontal and vertical resampling ratio. S w,k ,S h,k For values of greater than 1, resampling is equivalent to upsampling. On the other hand, for values of S w,k ,S h,k For values of less than 1, resampling is equivalent to downsampling.
[0174] In the same or another embodiment, a coding subpicture in a layer may have a different visual quality than a coding subpicture in another layer, either in the same subpicture or in a different subpicture. For example, subpicture i in layer n may have a different visual quality than a coding subpicture in another layer, either in the same subpicture or in a different subpicture. i,n and subpicture j in layer m is coded by the quantization parameter Q j,m It is coded as .
[0175] In the same or another embodiment, coding sub-pictures within a layer may be independently decodable and have no parsing or decoding dependency from coding sub-pictures in another layer of the same local region. A sub-picture layer that is independently decodable without reference to another sub-picture layer of the same local region is an independent sub-picture layer. A coding sub-picture within an independent sub-picture layer may or may not have a decoding or parsing dependency from a previous coding sub-picture from the same sub-picture layer, but a coding sub-picture may have no dependency from a coding picture in another sub-picture layer.
[0176] In the same or another embodiment, coding subpictures in a layer may be dependently decodable and have a parsing or decoding dependency from coding subpictures in another layer of the same local region. A subpicture layer that is dependently decodable with reference to another subpicture layer of the same local region is a dependent subpicture layer. A coding subpicture in a dependent subpicture may reference coding subpictures belonging to the same subpicture, previous coding subpictures in the same subpicture layer, or both reference subpictures.
[0177] In the same or another embodiment, a coding subpicture is composed of one or more independent subpicture layers and one or more dependent subpicture layers. However, for a coding subpicture, there may be at least one independent subpicture layer. An independent subpicture layer may have a layer identifier (layer_id) value equal to 0, which may be present in the NAL unit header or another higher level syntax structure. A subpicture layer with layer_id equal to 0 is a base subpicture layer.
[0178] In the same or another embodiment, a picture is composed of one or more foreground subpictures and one or more background subpictures. The area supported by a background subpicture may be equal to the area of the picture. The area supported by a foreground subpicture may overlap the area supported by a background subpicture. A background subpicture may be a base subpicture layer, while a foreground subpicture may be a non-base (enhancement) subpicture layer. One or more non-base subpicture layers may reference the same base layer for decoding. Each non-base subpicture layer with layer_id equal to a may reference a non-base subpicture layer with layer_id equal to b, where a is greater than b.
[0179] In the same or another embodiment, a picture may be composed of one or more foreground subpictures with or without a background subpicture. Each subpicture may have its own base subpicture layer and one or more non-base (enhancement) layers. Each base subpicture layer may be referenced by one or more non-base subpicture layers. Each non-base subpicture layer with layer_id equal to a may reference a non-base subpicture layer with layer_id equal to b, where a is greater than b.
[0180] In the same or another embodiment, a picture may consist of one or more foreground subpictures with or without a background subpicture. Each coding subpicture in a (base or non-base) subpicture layer may be referenced by one or more non-base layer subpictures that belong to the same subpicture, and by one or more non-base layer subpictures that do not belong to the same subpicture.
[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 in the same layer. One or more coding subpictures in layer b may reference a partitioned subpicture in layer a.
[0182] In the same or another embodiment, a coded video sequence (CVS) may be a group of coded pictures. A CVS may be composed of one or more coded sub-picture sequences (CSPS), where a CSPS may be a group of coded sub-pictures covering the same local area of a picture. A CSPS may have the same or a different temporal resolution as the coded video sequence.
[0183] In the same or another embodiment, a CSPS may be coded and included in one or more layers. A CSPS may be composed of one or more CSPS layers. Decoding one or more CSPS layers corresponding to a CSPS may reconstruct a sequence of sub-pictures corresponding to the same local region.
[0184] In the same or different embodiments, the number of CSPS layers corresponding to a CSPS may be the same as or different from the number of CSPS layers corresponding to another CSPS.
[0185] In the same or another embodiment, a CSPS layer may have a different temporal resolution (e.g., frame rate) than another CSPS layer, and the original (uncompressed) sub-picture sequence may be temporally resampled (upsampled or downsampled), coded with different temporal resolution parameters, and included in the bitstream corresponding to the layer.
[0186] In the same or another embodiment, a sub-picture sequence with frame rate F may be coded and included in the coding bitstream corresponding to layer 0. Meanwhile, F*S t,k A sub-picture sequence that is temporally upsampled (or downsampled) from the original sub-picture sequence by may be coded and included in the coding bitstream corresponding to layer k, where S t,k denotes the temporal sampling ratio of layer k. S t,k If the value of is greater than 1, the temporal resampling process is equivalent to frame rate up-conversion. t,k If the value of is less than 1, the temporal resampling process is equivalent to a frame rate down-conversion.
[0187] In the same or another embodiment, when a subpicture with CSPS layer a is referenced by a subpicture with CSPS layer b for motion compensation or any inter-layer prediction, if the spatial resolution of CSPS layer a is different from the spatial resolution 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] FIG. 11 shows an example video stream including a background video CSPS with layer_id equal to 0 and multiple foreground CSPS layers. A coding subpicture may be composed of one or more CSPS layers, but a background region that does not belong to any foreground CSPS layer may constitute a base layer. The base layer may include background and foreground regions, and the enhanced CSPS layer may include foreground regions. The enhanced CSPS layer may have better visual quality than the base layer in the same region. The enhanced CSPS layer may refer to the reconstructed pixels and motion vectors of the base layer that correspond to the same region.
[0189] In the same or another embodiment, the video bitstream corresponding to the base layer is included in a track, while the CSPS layers corresponding to each sub-picture are included in a separate track within the video file.
[0190] In the same or another embodiment, the video bitstream corresponding to the base layer is included in a track, while the CSPS layers corresponding to the same layer_id are included in another 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, where 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 the 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 time-limited 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 a multi-layer subpicture method. The video stream includes one basic layer video bitstream corresponding to the background picture and one or more extended layer video bitstreams corresponding to the foreground subpictures. Each extended layer video bitstream 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 under the control of the client, the extended CSPS layer corresponding to the selected user is decoded and displayed according to the extended quality or spatial resolution. FIG. 13 illustrates a block diagram of a process for decoding and displaying a video bitstream including a multi-layer subpicture, according to an embodiment. For example, the process may include one or more of the following operations. For example, in operation 1301, decoding of a video bitstream having multiple layers may occur. Operation 1302 may include identifying a background region and one or more foreground subpictures. Operation 1303 may include determining whether a particular subpicture region is selected. Operation 1304 may include decoding and displaying an enhanced subpicture if a particular subpicture region is selected (i.e., 1303=Yes). Operation 1305 may include decoding and displaying a background region if a particular subpicture region is not 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 a user depending on the bandwidth. The picture / sub-picture organization may be used for bandwidth adaptation. For example, if a user does not have the bandwidth, the router may remove layers or select some sub-pictures according to their importance or based on user settings. This can be done dynamically to adapt to the bandwidth.
[0196] FIG. 14 shows an example of the use of 360-degree video. When a 360-degree picture of a sphere is projected onto a planar picture, the projected 360-degree picture may be partitioned into multiple sub-pictures, such as a base layer. The enhancement layers of a particular sub-picture may be coded and transmitted to a client. A decoder may be able to decode both the base layer, which includes all the sub-pictures, and the enhancement layers of a selected sub-picture. 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 enhancement layers. Alternatively, the decoded picture with the base layer can be displayed with lower quality.
[0197] In the same or another embodiment, layout information for display may be present in the file as auxiliary information (e.g., SEI message or metadata). One or more decoded sub-pictures may be rearranged and displayed according to the signaled layout information. The layout information may be signaled by a streaming server or broadcaster, or may be regenerated by a network entity or cloud server, or may be determined by a user's customized settings.
[0198] In an embodiment, an input picture may be divided into one or more (rectangular) sub-regions, and 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, such as picture size (width, height), top left corner offset information (x_offset, y_offset). Figure 15 shows an example of a layout of divided sub-pictures, their sub-picture size and position information, and their corresponding picture prediction structure. The layout information, including sub-picture size and sub-picture position, may be signaled in a higher syntax structure, such as a parameter set, a slice or group header, or an SEI message.
[0199] In the same embodiment, each sub-picture corresponding to an independent layer may have its own unique POC value within the AU, and 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 sub-picture corresponding to the layer may be used.
[0200] In the same or another embodiment, the layer_id may not be used and the POC(delta) value may be used to indicate the (inter-layer) prediction structure.
[0201] In the same embodiment, a sub-picture 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 a sub-picture having a POC value equal to N+K corresponding to the same layer (or the same local region) for motion compensation prediction. In most cases, the value of the number K may be equal to the number of sub-regions, or may be equal to the maximum number of (independent) layers.
[0202] In the same or another embodiment, Figure 16 shows an extended case 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 Fig. 16, the input picture may be divided into four sub-regions: the top-right sub-region may be coded as two layers, namely layer 1 and layer 4, while the bottom-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 (e.g., deblocking filters, adaptive in-loop filters, reshapers, bilateral filters, or any deep learning based filters) that span layer boundaries may (optionally) be disabled.
[0205] In the same or another embodiment, motion compensated prediction or intra block copying across layer boundaries may (optionally) be disabled.
[0206] In the same or another embodiment, border padding for motion compensated prediction or in-loop filtering at sub-picture boundaries may be optionally processed. A flag indicating whether border padding is processed or not may be signaled in a higher syntax structure such as a parameter set (VPS, SPS, PPS, or APS) or a slice or tile group header, or an SEI message.
[0207] In the same or another embodiment, layout information of sub-regions (or sub-pictures) may be signaled in the VPS or MPS. Figure 17 shows an example of syntax elements in the VPS and SPS. In this example, vps_sub_picture_dividing_flag is signaled in 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 coded video sequence corresponding to the current VPS may not be divided into multiple sub-regions. In this case, the input picture size may be equal to the coded picture size (pic_width_in_luma_samples, pic_height_in_luma_samples), signaled in 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 in 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 may not be used for decoding, but may be used for composition 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 in 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 in the SPS may be equal to the width and height of the sub-region corresponding to a particular layer. Also, the position of the upper left corner of the sub-region (pic_offset_x, pic_offset_y) may be signaled in the SPS.
[0212] In the same embodiment, the position of the top left corner of the sub-region (pic_offset_x, pic_offset_y) may not be used for decoding, but may be used for construction and display.
[0213] In the same or another embodiment, layout information (size and position) of all or part of the sub-regions of the input picture, inter-layer dependency information may be signaled in a parameter set or SEI message.
[0214] FIG. 18 shows an example of syntax elements for indicating information of the layout of sub-regions, dependencies between layers, and relationships between sub-regions and one or more layers. In this example, the syntax element num_sub_region indicates the number of (rectangular) sub-regions in the current coding video sequence. According to an embodiment, the syntax element num_layers may indicate the number of layers in the current coding video sequence. The value of num_layers may be equal to or greater than the value of num_sub_region. When any sub-region 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 sub-regions 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 jth layer to the ith layer. The num_layers_for_region[i] indicates the number of layers associated with the ith sub-region. sub_region_layer_id[i][j] indicates the layer_id of the jth layer associated with the i-th subregion. sub_region_offset_x[i] and sub_region_offset_y[i] indicate the horizontal and vertical position 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 the output layer set to indicate one or more layers is output with or without profile tier level information may be signaled in a higher level syntax structure, such as a VPS, DPS, SPS, PPS, APS, or SEI message. With reference to Figure 19, a syntax element num_output_layer_sets indicating the number of output layer sets (OLS) in a coded video sequence that references a VPS may be signaled in the VPS. For each output layer set, output_layer_flag may be signaled as many times as the number of output layers.
[0216] In the same embodiment, output_layer_flag[i] equal to 1 specifies that the i-th layer is output. vps_output_layer_flag[i] equal to 0 specifies that the i-th layer is not output.
[0217] In the same or another embodiment, one or more syntax elements specifying profile tier level information per output layer set may be signaled in a higher level syntax structure, such as a VPS, DPS, SPS, PPS, APS, or SEI message. Still referring to Figure 19, a syntax element num_profile_tile_level indicating the number of profile tier level information per OLS in a coding video sequence that references a VPS may be signaled in the VPS. For each output layer set, a set of profile tier level information syntax elements or an index indicating a particular profile tier level information among the entries in the profile tier level information may be signaled as many times as the number of output layers.
[0218] In the same embodiment, profile_tier_level_idx[i][j] specifies the index of the profile_tier_level() syntax structure that applies to the jth layer of the ith OLS into the list of profile_tier_level() syntax structures in the VPS.
[0219] In the same or another embodiment, referring to FIG. 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 the same or another embodiment, referring to FIG. 20, a syntax element vps_output_layers_mode[i] may be present in the VPS to indicate 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 with the i-th output layer set. vps_output_layer_mode[i] equal to 1 specifies that all layers are output with the i-th output layer set. vps_output_layer_mode[i] equal to 2 specifies that the layers output are those with vps_output_layer_flag[i][j] equal to 1 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] for the i-th output layer set.
[0223] In the same or another embodiment, referring to Figure 20, a flag vps_ptl_signal_flag[i] may be present 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 the same or another embodiment, referring to FIG. 21, the number of sub-pictures in the current CVS, max_subpics_minus1, may be signaled in a higher level syntax structure, such as a VPS, DPS, SPS, PPS, APS, or SEI message.
[0225] In the same or another embodiment, referring to FIG. 21, the sub-picture identifier sub_pic_id[i] of the i-th sub-picture may be signaled when the maximum number of layer sub-pictures is greater than one (max_subpics_minus1>0).
[0226] In the same or another embodiment, one or more syntax elements may be signaled in the VPS to indicate the sub-picture identifiers belonging to each layer of each output layer set. With reference to Figure 22, sub_pic_id_layer[i][j][k] indicates the kth sub-picture in the jth layer of the ith output layer set. With this information, the decoder may know which sub-pictures can be decoded and output for each layer of a particular output layer set.
[0227] In an embodiment, a picture header (PH) is a syntax structure that contains syntax elements that apply to all slices of a coded picture. A picture unit (PU) is a set of NAL units that contain exactly one coded picture, consecutive in decoding order, associated with each other according to specified classification rules. A PU may contain a picture header (PH) and one or more VCL NAL units that correspond to a coded picture.
[0228] In an embodiment, the SPS (RBSP) may be available to the decoding process before being referenced, included in at least one AU with TemporalId equal to 0, or provided through external means.
[0229] In an embodiment, the SPS (RBSP) may be available to the decoding process before it is referenced and included in at least one AU with a TemporalId equal to 0 in the CVS that contains one or more PPSs that reference the SPS, or provided through external means.
[0230] In an embodiment, the SPS (RBSP) may be referenced by one or more PPSs, and may be included in at least one PU with a nuh_layer_id equal to the lowest nuh_layer_id value of an SPS NAL unit in the CVS that contains one or more PPSs that reference the SPS, or may be available to the decoding process before being provided through external means.
[0231] In an embodiment, the SPS (RBSP) may be referenced by one or more PPSs and may be included within one or more PUs with TemporalId equal to 0 and nuh_layer_id equal to the lowest nuh_layer_id value of the PPS NAL units that reference the SPS NAL units, or may be available to the decoding process before being provided through external means.
[0232] In an embodiment, the SPS (RBSP) may be referenced by one or more PPSs, and may be included in at least one PU having a TemporalId equal to 0 and a nuh_layer_id equal to the lowest nuh_layer_id value of an SPS NAL unit in the CVS that contains one or more PPSs that reference the SPS, or may be provided through external means or may be available to the decoding process before being provided through external means.
[0233] In the same or another embodiment, 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 among all PPSs referenced by a coding picture in the CLVS.
[0234] In the same or another embodiment, all SPS NAL units with a particular value of sps_seq_parameter_set_id in the CVS may have the same content.
[0235] In the same or another embodiment, regardless of the value of nuh_layer_id, SPS NAL units may share the same value space of sps_seq_parameter_set_id.
[0236] In the same or another embodiment, the nuh_layer_id value of an SPS NAL unit may be equal to the lowest nuh_layer_id value of any PPS NAL unit that references the SPS NAL unit.
[0237] In an embodiment, when an SPS with nuh_layer_id equal to m is referenced by one or more PPS with nuh_layer_id equal to n, the layer with nuh_layer_id equal to m may be the same as the layer with nuh_layer_id equal to n, or a (direct or indirect) reference layer of the layer with nuh_layer_id equal to m.
[0238] In an embodiment, the PPS (RBSP) may be available to the decoding process before being referenced and included in at least one AU having a TemporalId equal to the TemporalId of the PPS NAL unit, or provided through external means.
[0239] In an embodiment, the PPS (RBSP) may be available to the decoding process before it is referenced and included in at least one AU having a TemporalId equal to the TemporalId of a PPS NAL unit in the CVS that contains one or more PHs (or coding slice NAL units) that reference the PPS, or provided through external means.
[0240] In an embodiment, a PPS (RBSP) may be referenced by one or more PHs (or coding slice NAL units) and may be included in at least one PU having a nuh_layer_id equal to the lowest nuh_layer_id value of a coding slice NAL unit that references a PPS NAL unit in a CVS that contains one or more PHs (or coding slice NAL units) that reference the PPS, or may be available for the decoding process before being provided through external means.
[0241] In an embodiment, the PPS (RBSP) may be included in at least one PU that is referenced by one or more PHs (or coding slice NAL units) and has a nuh_layer_id equal to the lowest nuh_layer_id value of a coding slice NAL unit that references a PPS NAL unit in the CVS that contains one or more PHs (or coding slice NAL units) and a TemporalId equal to the TemporalId of the PPS NAL unit, or may be provided through external means or available for the decoding process before being provided through external means.
[0242] In the same or another embodiment, the ph_pic_parameter_set_id in the PH specifies the value of the pps_pic_parameter_set_id of the referenced PPS in use. The value of pps_seq_parameter_set_id may be the same among all PPSs referenced by coding pictures in the CLVS.
[0243] In the same or another embodiment, all PPS NAL units with a particular value of pps_pic_parameter_set_id within a PU may have the same content.
[0244] In the same or another embodiment, regardless of the value of nuh_layer_id, PPS NAL units may share the same value space of pps_pic_parameter_set_id.
[0245] In the same or another embodiment, the nuh_layer_id value of a PPS NAL unit may be equal to the lowest nuh_layer_id value of any coding slice NAL unit that references a NAL unit that references the PPS NAL unit.
[0246] In an embodiment, when a PPS with nuh_layer_id equal to m is referenced by one or more coding slice NAL units with nuh_layer_id equal to n, the layer with nuh_layer_id equal to m may be the same as the layer with nuh_layer_id equal to n or a (direct or indirect) reference layer of the layer with nuh_layer_id equal to m.
[0247] In an embodiment, the PPS (RBSP) may be available to the decoding process before being referenced and included in at least one AU having a TemporalId equal to the TemporalId of the PPS NAL unit, or provided through external means.
[0248] In an embodiment, the PPS (RBSP) may be available to the decoding process before it is referenced and included in at least one AU having a TemporalId equal to the TemporalId of a PPS NAL unit in the CVS that contains one or more PHs (or coding slice NAL units) that reference the PPS, or provided through external means.
[0249] In an embodiment, a PPS (RBSP) may be referenced by one or more PHs (or coding slice NAL units) and may be included in at least one PU having a nuh_layer_id equal to the lowest nuh_layer_id value of a coding slice NAL unit that references a PPS NAL unit in a CVS that contains one or more PHs (or coding slice NAL units) that reference the PPS, or may be available for the decoding process before being provided through external means.
[0250] In an embodiment, the PPS (RBSP) may be included in at least one PU that is referenced by one or more PHs (or coding slice NAL units) and has a nuh_layer_id equal to the lowest nuh_layer_id value of a coding slice NAL unit that references a PPS NAL unit in the CVS that contains one or more PHs (or coding slice NAL units) and a TemporalId equal to the TemporalId of the PPS NAL unit, or may be provided through external means or available for the decoding process before being provided through external means.
[0251] In the same or another embodiment, the ph_pic_parameter_set_id in the PH specifies the value of the pps_pic_parameter_set_id of the referenced PPS in use. The value of pps_seq_parameter_set_id may be the same among all PPSs referenced by coding pictures in the CLVS.
[0252] In the same or another embodiment, all PPS NAL units with a particular value of pps_pic_parameter_set_id within a PU may have the same content.
[0253] In the same or another embodiment, regardless of the value of nuh_layer_id, PPS NAL units may share the same value space of pps_pic_parameter_set_id.
[0254] In the same or another embodiment, the nuh_layer_id value of a PPS NAL unit may be equal to the lowest nuh_layer_id value of any coding slice NAL unit that references a NAL unit that references the PPS NAL unit.
[0255] In an embodiment, a PPS with nuh_layer_id equal to m is referenced by one or more coding slice NAL units with nuh_layer_id equal to n. The layer with nuh_layer_id equal to m may be the same as the layer with nuh_layer_id equal to n or a (direct or indirect) reference layer of the layer with nuh_layer_id equal to m.
[0256] Output Layers indicates the layers of the output layer set that are to be output. Output Layer Set (OLS) indicates the layer set that is composed of the specified layer set, where one or more layers in the layer set are specified as output layers. Output Layer Set (OLS) Layer Index is an index of a layer in the OLS into the list of layers in the OLS.
[0257] A sublayer indicates a temporally scalable layer of a temporally scalable bitstream consisting of VCL NAL units with a particular value of the TemporalId variable and associated non-VCL NAL units. A sublayer representation indicates a subset of a bitstream consisting of NAL units of a particular sublayer and lower sublayers.
[0258] The VPS RBSP may be available to the decoding process before it is referenced and included in at least one AU with TemporalId equal to 0, or provided through external means. All VPS NAL units with a particular value of vps_video_parameter_set_id in the CVS may have the same content.
[0259] The vps_video_parameter_set_id provides an identifier for the VPS for reference by other syntax elements. The value of vps_video_parameter_set_id can be greater than 0.
[0260] vps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers that may exist in each CVS that references the VPS.
[0261] vps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers that may exist in each CVS that references a VPS. The value of vps_max_sublayers_minus1 may range from 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 in each CVS that references the VPS.
[0263] vps_all_layers_same_num_sublayers_flag equal to 0 specifies whether layers in each CVS that references the VPS may or may not have the same number of temporal sublayers. When not present, the value of vps_all_layers_same_num_sublayers_flag is inferred to be equal to 1.
[0264] vps_all_independent_layers_flag equal to 1 specifies that all layers in the CVS are coded independently without using inter-layer prediction.
[0265] vps_all_independent_layers_flag equal to 0 specifies that one or more of the layers in the CVS may use inter-layer prediction. When not present, the value of vps_all_independent_layers_flag is inferred 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, when m is less than n, the value of vps_layer_id[m] may be less than vps_layer_id[n].
[0267] vps_independent_layer_flag[i] equal to 1 specifies that the layer with index i does not use inter-layer prediction. vps_independent_layer_flag[i] equal to 0 specifies that the layer with index i may use inter-layer prediction and syntax elements.
[0268] For j in the range 0 to i-1, inclusive, vps_direct_ref_layer_flag[i][j] is present in the VPS. When not present, the value of vps_independent_layer_flag[i] is inferred to be equal to 1. vps_direct_ref_layer_flag[i][j] equal to 0 specifies 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 specifies that the layer with index j is a direct reference layer of the layer with index i.
[0269] When vps_direct_ref_layer_flag[i][j] is not present for i and j in the range of 0 to vps_max_layers_minus1, inclusive, it is inferred to be equal to 0. When vps_independent_layer_flag[i] is equal to 0, there may be at least one value of j in the range of 0 to i-1, inclusive, such that 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 with nuh_layer_id equal to vps_layer_id[i], is derived as follows:
number
[0272] It is a bitstream conformance requirement that for any two distinct values of both i and j in the range 0 to vps_max_layers_minus1 inclusive, 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] max_tid_ref_present_flag[i] equal to 1 specifies that the syntax element max_tid_il_ref_pics_plus1[i] is present. max_tid_ref_present_flag[i] equal to 0 specifies that the syntax element max_tid_il_ref_pics_plus1[i] is not present.
[0274] max_tid_il_ref_pics_plus1[i] equal to 0 specifies that inter-layer prediction is not used by non-IRAP pictures of the i-th layer. max_tid_il_ref_pics_plus1[i] greater than 0 specifies that pictures with TemporalId greater than max_tid_il_ref_pics_plus1[i]-1 are not used as ILRPs to decode pictures of the i-th layer. When not present, the value of max_tid_il_ref_pics_plus1[i] is inferred 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 in the CVS that references the VPS is itself an OLS whose only contained single layer is the output layer. each_layer_is_an_ols_flag equal to 0 may contain more than one layer. If vps_max_layers_minus1 is equal to 0, the value of each_layer_is_an_ols_flag is inferred to be equal to 1. Otherwise, when vps_all_independent_layers_flag is equal to 0, the value of each_layer_is_an_ols_flag is inferred to be equal to 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 contains layers with layer indices from 0 to i inclusive, and for each OLS, only the topmost layer in 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 contains layers with layer indices from 0 to i inclusive, and for each OLS, all layers in 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 of the output layer of the OLS.
[0279] The value of ols_mode_idc may range from 0 to 2, inclusive. The value ols_mode_idc 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 inferred to be equal to 2.
[0281] num_output_layer_sets_minus1 plus 1 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 PLSs specified by the VPS, is derived as follows:
number
[0283] vps_all_layers_same_num_sublayers_flag equal to 0 specifies whether layers in each CVS that references the VPS may or may not have the same number of temporal sublayers. When not present, the value of vps_all_layers_same_num_sublayers_flag is inferred to be equal to 1.
[0284] vps_all_independent_layers_flag equal to 1 specifies that all layers in the CVS are coded independently without using inter-layer prediction.
[0285] ols_output_layer_flag[i][j] equal to 1 specifies that the layer with nuh_layer_id equal to vps_layer_id[j] is the output layer of the i-th OLS when ols_mode_idc is equal to 2. ols_output_layer_flag[i][j] equal to 0 specifies that the layer with nuh_layer_id equal to vps_layer_id[j] is not the output layer of the i-th OLS when ols_mode_idc is equal to 2.
[0286] The variables NumOutputLayersInOls[i], which specifies the number of output layers in the ith OLS, NumSubLayersInLayerInOLS[i][j], which specifies the number of sublayers in the jth layer in the ith OLS, OutputLayerIdInOls[i][j], which specifies the nuh_layer_id of the jth output layer in the ith OLS, and LayerUsedAsOutputLayerFlag[k], which specifies whether the kth 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 from 0 to vps_max_layers_minus1, inclusive, the values of LayerUsedAsRefLayerFlag[i] and LayerUsedAsOutputLayerFlag[i] may not both be equal to 0. In other words, there may be no layers that are not the output layer of at least one OLS or a direct reference layer of any other layer.
[0288] For each OLS, there may be at least one layer that is the output layer. In other words, for any value of i in the range 0 to TotalNumOlss-1, inclusive, the value of NumOutputLayersInOls[i] may be 1 or greater.
[0289] The variable NumLayersInOls[i], which specifies the number of layers in the ith OLS, and the variable LayerIdInOls[i][j], which specifies the nuh_layer_id value of the jth layer in the ith OLS, are derived as follows:
number
[0290] The variable OlsLayerIdx[i][j], which specifies the OLS layer index of the layer with nuh_layer_idequal equal to LayerIdInOls[i][j], is derived as follows:
number
[0291] The lowest layer in each OLS may be an independent layer, in other words, for each i in the range 0 to TotalNumOlss-1, inclusive, the value of vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]] may be equal to 1.
[0292] Each layer may be included in at least one OLS specified by the VPS. In other words, there may be at least one pair of values i and j for each layer with a particular value of nuh_layer_idnuhLayerId equal to one of vps_layer_id[k] for k ranging from 0 to vps_max_layers_minus1, inclusive, where i ranges from 0 to TotalNumOlss-1, inclusive, and j ranges from NumLayersInOls[i]-1, inclusive, such that the value of LayerIdInOls[i][j] is equal to nuhLayerId.
[0293] In an embodiment, the decoding process operates as follows for the current picture CurrPic: (1) PictureOutputFlag is set as follows: i) PictureOutputFlag is set equal to 0 if one or more of the following conditions are true: 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 PicOrderCntVal of the current picture is less than RpPicOrderCntVal of the associated GDR picture. e) sps_video_parameter_set_id is greater than 0, ols_mode_idc is equal to 0, and the current AU contains a picture picA that satisfies all of the following conditions: · PicA has PictureOutputFlag equal to 1. · PicA has a nuh_layer_id nuhLid that is larger than that of the current picture. · PicA belongs to the output layer of 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) Otherwise, PictureOutputFlag is set equal to pic_output_flag.
[0294] After all slices of the current picture are decoded, the currently decoded picture is marked as "used for short-term reference" and each ILRP entry in RefPicList[0] or RefPicList[1] is marked as "used for short-term reference".
[0295] In some or alternative embodiments, when each layer is an output layer set, PictureOutputFlag is set equal to pic_output_flag, regardless of the value of valueofols_mode_idc.
[0296] In the same or another embodiment, PictureOutputFlag is set equal 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 contains a picture picA that satisfies all of the following conditions: PicA has PictureOutputFlag equal to 1, PicA has nuh_layer_id nuhLid greater than that of the current picture, and PicA belongs to an output layer of OLS (i.e., OutputLayerIdInOls[TargetOlsIdx][0] is equal to nuhLid).
[0297] In the same or another embodiment, 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, PictureOutputFlag is set equal to 0.
[0298] FIG. 23 illustrates an example syntax table showing output layer sets with output layer set mode indicators, according to an embodiment.
[0299] 24 illustrates a block diagram of a bitstream decoding process according to an embodiment of the present disclosure. In particular, FIG. 24 illustrates a decoder-side flow chart illustrating an output layer set having an output layer set mode according to an embodiment.
[0300] According to an aspect of the present disclosure, a method of decoding may include receiving a bitstream including compressed video / image data (operation 1001 of FIG. 24). The bitstream may have multiple layers.
[0301] The method of decoding may further include an operation 1002 of parsing or deriving, from the bitstream, an output layer set mode indicator (eg, ols_mode_idc) in a video parameter set (VPS).
[0302] The method of decoding may further include an operation 1003 of identifying an output layer set signaling based on the output layer set mode indicator.
[0303] The method of decoding may further include an operation 1004 (eg, operation 1004A, 1004B, or 1004C) of identifying one or more picture output layers based on the identified output layer set signaling.
[0304] The method of decoding may further include an operation of decoding the identified one or more picture output layers 1005. The decoded one or more picture output layers may be displayed.
[0305] Identifying the output layer set signaling based on the 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, e.g., 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, e.g., 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, e.g., Figure 25C).
[0306] 25A-25C show the output picture underlined. As shown in FIG. 25A-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 FIG. 25C for example).
[0307] According to an embodiment, Ols_mode_idc in the VPS may indicate the 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; if it is equal to 2, one or more output layers may be explicitly signaled in the VPS. That is, the picture output may be determined by the 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 an embodiment, each bitstream may signal an output layer mode, which may change over time.
[0310] According to an embodiment, there may be five layers in the bitstream (Layer 4 to Layer 0), 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, as shown in Figure 25A. Thus, at time=K, the output picture of Layer 4 is output, as shown in Figure 25A. At time=K+1, Layer 3, the highest layer, may be output, and so on for K+2 and K+3.
[0311] As shown in FIG. 25B, the output layer set mode indicator (ols_mode_idc) is equal to 1 and all layers may be output, such as in each of K through 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 underlining) is an output layer for times, for example, from 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 the disclosure is not limited to the use of 0, 1, and 2 as described above.
[0315] Identifying one or more picture output layers through explicit signaling in the VPS may include: (i) parsing or deriving an output layer flag from the VPS; and (ii) setting layers having an output layer flag equal to 1 to one or more picture output layers.
[0316] The step of identifying output layer set mode signaling based on the output layer set mode indicator may include a step of, when the output layer set mode indicator in the VPS is a predetermined value, the output layer set mode signaling identifying one or more picture output layers based on explicit signaling in the VPS.
[0317] The step of identifying one or more picture output layers based on explicit signaling in the VPS includes the steps of: (i) parsing or deriving an output layer flag from the VPS; and (ii) setting a layer having an output layer flag equal to 1 as one or more picture output layers, where the number of layers is greater than two.
[0318] The output layer set mode signaling may include 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 two and the number of layers is greater than two.
[0319] The output layer set mode signaling may include identifying a 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 two and the number of layers in the plurality is actually two, and the output layer set mode indicator is actually less than two and the number of layers in the plurality is actually two.
[0320] The number of output layer sets-1 indicator in the VPS indicates the number of output layers.
[0321] According to an embodiment, a VPS max layers-1 indicator in the VPS indicates the number of layers in the bitstream.
[0322] According to an embodiment, the output layer set mode flag [i][j] in the VPS indicates whether the jth layer of the ith output layer set is an output layer or not.
[0323] According to an embodiment, if multiple 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 inferred to be a second value.
[0324] According to an embodiment, if each layer is an output layer set, the picture output flag in the VPS is set 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 output layers may or may not have PictureOutputFlag equal to 1. Pictures in non-output layers have PictureOutputFlag equal to 0. Pictures with PictureOutputFlag equal to 1 are output for display. Pictures with PictureOutputFlag equal to 0 are not output for display.
[0326] According to an embodiment, when a sequence parameter set (SPS) VSP identifier is greater than 0, indicating that more than one layer is present in the bitstream, a picture output flag is set equal to 0; When 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 contains a picture that satisfies all of the following conditions, including: having a picture output flag equal to 1, having a nuh layer identifier greater than that of the current picture and belonging to the output layer of the output layer set.
[0327] 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 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 an embodiment, the method may further include controlling a display to display the decoded one or more picture output layers.
[0329] According to an aspect of the present disclosure, a non-transitory computer-readable storage medium storing instructions that, when executed, cause a system or device including one or more processors to receive a bitstream including compressed video / image data, the bitstream including a plurality of layers, parse or derive from the bitstream an output layer set mode indicator in a video parameter set (VPS), identify output layer set mode signaling based on the output layer set mode indicator, identify one or more picture output layers based on the identified output layer set mode signaling, and decode the identified one or more picture output layers.
[0330] According to an embodiment, the instructions are further configured to cause a system or device including the one or more processors to control a display to display the decoded one or more picture output layers.
[0331] According to an aspect of the disclosure, an apparatus may include at least one memory that stores computer program code, and at least one processor configured to access the at least one memory and operate according to the computer program code. According to an embodiment, the computer program code may include a receiving code configured to cause the at least one processor to receive a bitstream including compressed video / image data, the bitstream including a plurality of layers, a parsing or deriving code configured to cause the 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 the at least one processor to identify an output layer set mode signaling based on the output layer set mode indicator, a picture output layer identification code configured to cause the at least one processor to identify one or more picture output layers based on the identified output layer set mode signaling, and a decoding code configured to cause the at least one processor to decode the identified one or more picture output layers.
[0332] According to an embodiment, the computer program code may further include display control code for causing the at least one processor to display one or more picture output layers.
[0333] The adaptive resolution parameter decoding, displaying, and signaling techniques described above may be implemented as computer software using computer readable instructions and physically stored on one or more computer readable media. For example, FIG. 7 illustrates a computer system 700 suitable for implementing certain embodiments of the subject matter of this disclosure.
[0334] The computer software can be coded using any suitable machine code or computer language that can be processed by mechanisms such as assembly, compilation, linking, etc. to generate code containing instructions that can be executed by a computer central processing unit (CPU), graphics processing unit (GPU), etc., directly or through interpretation, microcode execution, etc.
[0335] The instructions may be executed in a variety of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, and the like.
[0336] 7 of computer system 700 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing the embodiments of the present disclosure. Furthermore, the arrangement of components should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary embodiment of computer system 700.
[0337] The computer system 700 may include certain human interface input devices. Such human interface input devices may be responsive to input by one or more human users, for example, through sensory input (e.g., keystrokes, swipes, data grabbing actions), audio input (e.g., voice, clapping), visual input (e.g., gestures), olfactory input (not shown). Human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as sound (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a digital camera), and video (including, for example, two-dimensional video, three-dimensional video, stereoscopic video).
[0338] The input human interface devices may include one or more of a keyboard 701, a mouse 702, a trackpad 703, a touch screen 710, a data glove 704, a joystick 705, a microphone 706, a scanner 707, and a camera 708 (only one of which is shown).
[0339] The computer system 700 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through sensory output, sound, light, and smell / taste. Such human interface output devices may include sensory output devices (e.g., sensory feedback via touch screen 710, data glove 704, or joystick 705, although there may also be sensory feedback devices that do not function as input devices), audio output devices (e.g., speakers 709, headphones (not shown), visual output devices (e.g., screen 710, including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touch screen input capability, each with or without sensory feedback capability, some of which may be capable of outputting two-dimensional visual output or three-dimensional or higher output, for example, 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 and associated media such as optical media such as CD / DVD ROM / RW 720 with media 721 such as CDs / DVDs, thumb drives 722, removable hard drives or solid state drives 723, legacy magnetic media such as tapes and floppy disks (not shown), dedicated ROM / ASIC / PLD based devices such as security dongles (not shown), etc.
[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 encompass transmission media, carrier waves, or other transitory signals.
[0342] The computer system 700 may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wired, or optical. The networks may further be local, wide area, metropolitan area, vehicular and industrial, real-time, delay tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV, terrestrial broadcast TV, vehicular and industrial including CANBus, etc. Certain networks generally require an external network interface that is attached to a specific general purpose data port or peripheral bus (749) (e.g., a USB port on the computer system 700). Others are generally integrated into the core of the computer system 700 by attachment to a system bus as described below (e.g., an Ethernet interface to a PC computer system, or a cellular network interface to a smartphone computer system). Using these networks, the computer system 700 can communicate with other entities. Such communications may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANBus to a specific CANBus device), or two-way to other computer systems, for example, using a local or wide area digital network. Specific protocols and protocol stacks may be used in each of the above-mentioned networks and network interfaces.
[0343] The aforementioned human interface devices, human accessible storage, and network interfaces may be attached to a 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 743 in the form of FPGAs, hardware accelerators 744 for specific tasks, etc. These devices may be connected through a system bus 748, along with read only memory (ROM) 745, random access memory 746, internal mass storage device 747 such as an internal non-user accessible hard drive, SSD, 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 through a peripheral bus 749. Peripheral bus architectures include PCI, USB, etc.
[0345] The CPU 741, GPU 742, FPGA 743, and accelerator 744 may combine to execute certain instructions that may generate the aforementioned computer code. The computer code may be stored in ROM 745 or RAM 746. Temporary data may also be stored in RAM 746, while permanent data may be stored, for example, in an internal mass storage device 747. Rapid storage and retrieval from any of the memory devices may be made possible through the use of cache memories that may be closely associated with one or more of the CPU 741, GPU 742, mass storage device 747, ROM 745, RAM 746, etc.
[0346] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.
[0347] As an example and not by way of limitation, computer system 700 having the architecture, and core 740 in particular, can provide functionality as a result of processors (including CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer readable media. Such computer readable media can be specific storage of core 740 of a non-transitory nature, such as core internal mass storage 747 or ROM 745, and media associated with user accessible mass storage as described above. Software implementing various embodiments of the present disclosure can be stored in such devices and executed by core 740. Computer readable media can include one or more memory devices or chips, according to specific needs. The software can cause core 740, and specifically the processors therein (including CPU, GPU, FPGA, etc.) to perform specific operations or specific portions of specific operations described herein, including defining and modifying data structures stored in RAM 746 according to software-defined operations. Additionally or alternatively, the computer system may provide functionality as a result of implementation in hardwired or other circuitry (e.g., accelerator 744) that can operate in conjunction with or in place of software to perform certain processes or certain portions of certain processes described herein. Reference to software includes logic, and vice versa, where appropriate. Reference to a computer-readable medium may include, where appropriate, circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that implements logic for execution, or both. The present disclosure includes any appropriate combination of hardware and software.
[0348] While this disclosure has described several exemplary embodiments, there are alterations, permutations, and various substitute equivalents, which are encompassed within the scope of this disclosure. It will be apparent to those skilled in the art that numerous systems and methods can be devised that, although not explicitly shown or described herein, embody the principles of the disclosure and thus are encompassed within the spirit and scope of the disclosure.
Claims
1. 1. A decoding method performed by a decoder, the method comprising: receiving a bitstream containing compressed video / image data, the bitstream including a plurality of layers; parsing or deriving from the bitstream a syntax element ols_mode_idc in a video parameter set (VPS); identifying an output layer set signaling based on the syntax element ols_mode_idc; identifying one or more picture output layers based on the identified output layer set signaling; decoding the identified one or more picture output layers; Including, The step of decoding comprises: setting the syntax element PictureOutputFlag of the VPS equal 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 setting the syntax element PictureOutputFlag of the VPS to the syntax element pic_output_flag signaled in a picture header; A method comprising:
2. The step of identifying the output layer set signaling based on the syntax element ols_mode_idc comprises: identifying a highest layer in the bitstream as the one or more picture output layers if the syntax element ols_mode_idc in the VPS has a first value; identifying all layers in the bitstream as the one or more picture output layers when the syntax element ols_mode_idc in the VPS has a second value; identifying the one or more picture output layers based on explicit signaling in the VPS when the syntax element ols_mode_idc in the VPS has a third value; Including, the first value is different from the second value and different from the third value; The method of claim 1 , wherein the second value is different from the third value.
3. The method of claim 2 , wherein the first value is 0, the second value is 1, and the third value is 2.
4. A method as described in claim 2 or 3, wherein the step of identifying the one or more picture output layers by the explicit signaling in the VPS comprises the steps of: (i) parsing or deriving a syntax element output_layer_flag from the VPS; and (ii) setting a layer having the syntax element output_layer_flag equal to 1 as the one or more picture output layers.
5. The step of identifying the output layer set signaling based on the syntax element ols_mode_idc further comprises: A method according to any one of claims 1 to 4, wherein when the syntax element ols_mode_idc in the VPS is a predetermined value, the output layer set signalling includes identifying the one or more picture output layers based on explicit signalling in the VPS.
6. 6. The method of claim 5, wherein the step of identifying the one or more picture output layers by the explicit signaling in the VPS includes the steps of: (i) parsing or deriving a syntax element output_layer_flag from the VPS; and (ii) setting a layer having the syntax element output_layer_flag equal to 1 as the one or more picture output layers, wherein the number of layers is greater than two.
7. The method of claim 5 or 6, wherein the output layer set signaling includes identifying the one or more picture output layers based on the explicit signaling in the VPS when the syntax element ols_mode_idc is equal to 2 and the number of layers in the plurality of layers is greater than two.
8. 8. The method of claim 1, wherein the output layer set signaling includes, when the syntax element ols_mode_idc is less than 2 and the number of layers is 2, identifying a highest layer in the bitstream or all layers in the bitstream as the one or more picture output layers by estimating the one or more picture output layers.
9. A method according to any one of claims 1 to 8, wherein the syntax element num_output_layer_sets_minus1 in the VPS indicates the number of output layer sets.
10. The method according to any one of claims 1 to 9, wherein a syntax element vps_max_layers_minus1 in the VPS indicates the maximum number of layers allowed in each Coded Video Sequence (CVS) that references the VPS.
11. The method of any one of claims 1 to 10, wherein the syntax element ols_output_layer_flag[i][j] in the VPS indicates whether the jth layer of the i-th output layer set is an output layer.
12. A method according to any one of claims 2 to 4, wherein if all of the multiple layers in the bitstream are independent layers that have no parsing and decoding dependency on another layer and the syntax element vps_all_independent_layers_flag of the VPS is equal to 1, then the syntax element ols_mode_idc is not signaled and the value of the syntax element ols_mode_idc is inferred to be the second value.
13. The step of decoding comprises: A method according to any one of claims 1 to 12, comprising setting the syntax element PictureOutputFlag of the VPS equal to the syntax element pic_output_flag signalled in the picture header, regardless of the value of the syntax element ols_mode_idc, based on the fact that each layer is an output layer set.
14. The step of decoding comprises: A method according to any one of claims 1 to 13, comprising setting the syntax element PictureOutputFlag of the VPS equal to 0 based on the syntax element sps_video_parameter_set_id being greater than 0, the syntax element each_layer_is_an_ols_flag being equal to 0, and the syntax element ols_mode_idc being equal to 2.
15. The method of any one of claims 1 to 14, further comprising the step of controlling a display to display the decoded one or more picture output layers.
16. The syntax element max_tid_il_ref_pics_plus1 in the VPS When [i] is equal to 0, it specifies that inter-layer prediction is not used by non-IRAP pictures of the i-th layer, and the syntax element max_tid_il_ref_pics_plus1 When [i] is greater than 0, max_tid_il_ref_pics_plus 1 is used to decode the pictures of the i-th layer. Specifies that pictures with TemporalId greater than [i]-1 are not used as ILRP, and the syntax element max_tid_il_ref_pics_plus1 When [i] does not exist, the syntax element max_tid_il_ref_pics_plus1 The value of [i] is estimated to be equal to 7, The method according to any one of claims 1 to 15.
17. The variable NumOutputLayersInOls in the VPS [i] specifies the number of output layers in the i-th output layer set, and the variable NumSubLayersInLayerInOLS [i][j] specifies the number of sublayers of the jth layer of the ith OLS, and the variable OutputLayerIdInOls [i][j] specifies the nuh_layer_id value of the jth output layer in the ith output layer set, and the variable LayerUsedAsOutputLayerFlag[k] specifies whether the kth layer is used as an output layer in at least one output layer set. The method according to any one of claims 1 to 16.
18. A computer program causing an apparatus to carry out the method according to any one of claims 1 to 17.
19. An apparatus comprising: at least one memory configured to store computer program code; at least one processor configured to access said at least one memory and to operate according to said computer program code; wherein said computer program code, when executed by said at least one processor, causes said apparatus to perform the method of any one of claims 1 to 17.
20. 1. An encoding method performed by an encoder, the method comprising: encoding a bitstream containing compressed video / image data, the bitstream containing multiple layers; parsing or deriving from the bitstream a syntax element ols_mode_idc in a video parameter set (VPS); identifying an output layer set signaling based on the syntax element ols_mode_idc; identifying one or more picture output layers based on the identified output layer set signaling; decoding the identified one or more picture output layers; Including, The step of decoding comprises: setting a syntax element PictureOutputFlag of the VPS equal to 0 when a syntax element sps_video_parameter_set_id is greater than 0, a syntax element each_layer_is_an_ols_flag is equal to 0, and the syntax element ols_mode_idc is equal to 2, otherwise setting the syntax element PictureOutputFlag of the VPS to the syntax element pic_output_flag signaled in a picture header; A method comprising: