Picture reconstruction using image regions
By using indicator information and predefined sample values in the bitstream to generate reconstructed images, the problems of low encoding efficiency and decoding complexity in HEVC and VVC are solved, achieving more efficient video encoding and a simplified decoding process.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
- Filing Date
- 2024-11-07
- Publication Date
- 2026-06-05
Smart Images

Figure CN122162371A_ABST
Abstract
Description
Technical Field
[0001] Examples related to video encoding and decoding are disclosed. Background Technology
[0002] Universal Video Coding (VVC)
[0003] VVC, along with its predecessors Advanced Video Coding (AVC) and High-Efficiency Video Coding (HEVC), is a block-based video codec jointly standardized and developed by ITU-T and MPEG. This codec utilizes temporal and spatial prediction to generate predicted pixel data. VVC, HEVC, and AVC are similar in many ways. Spatial prediction is achieved using intra-frame (I) prediction from within the current frame. Temporal prediction is achieved using one-way inter-frame (P) prediction or two-way inter-frame (B) prediction at the block level, based on a previously decoded reference frame.
[0004] In the encoder, the difference between the raw pixel data and the predicted pixel data (called the residual) is transformed to the frequency domain, quantized, and then entropy-encoded (e.g., encoded using arithmetic coding) before being sent along with necessary prediction parameters such as the prediction mode and motion vectors, which are also entropy-encoded (e.g., also arithmetic-encoded). To reconstruct the image, the decoder obtains the residual of the image (i.e., the decoder performs decoding (e.g., arithmetic decoding), inverse quantization, and inverse transform to obtain the residual), and then adds the residual of the image to the intra-frame or inter-frame prediction.
[0005] Videos, pictures and components
[0006] A video (also known as a video sequence) consists of a series of pictures, each of which is composed of one or more components. Pictures in a video sequence are sometimes represented as "images" or "frames." Each component in a picture can be described as a two-dimensional rectangular array of picture sample values (or simply "sample values"). Typically, pictures in a video sequence consist of three components: a luminance component Y, where the sample values are luminance values; and two chrominance components Cb and Cr, where the sample values are chrominance values. Other common representations include ICtCb, IPT, constant luminance YCbCr, YCoCg, etc. It is also common for the chrominance components to be half the size of the luminance components in each dimension. For example, the luminance component of an HD picture would be 1920x1080, while the chrominance components would each have a size of 960x540. Components are sometimes called "color components" and other times "channels."
[0007] coding blocks and coding units
[0008] In many video coding standards (e.g., HEVC and VVC), each component is divided into blocks, and the encoded video bitstream produced by the encoder consists of a series of coded blocks. A block is a two-dimensional array of sample values (or simply "samples"). Typically, in video coding, a picture is divided into coding units that cover a specific region of the picture. Each coding unit consists of all coded blocks from all the components that make up that specific region, and each coded block belongs entirely to one coding unit. Macroblocks in H.264 and coding units (CUs) in HEVC are examples of coding units.
[0009] A block can be a "transform block" or a "prediction block". A transform block is a block that applies the transforms used in the encoding, while a "prediction block" is a block that applies a single prediction pattern.
[0010] VVC block structure
[0011] The VVC video coding standard uses a block structure known as Quadtree Plus Binary Tree Plus Tritree Block Structure (QTBT+TT), in which each image is first divided into square blocks called Code Tree Units (CTUs). Figure 10 The image shown is divided into 20 CTUs. All CTUs are the same size, and the segmentation is performed without any syntax control. Each CTU is further subdivided into CUs, which can be square or rectangular in shape. The CTU is first segmented by a quadtree structure, and then it can be further subdivided vertically or horizontally into equal-sized partitions to form CUs. Therefore, the blocks can be square or rectangular in shape. The depth of the quadtree and binary tree can be set by the encoder in the bitstream. The ternary tree (TT) section adds the possibility of dividing the CU into three partitions instead of two equal-sized partitions; this increases the possibility of using a block structure that is more suitable for the content structure in the image.
[0012] NAL unit
[0013] Both VVC and HEVC define a Network Abstraction Layer (NAL). All data in both HEVC and VVC (i.e., both Video Coding Layer (VCL) data and non-VCL data) is encapsulated in NAL units. VCL NAL units contain data representing image sample values. Non-VCL NAL units contain additional associated data (also known as metadata), such as parameter sets and Supplemental Enhancement Information (SEI) messages. NAL units in both VVC and HEVC begin with a header known as the NAL unit header. The syntax for the NAL unit header in HEVC begins with a `forbidden_zero_bit`, which should always be equal to 0 to prevent code emulation at the start. Without the `forbidden_zero_bit`, some MPEG systems might confuse the HEVC video bitstream with other data, but the 0 bit in the NAL unit header ensures that all possible HEVC bitstreams can be uniquely identified as HEVC bitstreams. The NAL unit header in VVC is very similar to that in HEVC, but `nal_unit_type` uses one less bit, reserving it for future use. The codewords `nal_unit_type`, `nuh_layer_id`, and `nuh_temporal_id_plus1` specify the NAL unit type (identifying the type of data carried in the NAL unit), the scalability layer ID, and the temporal layer ID to which the NAL unit belongs. The NAL unit type indicates and specifies how the NAL unit should be parsed and decoded. The remaining bytes of the NAL unit are the payload of the type indicated by the NAL unit type. A bitstream can consist of a series of concatenated NAL units (i.e., an ordered set of NAL units).
[0014] After seeing the NAL unit header, the decoder can determine how to process (e.g., parse and decode) the NAL unit. All VVC or HEVC bitstreams consist of a series of concatenated NAL units. The decoding order is the order in which the NAL units should be decoded, which is the same as the order of the NAL units within the bitstream. The decoding order may differ from the output order, which is the order in which the decoded images are output by the decoder for example, for display.
[0015] Table 1 shows the syntax of the NAL unit header of VVC, and Table 2 shows the syntax of the NAL unit type of VVC.
[0016] Table 1 – VVC NAL Unit Header Syntax
[0017]
[0018] Table 2 – NAL Unit Types in VVC
[0019]
[0020]
[0021] Open Bit Stream Unit (OBU)
[0022] AV1 is a video codec specified by the Alliance for Open Media (AOM). The NAL units in AV1 are called Open Bitstream Units (OBUs). Similar to HEVC and VVC, all AV1 data is encapsulated in OBUs, and an AV1 bitstream consists of a series of cascaded OBUs. Each OBU begins with a header called `obu_header()`, which includes the codeword `obu_type`, specifying the type of the OBU. These are equivalent to `nal_unit_header()` and `nal_unit_type` in VVC and HEVC. The OBU type identifies the type of data carried within the OBU and specifies how the OBU should be parsed and decoded. The syntax of OBUs in AV1 is shown in Tables 3 and 4, and OBU types are specified as shown in Table 5.
[0023] Table 3 – AV1 General OBU Syntax Table
[0024]
[0025] Table 4 – OBU Header Syntax
[0026]
[0027] Table 5 – OBU Types
[0028]
[0029] Largest block
[0030] As mentioned above, in many video coding standards (e.g., HEVC, VVC, and AV1), each frame is divided into a regular grid of blocks of the largest size. In HEVC and VVC, these blocks are called CTUs, and in AV1, they are called superblocks. CTUs and superblocks can be further subdivided into smaller blocks, each with its own prediction mechanism and transform mode.
[0031] VCL and non-VCL data
[0032] In HEVC and VVC, NAL units that contain encoded picture sample values (or simply "coded sample values") are called "Video Coding Layer (VCL) NAL units" or "coded slice NAL units"; NAL units that contain only header information or metadata are called "non-VCL NAL units". All VCL NAL units contain a coded slice. Note that a coded slice can include encoded picture sample values for the entire picture; therefore, a slice can be a picture or a part of a picture. Table 2 shows which VVCNAL units are VCL NAL units and which are non-VCL NAL units.
[0033] The AV1 specification does not classify OBUs into VCL OBUs and non-VCL OBUs, but such classification is easily implemented. In Table 6, OBUs containing encoded sample values are classified as VCL OBUs, while other OBUs are classified as non-VCL OBUs. Non-VCL OBUs contain only header information or metadata and do not include any encoded sample values. VCL OBUs contain encoded sample values. Additionally, the column "Corresponding VVC NAL Unit" in Table 6 indicates the closest corresponding VVC NAL unit type for each OBU type.
[0034] Table 6 – OBU Types and Categories
[0035]
[0036] In HEVC and VVC, a VCL NAL unit typically consists of a header section and a data section, with the header section preceding the data section and containing syntax elements encoded with fixed length or variable length (e.g., Huffman coding). The same applies to AVI VCL OBUs. In this document, the general term "VCL unit" may be used to refer to both VCL NAL units and VCL OBUs.
[0037] This means that the value of each syntax element is represented by an integer number of bits. The data portion is typically encoded, at least partially, using arithmetic coding or similar coding. Arithmetic coding is generally more efficient than fixed-length coding and Huffman coding, but this means that the value of each syntax element may not be represented by an integer number of bits, but rather by one or more states of the arithmetic decoding engine, as is known in the art. The decoder typically decodes the data portion by iterating through multiple coded CTUs or superblocks present in the VCL unit. For each such coded CTU or superblock, the decoder decodes the bits of the data portion using arithmetic decoding until all coded CTUs or superblocks in the VCL unit have been decoded. Typically, motion compensation information (e.g., motion vectors) and residual information (e.g., transform coefficients, which may all be zero) for each coded CTU or superblock are determined by decoding the data portion.
[0038] In all HEVC, AV1, and VVC formats, non-VCL units typically consist only of a header portion. Similar to the header portion in VCL units, the header in a non-VCL unit contains fixed-length encoded or Huffman-coded syntax elements. The information in a non-VCL unit typically applies to one or more images. The information in a VCL unit can apply to the entire image, but only to a single image. Alternatively, the information in a VCL unit can apply to a portion of an image, such as one or more, but not all, sub-images, slices, CTUs, or tiles of a single image.
[0039] Slices and tiles
[0040] The concept of slices in VVC and HEVC divides an image into independently coded slices, where decoding one coded slice in an image is independent of other coded slices in the same image. In VVC and HEVC, a coded slice is a set of coded CTUs. VVC and HEVC also include a tool called tiles, which divides an image into spatially independent rectangular regions. By using tiles, an image in VVC or HEVC can be divided into rows and columns of CTUs, where a tile is the intersection of rows and columns.
[0041] In VVC, an encoded slice is defined as an integer number of complete tiles or consecutive complete CTU lines that are exclusively contained within a single NAL unit within a tile of an image. In VVC, an image can be segmented into raster scan slices or rectangular slices. A raster scan slice consists of multiple complete tiles in raster scan order. A rectangular slice consists of a group of tiles that together occupy a rectangular area in the image, or multiple consecutive CTU lines within a tile. Each encoded slice has a corresponding slice header that includes syntax elements. When decoding an encoded slice, the slice header values decoded from these syntax elements are used. Each encoded slice is carried within a VCL NAL unit. In earlier drafts of the VVC specification, encoded slices were referred to as encoded tile groups.
[0042] In VVC, the tile structure is signaled in the Picture Parameter Set (PPS) by specifying the row thickness and column width. Individual rows and columns can have different sizes, but the segmentation always spans the entire image, from left to right and from top to bottom, respectively.
[0043] In the rectangular tile mode of VVC, a tile can be further divided into multiple tiles, where each tile consists of multiple consecutive CTU rows within a tile. Figure 11 An example of tile segmentation is shown, and Figure 12 An example of rectangular slice segmentation using tile segmentation in VVC is shown.
[0044] AV1 supports segmenting images into tiles, much like tiles in HEVC and VVC. AV1 does not use word slicing. However, the three OBU types OBU_TILE_GROUP, OBU_TILE_LIST, and OBU_FRAME correspond to slices in HEVC and VVC, as shown below:
[0045] Both OBU_TILE_GROUP and OBU_TILE_LIST correspond to VVC-coded slice NAL units containing an integer number of tiles. Compared to OBU_TILE_GROUP, OBU_TILE_LIST additionally includes an additional header for each tile to enable decoding of a subset of tiles.
[0046] OBU_FRAME corresponds to the VVC-coded slice NAL unit containing all CTUs of the image. Additionally, OBU_FRAME includes data for OBU_FRAME_HEADER, which in VVC is the slice containing the image header (i.e., the slice where sh_picture_header_in_slice_header_flag equals 1).
[0047] In this disclosure, OBU_TILE_GROUP, OBU_TILE_LIST, and OBU_FRAME are referred to as AV1 slices or simply slices.
[0048] AV1 Tile List OBU
[0049] Table 7 shows the syntax for the tile list OBU in AV1. The `anchor_frame_idx` syntax element specifies which reference images are used for decoding the tile. `anchor_tile_row` and `anchor_tile_col` specify the position of the decoded tile in the output image. `coded_tile_data` contains a coded tile.
[0050] Table 7 – OBU Syntax Table for Tile Lists
[0051]
[0052] The AV1 specification contains a description of the large-scale tile decoding process used to decode a tile list OBU into an output frame. In short, the process takes a tile list OBU as input and produces an output image in which decoded tiles are written. The output image may not be completely covered by the decoded tiles, and the AV1 specification stipulates that the decoder should not modify samples in the output image that lie outside the boundaries of the decoded tiles. For all details regarding this process, see the AV1 specification.
[0053] Encoding of each CTU and each superblock
[0054] In HEVC and VVC, all CTUs of an image must be encoded, and each encoded CTU must exist in the encoded slice of a VCL NAL unit. This means that for each sample of the current output image, the VCL NAL unit of the current image contains information specifying the decoded sample value.
[0055] The situation is similar in AV1. All superblocks of the image must be encoded, and each encoded superblock must exist in a VCL type OBU listed in Table 6, except for OBU_TILE_LIST. For each sample value of the current output image, there is VCL information associated with the current image specifying the decoded sample value. Again, OBU_TILE_LIST is an exception because it allows the output image to be partially covered by decoded tiles. AV1 does not specify any values for missing tiles, thus meaning that some sample values of the current output image may not be specified.
[0056] Sub-image
[0057] VVC supports subpicks, where a subpick is defined as a rectangular region of one or more slices within an image. This means that a subpick contains one or more slices that collectively cover a rectangular region of the image. In the VVC specification, the position and size of a subpick are signaled in the Sequence Parameter Set (SPS). The boundaries of a subpick region can be considered as image boundaries conditioned on each subpick flag `subpic_treatment_as_pic_flag[i]` in the SPS (excluding in-loop filtering operations). Loop filtering of the subpick boundaries is also conditioned on each subpick flag `loop_filter_across_subpic_enabled_flag[i]` in the SPS.
[0058] This is achieved through the first codeword `sps_num_subpics_minus1`, which specifies the number of subpicks. Then, a loop exists: for each subpick index `i`, the position and size of the subpick are specified. This loop associates each subpick with its subpick index value `i`. SPS also specifies for each subpick whether its boundaries should be considered as image boundaries for motion compensation and / or in-loop filtering. The boundaries of a subpick region can be considered as image boundaries conditioned on the subpick flag `subpic_treatment_as_pic_flag[i]` in SPS (excluding in-loop filtering). In-loop filtering of subpick boundaries is also conditioned on the subpick flag `loop_filter_across_subpic_enabled_flag[i]` in SPS.
[0059] In the VVC slice header, there is a subpicture ID syntax element and a slice address syntax element. The subpicture ID specifies the subpicture ID of the subpicture, and the slice address specifies the slice address within the subpicture. All slices belonging to the same subpicture must have the same subpicture ID value. To support bitstream extraction and merging operations without rewriting the slice header, VVC has a mapping mechanism between subpicture ID values and subpicture index values. This mapping is indicated by the sps_subpic_id[i] or pps_subpic_id[i] syntax element in SPS and PPS, respectively. For example, a sps_subpic_id[1] value of 3 indicates that the subpicture ID value 3 is mapped to the subpicture index value 1. By using this mapping mechanism, only the SPS or PPS syntax element needs to be rewritten during bitstream extraction or merging operations. Table 8 shows the subpicture syntax in SPS in VVC.
[0060] Table 8 – Subpicture Syntax in SPS in the VVC Specification
[0061]
[0062] Bitstream extraction and merging operations
[0063] Some video applications involve operations performed on bitstreams, including bitstream extraction and bitstream merging. Bitstream extraction takes an input bitstream as input and produces an output bitstream, where the output bitstream represents a subset of the video content of the input bitstream. Bitstream merging takes multiple input bitstreams as input and produces a single output bitstream, where the output bitstream represents the union of the video content of the input bitstreams. For bitstream merging to work correctly, it is very common to consider merging support when creating the input bitstreams. Bitstream merging operations that involve bitstreams encoded completely independently by, for example, different encoders are typically not feasible.
[0064] The goal is for bitstream formats to support bitstream extraction and merging operations without requiring changes to the underlying bitstream, as such modifications impose a significant implementation burden and increase computational complexity. A common design objective is to achieve these operations without manipulating the encoded slice data. For example, in VVC, rewriting parameter set data would be acceptable, but rewriting slice data or image header data is unacceptable.
[0065] For extraction and merging functions to work properly, video formats need to support segmenting the content space into independent coded segments. Slices, tiles, and subpictures are examples of such segments. In HEVC, Motion Constrained Tile Sets (MCTS) are typically used, where slices containing one or more complete tiles are encoded such that the coded slices are independent. Special attention is needed in the HEVC motion compensation process, where the HEVC encoder carefully selects motion parameters to make the coded slices independent, hence the name MCTS. In VVC, the subpicture segmentation type was introduced, primarily to support lower-complexity bitstream extraction and merging. Compared to HEVC MCTS, VVC subpictures offer higher compression efficiency and do not require special attention to motion compensation.
[0066] For example, the sub-image bitstream extraction and merging operation in VVC may include: extracting one or more sub-images from a first bitstream, extracting one or more sub-images from a second bitstream, and merging the extracted sub-images into a new third bitstream.
[0067] Image Sequential Counting (POC)
[0068] In HEVC, images are identified by their Picture Order Count (POC) value (also known as the complete POC value). Each slice contains a codeword `pic_order_cnt_lsb`, which should be identical for all slices in the image. `pic_order_cnt_lsb` is also called the least significant bit (LSB) of the complete POC because it is a fixed-length codeword, and only the least significant bit of the complete POC is signaled. Both the encoder and decoder track the POC and assign POC values to each image being encoded / decoded. `pic_order_cnt_lsb` can be signaled using 4 to 16 bits. In HEVC, the variable `MaxPicOrderCntLsb` is used, which is set to the maximum `pic_order_cnt_lsb` value plus 1. This means that if 8 bits are used to signal `pic_order_cnt_lsb`, the maximum value is 255, and `MaxPicOrderCntLsb` is set to 2^8 = 256. The picture order count value of an image is called `PicOrderCntVal` in HEVC. Typically, the PicOrderCntVal of the current image is simply referred to as PicOrderCntVal.
[0069] Reference Image Management
[0070] Reference Picture Sets (RPS) are used for reference picture management in HEVC. A reference picture set is a group of reference pictures signaled in the slice header. When the decoder has decoded a picture, it places that picture along with its Proof-of-Concept (POC) value in the Decoded Picture Buffer (DPB). When decoding subsequent pictures, the decoder parses the RPS syntax from the slice header and constructs a list of reference picture POC values.
[0071] Reference image management in the VVC specification differs slightly from that in HEVC. In HEVC, the Reference Frame Prediction System (RPS) is notified via signaling, and a list of reference images for inter-frame prediction is derived from the RPS. In the VVC specification, the Reference Frame List (RPL) is notified via signaling, and the RPS is derived. However, both specifications complete the signaling process for which images to retain in the Depth Frame Prediction (DPB), and which images should be short-term and long-term. Image recognition using Proof of Concept (POC) and the identification of missing reference images are identical in both specifications.
[0072] Parameter set
[0073] HEVC and VVC specify three types of parameter sets: Picture Parameter Set (PPS), Sequence Parameter Set (SPS), and Video Parameter Set (VPS). PPS contains data common to the entire picture, SPS contains data common to the encoded video sequence (CVS), and VPS contains data common to multiple CVS (e.g., data for multiple scalability layers in a bitstream).
[0074] VVC also specifies an additional set of parameters, namely the Adaptive Parameter Set (APS). The APS carries the parameters required for the Adaptive Loop Filter (ALF) tool, the Luminance Mapping and Chroma Scaling (LMCS) tool, and the Scaling List tool.
[0075] Both HEVC and VVC allow certain information (e.g., parameter sets) to be provided externally. "Externally" should be interpreted as this information not being provided in the encoded video bitstream, but rather through other means not specified in the video codec specification (e.g., via metadata that may be provided in different data channels, as constants in the decoder, or provided to the decoder via an API).
[0076] Decoding Capability Information (DCI)
[0077] In VVC, there exists a DCI NAL unit. The DCI specifies information that does not change during the decoding session and may help the decoder to know this information early and in advance, such as configuration files and level information. The information in the DCI is not essential for the operation of the decoding process. In the draft of the VVC specification, the DCI is referred to as the Decoding Parameter Set (DPS).
[0078] Decoding capability information can also include a set of general constraints for the bitstream, which provides the decoder with information about the content expected to be obtained from the bitstream, such as encoding tools and NAL unit types. In VVC, this general constraint information can be signaled in DCI, VPS, or SPS.
[0079] Image header
[0080] In VVC, encoded pictures contain a picture header structure. The picture header structure contains syntax elements common to all encoded slices of the associated picture. If only one encoded slice exists in an encoded picture, the picture header structure can be signaled in its own non-VCL NAL unit along with the NAL unit type PH_NUT, or it can be included in the slice header. This is indicated by the slice header syntax element picture_header_in_slice_header_flag, where a value of 1 indicates that the picture header structure is included in the slice header, and a value of 0 indicates that the picture header structure is carried in its own NAL unit. For CVS where not all pictures are single-slice pictures, each encoded picture must be preceded by a picture header, which is signaled in its own NAL unit. HEVC does not support picture headers.
[0081] Layers, OLS and OPI
[0082] In VVC and HEVC, the value of the `nuh_layer_id` syntax element in the NAL unit header specifies the layer ID to which the NAL unit belongs. In VVC, layers can be encoded independently or dependently on each other. When layers are encoded independently, a layer with, for example, `nuh_layer_id0` may not be able to predict video data from another layer with, for example, `nuh_layer_id1`. In VVC, layer-dependent encoding can be used, enabling scalable encoding with SNR, spatial, and view scalability.
[0083] In VVC and HEVC, the VPS (Vacuum Storage Service) contains the scalability layer information needed to process scalable bitstreams. For HEVC, a VPS must exist for all bitstreams (even single-layer bitstreams), while for VVC, the VPS can be omitted for single-layer bitstreams. The VPS defines the Output Layer Set (OLS), which is a description of the set of layers in the bitstream, indicating which layers should be output. In VVC, only the output layers are specified, and the complete OLS is derived using bitstream information about how layers reference other layers. This means that even if all layers not included in the OLS are discarded, the complete OLS is still decodeable. In other words, layers in the OLS do not depend on any layers not included in the OLS. This also means that it may be necessary to decode some OLS layers without outputting images of those layers.
[0084] In VVC, the Operation Point Information (OPI) can be used to specify the OLS index of the target OLS that the decoder should decode. The OPI can additionally specify the highest time sublayer the decoder should decode. When the bitstream contains many layers and sublayers, the OPI can be used to tell the decoder which parts of the bitstream to decode and / or which time sublayers to discard during decoding. The target OLS and the highest time sublayer to decode can alternatively be specified externally. If this occurs and an OLS exists in the bitstream, the decoder should use the information provided by the external means and ignore the OLS information. In VVC, the OPI is signaled in its own non-VCL NAL unit.
[0085] Slice and macroblock structures in early standards
[0086] The H.263 and H.264 standards use macroblock entities, which are 16x16 block-sized processing units, and define slices as an integer number of macroblocks in a specific order. H.263 and H.264 use the term "slice" in a different context than HEVC and VVC.
[0087] Annex K of the H.263 specification describes optional slice structure modes, which include two sub-modes:
[0088] (1) Rectangular Slice Submode (RS). When using RS, a slice occupies a rectangular area with a width specified in macroblocks by the Slice Width Indication (SWI) parameter in the slice header, and contains multiple macroblocks in scan order within that rectangular area. When not using the rectangular slice submode, there is no SWI field in the slice header, and the slice contains multiple macroblocks in scan order throughout the image.
[0089] (2) Arbitrary Slice Ordering (ASO) Submode. When using ASO, slices can appear in the bitstream in any order. When not using ASO, slices must be sent in a strictly increasing (unique) order from each slice in the image to each subsequent slice, according to the macroblock address (MBA) field in the slice header.
[0090] The H.263 specification describes the Coded Macroblock Indicator (COD) as a single bit at the beginning of the macroblock syntax. When set to "0", it signals that the macroblock has been encoded, and when set to "1", it signals that no further information will be sent for the macroblock and that the macroblock is treated as "skipped". In H.263, a skipped macroblock is decoded into an INTER macroblock, where the motion vector for the entire block is zero and there is no coefficient data.
[0091] The H.264 specification (T-REC-H.264-202108) also defines a skipped macroblock as a macroblock for which no data is encoded except for an indication that the macroblock will be decoded as "skipped". This indication can be applied to several macroblocks. Elements such as motion vector components and reference indices of skipped macroblocks can be derived according to some defined derivation procedures.
[0092] The semantics of slice data in H.264 include (as shown in Table 9 below):
[0093] Table 9
[0094] Summary of the Invention
[0095] Several challenges exist. For example, the rule that all CTUs and superblocks must be encoded using VCL units results in encoding efficiency below its potential. Additionally, allowing unspecified output, as in AV1, presents at least two problems. First, unspecified output is useless for, for example, display purposes. Second, testing the decoder is difficult because two decoder implementations might output different sample values for unspecified regions, complicating the comparison of output images.
[0096] Therefore, in one aspect, a method is provided for generating a reconstructed image corresponding to an original image, executed by a decoder, wherein the original image consists of a plurality of regions, including at least a first region and a second region. The method includes obtaining a bitstream. The method also includes using the bitstream to generate the reconstructed image. The bitstream includes first coded image sample units corresponding to the first region of the image, and the bitstream also includes indicator information indicating that, for the second region of the image, the bitstream does not include coded image sample units corresponding to the second region of the image.
[0097] On the other hand, a method is provided for decoding an encoded image from a bitstream into a decoded image. The method includes decoding N spatial regions of the encoded image, wherein the N spatial regions comprise the complete decoded image. A first region within the N spatial regions is decoded from a first encoded image sample unit included in the bitstream, and the bitstream includes indicator information indicating that a second region within the N spatial regions is not decoded from any encoded image sample unit in the bitstream.
[0098] On the other hand, a method is provided for generating a reconstructed image corresponding to an original image, executed by a decoder, wherein the original image consists of multiple regions, including at least a first region and a second region. The method obtains a bitstream generated by an encoder, wherein the bitstream includes a first Video Coding Layer (VCL) Network Abstraction Layer (NAL) unit corresponding to the first region of the image, the first VCL NAL unit including a header and a payload. The method further includes using information contained in the payload of the first VCL NAL unit corresponding to the first region of the image to generate reconstructed sample values corresponding to the first region of the image. The method further includes using only i) predefined sample values and / or ii) reconstructed sample values corresponding to co-located regions of one or more reference images to generate reconstructed sample values corresponding to the second region of the image.
[0099] On the other hand, a method is provided for generating a reconstructed image corresponding to an original image, executed by a decoder, wherein the original image consists of N regions (also called blocks or CTUs), including at least a first region and a second region. The method includes obtaining a bitstream generated by an encoder, wherein the bitstream includes a set of Video Coding Layer (VCL) Network Abstraction Layer (NAL) units corresponding to the original image, wherein the VCL NAL unit set includes a first VCL NAL unit corresponding to a first region of the image, the first VCL NAL unit including a header and a payload. The method also includes using information contained in the payload of the first VCL NAL unit corresponding to the first region of the image to generate reconstructed sample values corresponding to the first region of the image. The method further includes generating reconstructed sample values corresponding to a second region of the image, wherein: i) no information from any VCL NAL units included in the VCL NAL unit set is used to generate any reconstructed sample values corresponding to the second region of the image; ii) no information derived from any sample values of the second region of the original image is used to generate any reconstructed sample values corresponding to the second region of the image; or iii) each VCL NAL unit in the bitstream includes a header (e.g., a slice header) and a payload (e.g., a slice payload) that includes encoded samples (e.g., slice data), wherein no information from any payload of any VCL NAL unit in the bitstream is used to generate any reconstructed sample values corresponding to the second region of the image.
[0100] On the other hand, a method is provided for generating a reconstructed image corresponding to an original image, executed by a decoder, wherein the original image consists of a plurality of regions, including at least a first region and a second region. The method includes obtaining a bitstream generated by an encoder, wherein the bitstream includes picture units (PUs) for enabling the decoder to generate the reconstructed image. The method also includes using the PUs included in the bitstream to generate the reconstructed image. Each PU includes a first coded picture sample unit corresponding to a first region of the image. Each PU also includes a second coded picture sample unit corresponding to a second region of the image. The first coded picture sample unit consists of i) a first fixed-length coded or Huffman coded header portion and ii) a fixed-length coded or Huffman coded data portion consisting of fixed-length coded or Huffman coded picture sample values. The second coded picture sample unit consists of i) a second fixed-length coded or Huffman coded header portion and ii) an arithmetic-coded data portion consisting of arithmetic-coded picture sample values.
[0101] In another aspect, a computer program including instructions is provided that, when executed by processing circuitry of an apparatus, causes the apparatus to perform any of the methods disclosed herein. In one embodiment, a carrier including a computer program is provided, wherein the carrier is one of an electrical signal, an optical signal, a radio signal, and a computer-readable storage medium. In another aspect, an apparatus configured to perform the methods disclosed herein is provided. The apparatus may include a memory and processing circuitry coupled to the memory.
[0102] One advantage of the embodiments disclosed herein is that they can reduce overhead, thereby providing bitrate savings in video compression; this is especially true when images are encoded into many units (e.g., many NAL units or OBUs), as the overhead of units can be avoided by using the proposed embodiments. These embodiments specify all samples for each output image, which simplifies decoder testing because it enables direct comparison of output images from multiple decoders.
[0103] The embodiments disclosed herein also provide flexibility in encoding images in a bitstream, both in terms of the layout of the encoded content (e.g., temporarily encoding video within a region of interest (ROI)) and in terms of spatially adjusting the frame rate. For example, by means of embodiments, a reduced frame rate can be encoded in portions of an image. An example of this could be when merging a first sub-image encoded at 60 fps with a second sub-image encoded at 30 fps into a new bitstream. In a VVC sub-image scheme, such merging would be impossible, but it can be achieved by means of the embodiments disclosed herein by temporarily skipping each second sub-image of the second sub-image stream in the merged new bitstream. Attached Figure Description
[0104] The accompanying drawings, which are included herein and form part of this specification, illustrate various embodiments.
[0105] Figure 1 A system according to an embodiment is shown.
[0106] Figure 2 This is a schematic block diagram of an encoder according to an embodiment.
[0107] Figure 3 This is a schematic block diagram of a decoder according to an embodiment.
[0108] Figure 4 This is a flowchart illustrating a process according to an embodiment.
[0109] Figure 5 This is a flowchart illustrating a process according to an embodiment.
[0110] Figure 6This is a flowchart illustrating a process according to an embodiment.
[0111] Figure 7 This is a flowchart illustrating a process according to an embodiment.
[0112] Figure 8 This is a flowchart illustrating a process according to an embodiment.
[0113] Figure 9 This is a block diagram of an encoding apparatus according to an embodiment.
[0114] Figure 10 The image is shown as being divided into 20 blocks.
[0115] Figure 11 An example of tile segmentation in VVC is shown.
[0116] Figure 12 An example of rectangular slice segmentation using tile splitting in VVC is shown. Detailed Implementation
[0117] Definitions of the terms used in this disclosure are provided in Table 10.
[0118] Table 10 – Definitions
[0119]
[0120]
[0121] Figure 1 A system 100 according to an embodiment is illustrated. System 100 includes an encoder 102 and a decoder 104, wherein the encoder 102 communicates with the decoder 104 via a network 110 (e.g., the Internet or another network). The encoder 102 encodes a source video sequence 101 into a bitstream containing the encoded video sequence and transmits the bitstream to the decoder 104 via the network 110. In some embodiments, the encoder 102 does not communicate with the decoder 104, and in such embodiments, instead of transmitting the bitstream to the decoder 104, the bitstream is stored in a data storage unit. The decoder 104 decodes images included in the encoded video sequence to generate video data for display and / or further image processing (e.g., machine vision tasks). Therefore, the decoder 104 may be part of a device 103 having an image processor 105 and / or a display 106. The image processor 105 may perform machine vision tasks on the decoded images. One such machine vision task may be identifying objects in an image. The device 103 may be a mobile device, a set-top box device, a head-mounted display, or any other device.
[0122] Figure 2Functional components of encoder 102 according to some embodiments are shown. It should be noted that encoders can be implemented in different ways, and therefore implementations other than this particular example can be used. Encoder 102 uses subtractor 241 to generate a residual block, which is the difference in sample values between the input block and the prediction block (i.e., the output of selector 251, which is either an inter-prediction block output by inter-frame predictor 250 (also called a motion compensator) or an intra-prediction block output by intra-frame predictor 249). A forward transform 242 is then performed on the residual block to produce a transform block including transform coefficients. Quantization unit 243 quantizes the transform coefficients based on quantization parameter (QP) values (e.g., QP values obtained based on an image QP value of an image in which the input block is a part and a block-specific QP offset value for that input block), thereby generating quantized transform coefficients, which are then encoded into a bitstream by encoder 244 (e.g., an arithmetic encoder), and a bitstream with encoded transform coefficients is output from encoder 102. Next, encoder 102 uses quantized transform coefficients to generate reconstructed blocks. This is done by first applying inverse quantization 245 and inverse transform 246 to the transform coefficients to generate reconstructed residual blocks, and then using adder 247 to add predicted blocks to the reconstructed residual blocks, thereby generating reconstructed blocks stored in reconstructed picture buffer (RPB) 266. Loop filtering is applied in loop filter (LF) stage 267, and the final decoded picture is stored in decoded picture buffer (DPB) 268, whereby the final decoded picture can then be used by inter-frame predictor 250 to generate inter-frame predicted blocks for the next picture to be processed. LF stage 267 may include three sub-stages: i) deblocking filter, ii) sample adaptive offset (SAO) filter, and iii) adaptive loop filter (ALF).
[0123] Figure 3Functional components of decoder 104 according to some embodiments are shown. It should be noted that decoder 104 can be implemented in different ways, and therefore implementations other than this particular example can be used. Decoder 104 includes a bitstream parser 301 that receives a bitstream (e.g., retrieves a bitstream from a file or receives a bitstream via network 110) and parses the bitstream to obtain each NAL unit in the bitstream. When bitstream parser 301 obtains NAL units including encoded picture sample values (e.g., encoded quantization transform coefficient values), bitstream parser 301 provides these encoded picture sample values to decoder module 361 (e.g., performs arithmetic decoding), decoder module 361 decodes the sample values to obtain decoded sample values (e.g., quantization transform coefficients). Decoder 104 also includes a reconstruction stage 398, wherein the quantization transform coefficient values undergo an inverse quantization process 362 and an inverse transform process 363 to produce a residual block. This residual block is input to adder 364, which adds the residual block and a prediction block output from selector 390 to form a reconstructed block. Selector 390 selects either an inter-frame prediction block or an intra-frame prediction block for output. The reconstructed block is stored in RPB 365. The inter-frame prediction block is generated by inter-frame prediction module 350, and the intra-frame prediction block is generated by intra-frame prediction module 369. After reconstruction stage 398, loop filtering is applied in loop filter stage 367, and the final decoded image can be stored in decoded image buffer (DPB) 368 and output to image processor 105. The image is stored in DPB for two main reasons: 1) to await image output, and 2) for reference when decoding future images.
[0124] As mentioned above, the rule that all CTUs and superblocks must be encoded using VCL units results in lower-than-ideal encoding efficiency, which presents a challenge.
[0125] Therefore, in one aspect, this disclosure allows samples to be encoded in non-VCL units (preferably in the form of CTUs, etc.). In one embodiment, a set of CTUs (e.g., sub-pictures, slices, or tiles) does not need to be represented by a dedicated unit (e.g., a NAL unit or an OBU) for that set. Instead, the necessary information for identifying and deriving all sample values in that set is located in one or more non-VCL units (e.g., SPS, PPS, picture header NAL unit, sequence header, frame header, etc.). The solution includes methods for identifying such sets and how to derive the sample values in the set.
[0126] In one embodiment, the image is divided into CTUs such that the decoded encoded CTUs cover the entire decoded image, and each decoded CTU is or is not derived using information from the data portion of the VCL unit. As used herein, the term "non-VCL CTU" refers to a CTU that does not use information from the data portion of any VCL unit (e.g., as described in step 4 of Example 1 below), and the term "VCL CTU" is used to refer to a CTU that uses information from the data portion of any VCL unit (as described in step 3 of Example 1 below). Partitions included in a non-VCL unit may be referred to as non-VCL partitions. Partitions included in a VCL unit may be referred to as VCL partitions.
[0127] Example 1
[0128] In one embodiment, this disclosure provides a method for decoding an encoded image from a bitstream into a decoded image. The bitstream consists of one or more images (so-called encoded images) in a compressed format. The method reads the encoded image information of an image from the bitstream and derives a decoded (also called reconstructed) image, which is an image of pixel values (also called sample values). In one embodiment, the bitstream is composed of units, and each unit is a non-VCL unit or a VCL unit. In one embodiment, the method includes the following steps:
[0129] 1. Decode at least one non-VCL unit from the bitstream.
[0130] 2. Decode all VCL units of the encoded image from the bitstream, where each VCL unit includes a header portion and a data portion.
[0131] 3. Derive sample values of at least one block of the decoded image by using both information decoded from at least one non-VCL unit and information decoded from the data portion of at least one VCL unit.
[0132] 4. Deriving sample values of at least one block of a decoded image using information decoded from at least one non-VCL unit without using information decoded from the data portion of any VCL unit of the encoded image. In one embodiment, information from any data portion of any VCL unit is not used.
[0133] In contrast to AV1 Massive Decoding, in one embodiment, all sample values of the decoded image should be derived. AV1 Massive Decoding allows for regions with unspecified or unmodified sample values, but this will not occur in this embodiment.
[0134] Here, non-VCL units can be one or more of the following: Operation Point Information (NAL) unit, Decoding Capability Information (NAL) unit, Video Parameter Set (NAL) unit, Sequence Parameter Set (NAL) unit, Parameter Set (NAL) unit, Picture Header (NAL) unit, Access Unit Delimiter (NAL) unit, Sequence Header (OBU), Time Delimiter (OBU), or Frame Header (OBU). Here, VCL units can include one or more of the following: Coded Slice (NAL) unit, Tile Group (NAL) unit, Tile Group (OBU), Frame (OBU), or Tile List (OBU).
[0135] Example 2 – New Type Unit
[0136] In addition to VCL and non-VCL unit categories, this embodiment also defines a new unit type category. In one embodiment, a new unit type category is defined as a unit containing a header and the information required to derive the sample value, all of which is fixed-length encoded or Huffman encoded. This new unit type category differs from VCL units in that the information required to derive the sample value is fixed-length encoded in the new type unit, and also differs from non-VCL units in that the new type unit contains information for deriving the sample value.
[0137] In one embodiment, the new unit type category is defined as a unit containing header information and information required to derive sample values, and the information required to derive sample values is either fixed-length encoded or Huffman encoded.
[0138] In one embodiment, the new cell type category is called "Huffman-coded VCL (HC_VCL)". Table 11 below shows an exemplary table of NAL cell types, in which, in addition to the VCL and non-VCL NAL cell types, there is another NAL cell type category called HC_VCL:
[0139] Table 11
[0140]
[0141] The table above defines an exemplary NAL cell called HC_VCL_NUT, whose cell type is HC_VCL and whose content is entirely fixed-length encoded or Huffman encoded. This content is required to derive sample values from the partitions of the image.
[0142] According to this embodiment, the decoder can perform all or a subset of the following steps to decode an image from a bitstream:
[0143] 1. Decode at least one non-VCL unit from the bitstream.
[0144] 2. Decode all VCL units of the encoded image from the bitstream, where each VCL unit includes a header portion and a data portion.
[0145] 3. Decode the first new type unit from the bitstream.
[0146] 4. Derive sample values of at least one block of the decoded image by using both information decoded from at least one non-VCL unit and information decoded from the data portion of at least one VCL unit.
[0147] 5. Sample values of at least one block of the decoded image are derived by using information decoded from a first new type unit without using information decoded from the data portion of any VCL unit of the encoded image. In one embodiment, information from any data portion of any VCL unit is not used.
[0148] Here, fixed-length encoding or Huffman encoding can mean that the value of each fixed-length encoded syntax element and Huffman encoded syntax element is represented by an integer number of bits. This contrasts with, for example, arithmetic encoding, which is generally more efficient than fixed-length encoding and Huffman encoding, because in arithmetic encoding, the value of each syntax element is not represented by an integer number of bits, but by one or more states of an arithmetic decoding engine, as is well known in the art. Compared to arithmetic encoding, fixed-length encoded data and Huffman encoded data have lower encoding and decoding complexity.
[0149] Example 3 – Identification of CTUs encoded with non-VCL units
[0150] In one embodiment, a method is provided for identifying a non-VCL CTU in an image by decoding one or more syntax elements from the one or more first non-VCL units.
[0151] In one embodiment, the one or more syntax elements include a flag for each CTU that specifies whether the CTU is a non-VCLCTU or a VCL CTU.
[0152] In another embodiment, CTUs are grouped into CTU sets, and each CTU set contains a flag specifying whether all CTUs in the set are non-VCL CTUs or VCL CTUs. In the non-VCL CTU category, a first syntax element may be present specifying how many CTU sets exist, followed by a flag for each CTU set. Examples of CTU sets that can be constructed using CTU grouping known in the art include sub-pictures, rectangular slices, and tiles.
[0153] This example syntax and semantics illustrates one implementation.
[0154] - Beginning of the example -
[0155] Table 12
[0156]
[0157] `num_ctu_sets` specifies the number of CTU sets present in each picture referencing this parameter set. When it does not exist, the value of `sps_num_subpics_minus1` is inferred to be equal to 0.
[0158] `ctu_set_non_vcl_flag[i]` equal to 1 specifies that all CTUs in the i-th CTU set are non-VCLCTUs. `ctu_set_non_vcl_flag[i]` equal to 0 specifies that all CTUs in the i-th CTU set are VCL CTUs.
[0159] - End of example -
[0160] The syntax shown in Table 12 can be located in a non-VCL cell or in the header portion of a VCL cell.
[0161] In one example of VVC, the `num_ctu_sets` syntax element does not exist. Instead, the CTU set is one of slices, subpicks, or tiles, and the number of CTU sets is set to be equal to the value of `pps_num_slices_in_pic_minus1+1`, the value of `sps_num_subpics_minus1+1`, or the value of the variable `NumTilesInPic`, respectively.
[0162] Example 4 – Exporting Sample Values for Non-VCL CTUs
[0163] In one embodiment, there is a method for deriving sample values of a non-VCL CTU by decoding one or more syntax elements from the one or more first non-VCL units.
[0164] In one embodiment, the sample value for non-VCL CTUs is set to a constant value. In this embodiment, the one or more syntax elements may only specify which CTUs are non-VCL CTUs, and not anything else. The constant value may be equal to half the maximum sample value, for example, 2. (n-1) and 2 (n-1) -1 is one of them, where n is the bit depth of the decoded sample.
[0165] In one embodiment of a non-VCL CTU consisting of three block types (one luma block Y and two chroma blocks U and V), each type of block can use different constant values, such that the Y sample is set to a first constant value, the U sample is set to a second constant value, and the V sample is set to a third constant value, such that the first, second, and third constant values can be different. In one embodiment, the constant values are signaled and derived from syntax elements in the non-VCL unit.
[0166] In one embodiment, a mode for a non-VCL CTU, such as skip / merge, is determined. For this embodiment, the mode may depend on whether the image or slice is intra-frame or inter-frame. One or more decoded images can be determined for each CTU to be used as a reference in, for example, skip / merge mode.
[0167] Here, skip mode can mean that the sample value of the current non-VCL CTU is derived by copying the sample value of the co-addressed CTU of the previously decoded reference picture, which is identified by using one or more syntax elements.
[0168] In the alternative skip mode, the sample value of the current non-VCL CTU is derived by identifying two co-located CTUs from two previously decoded reference images, and for each sample in the current CTU, the corresponding co-located sample value from the co-located CTU is fused. In one embodiment, a sample in the current CTU is derived as equal to (a+b) / 2 or (a+b+1)>>1, where a is the value of the co-located sample from the previously decoded first reference image, b is the value of the co-located sample from the previously decoded second reference image, and >> indicates a right shift.
[0169] Here, the merging pattern can mean that the sample values of the current non-VCL CTU are derived by identifying neighboring CTUs and deriving the sample values of the current non-VCL CTUs using the properties of the neighboring CTUs. Properties can include one or more of the following: identifiers of one or more reference images used for motion compensation, one or more motion vector values, and the pattern of the CTU or the pattern of blocks within the CTU. Neighboring CTUs can be VCL CTUs or non-VCL CTUs.
[0170] The example syntax and semantics below illustrate an embodiment, where num_non_vcl_ctus is a number representing the number of non-VCLCTUs.
[0171] - Beginning of the example -
[0172] Table 13
[0173]
[0174] ctu_mode[i] specifies the mode of the i-th CTU.
[0175] - End of example -
[0176] In one embodiment, a pattern, such as skip / merge, is determined for all CTUs in a CTU set. In this embodiment, one or more syntax elements may specify a pattern, which is then applied to all CTUs in a CTU set. In one embodiment, whether the CTU set contains VCL CTUs or non-VCL CTUs is also determined by the pattern.
[0177] The following syntax illustrates an example of this embodiment.
[0178] - Beginning of the example -
[0179] Table 14
[0180]
[0181] `num_ctu_sets` specifies the number of CTU sets present in each picture referencing this parameter set. When it does not exist, the value of `sps_num_subpics_minus1` is inferred to be equal to 0.
[0182] `ctu_set_mode[i]` equal to 0 specifies that all CTUs in the i-th CTU set are VCL CTUs. `ctu_set_mode[i]` equal to 1 specifies that all CTUs in the i-th CTU set are non-VCL CTUs encoded using the skip mode. `ctu_set_mode[i]` equal to 1 specifies that all CTUs in the i-th CTU set are non-VCL CTUs encoded using the merge mode.
[0183] - End of example -
[0184] Example 5 – Dedicated unit for encoding non-VCL partitions
[0185] In one embodiment, one or more coded non-VCL partitions are signaled within a dedicated coded non-VCL partition unit. This coded non-VCL partition unit may, for example, have a unit type "CODED_NON-VCL_PARTITION_NUT". In one embodiment, the coded non-VCL partition unit is classified as a non-VCL unit as shown below, where a non-VCL unit is a non-VCL NAL unit. In another embodiment, the coded non-VCL partition unit is classified as a VCL unit, but contrary to what this classification implies, it does not contain any VCL data.
[0186] Table 15
[0187]
[0188] In one embodiment, two or more partitions are signaled within an encoded non-VCL partition unit. An encoded non-VCL partition unit may, for example, include the syntax of Examples 2 and 3. In one embodiment, at most one encoded non-VCL partition unit is sent for each image.
[0189] In another embodiment, the bitstream comprises units for each partition of the image, which are encoded VCL partition units if the partition includes VCL data, or encoded non-VCL partition units if the partition does not include VCL data. In one embodiment, an encoded non-VCL partition unit includes a partition ID for each partition in the unit, which identifies the location of each encoded non-VCL partition. There may be only one encoded non-VCL partition in an encoded non-VCL unit, as illustrated in the following example. In another version, additional syntax elements for identifying the location and size of one or more encoded non-VCL partitions are signaled in the encoded non-VCL unit. This may include the vertical position, horizontal position, width, and / or height of the one or more encoded non-VCL partitions, expressed in samples or larger sample units (e.g., CTU). In another embodiment, no syntax elements for identifying the location and / or size of the one or more encoded non-VCL partitions are signaled in the encoded non-VCL partition unit; for example, it may be empty. The size and location of one or more encoded non-VCL partitions can then be derived from the location of the encoded non-VCL partition units in the bitstream by combining the partition structure specified in another non-VCL unit (e.g., parameter set).
[0190] - Beginning of the example -
[0191] Table 16
[0192]
[0193] partition_id specifies a unique ID used to encode non-VCL partitions in the image.
[0194] - End of example -
[0195] Figure 4This is a flowchart illustrating a process 400 performed by a decoder to generate a reconstructed image corresponding to an original image, wherein the original image consists of multiple regions, including at least a first region and a second region. Process 400 may begin at step s402. Step s402 includes obtaining a bitstream. Step s404 includes using the bitstream to generate the reconstructed image. The bitstream includes first coded image sample units corresponding to the first region of the image, and the bitstream also includes indicator information indicating that, for the second region of the image, the bitstream does not include coded image sample units corresponding to the second region of the image.
[0196] Figure 5 This is a flowchart illustrating a process 500 for decoding an encoded image from a bitstream into a decoded image. Process 500 may begin at step s502. Step s502 includes decoding N spatial regions of the encoded image, wherein the N spatial regions comprise the complete decoded image. A first region among the N spatial regions is decoded from a first encoded image sample unit included in the bitstream, and the bitstream includes indicator information indicating that a second region among the N spatial regions is not decoded from any encoded image sample unit in the bitstream.
[0197] Figure 6 This is a flowchart illustrating a process 600 performed by a decoder to generate a reconstructed image corresponding to the original image, wherein the original image consists of multiple regions, including at least a first region and a second region. Process 600 may begin at step s602.
[0198] Step s602 includes obtaining a bitstream generated by the encoder, wherein the bitstream includes a first Video Coding Layer (VCL) Network Abstraction Layer (NAL) unit corresponding to a first region of the image, and the first VCL NAL unit includes a header and a payload.
[0199] Step s604 includes using information contained in the payload of the first VCL NAL unit corresponding to the first region of the image to generate reconstructed sample values corresponding to the first region of the image.
[0200] Step s606 includes generating (s606) a reconstructed sample value corresponding to a second region of the image using only i) predefined sample values and / or ii) reconstructed sample values corresponding to co-located regions of one or more reference images.
[0201] Figure 7 This is a flowchart illustrating a process 700 performed by a decoder to generate a reconstructed image corresponding to the original image, wherein the original image consists of N regions (also called blocks or CTUs), including at least a first region and a second region. Process 700 may begin at step s702.
[0202] Step s702 includes obtaining a bitstream generated by the encoder, wherein the bitstream includes a set of Video Coding Layer (VCL) Network Abstraction Layer (NAL) units corresponding to the original image, wherein the VCL NAL unit set includes a first VCL NAL unit corresponding to a first region of the image, and the first VCL NAL unit includes a header and a payload.
[0203] Step s704 includes using information contained in the payload of the first VCL NAL unit corresponding to the first region of the image to generate reconstructed sample values corresponding to the first region of the image.
[0204] Step s706 includes generating reconstructed sample values corresponding to a second region of the image, wherein: i) no information from any VCL NAL units included in the VCL NAL unit set is used to generate any reconstructed sample values corresponding to a second region of the image; ii) no information derived from any sample values of the second region of the original image is used to generate any reconstructed sample values corresponding to a second region of the image; or iii) each VCL NAL unit in the bitstream includes a slice header and a slice payload, the payload including slice data, wherein no information from any slice payload of any VCL NAL unit in the bitstream is used to generate any reconstructed sample values corresponding to a second region of the image.
[0205] Figure 8 This is a flowchart illustrating a process 800 performed by a decoder to generate a reconstructed image corresponding to an original image, wherein the original image consists of multiple regions, including at least a first region and a second region. Process 800 may begin at step s802. Step s802 includes obtaining a bitstream generated by an encoder, wherein the bitstream includes picture units (PUs) for enabling the decoder to generate the reconstructed image. Step s802 includes using the PUs included in the bitstream to generate the reconstructed image. The PU includes a first coded picture sample unit corresponding to a first region of the image. The PU also includes a second coded picture sample unit corresponding to a second region of the image. The first coded picture sample unit consists of i) a first fixed-length coded or Huffman coded header portion, and ii) a fixed-length coded or Huffman coded data portion consisting of fixed-length coded or Huffman coded picture sample values. The second coded picture sample unit consists of i) a second fixed-length coded or Huffman coded header portion, and ii) an arithmetic-coded data portion consisting of arithmetic-coded picture sample values.
[0206] Figure 9This is a block diagram of an apparatus 900 for implementing encoder 102 or decoder 104 according to some embodiments. When apparatus 900 implements encoder 102, apparatus 900 may be referred to as encoder apparatus; when apparatus 900 implements decoder 104, apparatus 900 may be referred to as decoder apparatus; and when apparatus 900 implements network node 1104, apparatus 900 may be referred to as network node. Figure 9 As shown, network node 900 may include: processing circuitry (PC) 902, which may include one or more processors (P) 955 (e.g., one or more general-purpose microprocessors and / or one or more other processors, such as application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), etc.), which may be housed in a single enclosure or a single data center, or may be geographically distributed (i.e., network node 900 may be a distributed computing device); at least one network interface 948 (e.g., a physical interface or an air interface), which includes a transmitter (Tx) 945 and a receiver (Rx) 947 for enabling network node 900 to send data to and receive data from other nodes connected to network 110 (e.g., an Internet Protocol (IP) network), network interface 948 being physically or wirelessly connected to network 110 (e.g., network interface 948 may be coupled to one or more antennas including those for enabling network node 900 to wirelessly send / receive data); and a storage unit (also referred to as a "data storage system") 908, which may include one or more non-volatile storage devices and / or one or more volatile storage devices. In embodiments where PC 902 includes a programmable processor, a computer-readable storage medium (CRSM) 942 may be provided. CRSM 942 may store a computer program (CP) 943 including computer-readable instructions (CRI) 944. CRSM 942 may be a non-transitory computer-readable medium, such as a magnetic medium (e.g., a hard disk), an optical medium, a storage device (e.g., random access memory, flash memory), etc. In some embodiments, the CRI 944 of the computer program 943 is configured such that, when executed by PC 902, the CRI causes device 900 to perform the steps described herein (e.g., the steps described herein with reference to the flowcharts). In other embodiments, encoder device 900 may be configured to perform the steps described herein without requiring code. That is, for example, PC 902 may consist only of one or more ASICs. Therefore, the features of the embodiments described herein may be implemented in hardware and / or software.
[0207] Overview of various embodiments
[0208] A1. A method executed by a decoder for generating a reconstructed image corresponding to an original image, wherein the original image comprises a plurality of regions including at least a first region and a second region, the method comprising: obtaining a bitstream; and using the bitstream to generate the reconstructed image, wherein the bitstream includes a first coded image sample unit corresponding to the first region of the image, and the bitstream further includes indicator information indicating that for the second region of the image, the bitstream does not include coded image sample units corresponding to the second region of the image.
[0209] A2. The method according to embodiment A1, wherein the encoded image sample unit is a unit comprising: arithmetic-coded encoded sample data; transform coefficients of a block of the image (e.g., CTU); residual information of a block of the image (e.g., CTU); and / or syntax elements of a block of the image (e.g., CTU) specifying whether the block should be decoded using inter-frame prediction or intra-frame prediction.
[0210] A3. The method according to embodiment A1 or A2, wherein the encoded image sample unit is: encoded slice NAL unit, tile group OBU, frame OBU or tile list OBU.
[0211] A4. The method according to embodiments A1, A2 or A3, wherein the bitstream includes picture units (PUs) for enabling the decoder to generate a reconstructed picture, generating a reconstructed picture using the bitstream includes generating a reconstructed picture using the PUs included in the bitstream, the PUs including first coded picture sample units corresponding to a first region of the picture, and indicator information indicating that the PUs do not include coded picture sample units corresponding to a second region.
[0212] A5. The method according to embodiment A4, wherein the PU includes indicator information.
[0213] A6. The method according to any one of embodiments A1 to A5, wherein the first encoded image sample unit is a coded slice network abstraction layer (NAL) unit (also called a VCL NAL unit) of the first region, and the indicator information indicates that the image unit does not include the coded slice NAL unit (VCL NAL unit) of the second region.
[0214] A7. The method according to any one of embodiments A1 to A5, wherein the first region is a first rectangular region (e.g., a first square region) of the original image, the second region is a second rectangular region of the original image, both the first rectangular region and the second rectangular region are completely within a third rectangular region of the image, the bitstream includes a coding slice network abstraction layer (NAL) unit corresponding to the third rectangular region of the image, the coding slice NAL unit corresponding to the third rectangular region of the image includes a first coded image sample unit corresponding to the first rectangular region of the image, and the indicator information indicates that the coding slice NAL unit does not include a coded image sample unit corresponding to the second rectangular region of the image.
[0215] A8. The method according to any one of embodiments A1 to A7, wherein the bit stream includes a unit consisting of a header, and the header includes indicator information.
[0216] A9. The method according to embodiment A8, wherein the unit consisting of the head is a non-VCL NAL unit.
[0217] A10. The method according to any of the foregoing embodiments, wherein the indicator information is included in a non-VCL NAL unit.
[0218] A11. The method according to any of the foregoing embodiments, wherein the indicator information includes a parameter set (e.g., SPS, PPS, or VPS), an Operation Point Information (OPI) NAL unit, a Decoding Capability Information (DCI) NAL unit, an Access Unit Delimiter (AUD) NAL unit, a picture header, an SEI message, a sequence header (e.g., a sequence header OBU), a time delimiter (e.g., a time delimiter OBU), and / or a frame header (e.g., a frame header OBU).
[0219] A12. The method according to any of the foregoing embodiments, wherein the indicator information is of NAL unit type.
[0220] B1. A method for decoding an encoded image from a bitstream into a decoded image, the method comprising: decoding N spatial regions of the encoded image, wherein the N spatial regions comprise a complete decoded image, wherein a first region of the N spatial regions is decoded from a first encoded image sample unit included in the bitstream, and the bitstream includes indicator information indicating that a second region of the N spatial regions is not decoded from any encoded image sample unit in the bitstream.
[0221] B2. The method according to embodiment B1, wherein the encoded image sample unit is a unit comprising: arithmetic-coded encoded sample data; transform coefficients of the block of the image; residual information of the block of the image; and / or syntax elements of the block of the image, the syntax elements specifying whether the block should be decoded using inter-frame prediction or intra-frame prediction.
[0222] B3. The method according to embodiment B1 or B2, wherein the encoded image sample unit is: an encoded slice NAL unit, a tile group OBU, a frame OBU, or a tile list OBU.
[0223] B4. The method according to embodiments B1, B2 or B3, wherein the bitstream includes picture units (PUs), each PU including a first encoded picture sample unit and indicator information, and the indicator information indicating that the PU does not include encoded picture sample units corresponding to a second region in the N spatial regions.
[0224] C1. A method executed by a decoder for generating a reconstructed image corresponding to an original image, wherein the original image comprises a plurality of regions including at least a first region and a second region, the method comprising: obtaining a bitstream generated by an encoder, wherein the bitstream includes a first Video Coding Layer (VCL) Network Abstraction Layer (NAL) unit corresponding to the first region of the image, the first VCL NAL unit including a header and a payload; generating reconstructed sample values corresponding to the first region of the image using information contained in the payload of the first VCL NAL unit corresponding to the first region of the image; and generating reconstructed sample values corresponding to the second region of the image using only i) predefined sample values and / or ii) reconstructed sample values corresponding to co-located regions of one or more reference images.
[0225] D1. A method executed by a decoder for generating a reconstructed image corresponding to an original image, wherein the original image consists of N regions (also referred to as blocks or CTUs) including at least a first region and a second region, the method comprising: obtaining a bitstream generated by an encoder, wherein the bitstream includes a set of Video Coding Layer (VCL) Network Abstraction Layer (NAL) units corresponding to the original image, wherein the VCL NAL unit set includes a first VCL NAL unit corresponding to a first region of the image, the first VCL NAL unit including a header and a payload; generating reconstructed sample values corresponding to the first region of the image using information contained in the payload of the first VCL NAL unit corresponding to the first region of the image; and generating reconstructed sample values corresponding to a second region of the image, wherein information from any VCL NAL unit included in the VCL NAL unit set is not used to generate any reconstructed sample values corresponding to the second region of the image, and information derived from any sample values of the second region of the original image is not used to generate any reconstructed sample values corresponding to the second region of the image, or each VCL NAL unit in the bitstream includes a slice header and a slice payload, the slice payload including slice data, wherein no VCL NAL unit from the bitstream is used. Information about the payload of any slice of the NAL unit is used to generate any reconstructed sample values corresponding to the second region of the image.
[0226] E1. A method executed by a decoder for generating a reconstructed image corresponding to an original image, wherein the original image consists of a plurality of regions (also referred to as blocks or CTUs) including at least a first region and a second region, the method comprising: obtaining a bitstream generated by an encoder, wherein the bitstream includes picture units (PUs) for enabling the decoder to generate the reconstructed image; and using the PUs included in the bitstream to generate the reconstructed image, wherein the PUs include a first coded picture sample unit corresponding to a first region of the image, the PUs include a second coded picture sample unit corresponding to a second region of the image, the first coded picture sample unit comprising: i) a first fixed-length coded or Huffman coded header portion and ii) a fixed-length coded or Huffman coded data portion consisting of fixed-length coded or Huffman coded picture sample values, and the second coded picture sample unit comprising: i) a second fixed-length coded or Huffman coded header portion and ii) an arithmetic coded data portion consisting of arithmetic coded picture sample values.
[0227] E2. The method according to embodiment E1, wherein the method further comprises: decoding a first unit type from a first coded image sample unit, wherein the first unit type indicates (e.g., specifies or suggests) that the data portion of the first coded image sample unit is fixed-length coded or Huffman coded; and decoding a second unit type from a second coded image sample unit, wherein the second unit type indicates that the data portion of the second coded image sample unit is arithmetic coded.
[0228] E3. The method according to embodiment E2, wherein the method further includes decoding a first unit type from a first fixed-length encoded or Huffman encoded header portion and decoding a second unit type from a second fixed-length encoded or Huffman encoded header portion.
[0229] F1. A computer program including instructions that, when executed by a processing circuit of a device, cause the device to perform the method according to any of the above embodiments.
[0230] F2. A carrier of the computer program of embodiment F1, wherein the carrier is one of an electrical signal, an optical signal, a radio signal, and a computer-readable storage medium.
[0231] G1. An apparatus configured to perform any of the methods described in any of the above method embodiments.
[0232] While the terminology in this disclosure is described in accordance with VVC, embodiments of this disclosure are also applicable to any existing or future codecs that may use different but equivalent terminology.
[0233] Furthermore, while various embodiments have been described herein, it should be understood that they are presented by way of example only and not by way of limitation. Therefore, the breadth and scope of this disclosure should not be limited to any of the exemplary embodiments described above. Moreover, any combination of the foregoing elements with all possible variations is included in this disclosure unless otherwise indicated or otherwise explicitly conflicted by the context. As used herein, “a” means “at least one” or “one or more”.
[0234] Furthermore, although the process described above and shown in the accompanying drawings is presented as a series of steps, it is for illustrative purposes only. Therefore, it is conceivable that some steps may be added, some steps may be omitted, the order of steps may be rearranged, and some steps may be performed in parallel.
Claims
1. A method (400) performed by a decoder (102) for generating a reconstructed image corresponding to the original image, wherein, The original image consists of multiple regions, including at least a first region and a second region, and the method includes: Obtain the (s402) bitstream; and The reconstructed image is generated using the bitstream described in (s404), wherein, The bitstream includes a first encoded image sample unit corresponding to a first region of the image, and The bitstream also includes indicator information, which indicates that for the second region of the image, the bitstream does not include the encoded image sample unit corresponding to the second region.
2. The method according to claim 1, wherein, The encoded image sample unit is a unit that includes the following items: The coded sample data that is arithmetically encoded. The transformation coefficients of the blocks in the image, Residual information of the blocks in the image, and / or The syntax elements of the image block specify whether the block should be decoded using inter-frame prediction or intra-frame prediction.
3. The method according to claim 1 or 2, wherein, The encoded image sample unit is: Encoding slice NAL units, OBU (Operational Unit of Tiles) Frame OBU, or OBU (Organizational Unit List) 4. The method according to claim 1, 2 or 3, wherein, The bitstream includes picture units (PUs) for enabling the decoder to generate the reconstructed image. Using the bitstream to generate the reconstructed image includes using the PU included in the bitstream to generate the reconstructed image. The PU includes a first encoded image sample unit corresponding to a first region of the image, and The indicator information indicates that the PU does not include the encoded image sample unit corresponding to the second region.
5. The method according to claim 4, wherein, The PU includes the indicator information.
6. The method according to any one of claims 1 to 5, wherein, The first encoded image sample unit is the NAL unit of the encoded slice network abstraction layer of the first region, and The indicator information indicates that the image unit does not include the coded slice NAL unit of the second region.
7. The method according to any one of claims 1 to 5, wherein, The first region is the first rectangular region of the original image. The second region is the second rectangular region of the original image. Both the first rectangular region and the second rectangular region are completely within the third rectangular region of the image. The bitstream includes Network Abstraction Layer (NAL) units corresponding to the third rectangular region of the image. The coded slice NAL unit corresponding to the third rectangular region of the image includes a first coded image sample unit corresponding to the first rectangular region of the image, and The indicator information indicates that the coded slice NAL unit does not include the coded image sample unit corresponding to the second rectangular region of the image.
8. The method according to any one of claims 1 to 7, wherein, The bitstream includes units consisting of a header, and The header includes the indicator information.
9. The method according to claim 8, wherein, The unit composed of the head is a non-VCL NAL unit.
10. The method according to any one of the preceding claims, wherein, The indicator information is included in non-VCL NAL cells. The indicator information is included in the parameter set, the Operation Point Information (OPI) NAL unit, the Decoding Capability Information (DCI) NAL unit, the Access Unit Delimiter (AUD) NAL unit, the image header, the SEI message, the sequence header, the time delimiter, and / or the frame header, and / or The indicator information is of type NAL unit.
11. A method (500) for decoding an encoded image from a bitstream into a decoded image, the method comprising: Decode the N spatial regions of the encoded image (s502), where, The N spatial regions include the complete decoded image. The first region among the N spatial regions is decoded from the first coded image sample unit included in the bitstream, and The bitstream includes indicator information indicating that a second region among the N spatial regions was not decoded from any coded image sample unit in the bitstream.
12. The method according to claim 11, wherein, An encoded image sample unit is a unit that includes the following items: The coded sample data that is arithmetically encoded. The transformation coefficients of the blocks in the image, Residual information of the blocks in the image, and / or The syntax elements of the image block specify whether the block should be decoded using inter-frame prediction or intra-frame prediction.
13. The method according to claim 11 or 12, wherein, The encoded image sample unit is: Encoding slice NAL units, OBU (Operational Unit of Tiles) Frame OBU, or OBU (Organizational Unit List) 14. The method according to claim 11, 12 or 13, wherein, The bitstream includes image units (PUs). The PU includes a first encoded image sample unit and indicator information, and The indicator information indicates that the PU does not include the encoded image sample unit corresponding to the second region in the N spatial regions.
15. A method (600) performed by a decoder (104) for generating a reconstructed image corresponding to the original image, wherein, The original image consists of multiple regions, including at least a first region and a second region, and the method includes: Obtain (s602) a bitstream generated by the encoder, wherein the bitstream includes a first video coding layer (VCL) network abstraction layer (NAL) unit corresponding to a first region of the image, the first VCL NAL unit including a header and a payload; Using information contained in the payload of the first VCL NAL unit corresponding to the first region of the image, reconstructed sample values corresponding to the first region of the image are generated (s604); and (s606) Reconstructed sample values corresponding to a second region of the image are generated using only i) predefined sample values and / or ii) reconstructed sample values corresponding to co-located regions of one or more reference images.
16. The method according to claim 15, wherein, The predefined sample values are used to generate reconstructed sample values corresponding to the second region of the image.
17. The method according to claim 16, wherein, The predefined sample values are used only to generate reconstructed sample values corresponding to the second region of the image.
18. The method according to claim 15 or 16, wherein, Reconstructed sample values corresponding to a second region of the image are generated using reconstructed sample values corresponding to the co-located regions of the one or more reference images.
19. The method according to claim 15, wherein, Reconstructed sample values corresponding to a second region of the image are generated using only the reconstructed sample values corresponding to the co-located regions of the one or more reference images.
20. A method (700) performed by a decoder (104) for generating a reconstructed image corresponding to the original image, wherein, The original image consists of N regions, including at least a first region and a second region, and the method includes: Obtain (s702) a bitstream generated by the encoder, wherein the bitstream includes a set of Video Coding Layer (VCL) Network Abstraction Layer (NAL) units corresponding to the original image, wherein the set of VCL NAL units includes a first VCL NAL unit corresponding to a first region of the image, and the first VCL NAL unit includes a header and a payload. Using information contained in the payload of the first VCL NAL unit corresponding to the first region of the image, reconstructed sample values corresponding to the first region of the image are generated (s704); and Generate (s706) reconstructed sample values corresponding to the second region of the image, wherein, No information from any VCL NAL units included in the VCL NAL unit set is used to generate any reconstructed sample values corresponding to the second region of the image. No information derived from any sample values of the second region of the original image is used to generate any reconstructed sample values corresponding to the second region of the image, or Each VCL NAL unit in the bitstream includes a slice header and a slice payload, the slice payload including slice data, wherein information from any slice payload of any VCL NAL unit in the bitstream is not used to generate any reconstructed sample values corresponding to a second region of the image.
21. The method according to claim 20, wherein, Information from any VCL NAL units included in the VCL NAL unit set is not used to generate any reconstructed sample values corresponding to the second region of the image.
22. The method according to claim 20, wherein, Information derived from any sample values of the second region of the original image is not used to generate any reconstructed sample values corresponding to the second region of the image.
23. The method of claim 20, wherein, Each VCL NAL unit in the bitstream includes a slice header and a slice payload, the slice payload including slice data, wherein information from any slice payload of any VCL NAL unit in the bitstream is not used to generate any reconstructed sample values corresponding to a second region of the image.
24. A method (800) performed by a decoder (104) for generating a reconstructed image corresponding to the original image, wherein, The original image consists of multiple regions, including at least a first region and a second region, and the method includes: Obtain (s802) a bitstream generated by the encoder, wherein the bitstream includes picture units PU for enabling the decoder to generate the reconstructed image; and The reconstructed image is generated using the PU included in the bitstream described in (s804), wherein, The PU includes a first encoded image sample unit corresponding to a first region of the image. The PU includes a second encoded image sample unit corresponding to the second region of the image. The first encoded image sample unit consists of the following parts: i) a first fixed-length encoded or Huffman encoded header portion, and ii) a fixed-length encoded or Huffman encoded data portion consisting of fixed-length encoded or Huffman encoded image sample values. The second encoded image sample unit consists of the following parts: i) a second fixed-length encoded or Huffman encoded header part, and ii) an arithmetic encoded data part consisting of arithmetic encoded image sample values.
25. The method according to claim 24, wherein, The method further includes: Decode the first unit type from the first coded image sample unit, wherein the first unit type indicates that the data portion of the first coded image sample unit is fixed-length encoded or Huffman encoded; and Decode the second unit type from the second encoded image sample unit, wherein the second unit type indicates that the data portion of the second encoded image sample unit is arithmetic encoded.
26. The method of claim 25, wherein, The method further includes decoding the first unit type from a first fixed-length encoded or Huffman encoded header portion and decoding the second unit type from a second fixed-length encoded or Huffman encoded header portion.
27. A computer program (943) comprising instructions (944) that, when executed by a processing circuit (902) of a device (900), cause the device to perform the method according to any one of claims 1 to 26.
28. A decoder (104) for generating a reconstructed image corresponding to the original image, wherein, The original image consists of multiple regions, including at least a first region and a second region, and the decoding is configured as follows: Obtain the (s402) bitstream; and The reconstructed image is generated using the bitstream described in (s404), wherein, The bitstream includes a first encoded image sample unit corresponding to the first region of the image, and The bitstream also includes indicator information, which indicates that for the second region of the image, the bitstream does not include the encoded image sample unit corresponding to the second region.
29. The decoder according to claim 28, wherein, The decoder is also configured to perform the method according to any one of claims 2 to 10.
30. A decoder (104) for decoding an encoded image from a bitstream into a decoded image, the decoding being configured to: Decode the N spatial regions of the encoded image (s502), where, The N spatial regions include the complete decoded image. The first region among the N spatial regions is decoded from the first coded image sample unit included in the bitstream, and The bitstream includes indicator information indicating that a second region among the N spatial regions was not decoded from any coded image sample unit in the bitstream.
31. The decoder according to claim 30, wherein, The decoder is also configured to perform the method according to any one of claims 12 to 14.
32. A decoder (104) for generating a reconstructed image corresponding to the original image, wherein, The original image consists of multiple regions, including at least a first region and a second region, and the decoder is configured to: Obtain (s602) a bitstream generated by the encoder, wherein the bitstream includes a first video coding layer (VCL) network abstraction layer (NAL) unit corresponding to a first region of the image, the first VCL NAL unit including a header and a payload; Using information contained in the payload of the first VCL NAL unit corresponding to the first region of the image, reconstructed sample values corresponding to the first region of the image are generated (s604); and (s606) Reconstructed sample values corresponding to a second region of the image are generated using only i) predefined sample values and / or ii) reconstructed sample values corresponding to co-located regions of one or more reference images.
33. The decoder according to claim 32, wherein, The decoder is also configured to perform the method according to any one of claims 16 to 19.
34. A decoder (104) for generating a reconstructed image corresponding to the original image, wherein, The original image consists of N regions, including at least a first region and a second region, and the decoder is configured as follows: Obtain (s702) a bitstream generated by the encoder, wherein the bitstream includes a set of Video Coding Layer (VCL) Network Abstraction Layer (NAL) units corresponding to the original image, wherein the set of VCL NAL units includes a first VCL NAL unit corresponding to a first region of the image, and the first VCL NAL unit includes a header and a payload. Using information contained in the payload of the first VCL NAL unit corresponding to the first region of the image, reconstructed sample values corresponding to the first region of the image are generated (s704); and Generate (s706) reconstructed sample values corresponding to the second region of the image, wherein, No information from any VCL NAL units included in the VCL NAL unit set is used to generate any reconstructed sample values corresponding to the second region of the image. No information derived from any sample values of the second region of the original image is used to generate any reconstructed sample values corresponding to the second region of the image, or Each VCL NAL unit in the bitstream includes a slice header and a slice payload, the slice payload including slice data, wherein information from any slice payload of any VCL NAL unit in the bitstream is not used to generate any reconstructed sample values corresponding to a second region of the image.
35. The decoder according to claim 34, wherein, The decoder is also configured to perform the method according to any one of claims 21 to 23.
36. A decoder (104) for generating a reconstructed image corresponding to the original image, wherein, The original image consists of multiple regions, including at least a first region and a second region, and the decoder is configured to: Obtain (s802) a bitstream generated by the encoder, wherein the bitstream includes picture units PU for enabling the decoder to generate the reconstructed image; and The reconstructed image is generated using the PU included in the bitstream described in (s804), wherein, The PU includes a first encoded image sample unit corresponding to a first region of the image. The PU includes a second encoded image sample unit corresponding to the second region of the image. The first encoded image sample unit consists of the following parts: i) a first fixed-length encoded or Huffman encoded header portion, and ii) a fixed-length encoded or Huffman encoded data portion consisting of fixed-length encoded or Huffman encoded image sample values. The second encoded image sample unit consists of the following parts: i) a second fixed-length encoded or Huffman encoded header part, and ii) an arithmetic encoded data part consisting of arithmetic encoded image sample values.
37. The decoder according to claim 36, wherein, The decoder is also configured to perform the method according to any one of claims 25 to 26.