Method for adaptive parameter set reference and constraint in coded video streams
By signaling ARC parameters through adaptation parameter sets, the method addresses inefficiencies in managing adaptive resolution changes in coded video streams, improving encoding efficiency and reducing bandwidth/storage needs for diverse video applications.
Patent Information
- Application Number
- JP2024072815
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-09-30
- Filing Date
- 2024-04-26
- Publication Date
- 2025-12-02
- Estimated Expiration
- 2040-10-05
AI Technical Summary
Existing video encoding and decoding technologies struggle with efficiently managing adaptive resolution changes within coded video streams, particularly in scenarios involving multiple semantically independent images, leading to inefficiencies in bandwidth and storage requirements.
The method involves signaling adaptive resolution change (ARC) parameters through various parameter sets, such as the adaptation parameter set (APS), allowing for flexible resolution adjustments of sub-images within a coded video sequence, enabling efficient encoding and decoding of multiple semantically independent images.
This approach reduces bandwidth and storage requirements by allowing dynamic resolution changes, enhancing encoding efficiency and adaptability to varying scene activities, particularly in applications like 360-degree video and surveillance.
Smart Images

Figure 0007778843000002 
Figure 0007778843000003 
Figure 0007778843000004
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Patent Application No. 62 / 954,096, filed December 27, 2019, and U.S. Patent Application No. 17 / 038,541, filed September 30, 2020, both of which are incorporated herein in their entireties.
[0002] The disclosed subject matter relates to video encoding and decoding, and more particularly to adaptive parameter set references and constraints in coded video streams. [Background technology]
[0003] Video encoding and decoding using inter-picture prediction with motion compensation is known. Uncompressed digital video can consist of a series of images, each with spatial dimensions of, for example, 1920 x 1080 luminance samples and associated chrominance samples. The series of images can have a fixed or variable image rate (informally known as the frame rate), for example, 60 images per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video (1920 x 1080 luminance sample resolution at a 60 Hz frame rate) with 8 bits per sample requires a bandwidth approaching 1.5 Gbit / s. One hour of such video requires over 600 GBytes of storage space.
[0004] One goal of video encoding and decoding is to reduce redundancy in the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage space requirements, sometimes by more than two orders of magnitude. Both lossless and lossy compression, as well as combinations thereof, can be used. Lossless compression refers to techniques that allow an exact copy of the original signal to be reconstructed from a compressed version of the original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signal is small enough to make the reconstructed signal useful for its intended application. For video, lossy compression is widely adopted. The amount of acceptable distortion varies depending on the application; for example, users of certain consumer streaming applications may tolerate higher distortion than users of television contribution applications. The achievable compression ratio can reflect that higher acceptable distortion can result in a higher compression ratio.
[0005] Video encoders and decoders may utilize techniques from several broad categories, including, for example, motion compensation, transform, quantization, and entropy coding, some of which may be introduced below.
[0006] Historically, video encoders and decoders have tended to operate mostly on a given picture size that was defined and remained constant for a coded video sequence (CVS), group of pictures (GOP), or similar multi-picture timeframe. For example, in MPEG-2, system designs have been known to change horizontal resolution (and, thereby, picture size) depending on factors such as scene activity, but only in I-pictures, and thus typically for GOPs. Resampling of reference pictures to use different resolutions within a CVS is known, for example, from ITU-T Rec. H.263 Annex P. However, here the picture size does not change; only the reference picture is resampled, resulting in only a portion of the image canvas being used (in the case of downsampling) or only a portion of the scene being captured (in the case of upsampling). Furthermore, H.263 Annex Q allows for resampling of individual macroblocks upward or downward by a factor of two (in each dimension). Again, the picture size remains the same. Because the macroblock size is fixed in H.263, it does not need to be signaled. Summary of the Invention [Means for solving the problem]
[0007] In one embodiment, a method for decoding an encoded video bitstream using at least one processor is provided, the method including: obtaining, from the encoded video bitstream, a coded video sequence including picture units corresponding to coded pictures; obtaining a picture header (PH) network abstraction layer (NAL) unit included in the picture unit; obtaining at least one video coding layer (VCL) network abstraction layer (NAL) unit included in the picture unit; decoding the coded picture based on the PH NAL unit, the at least one VCL NAL unit, and an adaptation parameter set (APS) included in the APS NAL unit obtained from the coded video sequence; and outputting the decoded picture, wherein the APS NAL unit is available to the at least one processor before the at least one VCL NAL unit.
[0008] In one embodiment, a device for decoding an encoded video bitstream is provided, the device including: at least one memory configured to store program code; and at least one processor configured to read the program code and operate as directed by the program code, the program code including: first retrieval code configured to cause the at least one processor to retrieve, from the encoded video bitstream, a coded video sequence including picture units corresponding to coded pictures; second retrieval code configured to cause the at least one processor to retrieve a picture header (PH) network abstraction layer (NAL) unit included in the picture unit; third retrieval code configured to cause the at least one processor to retrieve at least one video coding layer (VCL) network abstraction layer (NAL) unit included in the picture unit; decoding code configured to cause the at least one processor to decode the coded picture based on the PH NAL unit, at least one VCL NAL unit, and an adaptation parameter set (APS) included in an APS NAL unit retrieved from the coded video sequence; and output code configured to cause the at least one processor to output the decoded picture, Before the NAL unit is available to at least one processor.
[0009] In one embodiment, a non-transitory computer-readable medium is provided that stores instructions, the instructions including one or more instructions that, when executed by one or more processors of a device for decoding an encoded video bitstream, cause the one or more processors to obtain, from the encoded video bitstream, a coded video sequence including image units corresponding to coded images; obtain a picture header (PH) network abstraction layer (NAL) unit included in the image unit; obtain at least one video coding layer (VCL) network abstraction layer (NAL) unit included in the image unit; decode the coded image based on the PH NAL unit, the at least one VCL NAL unit, and an adaptation parameter set (APS) included in the APS NAL unit obtained from the coded video sequence; and output the decoded image, wherein the APS NAL unit is available to the at least one processor before the at least one VCL NAL unit.
[0010] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Brief explanation of the drawings]
[0011] [Figure 1] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to one embodiment. [Figure 2] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to one embodiment. [Figure 3] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment. [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment. [Figure 5A] FIG. 10 is a schematic diagram of options for signaling ARC parameters according to one embodiment. [Figure 5B] FIG. 10 is another schematic diagram of options for signaling ARC parameters according to one embodiment. [Figure 5C]FIG. 10 is yet another schematic diagram of options for signaling ARC parameters according to one embodiment. [Figure 5D] FIG. 10 is yet another schematic diagram of options for signaling ARC parameters according to one embodiment. [Figure 5E] FIG. 10 is yet another schematic diagram of options for signaling ARC parameters according to one embodiment. [Figure 6A] FIG. 2 is a schematic diagram of an example syntax table according to one embodiment. [Figure 6B] FIG. 10 is another schematic diagram of an example syntax table according to one embodiment. [Figure 7] 1 is an example of a prediction structure for scalability with adaptive resolution change, according to one embodiment. [Figure 8] FIG. 10 illustrates an example of a syntax table according to one embodiment. [Figure 9] FIG. 10 is a schematic diagram of a simplified block diagram of the parsing and decoding of POC cycles per access unit and access unit count values according to one embodiment. [Figure 10] FIG. 2 is a schematic diagram of a video bitstream structure including multiple sub-images, according to one embodiment. [Figure 11] FIG. 10 is a schematic diagram of a display of a selected sub-image with enhanced resolution, according to one embodiment. [Figure 12] FIG. 2 is a block diagram of a decoding and display process for a video bitstream containing multiple sub-images, according to one embodiment. [Figure 13] FIG. 1 is a schematic diagram of a 360-degree video display with an enhanced layer of sub-images, according to one embodiment. [Figure 14] FIG. 10 illustrates an example of layout information for a sub-image and its corresponding layer and image prediction structure, according to one embodiment. [Figure 15] FIG. 10 illustrates an example of layout information for a sub-picture and its corresponding layer and picture prediction structure with local-region spatial scalability format, according to one embodiment. [Figure 16A]FIG. 10 illustrates an example syntax table of sub-image layout information according to one embodiment. [Figure 16B] FIG. 10 is another diagram illustrating an example of a syntax table of sub-image layout information according to one embodiment. [Figure 17] FIG. 10 illustrates an example syntax table of an SEI message for sub-image layout information, according to one embodiment. [Figure 18] FIG. 10 illustrates an example syntax table showing output layers and profile / tier / level information for each output layer set, according to one embodiment. [Figure 19] FIG. 10 illustrates an example syntax table showing output layer modes for each output layer set, according to one embodiment. [Figure 20] FIG. 10 illustrates an example syntax table showing the current sub-image of each layer for each output layer set, according to one embodiment. [Figure 21] FIG. 1 is a schematic diagram of bitstream conformance requirements according to one embodiment. [Figure 22] 1 is a flowchart of an exemplary process for decoding an encoded video bitstream, according to one embodiment. [Figure 23] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0012] FIG. 1 shows a simplified block diagram of a communication system (100) according to one embodiment of the present disclosure. The system (100) may include at least two terminals (110-120) interconnected via a network (150). For unidirectional data transmission, a first terminal (110) may locally encode video data for transmission to another terminal (120) via the network (150). The second terminal (120) may receive the other terminal's encoded video data from the network (150), decode the encoded data, and display the reconstructed video data. Unidirectional data transmission may be common in media serving applications, for example.
[0013] 1 illustrates a second pair of terminals (130, 140) provided to support bidirectional transmission of encoded video, such as may occur during a video conference. For the bidirectional transmission of data, each terminal (130, 140) may encode video data captured at a local location for transmission to the other terminal over the network (150). Each terminal (130, 140) may also receive encoded video data transmitted by the other terminal, decode the encoded data, and display the recovered video data on a local display device.
[0014] Although the terminals (110-140) are shown in FIG. 1 as servers, personal computers, and smartphones, the principles of the present disclosure need not be so limited. Embodiments of the present disclosure apply to laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. The network (150) represents any number of networks that convey 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 telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this description, the architecture and topology of the network (150) may not be important to the operation of the present disclosure, unless otherwise described herein.
[0015] 2 illustrates the placement of a video encoder and decoder in a streaming environment as an example of an application of the disclosed subject matter. The disclosed subject matter may be equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0016] The streaming system may include a capture subsystem (213), which may include a video source (201), such as a digital camera, that generates an uncompressed video sample stream (202). The sample stream (202), shown as a thick line to emphasize its high data content compared to an encoded video bitstream, may be processed by an encoder (203) 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 as a thin line to emphasize its low data content compared to the sample stream, 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) that decodes an incoming copy of the encoded video bitstream (207) and generates an outgoing video sample stream (211) that can be rendered on a display (212) or other rendering device (not shown). In some streaming systems, the video bitstreams (204, 207, 209) may be encoded according to a particular video encoding / compression standard, such as ITU-T Recommendation H.265. A video encoding standard informally known as Versatile Video Coding (VVC) is under development. The disclosed subject matter may be used in the context of VVC.
[0017] FIG. 3 may be a functional block diagram of a video decoder (210) according to one embodiment of the disclosure.
[0018] The receiver (310) can receive one or more codec video sequences to be decoded by the decoder (210); in the same or another embodiment, one coded video sequence at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences can be received from a channel (312), which can be a hardware / software link to a storage device that stores the encoded video data. The receiver (310) can receive encoded video data with other data, such as coded audio data and / or auxiliary data streams, which can be transferred to each other using entities (not shown). The receiver (310) can separate the coded video sequences from other data. To combat network jitter, a buffer memory (315) can be coupled between the receiver (310) and the entropy decoder / parser (320) (hereinafter "parser"). When the receiver (310) is receiving data from a storage / transfer device of sufficient bandwidth and controllability or from an isocyclonic network, the buffer (315) may not be needed or may be small. For use in a best effort packet network such as the Internet, the buffer (315) may be required and may be relatively large, preferably of adaptive size.
[0019] The video decoder (210) may include a parser (320) for reconstructing symbols (321) from the entropy-coded video sequence. These symbol categories include information used to manage the operation of the decoder (210) and, potentially, information for controlling a rendering device (212), such as a display, that is not an integral part of the decoder but can be coupled to it, as shown in FIG. 3. The control information for the rendering device(s) may be in the form of a supplemental enhancement information (SEI) message or a video usability information (VUI) parameter set fragment (not shown). The parser (320) can parse and / or entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow principles well known to those skilled in the art, including variable-length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (320) can extract a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder from the coded video sequence based on at least one parameter corresponding to the group. A subgroup may include a group of pictures (GOP), an image, a subimage, a tile, a slice, a brick, a macroblock, a coding tree unit (CTU), a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. A tile may refer to a rectangular area of a CU / CTU in a particular tile column and row within an image. A brick may refer to a rectangular area of a CU / CTU column within a particular tile. A slice may refer to one or more bricks of an image contained in an NAL unit. A subimage may refer to a rectangular area of one or more slices within an image. The entropy decoder / parser may also extract information such as transform coefficients, quantizer parameter values, motion vectors, etc. from the coded video sequence.
[0020] The parser (320) can perform entropy decoding and / or parsing operations on the video sequence received from the buffer (315) to create symbols (321).
[0021] The reconstruction of the symbols (321) can involve 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 involved and how may be controlled by subgroup control information parsed from the coded video sequence by the parser (320). The flow of such subgroup control information between the parser (320) and the following units is not shown for clarity.
[0022] Beyond the functional blocks already mentioned, decoder 210 can be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate.
[0023] The first unit is a scaler and / or inverse transform unit (351), which receives quantized transform coefficients and control information from the parser (320) as symbol(s) (321), including which transform to use, block size, quantization factors, quantization scaling matrices, etc., and can output blocks containing sample values that can be input to the aggregator (355).
[0024] In some cases, the output samples of the scaler and / or inverse transform (351) may relate to intra-coded blocks; that is, intra-coded blocks that do not use prediction information from a previously reconstructed image but can use prediction information from a previously reconstructed portion of the current image. Such prediction information may be provided by an intra-image prediction unit (352). In some cases, the intra-image prediction unit (352) generates blocks of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from the current (partially reconstructed) image (358). The aggregator (355) may add, 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 and / or inverse transform unit (351).
[0025] In other cases, the output samples of the scaler and / or inverse transform unit (351) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion compensation prediction unit (353) can access a reference picture memory (357) to fetch samples used for prediction. After motion-compensating the fetched samples according to the symbols (321) associated with the block, these samples may be added by the aggregator (355) to the output of the scaler and / or inverse transform unit (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory from which the motion compensation unit fetches prediction samples may be controlled by motion vectors available to the motion compensation unit in the form of symbols (321), which may have, for example, 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 used, motion vector prediction mechanisms, etc.
[0026] The output samples of the aggregator (355) can be subjected to various loop filtering techniques in a loop filter unit (356). Video compression techniques can include in-loop filtering techniques 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 can also respond to meta-information obtained during decoding of previous (decoding order) portions of the coded image or coded video sequence, or can respond to previously reconstructed, loop-filtered sample values.
[0027] The output of the loop filter unit (356) may be a sample stream that can be output to the rendering device (212) and stored in a reference image memory for use in future inter-image prediction.
[0028] Once fully reconstructed, a particular coded image can be used as a reference image for future predictions. Once a coded image is fully reconstructed and identified as a reference image (e.g., by the parser (320)), the current reference image (358) can become part of the reference image buffer (357), and the new current image memory can be relocated before beginning reconstruction of a subsequent coded image.
[0029] The video decoder 210 may perform decoding operations according to a predetermined video compression technique, which may be documented in a standard such as ITU-T Rec. H.265. The coded video sequence may comply with the syntax specified in the video compression technique or standard being used, in the sense that it conforms to the syntax of the video compression technique or standard as specified in the video compression technique document or standard, particularly the profile document therein. Compliance may also require that the complexity of the coded video sequence be within the boundaries 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 per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further constrained by a hypothetical reference decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.
[0030] In one embodiment, the receiver (310) can receive additional (redundant) data with the encoded video. The additional data may be included as part of the coded video sequence(s). The additional data may be used by the video decoder (210) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or SNR enhancement layers, redundant slices, redundant images, forward error correction codes, etc.
[0031] FIG. 4 may be a functional block diagram of a video encoder (203) according to one embodiment of the present disclosure.
[0032] The encoder (203) can receive video samples from a video source (201) (not part of the encoder) that can capture the video image(s) to be encoded by the encoder (203).
[0033] The video source (201) may provide a source video sequence to be encoded by the encoder (203) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), 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 serving system, the video source (201) may be a storage device that stores pre-prepared video. In a video conferencing system, the video source (203) may be a camera that captures local image information as a video sequence. The video data may be provided as multiple individual images that, when viewed sequentially, impart motion. The image itself may be organized as a spatial array of pixels, each of which may contain one or more samples depending on the sampling structure, color space, etc., in use. Those skilled in the art will readily understand the relationship between pixels and samples. The following discussion will focus on samples.
[0034] According to one embodiment, the encoder (203) can encode and compress images 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 controls and is operatively coupled to other functional units, as described below. Coupling is not shown for clarity. Parameters set by the controller 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 can readily identify other functions of the controller (450) as they may relate to a video encoder (203) optimized for a given system design.
[0035] Some video encoders operate in a manner that those skilled in the art can easily recognize as a "coding loop." As an overly simplified explanation, the encoding loop can consist of an encoding portion of the encoder (430) (hereinafter, "source coder") (responsible for creating symbols based on the input image to be coded and the reference image(s)), and a (local) decoder (433) embedded in the encoder (203) that reconstructs the symbols to generate sample data, which the (remote) decoder also generates (since the video compression techniques considered in the disclosed subject matter ensure that any compression between the symbols and the coded video bitstream is lossless). That reconstructed sample stream is input to a reference image memory (434). Because decoding of the symbol stream yields bit-exact results regardless of the decoder location (local or remote), the reference image buffer contents are also bit-exact between the local and remote encoders. In other words, the encoder's predictor "sees" the exact same sample values as the decoder "sees" when using prediction during decoding. This basic principle of reference image synchrony (and the resulting drift if synchrony cannot be maintained, eg, due to channel errors) is well known to those skilled in the art.
[0036] The operation of the "local" decoder (433) may be the same as the operation of the "remote" decoder (210) already described in detail in connection with Figure 3. However, with brief reference also to Figure 4, because symbols are available and the encoding and / or 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).
[0037] An observation that can be made at this point is that any decoder technology, with the exception of parsing and / or entropy decoding, that is present in the decoder must also be present in substantially identical functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on decoder operation. A description of the encoder technology can be omitted since it is the inverse of the decoder technology that has been comprehensively described. Only in certain areas is more detailed description required and is provided below.
[0038] As part of its operation, the source coder (430) 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 manner, the coding engine (432) codes differences between pixel blocks of the input frame and pixel blocks of reference frame(s) that may be selected as predictive reference(s) for the input frame.
[0039] The local video decoder (433) may decode the encoded video data of frames that may be designated as reference frames based on the symbols generated by the source coder (430). The operation of the encoding engine (432) may advantageously be a lossy process. When the encoded video data is decoded by a video decoder (not shown in FIG. 4), the reconstructed video sequence may typically be a copy of the source video sequence, with some errors. The local video decoder (433) may replicate the decoding process performed by the video decoder on the reference frames, and the reconstructed reference frames may be stored in a reference image cache (434). In this way, the encoder (203) can locally store copies of reconstructed reference frames that have common content as reconstructed reference frames obtained by a far-end video decoder (without transmission errors).
[0040] The predictor (435) may perform the 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 (as candidate reference pixel blocks) or specific metadata, such as motion vectors and block shapes, of the reference pictures that may serve as suitable prediction references for the new picture. The predictor (435) may operate on each pixel block of samples to find a suitable prediction reference. In some cases, as determined by the search results obtained by the predictor (435), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (434).
[0041] The controller (450) can manage the encoding operations of the video coder (430), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0042] The output of all the aforementioned functional units may be subject to 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 known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.
[0043] The transmitter (440) can buffer the coded video sequence(s) produced by the entropy coder (445) and prepare them for transmission over a communication channel (460), which can be a hardware / software link to a storage device that stores the encoded video data. The transmitter (440) can merge the coded video data from the video coder (430) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0044] The controller (450) can manage the operation of the encoder (203). During encoding, the controller (450) can assign a particular encoded image type to each encoded image, which can affect the encoding technique that can be applied to the respective image. For example, images are often assigned as one of the following frame types:
[0045] An intra-picture (I-picture) may be a picture that can be coded and decoded without using other frames in a sequence as a source of prediction. Some video codecs allow different types of intra-pictures, including, for example, independent decoder refresh pictures. Those skilled in the art are aware of these variations of I-pictures and their respective uses and characteristics.
[0046] A predicted image (P-image) may be an image that can be coded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict the sample values of each block.
[0047] A bidirectionally predicted image (B-image) may be an image that can be coded and decoded using intra- or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple predicted images may use more than two reference images and associated metadata for the reconstruction of a single block.
[0048] A source image is typically spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks, as determined by a coding assignment applied to each image of the block. For example, blocks of an I-image may be coded nonpredictively or predictively with reference to previously coded blocks of the same image (spatial prediction or intra-prediction). Pixel blocks of a P-image may be coded nonpredictively, via spatial prediction, or via temporal prediction, with reference to one previously coded reference image. Blocks of a B-image may be coded nonpredictively, via spatial prediction, or via temporal prediction, with reference to one or two previously coded reference images.
[0049] The video coder (203) may perform encoding operations in accordance with a predetermined video encoding technique or standard, such as ITU-T Rec. H.265. In its operation, the video coder (203) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to a syntax specified by the video encoding technique or standard being used.
[0050] In one embodiment, the transmitter (440) can 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 forms of redundant data such as redundant pictures and slices, Supplemental Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.
[0051] Recently, compression domain aggregation, or the extraction of multiple semantically independent image portions into a single video image, has attracted attention. In particular, for example, in the context of 360-degree encoding or certain surveillance applications, multiple semantically independent source images (e.g., six cubic surfaces of a cubically projected 360-degree scene, or individual camera inputs in a multi-camera surveillance setup) may require separate adaptive resolution settings to address different scene-specific activity at a given time. In other words, an encoder can choose to use different resampling factors for the different semantically independent images that make up the entire 360-degree or surveillance scene at a given time. Once combined into a single image, it requires that reference image resampling be performed for the encoded image portions, and adaptive resolution encoding signaling is available.
[0052] Below are some terms that will be referenced in the remainder of this description.
[0053] A sub-image may refer to a rectangular arrangement of samples, blocks, macroblocks, coding units, or similar entities that may be semantically grouped and coded independently at varying resolutions. One or more sub-images may form an image. One or more coded sub-images may form a coded image. One or more sub-images may be assembled into an image, or one or more sub-images may be extracted from an image. In certain circumstances, one or more coded sub-images may be assembled in the compressed domain without transcoding down to the sample level to a coded image, or in other cases, one or more coded sub-images may be extracted from a coded image in the compressed domain.
[0054] Adaptive resolution change (ARC) may refer to a mechanism that allows changing the resolution of an image or sub-image in a coded video sequence, for example, by reference image resampling. Hereinafter, ARC parameters refer to the control information needed to perform adaptive resolution change, which may include, for example, filter parameters, scaling factors, output image and / or reference image resolutions, various control flags, etc.
[0055] In an embodiment, encoding and decoding may be performed on a single semantically independent coded video image. Before describing the implications of encoding / decoding multiple sub-images with independent ARC parameters and the additional complexity that it implies, options for signaling the ARC parameters shall be described.
[0056] 5A-5E, several embodiments for signaling ARC parameters are shown. As noted for each embodiment, they may have certain advantages and disadvantages in terms of coding efficiency, complexity, and architecture. A video coding standard or technology may select one or more of these embodiments, or options known from the prior art, for signaling ARC parameters. It is contemplated that the embodiments may not be mutually exclusive and may be interchanged based on application needs, relevant standard technologies, or encoder choice.
[0057] The classes of ARC parameters can include:
[0058] -Upsample and / or downsample factors, either separate or combined, in the X and Y dimensions.
[0059] -Upsample and / or downsample factors with an added time dimension, indicating a constant speed of zooming in / out for a given number of images.
[0060] - Either of the above two may include encoding of one or more presumed short syntax elements that may point to a table containing the factor(s).
[0061] Resolution in the X or Y dimension of the input image, output image, reference image, or coded image, in samples, blocks, macroblocks, coding units (CUs), or any other suitable unit of granularity, combined or separate. If there are two or more resolutions (e.g., one for the input image, one for the reference image, etc.), in certain cases one set of values can be inferred from another set of values. This can be gated, for example, by using flags. See below for more detailed examples.
[0062] - "Warping" coordinates, similar to those used in H.263 Annex P, with appropriate granularity as described above. H.263 Annex P defines one efficient way to encode such warping coordinates, but other, potentially more efficient ways are possible. For example, Annex P's variable-length, lossless "Huffman"-style encoding of warping coordinates could be replaced by an appropriate-length binary encoding, where the length of the binary code could be derived, for example, from the maximum image size, possibly multiplied by a specific factor and offset by a specific value to allow "warping" outside the bounds of the maximum image size.
[0063] Upsample and / or downsample filter parameters. In embodiments, there may be only a single filter for upsampling and / or downsampling. However, in embodiments, it may be desirable to allow for greater flexibility in filter design, which may require signaling of filter parameters. Such parameters may be selected via an index in a list of possible filter designs, the filter may be fully specified (e.g., via a list of filter coefficients using an appropriate entropy coding technique), the filter may be selected implicitly via the upsample and / or downsample ratio, which is accordingly signaled according to any of the mechanisms described above, etc.
[0064] Hereinafter, the description assumes encoding of a finite set of upsample and / or downsample factors (the same factors used in both the X and Y dimensions) indicated via a codeword. The codeword may be variable-length coded, for example, using Ext-Golomb codes common to certain syntax elements in video coding specifications such as H.264 and H.265. One suitable mapping of values to upsample and / or downsample factors may, for example, follow Table 1.
[0065] [Table 1]
[0066] Many similar mappings can be devised depending on the needs of the application and the capabilities of the upscaling and downscaling mechanisms available in the video compression technology or standard. The table can be expanded to accommodate many more values. The values can also be represented by entropy coding mechanisms other than Ext-Golomb codes, for example, using binary coding. This can have particular advantages when the resampling factor is significant outside the video processing engine (main encoder and decoder) itself, for example, by MANE. Note that in situations where resolution change is not required, a short Ext-Golomb code can be chosen. In the above table, there is only a single bit. This can have coding efficiency advantages over using binary codes in the most general case.
[0067] The number of entries in the table, as well as their semantics, may be fully or partially configurable. For example, a basic overview of the table may be conveyed in a "high" parameter set, such as a sequence or decoder parameter set. In an embodiment, one or more such tables may be defined in a video coding technology or standard, or may be selected, for example, via a decoder or sequence parameter set.
[0068] The following describes how the upsample and / or downsample factors (ARC information) coded as described above can be included in a video coding technique or standard syntax. Similar considerations can also apply to one or several codewords that control the upsample and / or downsample filters. See below for a description of when a relatively large amount of data is required for a filter or other data structure.
[0069] As shown in Figure 5A, H.263 Annex P includes ARC information (502) in the form of four warping coordinates into the picture header (501), specifically in the H.263 PLUSPTYPE (503) header extension. This can be a wise design choice when a) there is a picture header available and b) frequent changes to the ARC information are expected. However, the overhead when using H.263-style signaling can be very high, and because picture headers can be transient in nature, scaling factors may not be relevant across picture boundaries.
[0070] As shown in Figure 5B, JVCET-M135-v1 includes ARC reference information (505) (index) located within an image parameter set (504), which indexes a table (506) containing target resolutions located within a sequence parameter set (507). The placement of possible resolutions in table (506) within sequence parameter set (507) can be justified by using SPS as an interoperability negotiation point during capability exchange, according to verbal statements made by the authors. Resolution can vary within the limits set by the values in table (506) for each image by referencing the appropriate image parameter set (504).
[0071] 5C-5E, the following embodiments are possible for conveying ARC information in a video bitstream. Each of these options has certain advantages over the above-described embodiments. The embodiments may coexist in the same video coding technology or standard.
[0072] In an embodiment, such as the embodiment shown in FIG. 5C , ARC information (509), such as a resampling (zoom) factor, may be present in a slice header, a GOP header, a tile header, or a tile group header. FIG. 5C illustrates an embodiment in which a tile group header (508) is used. This may be appropriate when the ARC information is small, such as a single variable-length ue(v) or a fixed-length codeword of a few bits, as described above. Having the ARC information directly in the tile group header has the added advantage that the ARC information may be applicable to, for example, a sub-image represented by that tile group, rather than the entire image. See also below. Additionally, even if a video compression technology or standard only assumes whole-image adaptive resolution change (as opposed to, for example, tile group-based adaptive resolution change), placing the ARC information in the tile group header, as opposed to placing it in an H.263-style image header, has certain advantages in terms of error resilience.
[0073] In embodiments, such as the embodiment shown in FIG. 5D, the ARC information (512) itself may reside in an appropriate parameter set, such as a picture parameter set, a header parameter set, a tile parameter set, or an adaptive parameter set. FIG. 5D illustrates an embodiment in which an adaptive parameter set (511) is used. The parameter set's scope may preferably be up to a picture, e.g., a tile group. The use of ARC information is implicit by the activation of the associated parameter set. For example, if a video coding technology or standard only contemplates picture-based ARC, a picture parameter set or equivalent may be appropriate.
[0074] In an embodiment, such as the embodiment shown in Figure 5E, the ARC reference information (513) may reside in a tile group header (514) or similar data structure, and may point to a subset of the ARC information (515) available in a parameter set (516) that spans more than a single image, such as a sequence parameter set or a decoder parameter set.
[0075] As shown in Figure 6A, the tile group header (601) as an example syntax structure for a header applicable to a (possibly rectangular) portion of an image can conditionally include the variable-length Exp-Golomb coding syntax element dec_pic_size_idx (602) (shown in bold). The presence of this syntax element in the tile group header can be gated using the value of the adaptive resolution (603), a flag not shown here in bold, which means that the flag is present in the bitstream at the point where it occurs in the syntax diagram. Whether adaptive resolution is used for this image or a portion thereof can be signaled in any high-level syntax structure, inside or outside the bitstream. In the example shown, it is signaled in the sequence parameter set as outlined below.
[0076] Referring to Figure 6B, an excerpt of a sequence parameter set (610) is also shown. The first syntax element shown is adaptive_pic_resolution_change_flag (611). If true, the flag can indicate the use of adaptive resolution, which may require specific control information. In this example, such control information is conditionally present based on the value of the flag based on an if() statement in the parameter set (612) and the tile group header (601).
[0077] When adaptive resolution is used, in this example, the encoding is at the output resolution in samples (613). The number 613 refers to both output_pic_width_in_luma_samples and output_pic_height_in_luma_samples, which together can define the resolution of the output image. Elsewhere in a video coding technology or standard, specific restrictions on either value may be defined. For example, a level definition may limit the number of total output samples that can be the product of the values of those two syntax elements. Also, a particular video coding technology or standard, or an external technology or standard such as a system standard, may limit the numbering range (e.g., one or both dimensions must be divisible by a power of two) or the aspect ratio (e.g., width and height must have a relationship such as 4:3 or 16:9). Such restrictions may be introduced to facilitate hardware implementation or for other reasons and are well known in the art.
[0078] In certain applications, it may be desirable for an encoder to instruct a 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) gates the conditional presence of the reference picture dimensions (615) (again, the numbers refer to both width and height).
[0079] Finally, a table of possible decoded image widths and heights is shown. Such a table can be represented, for example, by the table directive (num_dec_pic_size_in_luma_samples_minus1) (616). "minus1" can refer to the interpretation of the value of that syntax element. For example, if the encoded value is 0, there is one table entry. If the value is 5, there are six table entries. For each "line" in the table, the width and height of the decoded image are included in the syntax (617).
[0080] The presented table entries (617) can be indexed using the syntax element dec_pic_size_idx (602) in the tile group header, thereby allowing different decoding sizes, in effect zoom factors, per tile group.
[0081] Certain video coding technologies or standards, such as VP9, support spatial scalability by implementing some form of reference picture resampling (signaled quite differently than the disclosed subject matter) in conjunction with temporal scalability to enable spatial scalability. In particular, certain reference pictures can be upsampled to higher resolutions using ARC-style techniques to form the basis of spatial enhancement layers. These upsampled pictures can then be refined using regular prediction mechanisms at higher resolutions to add detail.
[0082] The embodiments described herein can be used in such environments. In some cases, in the same or another embodiment, values in the NAL unit header, e.g., the Temporal ID field, can be used to indicate not only temporal layers but also spatial layers. Doing so can provide certain advantages for certain system designs; for example, existing selective forwarding units (SFUs) created and optimized for temporal layer selective forwarding based on the Temporal ID value in the NAL unit header can be used without modification for scalable environments. To enable this, there may be requirements for a mapping between coded picture sizes and temporal layers, which is indicated by the Temporal ID field in the NAL unit header.
[0083] In some video coding techniques, an access unit (AU) can refer to coded picture(s), slice(s), tile(s), NAL unit(s), etc. that are populated and composed into a respective picture, slice, tile, and / or NAL unit bitstream at a given temporal instance, which can be, for example, composition time.
[0084] In HEVC and certain other video coding technologies, a picture order count (POC) value can be used to indicate a reference picture selected from multiple reference pictures stored in a decoded picture buffer (DPB). When an access unit (AU) includes one or more pictures, slices, or tiles, each picture, slice, or tile belonging to the same AU can carry the same POC value, from which it can be derived that they were created from content with the same composition time. In other words, in a scenario where two pictures / slices / tiles carry the same given POC value, it can indicate that the two pictures / slices / tiles belong to the same AU and have the same composition time. Conversely, two pictures / tiles / slices with different POC values can indicate that the pictures / slices / tiles belong to different AUs and have different composition times.
[0085] In embodiments, this rigid relationship can be relaxed in that an access unit can contain pictures, slices, or tiles with different POC values. Allowing different POC values within an AU allows the POC values to be used to identify potentially independently decodable pictures / slices / tiles that have the same presentation time. This can enable support for multiple scalable layers without modifying reference picture selection signaling, e.g., reference picture set signaling or reference picture list signaling, as described in more detail below.
[0086] However, it is still desirable to be able to identify the AU to which an image / slice / tile belongs from the POC value alone, relative to other images / slices / tiles with different POC values. This can be achieved as described below.
[0087] In an embodiment, the access unit count (AUC) may be signaled in a high-level syntax structure such as a NAL unit header, slice header, tile group header, SEI message, parameter set, or AU delimiter. The AUC value may be used to identify NAL units, pictures, slices, or tiles that belong to a given AU. The AUC value may correspond to distinct composition time instances. The AUC value may be equal to a multiple of the POC value. The AUC value can be calculated by dividing the POC value by an integer value. In some cases, the division operation may impose a certain burden on the decoder implementation. In such cases, a small restriction on the numbering space of the AUC values may make it possible to replace the division operation with a shift operation. For example, the AUC value may be equal to the most significant bit (MSB) value of the POC value range.
[0088] In an embodiment, the value of the POC cycle per AU (poc_cycle_au) may be signaled in a high-level syntax structure such as a NAL unit header, a slice header, a tile group header, an SEI message, a parameter set, or an AU delimiter. poc_cycle_au may indicate the number of different consecutive POC values that can be associated with the same AU. For example, if the value of poc_cycle_au is equal to 4, images, slices, or tiles with POC values equal to 0 to 3 can be associated with AUs with AUC values equal to 0, and images, slices, or tiles with POC values equal to 4 to 7 can be associated with AUs with AUC values equal to 1. Thus, the value of AUC can be inferred by dividing the POC value by the value of poc_cycle_au.
[0089] In embodiments, the value of poc_cycle_au may be derived from information identifying the number of spatial or SNR layers in the coded video sequence, for example, located in a video parameter set (VPS). Examples of such possible relationships are briefly described below. While the derivation described above can save a few bits in the VPS and thus improve coding efficiency, in some embodiments, poc_cycle_au may be explicitly coded in an appropriate high-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 an image. Because the POC value and / or values of syntax elements that indirectly reference the POC may be coded in a lower-level syntax structure, this optimization may save more bits than can be saved through the derivation process described above.
[0090] In an embodiment, Figure 8 shows an example of a syntax table for signaling the vps_poc_cycle_au syntax element in a VPS (or SPS) indicating the poc_cycle_au used for all pictures / slices in a coded video sequence, and the slice_poc_cycle_au syntax element 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 may be set to 1, and vps_poc_cycle_au may be signaled in the VPS. In this case, the AUC value per AU may be calculated by dividing the POC value by vps_poc_cycle_au without explicitly signaling slice_poc_cycle_au. If the POC value does not increase uniformly per AU, vps_contant_poc_cycle_per_au in the VPS may be set to 0. In this case, vps_access_unit_cnt may not be signaled, and slice_access_unit_cnt may be signaled in the slice header for each slice or image. Each slice or image may have a different value of slice_access_unit_cnt. The AUC value for each AU may be calculated by dividing the POC value by slice_poc_cycle_au.
[0091] 9 shows a block diagram illustrating an example of the above process. For example, in operation S910, a VPS (or SPS) can be analyzed, and in operation S920, it can be determined whether the POC cycle per AU is constant within a coded video sequence. If the POC cycle per AU is constant (YES in operation S920), a value of an access unit count for a particular access unit can be calculated from poc_cycle_au signaled for the coded video sequence and the POC value of the particular access unit in operation S930. If the POC cycle per AU is not constant (NO in operation S920), a value of an access unit count for a particular access unit can be calculated from poc_cycle_au signaled at the picture level and the POC value of the particular access unit in operation S940. A new VPS (or SPS) can be analyzed in operation S950.
[0092] In an embodiment, images, slices, or tiles corresponding to AUs with the same AUC value may be associated with the same decoding or output time instance, even if the POC values of the images, slices, or tiles are different. Thus, all or a subset of images, slices, or tiles associated with the same AU may be decoded in parallel and output at the same time instance, without dependency between parsing / decoding across images, slices, or tiles within the same AU.
[0093] In an embodiment, images, slices, or tiles corresponding to AUs with the same AUC value may be associated with the same composition / display time instance, even if the images, slices, or tiles have different POC values. If the composition time is included in the container format, images can be displayed at the same time instance if they have the same composition time, even if they correspond to different AUs.
[0094] In an embodiment, each image, slice, or tile may have the same temporal identifier (temporal_id) within the same AU. All or a subset of images, slices, or tiles corresponding to a time instance may be associated with the same temporal sublayer. In an embodiment, each image, slice, or tile may have the same or different spatial layer id (layer_id) within the same AU. All or a subset of images, slices, or tiles corresponding to a time instance may be associated with the same or different spatial layers.
[0095] 7 shows an example of a video sequence structure with a combination of temporal_id, layer_id, POC, and AUC values with adaptive resolution change. In this example, an image, slice, or tile in the first AU with AUC=0 may have temporal_id=0 and layer_id=0 or 1, while an image, slice, or tile in the second AU with AUC=1 may have temporal_id=1 and layer_id=0 or 1, respectively. Regardless of the values of temporal_id and layer_id, the value of POC increases by 1 for each image. In this example, the value of poc_cycle_au may be equal to 2. In an embodiment, the value of poc_cycle_au may be set equal to the number of (spatial scalability) layers. Thus, in this example, the value of POC increases by 2 and the value of AUC increases by 1.
[0096] In the above embodiments, all or a subset of the inter-picture or inter-layer prediction structure and reference picture indication may be supported by using the existing reference picture set (RPS) signaling or reference picture list (RPL) signaling in HEVC. In RPS or RPL, the selected reference picture may be indicated by signaling the value of POC or the delta value of POC between the current picture and the selected reference picture. In embodiments, RPS and RPL may be used to indicate the inter-picture or inter-layer prediction structure without changing the signaling, with the following limitations: If the value of temporal_id of a reference picture is greater than the current picture's value of temporal_id, the current picture may not use the reference picture for motion compensation or other prediction. If the value of layer_id of a reference picture is greater than the current picture's value of layer_id, the current picture may not use the reference picture for motion compensation or other prediction.
[0097] In an embodiment, the scaling of motion vectors based on POC differences for temporal motion vector prediction can be disabled across multiple images in an access unit. Thus, although each image may have a different POC value within an access unit, the motion vectors are not scaled and are not used for temporal motion vector prediction within the access unit. This is because reference images with different POCs within the same AU are considered to be reference images with the same time instance. Therefore, in this embodiment, if the reference image belongs to the AU associated with the current image, the motion vector scaling function can return 1.
[0098] In an embodiment, if the spatial resolution of the reference image is different from the spatial resolution of the current image, scaling of the motion vector based on the POC difference for temporal motion vector prediction can be optionally disabled across multiple images. If motion vector scaling is allowed, the motion vector is scaled based on both the POC difference and the spatial resolution ratio between the current image and the reference image.
[0099] In an embodiment, motion vectors may be scaled based on the AUC difference instead of the POC difference for temporal motion vector prediction, especially when poc_cycle_au has non-uniform values (e.g., when vps_contant_poc_cycle_per_au==0). Otherwise (e.g., when vps_contant_poc_cycle_per_au==1), the scaling of motion vectors based on the AUC difference may be identical to the scaling of motion vectors based on the POC difference.
[0100] In an embodiment, when a motion vector is scaled based on the AUC difference, a reference motion vector within the same AU as the current image (having the same AUC value) is not scaled based on the AUC difference and is used for motion vector prediction without scaling or with scaling based on the spatial resolution ratio between the current image and the reference image.
[0101] In an embodiment, the AUC value is used to identify AU boundaries and may be used for hypothetical reference decoder (HRD) operations that require input and output timing with AU granularity. In an embodiment, a decoded image with the top layer within an AU may be output for display. The AUC value and layer_id value may be used to identify an output image.
[0102] In embodiments, an image may include one or more sub-images. Each sub-image may cover a local region or the entire region of the image. The region supported by a sub-image may or may not overlap the region supported by another sub-image. The region covered by one or more sub-images may or may not cover the entire region of the image. If an image includes sub-images, the region supported by a sub-image may be the same as the region supported by the image.
[0103] In embodiments, a sub-image may be coded by a coding method similar to that used for the coded image. A sub-image may be coded independently or may be coded dependently on another sub-image or coded image. A sub-image may or may not have a parsing dependency from another sub-image or coded image.
[0104] In an embodiment, the coded sub-images may be included in one or more layers. The coded sub-images within a layer may have different spatial resolutions. The original sub-images may be spatially resampled (e.g., upsampled or downsampled), coded with different spatial resolution parameters, and included in the bitstream corresponding to the layer.
[0105] In an embodiment, a sub-image having (W, H) may be coded and included in the coded bitstream corresponding to layer 0, where W denotes the width of the sub-image and H denotes the height of the sub-image, while (W*S w,k ,H*S h,k ) may be coded and included in the coded bitstream corresponding to layer k, and w,k ,S h,k denotes the horizontal and vertical resampling ratio. S w,k ,S h,k If the value of is greater than 1, the resampling may be an upsampling. w,k ,S h,k If the value of is less than 1, the resampling may be a downsampling.
[0106] In embodiments, the coded subimages within a layer may have visual quality that differs from the visual quality of the coded subimages within another layer, within the same subimage or a different subimage. For example, subimage i within layer n may have a quantization parameter Q i,n and sub-image j in layer m is coded with a quantization parameter Q j,m It can be encoded as:
[0107] In embodiments, encoded sub-images within a layer may be independently decodable without parsing or decoding dependencies from encoded sub-images in another layer of the same local region. A sub-image layer that may be independently decodable without reference to another sub-image layer of the same local region may be an independent sub-image layer. Encoded sub-images within an independent sub-image layer may or may not have decoding or parsing dependencies from previously encoded sub-images in the same sub-image layer, but an encoded sub-image may not have any dependencies from encoded sub-images in another sub-image layer.
[0108] In embodiments, coded sub-images within a layer may be dependently decodable with any parsing or decoding dependency from coded sub-images in another layer of the same local region. A sub-image layer that may be dependently decodable with reference to another sub-image layer of the same local region may be a dependent sub-image layer. Coded sub-images within a dependent sub-image may reference coded sub-images belonging to the same sub-image, previously coded sub-images in the same sub-image layer, or both.
[0109] In an embodiment, a coded sub-picture may include one or more independent sub-picture layers and one or more dependent sub-picture layers. However, there may be at least one independent sub-picture layer for a coded sub-picture. The layer identifier (layer_id), which may be present in the NAL unit header or another high-level syntax structure, of an independent sub-picture layer may have a value equal to 0. A sub-picture layer with layer_id equal to 0 may be a base sub-picture layer.
[0110] In an embodiment, an image may include one or more foreground sub-images and one background sub-image. The area supported by the background sub-image may be equal to the area of the image. The area supported by the foreground sub-image may overlap with the area supported by the background sub-image. The background sub-image may be a base sub-image layer, and the foreground sub-image may be a non-base (enhanced) sub-image layer. One or more non-base sub-image layers may reference the same base layer for decoding. Each non-base sub-image layer with layer_id equal to a may reference a non-base sub-image layer with layer_id equal to b, where a is greater than b.
[0111] In an embodiment, an image may include one or more foreground sub-images, with or without background sub-images. Each sub-image may have its own base sub-image layer and one or more non-base (enhancement) layers. Each base sub-image layer may be referenced by one or more non-base sub-image layers. Each non-base sub-image layer with layer_id equal to a may reference a non-base sub-image layer with layer_id equal to b, where a is greater than b.
[0112] In an embodiment, an image may include one or more foreground sub-images, with or without background sub-images. Each coded sub-image within a (base or non-base) sub-image layer may be referenced by one or more non-base layer sub-images that belong to the same sub-image and one or more non-base layer sub-images that do not belong to the same sub-image.
[0113] In an embodiment, an image may include one or more foreground sub-images, with or without background sub-images. A sub-image in layer a may be further divided into multiple sub-images within the same layer. One or more coded sub-images in layer b may reference divided sub-images in layer a.
[0114] In an embodiment, a coded video sequence (CVS) may be a group of coded images. A CVS may contain one or more coded sub-image sequences (CSPS), where a CSPS may be a group of coded sub-images covering the same local region of an image. A CSPS may have the same or a different temporal resolution than the coded video sequence.
[0115] In an embodiment, a CSPS may be encoded and included in one or more layers. A CSPS may include one or more CSPS layers. Decoding one or more CSPS layers corresponding to a CSPS can reconstruct a sequence of sub-images corresponding to the same local region.
[0116] In an embodiment, the number of CSPS layers corresponding to a CSPS may be the same as or different from the number of CSPS layers corresponding to another CSPS.
[0117] In an embodiment, a CSPS layer may have a different temporal resolution (e.g., frame rate) than another CSPS layer, and the original (uncompressed) sub-image sequence may be temporally resampled (e.g., upsampled or downsampled), coded with different temporal resolution parameters, and included in the bitstream corresponding to the layer.
[0118] In an embodiment, a sub-image sequence having a frame rate F may be coded and included in the coded bitstream corresponding to layer 0, where F*S t,k A temporally upsampled (or downsampled) sub-image sequence from the original sub-image sequence having t,k denotes the temporal sampling ratio of layer k. S t,k If the value of is greater than 1, the temporal resampling process may be a frame rate up-conversion. t,kIf the value of is less than 1, the temporal resampling process may be a frame rate down conversion.
[0119] In an embodiment, when a sub-image having CSPS layer a is referenced by a sub-image having 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 in CSPS layer a are resampled and used for reference. The resampling process can use upsampling filtering or downsampling filtering.
[0120] Figure 10 shows an example video stream including a background video CSPS with layer_id equal to 0 and multiple foreground CSPS layers. A coded sub-picture can include one or more CSPS layers, but background regions that do not belong to any foreground CSPS layer can include the base layer. The base layer can include background and foreground regions, while the enhanced CSPS layer can include foreground regions. The enhanced CSPS layer can have better visual quality than the base layer in the same region. The enhanced CSPS layer can reference reconstructed pixels and motion vectors of the base layer corresponding to the same region.
[0121] In an embodiment, the video bitstream corresponding to the base layer is contained in a track, and the CSPS layers corresponding to each sub-image are contained in separate tracks within the video file.
[0122] In an embodiment, a video bitstream corresponding to a base layer is included in a track, and CSPS layers with the same layer_id are included in separate tracks. In this example, the track corresponding to layer k includes only the CSPS layer corresponding to layer k.
[0123] In an embodiment, each CSPS layer of each sub-image is stored in a separate track. Each track may or may not have a parsing or decoding dependency on one or more other tracks.
[0124] In an embodiment, each track can include a bitstream corresponding to layers i to j of the CSPS layers of all or a subset of the sub-images, where 0 < i <= j <= k and k is the top layer of CSPS.
[0125] [[ID=S]] In an embodiment, an image includes one or more associated media data such as a depth map, an alpha map, 3D geometry data, an occupancy map, etc. Such associated temporal media data can be divided into one or more data sub-streams each corresponding to one sub-image.
[0126] FIG. 11 shows an example of a video conference based on a multi-layer sub-image method The video stream includes one base layer video bitstream corresponding to a background image and one or more enhancement layer video bitstreams corresponding to foreground sub-images. Each enhancement layer video bitstream can correspond to a CSPS layer. On the display, the image corresponding to the base layer is displayed by default. This includes the images (PIP) of one or more users within the image. When a specific user is selected under the control of the client, the enhanced CSPS layer corresponding to the selected user can be decoded and displayed with enhanced quality or spatial resolution.
[0127] 12 shows a block diagram illustrating an example of the above process. For example, in operation S1210, a video bitstream having multiple layers may be decoded. In operation S1220, a background region and one or more foreground sub-images may be identified. In operation S1230, it may be determined whether a particular sub-image region, e.g., one of the foreground sub-images, is selected. If the particular sub-image region is selected (YES in operation S1240), an extended sub-image may be decoded and displayed. If the particular sub-image region is not selected (NO in operation S1240), the background region may be decoded and displayed.
[0128] In an embodiment, a network middle box (e.g., a router) can select a subset of layers to send to a user depending on its bandwidth. The image / sub-image organization can be used for bandwidth adaptation. For example, if a user does not have the bandwidth, the router strips layers or selects some sub-images due to their importance or based on the settings used; this can be done dynamically to take advantage of the bandwidth.
[0129] FIG. 13 illustrates an embodiment for a 360-degree video use case. When a spherical 360-degree image, e.g., image 1310, is projected onto a planar image, the projected 360-degree image can be divided into multiple sub-images as a base layer. For example, the multiple sub-images can include a back sub-image, a top sub-image, a right sub-image, a left sub-image, a forward sub-image, and a bottom sub-image. The enhancement layer of a particular sub-image, e.g., a forward sub-image, can be encoded and transmitted to a client. A decoder can decode both the base layer containing all sub-images and the enhancement layer of a selected sub-image. If the current viewport is the same as the selected sub-image, the displayed image can have higher quality for the decoded sub-image with the enhancement layer. Otherwise, the decoded image with the base layer can be displayed with lower quality.
[0130] In an embodiment, any layout information for display may be present in the file as supplemental information (such as an SEI message or metadata). One or more decoded sub-images may be rearranged and displayed according to the signaled layout information. The layout information may be signaled by a streaming server or broadcaster, regenerated by a network entity or cloud server, or determined by a user's customized settings.
[0131] In an embodiment, when an input image is divided into one or more (rectangular) sub-regions, each sub-region may be coded as an independent layer. Each independent layer corresponding to a local region may have a unique layer_id value. For each independent layer, sub-image size and position information may be signaled. For example, image size (width, height), upper left corner offset information (x_offset, y_offset). Figure 14 shows an example of a layout of divided sub-images, their sub-image size and position information, and their corresponding image prediction structure. Layout information including sub-image size(s) and sub-image position(s) may be signaled in a high-level syntax structure such as parameter set(s), slice or tile group header, or SEI message.
[0132] In an embodiment, each sub-image corresponding to an independent layer may have a unique POC value within an AU, and when a reference image among the images stored in the DPB is indicated using syntax element(s) of an RPS or RPL structure, the POC value(s) of each sub-image corresponding to a layer may be used.
[0133] In an embodiment, the layer_id may not be used and the POC (delta) value may be used to indicate the (inter-layer) prediction structure.
[0134] In an embodiment, a sub-image having a POC value equal to N corresponding to a layer (or local region) may or may not be used as a reference image for a sub-image 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 number K may be equal to the maximum number of (independent) layers, which may be the same as the number of sub-regions.
[0135] In an embodiment, Figure 15 shows an extended case of Figure 14. When an input image is divided into multiple (e.g., four) sub-regions, each local region can be coded with one or more layers. In this case, the number of independent layers may be equal to the number of sub-regions, and one or more layers may correspond to the sub-regions. Therefore, each sub-region can be coded with one or more independent layers and zero or more dependent layers.
[0136] In an embodiment, in Figure 15, the input image may be divided into four sub-regions. As an example, the top right sub-region may be coded as two layers, Layer 1 and Layer 4, and the bottom right sub-region may be coded as two layers, 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.
[0137] In an embodiment, in-loop filtering across layer boundaries (such as deblocking filtering, adaptive in-loop filtering, reshaper, bilateral filtering, or any deep learning-based filtering) may be (optionally) disabled.
[0138] In an embodiment, motion compensated prediction or intra block copying across layer boundaries may (optionally) be disabled.
[0139] In an embodiment, boundary padding for motion-compensated prediction or in-loop filtering at sub-image boundaries may be optionally processed. A flag indicating whether boundary padding is processed may be signaled in a high-level syntax structure, such as a parameter set (VPS, SPS, PPS, or APS), a slice or tile group header, or an SEI message.
[0140] In an embodiment, layout information for sub-region (or sub-image)(s) may be signaled in the VPS or SPS. Figure 16A shows example syntax elements for a VPS, and Figure 16B shows example syntax elements for an SPS. In this example, vps_sub_picture_dividing_flag is signaled in the VPS. The flag may indicate whether the input image is divided into multiple sub-regions. When the value of vps_sub_picture_dividing_flag is equal to 0, the input image(s) in the coded video sequence(s) corresponding to the current VPS may not be divided into multiple sub-regions. In this case, the input image size may be equal to the coded image size (pic_width_in_luma_samples, pic_height_in_luma_samples) signaled in the SPS. When the value of vps_sub_picture_dividing_flag is equal to 1, the input image(s) 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 image(s), respectively.
[0141] In an 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 compositing and display.
[0142] In an 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 (a) be signaled in an SPS corresponding to a specific layer(s). In this case, the coded 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 the specific 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.
[0143] In an embodiment, the position information (pic_offset_x, pic_offset_y) of the upper left corner of the sub-region may not be used for decoding, but may be used for compositing and display.
[0144] In an embodiment, layout information (size and position) of all or a subset of subregions of an input image, as well as inter-layer dependency information, may be signaled in a parameter set or an SEI message. Figure 17 shows an example of syntax elements indicating information about the layout of subregions, inter-layer dependencies, and relationships between subregions and one or more layers. In this example, the syntax element num_sub_region indicates the number of (rectangular) subregions in the current coded video sequence. The syntax element num_layers indicates the number of layers in the current coded video sequence. The value of num_layers may be greater than or equal to the value of num_sub_region. If any subregion is coded as a single layer, the value of num_layers may be equal to the value of num_sub_region. When one or more subregions are coded as multiple layers, the value of num_layers may be greater than the value of num_sub_region. The syntax element direct_dependency_flag[i][j] indicates a dependency from the jth layer to the ith layer. num_layers_for_region[i] indicates the number of layers associated with the i-th subregion. sub_region_layer_id[i][j] indicates the layer_id of the j-th layer associated with the i-th subregion. sub_region_offset_x[i] and sub_region_offset_y[i] indicate the horizontal and vertical positions of the top left corner of the i-th subregion, respectively. sub_region_width[i] and sub_region_height[i] indicate the width and height of the i-th subregion, respectively.
[0145] In an embodiment, one or more syntax elements specifying an output layer set to indicate one of multiple layers to be output with or without profile hierarchical level information may be signaled in a high-level syntax structure, such as a VPS, DPS, SPS, PPS, APS, or SEI message. Referring to Figure 18, a syntax element num_output_layer_sets indicating the number of output layer sets (OLSs) in a coded video sequence that references a VPS may be signaled within the VPS. For each output layer set, output_layer_flag may be signaled as many times as the number of output layers.
[0146] In an embodiment, output_layer_flag[i] equal to 1 specifies that the i-th layer is to be output. vps_output_layer_flag[i] equal to 0 specifies that the i-th layer is not to be output.
[0147] In an embodiment, one or more syntax elements specifying profile hierarchical level information for each output layer set may be signaled in a high-level syntax structure, such as a VPS, DPS, SPS, PPS, APS, or SEI message. Further referring to Figure 18, a syntax element num_profile_tile_level indicating the number of profile hierarchical level information for each OLS in a coded video sequence that references the VPS may be signaled in the VPS. For each output layer set, a set of profile hierarchical level information syntax elements, or an index indicating a particular profile hierarchical level information among entries in the profile hierarchical level information, may be signaled in the same number as the number of output layers.
[0148] In an 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 within the list of profile_tier_level() syntax structures in the VPS.
[0149] In an embodiment, referring to FIG. 19, if the maximum number of layers is greater than 1 (vps_max_layers_minus1>0), the syntax elements num_profile_tile_level and / or num_output_layer_sets may be signaled.
[0150] In an embodiment, referring to FIG. 19, a syntax element vps_output_layers_mode[i] may be present in the VPS, indicating the mode of output layer signaling for the i-th output layer set.
[0151] In an embodiment, vps_output_layers_mode[i] equal to 0 specifies that only the top layer is output in the i-th output layer set. vps_output_layer_mode[i] equal to 1 specifies that all layers are output in 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 in the i-th output layer set. More values may be reserved.
[0152] In an 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.
[0153] In an embodiment, referring to Figure 19, there may be a flag vps_ptl_signal_flag[i] for the i-th output layer set. Depending on the value of vps_ptl_signal_flag[i], the profile hierarchical level information of the i-th output layer set may or may not be signaled.
[0154] In an embodiment, referring to FIG. 20, the number of sub-pictures in the current CVS, max_subpics_minus1, may be signaled in a high-level syntax structure, for example, a VPS, DPS, SPS, PPS, APS or SEI message.
[0155] In an embodiment, referring to FIG. 20, if the number of sub-pictures is greater than 1 (max_subpics_minus1>0), the sub-picture identifier sub_pic_id[i] for the i-th sub-picture may be signaled.
[0156] In an embodiment, one or more syntax elements indicating the sub-picture identifiers belonging to each layer of each output layer set may be signaled in the VPS. Referring to Figure 20, sub_pic_id_layer[i][j][k] indicates the kth sub-picture present in the jth layer of the ith output layer set. With this information, the decoder can know which sub-pictures it can decode and output for each layer of a particular output layer set.
[0157] In an embodiment, a picture header (PH) may be a syntax structure containing syntax elements that apply to all slices of a coded picture. A picture unit (PU) may be a set of NAL units that are associated with each other according to specified classification rules, are consecutive in decoding order, and contain exactly one coded picture. A PU may contain a picture header (PH) and one or more video coding layer (VCL) NAL units that make up the coded picture.
[0158] In an embodiment, an adaptation parameter set (APS) may be a syntax structure that includes syntax elements that may apply to zero or more slices as determined by zero or more syntax elements found in a slice header.
[0159] In embodiments, the adaptation_parameter_set_id signaled in the APS (e.g., as u(5)) may provide an identifier for the APS for reference by other syntax elements. If ps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id may range from 0 to 7. If aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id may range from 0 to 3.
[0160] In embodiments, the adaptation_parameter_set_id, signaled as ue(v) in the APS, can provide an identifier for the APS for reference by other syntax elements. If ps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id can range from 0 to 7*(max number of layers in the current CVS). If aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id can range from 0 to 3*(max number of layers in the current CVS).
[0161] In an embodiment, each APS (RBSP) may be available to the decoding process before being referenced, either by being included in at least one AU having a temporal identifier (e.g., TemporalId) less than or equal to the temporal identifier (e.g., TemporalId) of the coded slice NAL unit that references it, or by being provided via external means. When an APS NAL unit is included in an AU, the value of the temporal identifier (e.g., TemporalId) of the APS NAL unit may be equal to the value of the temporal identifier (e.g., TemporalId) of the AU that contains the APS NAL unit.
[0162] In an embodiment, each APS (RBSP) may be available to the decoding process before being referenced, either by being included in at least one AU with a temporal identifier (e.g., TemporalId) equal to 0, or by being provided via external means. If an APS NAL unit is included in an AU, the value of the temporal identifier (e.g., TemporalId) of the APS NAL unit may be equal to 0.
[0163] In an embodiment, the APS (RBSP) may be available to the decoding process before being referenced, and is included in at least one AU having a temporal identifier (e.g., TemporalId) equal to the temporal identifier (e.g., TemporalId) of the APS NAL unit in the CVS that contains one or more PHs or one or more coded slice NAL units that reference the APS, or is provided via external means.
[0164] In an embodiment, the APS (RBSP) may be available to the decoding process before being referenced, and is included in at least one AU with a temporal identifier (e.g., TemporalId) equal to 0 in the CVS that contains one or more PHs or one or more coded slice NAL units that reference the APS, or is provided via external means.
[0165] In an embodiment, when the flag, no_temporal_sublayer_switching_flag, is signaled in a DPS, VPS, SPS, or PPS, the temporal identifier (e.g., TemporalId) value of an APS that references a parameter set that includes the flag equal to 1 may be equal to 0, and the temporal identifier (e.g., TemporalId) value of an APS that references a parameter set that includes the flag equal to 1 may be greater than or equal to the temporal identifier (e.g., TemporalId) value of the parameter set.
[0166] In an embodiment, each APS (RBSP) may be available to the decoding process before it is referenced, either by being included in at least one AU with a temporal identifier (e.g., TemporalId) less than or equal to the temporal identifier (e.g., TemporalId) of the coded slice NAL unit (or PH NAL unit) that references it, or by being provided via external means. If an APS NAL unit is included in an AU before the AU containing the coded slice NAL unit that references the APS, a VCL NAL unit that enables temporal up-layer switching, or a VCL NAL unit with nal_unit_type equal to STSA_NUT, indicates that the picture in the VCL NAL unit may be a gradual temporal sub-layer access (STSA) picture and may not be present after the APS NAL unit and before the coded slice NAL unit that references the APS. Figure 21 shows an example of this constraint.
[0167] In an embodiment, the APS NAL unit and the coded slice NAL unit (and its PH NAL unit) that reference the APS may be included in the same AU.
[0168] In an embodiment, the APS NAL unit and the STSA NAL unit may be included in the same AU, which may precede the coded slice NAL unit (and its PH NAL unit) that references the APS.
[0169] In an embodiment, the STSA NAL unit, the APS NAL unit, and the coded slice NAL unit (and its PH NAL unit) that reference the APS may reside in the same AU.
[0170] In an embodiment, the temporal identifier (eg, TemporalId) value of a VCL NAL unit that includes an APS may be equal to the temporal identifier (eg, TemporalId) value of the preceding STSA NAL unit.
[0171] In an embodiment, the picture order count (POC) value of the APS NAL unit may be greater than or equal to the POC value of the STSA NAL unit. In Figure 21, the value of POC M of the APS may be greater than or equal to the value of POC L of the STSA NAL unit.
[0172] In an embodiment, the Picture Order Count (POC) value of a coded slice or PH NAL unit that references an APS NAL unit may be greater than or equal to the POC value of the referenced APS NAL unit. In Figure 21, the value of POC M of a VCL NAL unit that references an APS may be greater than or equal to the value of POC L of the APS NAL unit.
[0173] In one embodiment, the APS (RBSP) may be available to the decoding process before it is referenced by one or more PHs or one or more coded slice NAL units, and is included in at least one PU with nuh_layer_id equal to the lowest nuh_layer_id value of the coded slice NAL units that reference the APS NAL unit in the CVS, including one or more PHs or one or more coded slice NAL units that reference the APS, or is provided via external means.
[0174] In one embodiment, the APS (RBSP) may be available to the decoding process before being referenced by one or more PHs or one or more coded slice NAL units, and is included in at least one PU with TemporalId equal to the TemporalId of the APS NAL unit referencing the APS NAL unit in the CVS, including one or more PHs or one or more coded slice NAL units referencing the PPS, and nuh_layer_id equal to the lowest nuh_layer_id value of the coded slice NAL units, or provided via external means.
[0175] In one embodiment, the APS (RBSP) may be available to the decoding process before being referenced by one or more PHs or one or more coded slice NAL units, and is included in at least one PU with TemporalId equal to 0 referencing the APS NAL unit in the CVS and nuh_layer_id equal to the lowest nuh_layer_id value of the coded slice NAL units, including one or more PHs or one or more coded slice NAL units that reference the PPS, or is provided via external means.
[0176] In one embodiment, the APS (RBSP) may be available to the decoding process before being referenced by one or more PHs or one or more coded slice NAL units, and is included in at least one PU with TemporalId equal to 0 referencing the APS NAL unit in the CVS and nuh_layer_id equal to the lowest nuh_layer_id value of the coded slice NAL units, including one or more PHs or one or more coded slice NAL units that reference the PPS, or is provided via external means.
[0177] In an embodiment, all APS NAL units with a particular value of adaptation_parameter_set_id and a particular value of aps_params_type within a PU may have the same content, regardless of whether they are prefix or suffix APS NAL units.
[0178] In an embodiment, regardless of the nuh_layer_id value, APS NAL units may share the same value space for adaptation_parameter_set_id and aps_params_type.
[0179] In an embodiment, the nuh_layer_id value of an APS NAL unit may be equal to the lowest nuh_layer_id value of a coded slice NAL unit that references a NAL unit that references the APS NAL unit.
[0180] In one embodiment, when an APS with nuh_layer_id equal to m is referenced by one or more coded slice NAL units with nuh_layer_id equal to n, the layer with nuh_layer_id equal to m may be the same as the (direct or indirect) reference layer of the layer with nuh_layer_id equal to n or the layer with nuh_layer_id equal to m.
[0181] Figure 22 is a flowchart of an example process 2200 for decoding an encoded video bitstream. In some implementations, one or more process blocks of Figure 22 may be performed by the decoder 210. In some implementations, one or more process blocks of Figure 22 may be performed by another device or group of devices separate from or including the decoder 210, such as the encoder 203.
[0182] As shown in FIG. 22, process 2200 may include obtaining, from an encoded video bitstream, a coded video sequence including image units corresponding to coded images (block 2210).
[0183] As further shown in FIG. 22, the process 2200 may include obtaining a PH NAL unit included in the picture unit (block 2220).
[0184] As further shown in FIG. 22, the process 2200 may include obtaining at least one VCL NAL unit included in the picture unit (block 2230).
[0185] As further shown in FIG. 22, process 2200 may include decoding the coded image based on a PH NAL unit, at least one VCL NAL unit, and an adaptation parameter set (APS) included in an APS NAL unit obtained from the coded video sequence, where the APS NAL unit is available to at least one processor before the at least one VCL NAL unit (block 2240).
[0186] As further shown in FIG. 22, the process 2200 may include outputting the decoded image (block 2250).
[0187] In an embodiment, an APS NAL unit is available to the decoding process before being referenced by one or more picture headers (PHs) or one or more coded slice network abstraction layer (NAL) units contained in at least one prediction unit (PU), and nuh_layer_id is equal to the lowest nuh_layer_id value of one or more coded slice NAL units that reference the APS NAL unit in the CVS, including one or more PHs or one or more coded slice NAL units that reference the APS.
[0188] In an embodiment, the time identifier of at least one VCL NAL unit is equal to or greater than the time identifier of the APS NAL unit.
[0189] In an embodiment, the time identifier of an APS NAL unit may be equal to 0.
[0190] In an embodiment, the POC of at least one VCL NAL unit may be greater than or equal to the POC of an APS NAL unit.
[0191] In an embodiment, the layer identifier of the PH NAL unit and the layer identifier of the at least one VCL NAL unit are equal to or greater than the layer identifier of the APS NAL unit.
[0192] In an embodiment, the PH NAL unit, at least one VCL NAL unit, and the APS NAL unit are included in a single access unit.
[0193] In an embodiment, the coded video sequence further includes an STSA NAL unit corresponding to an STSA picture, wherein the STSA NAL unit is not located between the APS NAL unit and the at least one VCL NAL unit.
[0194] In an embodiment, at least one VCL NAL unit, an APS NAL unit, and an STSA NAL unit may be included in a single access unit.
[0195] In an embodiment, the time identifier of the APS NAL unit may be greater than or equal to the time identifier of the STSA NAL unit.
[0196] In an embodiment, the picture order count (POC) of an APS NAL unit may be greater than or equal to the POC of an STSA NAL unit.
[0197] Although Figure 22 illustrates example blocks of process 2200, in some implementations, process 2200 may include additional, fewer, different, or differently arranged blocks than those illustrated in Figure 22. Additionally or alternatively, two or more of the blocks of process 2200 may be performed in parallel.
[0198] Additionally, the proposed methods may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium to perform one or more of the proposed methods.
[0199] The techniques described above may be implemented using computer-readable instructions and as computer software physically stored on one or more computer-readable media. For example, Figure 23 illustrates a computer system 2300 suitable for implementing certain embodiments of the disclosed subject matter.
[0200] Computer software may be coded using any suitable machine code or computer language that may be subject to mechanisms such as assembly, compilation, linking, etc. to create code containing instructions that can be executed directly or indirectly by a computer central processing unit (CPU), graphics processing unit (GPU), etc., via microcode execution, etc.
[0201] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, and the like.
[0202] 23 for computer system 2300 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure. The arrangement of components should not be interpreted as having a dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 2300.
[0203] The computer system 2300 may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users via, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), olfactory input (not shown). The human interface devices may be used to capture certain media not necessarily directly associated with conscious human input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still image camera), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).
[0204] The input human interface devices may include one or more (only one of each) of a keyboard 2301, a mouse 2302, a trackpad 2303, a touchscreen 2310 and associated graphics adapter 2350, a data glove, a joystick 2305, a microphone 2306, a scanner 2307, and a camera 2308.
[0205] The computer system 2300 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen 2310, data gloves, or joystick 2305, although haptic feedback devices that do not function as input devices may also be present), audio output devices (e.g., speakers 2309, headphones (not shown)), visual output devices (e.g., screens 2310 including cathode ray tube (CRT) screens, liquid crystal display (LCD) screens, plasma screens, and organic light emitting diode (OLED) screens, each with or without touchscreen input capability and each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output or three-dimensional or higher-dimensional output via means such as stereo output; virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0206] The computer system 2300 may also include human-accessible storage devices and their associated media, such as optical media 2320 including CD / DVD ROM / RW with media 2321 such as CD / DVD, thumb drive 2322, removable hard drive or solid state drive 2323, legacy magnetic media such as tape and floppy disks (not shown), dedicated ROM / ASIC / PLD-based devices (not shown) such as security dongles, etc.
[0207] 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.
[0208] The computer system 2300 may also include interfaces to one or more communication networks (955). The networks may be, for example, wireless, wired, or optical. The networks may further be local, wide area, metropolitan, vehicular and industrial, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LAN, etc.; cellular networks including Global System for Mobile Communications (GSM), third generation (3G), fourth generation (4G), fifth generation (5G), long-term evolution (LTE), etc.; television wired or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV; vehicular and industrial networks including CANBus, etc. Particular networks generally require an external network interface adapter (954) attached to a particular general-purpose data port or peripheral bus (949) (e.g., a universal serial bus (USB) port on the computer system 2300); others are generally integrated into the core of the computer system 2300 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). As an example, a network 2355 may be connected to the peripheral bus 2349 using a network interface 2354. Using any of these networks, the computer system 2300 can communicate with other entities. Such communications may be unidirectional receive only (e.g., broadcast TV), unidirectional transmit only (e.g., a CANbus to a particular CANbus device), or bidirectional, for example, to other computer systems using local or wide-area digital networks. Particular protocols and protocol stacks may be used with each of these networks and network interfaces (954), as described above.
[0209] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be attached to the core 2340 of the computer system 2300 .
[0210] The core 2340 may include one or more central processing units (CPUs) 2341, graphics processing units (GPUs) 2342, dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) 2343, hardware accelerators 2344 for specific tasks, etc. These devices may be connected via a system bus 2348, along with read-only memory (ROM) 2345, random access memory (RAM) 2346, and internal mass storage 2347, such as an internal non-user-accessible hard drive or solid-state drive (SSD). In some computer systems, the system bus 2348 may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus 2348 or via a peripheral bus 2349. Peripheral bus architectures include Peripheral Component Interconnect (PCI), USB, etc.
[0211] The CPU 2341, GPU 2342, FPGA 2343, and accelerator 2344 can execute specific instructions that, in combination, may constitute the above-mentioned computer code. That computer code may be stored in ROM 2345 or RAM 2346. Transient data may also be stored in RAM 2346, while persistent data may be stored, for example, in internal mass storage 2347. Rapid storage and retrieval from any of the memory devices may be enabled through the use of cache memory, which may be closely associated with one or more of the CPU 2341, GPU 2342, mass storage 2347, ROM 2345, RAM 2346, etc.
[0212] 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.
[0213] By way of example and not limitation, architecture 2300, and in particular a computer system having core 2340, can provide functionality as a result of one or more processors (including CPUs, GPUs, FPGAs, accelerators, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be user-accessible mass storage as described above, as well as media associated with specific storage of core 2340 that is non-transitory in nature, such as core internal mass storage 2347 or ROM 2345. Software implementing various embodiments of the present disclosure can be stored on such devices and executed by core 2340. Computer-readable media can include one or more memory devices or chips, depending on particular needs. The software can cause core 2340, and in particular the processors therein (including CPUs, GPUs, FPGAs, etc.), to perform particular processes or particular portions of particular processes described herein, including defining data structures stored in RAM 2346 and modifying such data structures in accordance with the software-defined processes. Additionally, or alternatively, a computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator 2344), which may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software may, where appropriate, encompass logic, and vice versa. References to computer-readable media may, where appropriate, encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that implements logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software.
[0214] While this disclosure has described several exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within its spirit and scope. [Explanation of symbols]
[0215] 100 systems 110 Terminal 120 terminals 130 terminals 140 terminals 150 Network 201 Video Sources 202 Sample Stream 203 Encoder, Video Coder 204 Video Bitstream 205 Streaming Server 206 Client 207 Video Bitstream 208 Client 209 Video Bitstream 210 decoder 211 Outgoing Video Sample Stream 212 Display 213 Capture Subsystem 310 Receiver 312 channels 315 buffer 320 Parser 321 Symbol 351 Scaler and / or Inverse Transformation Unit 352 Intra-Image Prediction Unit 353 Motion Compensation Prediction Unit 355 Aggregator 356 Loop Filter Unit 357 Reference Image Memory, Reference Image Buffer 358 Current Reference Image 430 Encoder, Source Coder, Video Coder 432 encoding engine 433 Local Video Decoder 434 Reference Image Memory, Reference Image Cache 435 Predictor 440 Transmitter 443 coded video sequence 445 Entropy Coder 450 Controller 460 channels 501 Image Header 502 ARC information 503 H.263 PLUSPTYPE 504 Image Parameter Set 505 ARC Reference Information 506 Table 507 Sequence Parameter Set 508 Tile Group Header 509 ARC information 511 Adaptive Parameter Set 512 ARC information 513 ARC Reference Information 514 Tile Group Header 515 ARC information 516 parameter sets 601 Tile Group Header 602 Variable-length Exp-Golomb coding syntax element dec_pic_size_idx 603 Adaptive Resolution 610 Sequence Parameter Set 611 adaptive_pic_resolution_change_flag 612 parameter sets Output resolution in 613 samples 614 Syntax element reference_pic_size_present_flag 615 Reference Image Dimensions 616 table_direction(num_dec_pic_size_in_luma_samples_minus1) 617 Syntax, Presented Table Entries 949 A specific general-purpose data port or peripheral bus 954 External Network Interface Adapter 955 one or more communication networks 1310 images 2300 Computer Systems and Architecture 2301 Keyboard 2302 Mouse 2303 Trackpad 2305 Joystick 2306 Microphone 2307 Scanner 2308 Camera 2309 Speaker 2310 Touchscreen 2320 Optical media 2321 CD / DVD and other media 2322 thumb drive 2323 Removable Hard Drive or Solid State Drive 2340 cores 2341 CPU 2342 GPU 2343 FPGA 2344 Accelerator 2345 ROM 2346 RAM 2347 Internal Mass Storage 2348 System Bus 2349 Peripheral bus 2350 graphics adapter 2354 Network Interface 2355 Network
Claims
1. A method of encoding a bitstream performed by a video encoder, comprising: The method includes the step of encoding a bitstream, the encoded bitstream comprising a coded video sequence (CVS), the CVS comprising: a picture unit corresponding to a coded picture, the picture unit including a picture header (PH) network abstraction layer (NAL) unit and at least one video coding layer (VCL) NAL unit; an adaptation parameter set (APS) NAL unit, the APS NAL unit being obtained by the at least one processor from at least one prediction unit (PU) having a nuh_layer_id value equal to the lowest nuh_layer_id value of one or more coded slice NAL units that reference the APS NAL unit; and Including, the coded image is based on the PH NAL unit, the at least one VCL NAL unit, and an APS included in an APS NAL unit obtained from the CVS; encoding a bitstream; transmitting the encoded bitstream.
2. The method of claim 1 , wherein the temporal identifier of the at least one VCL NAL unit is equal to or greater than the temporal identifier of the APS NAL unit.
3. The method of claim 1 or 2, wherein a picture order count (POC) of the at least one VCL NAL unit is equal to or greater than a POC of the APS NAL unit.
4. The method according to claim 1 , wherein a layer identifier of the PH NAL unit and a layer identifier of the at least one VCL NAL unit are equal to or greater than a layer identifier of the APS NAL unit.
5. the CVS further comprises a tiered temporal sub-layer access (STSA) NAL unit corresponding to an STSA picture; the STSA NAL unit is not located between the APS NAL unit and the at least one VCL NAL unit; 5. The method according to any one of claims 1 to 4.
6. The method of claim 5 , wherein the PH NAL unit, the at least one VCL NAL unit, the APS NAL unit, and the STSA NAL unit are included in a single access unit.
7. The method of claim 5 or 6, wherein the time identifier of the APS NAL unit is equal to or greater than the time identifier of the STSA NAL unit.
8. The method of claim 5 , wherein a picture order count (POC) of the APS NAL unit is greater than or equal to a POC of the STSA NAL unit.
9. 1. A method of generating an encoded video bitstream using at least one processor, the method comprising: obtaining video data corresponding to an image unit; generating a picture header (PH) network abstraction layer (NAL) unit corresponding to said picture unit; generating at least one video coding layer (VCL) NAL unit corresponding to the picture unit; generating a coded video sequence (CVS) based on the PH NAL unit, the at least one VCL NAL unit, and an adaptation parameter set (APS) included in the APS NAL unit; outputting the encoded video bitstream containing the coded video sequence; Including, the APS NAL unit is included in at least one prediction unit (PU) having a nuh_layer_id value equal to the lowest nuh_layer_id value of one or more coded slice NAL units that reference the APS NAL unit; method.
10. The method of claim 9 , wherein the temporal identifier of the at least one VCL NAL unit is greater than or equal to the temporal identifier of the APS NAL unit.
11. The method of claim 9 or 10, wherein a picture order count (POC) of the at least one VCL NAL unit is equal to or greater than a POC of the APS NAL unit.
12. The method according to claim 9, wherein a layer identifier of the PH NAL unit and a layer identifier of the at least one VCL NAL unit are equal to or greater than a layer identifier of the APS NAL unit.
13. the CVS further comprises a tiered temporal sub-layer access (STSA) NAL unit corresponding to an STSA picture; the STSA NAL unit is not located between the APS NAL unit and the at least one VCL NAL unit; 13. The method according to any one of claims 9 to 12.
14. The method of claim 13 , wherein the PH NAL unit, the at least one VCL NAL unit, the APS NAL unit, and the STSA NAL unit are included in a single access unit.
15. The method of claim 13 or 14, wherein the time identifier of the APS NAL unit is equal to or greater than the time identifier of the STSA NAL unit.
16. 16. The method of claim 13, wherein a picture order count (POC) of the APS NAL unit is greater than or equal to a POC of the STSA NAL unit.
17. A device configured to perform the method of any one of claims 9 to 16.
18. 17. A computer program product for causing at least one processor to perform the method of any one of claims 9 to 16.
Citation Information
Patent Citations
Systems and methods for signaling parameters in video coding
WO2020059688A1