Method, device, storage medium and program product for encoding or decoding video
By modifying the syntax elements of brick/band segmentation in the video encoding standard, the limitations of improving encoding efficiency in the prior art are solved, and a more efficient video stream encoding and decoding process is achieved.
Patent Information
- Application Number
- CN202180031987.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-05-21
- Filing Date
- 2021-05-21
- Publication Date
- 2025-08-12
- Estimated Expiration
- 2041-05-21
AI Technical Summary
The existing video encoding standards have room for improvement in encoding efficiency in efficient video encoding (VVC/H.266), especially in terms of unnecessary constraints and redundancy in the grammatical elements related to brick/band segmentation, which affects the encoding performance.
Improve the consistency and efficiency of the encoding and decoding process by modifying the SPS and PPS syntax elements related to brick/band segmentation in the video encoding standard and removing unnecessary constraints or conditional indications.
It realizes higher video stream encoding and decoding efficiency, and improves the compression performance of video encoding standards.
Smart Images

Figure CN115486074B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This disclosure claims priority to U.S. Provisional Application No. 63 / 028,111, filed May 21, 2020, which is incorporated herein by reference in its entirety. Technical Field
[0003] The present disclosure relates generally to video data processing and, more particularly, to image segmentation. Background Art
[0004] A video is a set of static images (or "frames") that capture visual information. To reduce storage memory and transmission bandwidth, videos can be compressed before storage or transmission, and then decompressed before display. The compression process is often called encoding, and the decompression process is often called decoding. There are various video coding formats that use standardized video coding techniques, the most common of which are based on prediction, transform, quantization, entropy coding, and loop filtering. Video coding standards, such as the High Efficiency Video Coding (HEVC / H.265) standard, the Versatile Video Coding (VVC / H.266) standard, and the Audio Video Coding Standard (AVS), specify specific video coding formats and are developed by standardization organizations. As more and more advanced video coding technologies are adopted in video standards, the coding efficiency of new video coding standards is also increasing. Summary of the Invention
[0005] Embodiments of the present disclosure provide a method for encoding or decoding a video. The method includes encoding or decoding, in a plurality of picture parameter sets (PPSs) associated with a picture of a coded layer video sequence (CLVS), corresponding first PPS flags, the first PPS flags indicating whether the picture is allowed to be split into a plurality of tiles or slices. In the first PPS, the corresponding first PPS flag having a first value indicates that the first picture of the CLVS is not split, and in the second PPS, another corresponding first PPS flag having a second value different from the first value indicates that the second picture of the CLVS is allowed to be split.
[0006] In some embodiments, a method for encoding or decoding video includes: determining whether an image is partitioned into multiple tiles or strips; and in response to determining that the image is allowed to be partitioned into multiple tiles or strips, encoding or decoding a first flag associated with a strip mode applied to an image that references the PPS in a picture parameter set (PPS), wherein: when a raster scan strip mode is applied to partition the image, encoding or decoding the first flag having a first value; or, when a rectangular strip mode is applied to partition the image, encoding or decoding the first flag having a second value different from the first value.
[0007] In some embodiments, a method for decoding a video includes: encoding or decoding a first PPS flag in a picture parameter set (PPS) associated with at least one picture of a coded layer video sequence (CLVS), the first PPS flag indicating whether the associated picture is allowed to be split into multiple tiles or strips, wherein the first PPS flag being equal to a first value indicates that the associated picture is not split, or the first PPS flag being equal to a second value different from the first value indicates that the associated picture is allowed to be split; and, when the first PPS flag is equal to the first value, skipping encoding or decoding a second PPS flag in the PPS, the second PPS flag indicating whether each sub-picture of the associated picture includes a single rectangular strip, and determining that the value of the second PPS flag is equal to a third value, wherein the second PPS flag being equal to the third value indicates that each sub-picture of the associated picture includes a single rectangular strip.
[0008] An embodiment of the present disclosure provides a device, including a memory configured to store instructions; and one or more processors configured to execute the instructions so that the device performs any of the above methods.
[0009] An embodiment of the present disclosure provides a non-transitory computer-readable storage medium storing a set of instructions executable by one or more processors of a device, causing the device to perform the operations of any of the above methods.
[0010] An embodiment of the present disclosure provides a device for encoding or decoding a video, comprising: a first processing module for encoding or decoding a corresponding first picture parameter set (PPS) in a plurality of picture parameter sets (PPSs) associated with an image of a coding layer video sequence (CLVS), wherein the corresponding first PPS flag indicates whether the image is allowed to be segmented into a plurality of bricks or strips; a second processing module for encoding or decoding a corresponding first PPS flag having a first value in the first PPS, indicating that the first image of the CLVS is not segmented, and another corresponding first PPS flag having a second value different from the first value in the second PPS, indicating that the second image of the CLVS is allowed to be segmented.
[0011] An embodiment of the present disclosure provides a computer program product, including a computer program, wherein the computer program implements any of the above methods when executed by a processor. BRIEF DESCRIPTION OF THE DRAWINGS
[0012]
[0014] Embodiments and aspects of the present disclosure are described in the following detailed description and accompanying drawings.The various features shown in the drawings are not drawn to scale.
[0013] Figure 1 is a schematic diagram illustrating the structure of an example video sequence consistent with some embodiments of the present disclosure.
[0014] Figure 2A is a schematic diagram illustrating an exemplary encoding process of a hybrid video coding system consistent with an embodiment of the present disclosure.
[0015] Figure 2B is a schematic diagram illustrating another exemplary encoding process of a hybrid video coding system consistent with an embodiment of the present disclosure.
[0016] Figure 3A is a schematic diagram illustrating an exemplary decoding process of a hybrid video coding system consistent with an embodiment of the present disclosure.
[0017] Figure 3B is a schematic diagram illustrating another exemplary decoding process of a hybrid video coding system consistent with an embodiment of the present disclosure.
[0018] Figure 4 is a block diagram illustrating an exemplary apparatus for encoding or decoding video consistent with some embodiments of the present disclosure.
[0019] Figure 5 is a schematic diagram of an exemplary bitstream consistent with some embodiments of the present disclosure.
[0020] Figure 6 is a schematic diagram illustrating the structure of an image segmented into blocks consistent with some embodiments of the present disclosure.
[0021] Figure 7 is a schematic diagram illustrating the structure of an image segmented in a raster scan striping pattern consistent with some embodiments of the present disclosure.
[0022] Figure 8 is a schematic diagram illustrating the structure of an image segmented in a rectangular strip pattern consistent with some embodiments of the present disclosure.
[0023] Figure 9 is a schematic diagram illustrating the structure of an image segmented in a rectangular strip pattern consistent with some embodiments of the present disclosure.
[0024] Figure 10 is a schematic diagram illustrating the structure of an image segmented in a rectangular strip pattern consistent with some embodiments of the present disclosure.
[0025] Figure 11 An exemplary encoding syntax table of a portion of the SPS syntax structure consistent with some embodiments of the present disclosure is shown.
[0026] Figure 12 An exemplary coding syntax table showing a portion of the PPS syntax structure consistent with some embodiments of the present disclosure is shown.
[0027] Figure 13-23Exemplary pseudo code consistent with some embodiments of the present disclosure is shown.
[0028] Figure 24 An exemplary encoding syntax table of a portion of the SPS syntax structure consistent with some embodiments of the present disclosure is shown.
[0029] Figure 25 Another exemplary encoding syntax table of a portion of the SPS syntax structure consistent with some embodiments of the present disclosure is shown.
[0030] Figure 26 Another exemplary encoding syntax table of a portion of the SPS syntax structure consistent with some embodiments of the present disclosure is shown.
[0031] Figures 27A-27C A flowchart of an exemplary video encoding or decoding method consistent with some embodiments of the present disclosure is shown.
[0032] Figure 28 An exemplary modified coding syntax table of a portion of the PPS syntax structure consistent with some embodiments of the present disclosure is shown.
[0033] Figure 29 A flowchart of an exemplary video encoding or decoding method consistent with some embodiments of the present disclosure is shown.
[0034] Figure 30 An exemplary modified coding syntax table of a portion of the PPS syntax structure consistent with some embodiments of the present disclosure is shown.
[0035] Figure 31A and Figure 31B Shows some embodiments consistent with the present disclosure Figure 29 Exemplary detailed operations of the steps in the method.
[0036] Figure 32 A flowchart of an exemplary video encoding or decoding method consistent with some embodiments of the present disclosure is shown.
[0037] Figure 33 and Figure 34 Exemplary pseudo code consistent with some embodiments of the present disclosure is shown. DETAILED DESCRIPTION
[0038] Reference will now be made in detail to exemplary embodiments, examples of which are illustrated in the accompanying drawings. The following description refers to the accompanying drawings, and unless otherwise specified, the same numbers in different drawings represent the same or similar elements. The embodiments set forth in the following description of the exemplary embodiments do not represent all embodiments consistent with the present disclosure. Instead, they are merely examples of devices and methods consistent with aspects related to the present disclosure as described in the appended claims. Specific aspects of the present disclosure are described in more detail below. In the event of a conflict with terms and / or definitions incorporated by reference, the terms and definitions provided herein shall prevail.
[0039] The Joint Video Experts Group (JVET) of the ITU-T Video Coding Experts Group (ITU-T VCEG) and the ISO / IEC Moving Picture Experts Group (ISO / IEC MPEG) is currently developing the Versatile Video Coding (VVC / H.266) standard. The VVC standard aims to double the compression efficiency of its predecessor, the High Efficiency Video Coding (HEVC / H.265) standard. In other words, VVC aims to achieve the same subjective quality as HEVC / H.265 using half the bandwidth.
[0040] To achieve the same subjective quality as HEVC / H.265 using half the bandwidth, JVET has been developing technologies beyond HEVC using the Joint Exploration Model (JEM) reference software. As coding technologies are incorporated into JEM, JEM achieves higher coding performance than HEVC.
[0041] The VVC standard has been recently developed and continues to include more coding techniques that provide better compression performance. VVC is based on the same hybrid video coding system used in modern video compression standards such as HEVC, H.264 / AVC, MPEG2, H.263, etc.
[0042] A video is a set of static images (or "frames") arranged in time to store visual information. A video capture device (e.g., a camera) can be used to capture and store these images in time, and a video playback device (e.g., a television, computer, smartphone, tablet, video player, or any end-user terminal with a display function) can be used to display these images in time. Furthermore, in some applications, the video capture device can transmit the captured video to a video playback device (e.g., a computer with a monitor) in real time, such as for monitoring, conferencing, or live broadcasting.
[0043] To reduce the storage space and transmission bandwidth required for such applications, video can be compressed before storage and transmission, and decompressed before display. Compression and decompression can be implemented in software executed by one or more processors (e.g., one or more processors of a general-purpose computer) or dedicated hardware. The module used for compression is often called an "encoder," and the module used for decompression is often called a "decoder." Encoders and decoders can be implemented in any of a variety of suitable hardware, software, or combinations thereof. For example, hardware implementations of encoders and decoders can include circuits such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, or any combination thereof. Software implementations of encoders and decoders can include program code, computer-executable instructions, firmware, or any suitable computer-implemented algorithm or process fixed in a computer-readable medium. Video compression and decompression can be implemented using various algorithms or standards, such as MPEG-1, MPEG-2, MPEG-4, the H.26x series, and others. In some applications, a codec can decompress video using a first coding standard and recompress the decompressed video using a second coding standard. In this case, the codec can be referred to as a "transcoder."
[0044] Video encoding processes identify and retain useful information that can be used to reconstruct an image, while ignoring information that is unimportant for reconstruction. If the ignored, unimportant information cannot be fully reconstructed, the encoding process is called "lossy." Otherwise, it is called "lossless." Most encoding processes are lossy, a trade-off made to reduce required storage space and transmission bandwidth.
[0045] Useful information about the image being encoded (called the "current image") includes changes relative to a reference image (e.g., a previously encoded and reconstructed image). Such changes can include changes in pixel position, brightness, or color, with position changes being of particular interest. A change in the position of a group of pixels representing an object can reflect the object's motion between the reference image and the current image.
[0046] A picture that is encoded without reference to another picture (i.e., it is its own reference picture) is called an "I-picture." If some or all blocks in a picture (e.g., blocks that typically represent a portion of a video picture) are predicted using intra-frame prediction or inter-frame prediction (e.g., uni-prediction) using one reference picture, the picture is called a "P-picture." If at least one block in a picture is predicted using two reference pictures (e.g., bi-directional prediction), the picture is called a "B-picture."
[0047] In the present disclosure, the SPS and PPS syntax elements related to brick / strip segmentation can be modified to remove unnecessary constraints or determine the values of syntax elements that are conditionally indicated, thereby achieving higher encoding performance. By adopting these modifications, the consistency and efficiency of the encoding and decoding process of the video stream can be improved.
[0048] Figure 1 The structure of an example video sequence 100 according to some embodiments of the present disclosure is shown. The video sequence 100 can be live video or captured and archived video. The video sequence 100 can be real video, computer-generated video (e.g., computer game video), or a combination thereof (e.g., real video with augmented reality effects). The video sequence 100 can be input from a video capture device (e.g., a camera), a video archive containing previously captured video (e.g., a video file stored on a storage device), or a video feed interface (e.g., a video broadcast transceiver) that receives video from a video content provider.
[0049] like Figure 1 As shown, video sequence 100 may include a series of images arranged in time along a time axis, including images 102, 104, 106, and 108. Images 102-106 are consecutive, and there may be more images between images 106 and 108. Figure 1 , picture 102 is an I-picture, and its reference picture is picture 102 itself. Picture 104 is a P-picture, and its reference picture is picture 102, as indicated by the arrow. Picture 106 is a B-picture, and its reference pictures are pictures 104 and 108, as indicated by the arrow. In some embodiments, the reference picture of a picture (e.g., picture 104) may not be immediately before or after the picture. For example, the reference picture of picture 104 may be the picture before picture 102. It should be noted that the reference pictures of pictures 102-106 are only examples, and the present disclosure does not limit the embodiments of the reference pictures to Figure 1 The example shown in .
[0050] Typically, due to the computational complexity of the encoding and decoding tasks, video codecs do not encode or decode the entire image at once. Instead, they can divide the image into basic segments and encode or decode the image segment by segment. Such basic segments are referred to as basic processing units (BPUs) in this disclosure. For example, Figure 1Structure 110 in shows an example structure of an image (e.g., any of images 102-108) of video sequence 100. In structure 110, the image is divided into 4×4 basic processing units, whose boundaries are shown as dashed lines. In some embodiments, the basic processing unit may be referred to as a "macroblock" in some video coding standards (e.g., the MPEG family, H.261, H.263, or H.264 / AVC), or as a "coding tree unit" (CTU) in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing unit in an image may have variable sizes, such as 128×128, 64×64, 32×32, 16×16, 4×8, 16×32, or any arbitrary shape and size of pixels. The size and shape of the basic processing unit may be selected for an image based on a balance between coding efficiency and the level of detail to be maintained in the basic processing unit.
[0051] A basic processing unit may be a logical unit that may include a set of different types of video data stored in a computer memory (e.g., in a video frame buffer). For example, a basic processing unit for a color image may include a luma component (Y) representing achromatic luminance information, one or more chroma components (e.g., Cb and Cr) representing color information, and associated syntax elements, where the luma component and the chroma components may have the same size basic processing unit. In some video coding standards (e.g., H.265 / HEVC or H.266 / VVC), the luma and chroma components may be referred to as "coding tree blocks" ("CTBs"). Any operation performed on a basic processing unit may be repeated for each of its luma and chroma components.
[0052] Video encoding has multiple stages of operation, examples of which are given in Figures 2A-2B and Figures 3A-3BAs shown in . For each stage, the size of the basic processing unit may still be too large to be processed, so it can be further divided into segments referred to as "basic processing sub-units" in this disclosure. In some embodiments, the basic processing sub-unit may be called a "block" in some video coding standards (e.g., MPEG series, H.261, H.263 or H.264 / AVC), or a "coding unit" ("CU") in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The size of the basic processing sub-unit can be the same as or smaller than the basic processing unit. Similar to the basic processing unit, the basic processing sub-unit is also a logical unit, which may include a set of different types of video data (e.g., Y, Cb, Cr and related syntax elements) stored in a computer memory (e.g., in a video frame buffer). Any operation performed on the basic processing sub-unit can be repeated for each of its luminance and chrominance components. It should be noted that this division can be further performed according to processing needs. It should also be noted that different stages can use different schemes to divide the basic processing units.
[0053] For example, in the mode decision phase (an example of which is in Figure 2B ), the encoder can decide what prediction mode to use for a basic processing unit (e.g., intra-image prediction or inter-image prediction), but the basic processing unit may be too large to make such a decision. The encoder can split the basic processing unit into multiple basic processing sub-units (e.g., CUs in H.265 / HEVC or H.266 / VVC) and determine the prediction type for each individual basic processing sub-unit.
[0054] For another example, in the prediction phase (the example is Figures 2A-2B ), the encoder can perform prediction operations at the basic processing sub-unit (e.g., CU) level. However, in some cases, the basic processing sub-unit may still be too large to process. The encoder can further split the basic processing sub-unit into smaller segments (e.g., called "prediction blocks" or "PBs" in H.265 / HEVC or H.266 / VVC), at which prediction operations can be performed.
[0055] For another example, in the transformation phase (the example is Figures 2A-2B), the encoder can perform transform operations on the residual basic processing sub-unit (e.g., CU). However, in some cases, the basic processing sub-unit may still be too large to process. The encoder can further split the basic processing sub-unit into smaller segments (e.g., called "transform blocks" or "TBs" in H.265 / HEVC or H.266 / VVC), at the level of which transform operations can be performed. It should be noted that the partitioning scheme for the same basic processing sub-unit can be different in the prediction stage and the transform stage. For example, in H.265 / HEVC or H.266 / VVC, the prediction blocks and transform blocks of the same CU can have different sizes and numbers.
[0056] exist Figure 1 In the structure 110, the basic processing unit 112 is further divided into 3×3 basic processing sub-units, whose boundaries are shown by dotted lines. Different basic processing units of the same image can be divided into basic processing sub-units of different schemes.
[0057] In some implementations, in order to provide parallel processing capabilities and error resilience for video encoding and decoding, an image can be divided into multiple regions for processing, so that for one region of the image, the encoding or decoding process can be independent of information from any other region of the image. In other words, each region of the image can be processed independently. By doing so, the codec can process different regions of the image in parallel, thereby improving coding efficiency. In addition, when the data of one region is damaged during processing or lost during network transmission, the codec can correctly encode or decode other regions of the same image without relying on the damaged or lost data, thereby providing error resilience. In some video coding standards, an image can be divided into different types of regions. For example, H.265 / HEVC and H.266 / VVC provide two types of regions: "slices" and "tiles." It should also be noted that different images in the video sequence 100 can have different partitioning schemes for dividing the image into multiple regions.
[0058] For example, in Figure 1 In FIG, the structure 110 is divided into three regions 114, 116, and 118, whose boundaries are shown as solid lines within the structure 110. Region 114 includes four basic processing units. Each of regions 116 and 118 includes six basic processing units. It should be noted that Figure 1 The basic processing units, basic processing sub-units, and regions of the structure 110 are merely examples, and the present disclosure does not limit the embodiments thereof.
[0059] Figure 2A Schematic diagram of an example encoding process 200A consistent with an embodiment of the present disclosure is shown. For example, the encoding process 200A may be performed by an encoder. Figure 2AAs shown, the encoder may encode the video sequence 202 into a video bitstream 228 according to process 200A. Figure 1 Similar to the video sequence 100 in FIG. 2 , the video sequence 202 may include a set of images (referred to as “original images”) arranged in time sequence. Figure 1 In the structure 110 in FIG. 1 , each original image of the video sequence 202 can be divided by the encoder into basic processing units, basic processing sub-units, or regions for processing. In some embodiments, the encoder can perform process 200A on each original image of the video sequence 202 at the basic processing unit level. For example, the encoder can perform process 200A in an iterative manner, where the encoder can encode a basic processing unit in one iteration of process 200A. In some embodiments, the encoder can perform process 200A in parallel on regions (e.g., regions 114-118) of each original image of the video sequence 202.
[0060] exist Figure 2A In the embodiment of the present invention, the encoder may feed the basic processing unit of the original image of the video sequence 202 (referred to as the "original BPU") to the prediction stage 204 to generate prediction data 206 and predicted BPU 208. The encoder may subtract the predicted BPU 208 from the original BPU to generate a residual BPU 210. The encoder may feed the residual BPU 210 to the transform stage 212 and the quantization stage 214 to generate quantized transform coefficients 216. The encoder may feed the prediction data 206 and the quantized transform coefficients 216 to the binary encoding stage 226 to generate a video bitstream 228. The components 202, 204, 206, 208, 210, 212, 214, 216, 226 and 228 may be referred to as the "forward path". During process 200A, after the quantization stage 214, the encoder may feed the quantized transform coefficients 216 to the inverse quantization stage 218 and the inverse transform stage 220 to generate a reconstructed residual BPU 222. The encoder can add the reconstructed residual BPU 222 to the predicted BPU 208 to generate a prediction reference 224, which is used in the prediction phase 204 of the next iteration of process 200A. Components 218, 220, 222, and 224 of process 200A can be referred to as a "reconstruction path." The reconstruction path can be used to ensure that the encoder and decoder use the same reference data for prediction.
[0061] The encoder can iteratively perform process 200A to encode each original BPU of the original image (in the forward path) and generate a prediction reference 224 for encoding the next original BPU of the original image (in the reconstruction path). After encoding all the original BPUs of the original image, the encoder can continue to encode the next image in the video sequence 202.
[0062] Referring to process 200A, an encoder may receive a video sequence generated by a video capture device (e.g., a camera) 202. As used herein, the term "receive" may refer to any action of receiving, inputting, acquiring, retrieving, obtaining, reading, accessing, or in any way inputting data.
[0063] In the prediction phase 204, in the current iteration, the encoder may receive the original BPU and the prediction reference 224 and perform a prediction operation to generate prediction data 206 and a predicted BPU 208. The prediction reference 224 may be generated from a reconstruction path of a previous iteration of the process 200A. The purpose of the prediction phase 204 is to reduce information redundancy by extracting the prediction data 206, which can be used to reconstruct the original BPU into the predicted BPU 208 from the prediction data 206 and the prediction reference 224.
[0064] Ideally, the predicted BPU 208 can be the same as the original BPU. However, due to non-ideal prediction and reconstruction operations, the predicted BPU 208 is usually slightly different from the original BPU. To record this difference, after generating the predicted BPU 208, the encoder can subtract it from the original BPU to generate a residual BPU 210. For example, the encoder can subtract the value of the pixel of the predicted BPU 208 (e.g., grayscale value or RGB value) from the value of the corresponding pixel of the original BPU. Each pixel of the residual BPU 210 can have a residual value, which is the result of this subtraction between the corresponding pixel of the original BPU and the predicted BPU 208. Compared to the original BPU, the predicted data 206 and the residual BPU 210 can have fewer bits, but they can be used to reconstruct the original BPU without significant quality degradation. Therefore, the original BPU is compressed.
[0065] To further compress the residual BPU 210, in the transform stage 212, the encoder can reduce its spatial redundancy by decomposing the residual BPU 210 into a set of two-dimensional "basis patterns", each of which is associated with a "transform coefficient". The basic patterns can have the same size (e.g., the size of the residual BPU 210). Each basic pattern can represent a frequency-varying (e.g., frequency-varying) component of the residual BPU 210. No basic pattern can be reproduced from any combination (e.g., linear combination) of any other basic patterns. In other words, the decomposition can decompose the variation of the residual BPU 210 into the frequency domain. This decomposition is similar to the discrete Fourier transform of a function, where the basic patterns are similar to the basis functions of the discrete Fourier transform (e.g., trigonometric functions) and the transform coefficients are similar to the coefficients associated with the basis functions.
[0066] Different transform algorithms can use different basic patterns. Various transform algorithms can be used in the transform stage 212, such as discrete cosine transform, discrete sine transform, etc. The transform in the transform stage 212 is reversible. That is, the encoder can restore the residual BPU 210 by performing the inverse operation of the transform (called "inverse transform"). For example, to restore the pixels of the residual BPU 210, the inverse transform can be to multiply the values of the corresponding pixels of the basic pattern by the corresponding correlation coefficients and add the products to produce a weighted sum. For video coding standards, both the encoder and the decoder can use the same transform algorithm (and therefore the same basic pattern). Therefore, the encoder may only record the transform coefficients, and the decoder can reconstruct the residual BPU 210 from these coefficients without receiving the basic pattern from the encoder. Compared to the residual BPU 210, the transform coefficients may have fewer bits, but they can be used to reconstruct the residual BPU 210 without significantly reducing the quality. Therefore, the residual BPU 210 is further compressed.
[0067] The encoder can further compress the transform coefficients during the quantization stage 214. During the transform process, different basis patterns can represent different frequencies of change (e.g., the frequency of changes in brightness). Because the human eye is generally better at detecting low-frequency changes, the encoder can ignore information about high-frequency changes without significantly degrading decoding quality. For example, during the quantization stage 214, the encoder can generate quantized transform coefficients 216 by dividing each transform coefficient by an integer value (called a "quantization scale factor") and rounding the quotient to the nearest integer. After this operation, some transform coefficients of high-frequency basis patterns may be converted to zero, while transform coefficients of low-frequency basis patterns may be converted to smaller integers. The encoder can ignore quantized transform coefficients 216 with zero values, thereby further compressing the transform coefficients. The quantization process is also reversible, where the quantized transform coefficients 216 can be reconstructed into transform coefficients in the inverse operation of quantization (called "inverse quantization").
[0068] Because the encoder ignores the remainder of this division during rounding operations, the quantization stage 214 can be lossy. Generally, the quantization stage 214 can cause the greatest information loss in process 200A. The greater the information loss, the fewer bits may be required for the quantized transform coefficients 216. To achieve different degrees of information loss, the encoder can use different values for the quantization parameter or any other parameter of the quantization process.
[0069] In the binary encoding stage 226, the encoder may encode the prediction data 206 and the quantized transform coefficients 216 using a binary encoding technique (e.g., entropy coding, variable length coding, arithmetic coding, Huffman coding, context-adaptive binary arithmetic coding, or any other lossless or lossy compression algorithm). In some embodiments, in addition to the prediction data 206 and the quantized transform coefficients 216, the encoder may encode other information in the binary encoding stage 226, such as the prediction mode used in the prediction stage 204, the parameters of the prediction operation, the transform type in the transform stage 212, the parameters of the quantization process (e.g., quantization parameters), encoder control parameters (e.g., bitrate control parameters), etc. The encoder may use the output data of the binary encoding stage 226 to generate a video bitstream 228. In some embodiments, the video bitstream 228 may be further packaged for network transmission.
[0070] Referring to the reconstruction path of process 200A, in the inverse quantization stage 218, the encoder may perform inverse quantization on the quantized transform coefficients 216 to generate reconstructed transform coefficients. In the inverse transform stage 220, the encoder may generate a reconstructed residual BPU 222 based on the reconstructed transform coefficients. The encoder may add the reconstructed residual BPU 222 to the predicted BPU 208 to generate a prediction reference 224 to be used in the next iteration of process 200A.
[0071] It should be noted that other variations of process 200A may be used to encode video sequence 202. In some embodiments, the various stages of process 200A may be performed by the encoder in a different order. In some embodiments, one or more stages of process 200A may be combined into a single stage. In some embodiments, a single stage of process 200A may be divided into multiple stages. For example, transform stage 212 and quantization stage 214 may be combined into a single stage. In some embodiments, process 200A may include additional stages. In some embodiments, process 200A may be omitted. Figure 2A one or more stages in a process.
[0072] Figure 2B A schematic diagram of another example encoding process 200B consistent with embodiments of the present disclosure is shown. Process 200B can be modified from process 200A. For example, process 200B can be used by encoders compliant with hybrid video coding standards (e.g., the H.26x series). Compared to process 200A, the forward path of process 200B additionally includes a mode decision stage 230 and divides the prediction stage 204 into a spatial prediction stage 2042 and a temporal prediction stage 2044. The reconstruction path of process 200B additionally includes a loop filter stage 232 and a buffer 234.
[0073] In general, prediction techniques can be divided into two categories: spatial prediction and temporal prediction. Spatial prediction (e.g., intra-image prediction or "intra-frame prediction") can use pixels from one or more coded adjacent BPUs in the same image to predict the current BPU. That is, the prediction reference 224 in spatial prediction can include adjacent BPUs. Spatial prediction can reduce the spatial redundancy inherent in the image. Temporal prediction (e.g., inter-image prediction or "inter-frame prediction") can use regions from one or more coded images to predict the current BPU. That is, the prediction reference 224 in temporal prediction can include coded images. Temporal prediction can reduce the temporal redundancy inherent in the image.
[0074] Referring to process 200B, in the forward path, the encoder performs prediction operations in a spatial prediction stage 2042 and a temporal prediction stage 2044. For example, in the spatial prediction stage 2042, the encoder may perform intra-frame prediction. For an original BPU of the picture being encoded, the prediction reference 224 may include one or more neighboring BPUs that have been encoded (in the forward path) and reconstructed (in the reconstruction path) in the same picture. The encoder may generate a predicted BPU 208 by extrapolating the neighboring BPUs. Extrapolation techniques may include, for example, linear extrapolation or interpolation, polynomial extrapolation or interpolation, and the like. In some embodiments, the encoder may perform extrapolation at the pixel level, such as by extrapolating the value of the corresponding pixel for each pixel of the predicted BPU 208. The neighboring BPUs used for extrapolation may be located in various directions relative to the original BPU, such as vertically (e.g., on top of the original BPU), horizontally (e.g., to the left of the original BPU), diagonally (e.g., below left, below right, above left, or above right of the original BPU), or in any direction defined in the video coding standard being used. For intra prediction, the prediction data 206 may include, for example, the location (eg, coordinates) of the used neighboring BPUs, the size of the used neighboring BPUs, extrapolation parameters, the direction of the used neighboring BPUs relative to the original BPU, and the like.
[0075] For another example, during the temporal prediction stage 2044, the encoder may perform inter-frame prediction. For the original BPU of the current image, the prediction reference 224 may include one or more images (referred to as "reference images") that have been encoded (in the forward path) and reconstructed (in the reconstruction path). In some embodiments, the reference images may be encoded and reconstructed on a BPU-by-BPU basis. For example, the encoder may add the reconstructed residual BPU 222 to the predicted BPU 208 to generate a reconstructed BPU. When all reconstructed BPUs for the same image are generated, the encoder may generate the reconstructed image as the reference image. The encoder may perform a "motion estimation" operation to search for a matching region within a range of the reference image (referred to as a "search window"). The position of the search window in the reference image may be determined based on the position of the original BPU in the current image. For example, the search window may be centered at a location in the reference image with the same coordinates as the original BPU in the current image and may extend outward by a predetermined distance. When the encoder identifies an area within the search window that is similar to the original BPU (e.g., by using a pixel recursive algorithm, a block matching algorithm, etc.), the encoder may determine such an area as a matching region. The matching region may have a different size (e.g., smaller, equal, larger, or different in shape) than the original BPU. Since the reference image and the current image are temporally separated on the time axis (e.g., Figure 1 ), so the matching area can be considered to "move" to the position of the original BPU over time. The encoder can record the direction and distance of this movement as a "motion vector". Figure 1 When the encoder searches for matching regions for each reference image and determines its associated motion vector, the encoder may assign weights to the pixel values of the matching regions of the respective matching reference images.
[0076] Motion estimation can be used to identify various types of motion, such as translation, rotation, scaling, etc. For inter-frame prediction, the prediction data 206 may include, for example, the location (e.g., coordinates) of the matching region, the motion vector associated with the matching region, the number of reference images, weights associated with the reference images, etc.
[0077] To generate the predicted BPU 208, the encoder may perform a "motion compensation" operation. Motion compensation may be used to reconstruct the predicted BPU 208 based on the prediction data 206 (e.g., motion vectors) and the prediction reference 224. For example, the encoder may move a matching area of the reference image according to the motion vector, where the encoder may predict the original BPU of the current image. When multiple reference images are used (e.g., Figure 1The encoder may move the matching region of the reference image based on the motion vectors and average pixel values of the matching regions. In some embodiments, if the encoder has assigned weights to the pixel values of the matching regions of the respective matching reference images, the encoder may add the weighted sum of the pixel values of the moved matching regions.
[0078] In some embodiments, inter-frame prediction can be unidirectional or bidirectional. Unidirectional inter-frame prediction can use one or more reference pictures in the same temporal direction relative to the current picture. For example, Figure 1 The picture 104 in is a unidirectional inter-frame predicted picture, where the reference picture (e.g., picture 102) precedes the picture 104. Bidirectional inter-frame prediction can use one or more reference pictures in both temporal directions relative to the current picture. For example, Figure 1 Picture 106 in is a bidirectional inter-predicted picture, where reference pictures (eg, pictures 104 and 108 ) are located in both temporal directions relative to picture 104 .
[0079] Still referring to the forward path of process 200B, after the spatial prediction stage 2042 and the temporal prediction stage 2044, in the mode decision stage 230, the encoder can select a prediction mode (e.g., one of intra prediction or inter prediction) for the current iteration of process 200B. For example, the encoder can perform a rate-distortion optimization technique, in which the encoder can select a prediction mode based on the bit rate of candidate prediction modes and the distortion of the reference image reconstructed under the candidate prediction modes to minimize the value of a cost function. Based on the selected prediction mode, the encoder can generate a corresponding predicted BPU 208 and prediction data 206.
[0080] In the reconstruction path of process 200B, if intra prediction mode is selected in the forward path, after generating the prediction reference 224 (e.g., the current BPU in the current picture that has been encoded and reconstructed), the encoder can directly feed the prediction reference 224 to the spatial prediction stage 2042 for later use (e.g., for extrapolating the next BPU of the current picture). The encoder can feed the prediction reference 224 to the loop filter stage 232, where the encoder can apply a loop filter to the prediction reference 224 to reduce or eliminate distortion (e.g., blocking artifacts) introduced during the encoding of the prediction reference 224. The encoder can apply various loop filter techniques in the loop filter stage 232, such as deblocking, sample adaptive offset (SAO), adaptive loop filter (ALF), etc. The loop filtered reference picture can be stored in a buffer 234 (or "decoded picture buffer (DPB)") for later use (e.g., as an inter prediction reference picture for a future picture in the video sequence 202). The encoder may store one or more reference pictures in a buffer 234 for use in a temporal prediction stage 2044. In some embodiments, the encoder may encode loop filter parameters (e.g., loop filter strength) along with quantized transform coefficients 216, prediction data 206, and other information in a binary encoding stage 226.
[0081] Figure 3A A schematic diagram of an example decoding process 300A consistent with an embodiment of the present disclosure is shown. Process 300A may correspond to Figure 2A In some embodiments, process 300A may be similar to the reconstruction path of process 200A. The decoder may decode the video bitstream 228 into a video stream 304 according to process 300A. Video stream 304 may be very similar to video sequence 202. However, due to information loss during compression and decompression (e.g., Figures 2A-2B 214 in the quantization stage), typically, video stream 304 is different from video sequence 202. Similar to processes 200A and 200B in the figures, the decoder can perform process 300A at the basic processing unit (BPU) level for each picture encoded in video bitstream 228. For example, the decoder can perform process 300A in an iterative manner, where the decoder can decode the basic processing unit in one iteration of process 300A. In some embodiments, the decoder can perform process 300A in parallel for each region (e.g., regions 114-118) of each picture encoded in video bitstream 228.
[0082] exist Figure 3AIn the process 300A, the decoder may feed a portion of the video bitstream 228 associated with the basic processing unit of the coded picture (referred to as a "coded BPU") to the binary decoding stage 302. In the binary decoding stage 302, the decoder may decode the portion into prediction data 206 and quantized transform coefficients 216. The decoder may feed the quantized transform coefficients 216 to the inverse quantization stage 218 and the inverse transform stage 220 to generate a reconstructed residual BPU 222. The decoder may feed the prediction data 206 to the prediction stage 204 to generate a predicted BPU 208. The decoder may add the reconstructed residual BPU 222 to the predicted BPU 208 to generate a prediction reference 224. In some embodiments, the prediction reference 224 may be stored in a buffer (e.g., a decoded picture buffer in a computer memory). The decoder may feed the prediction reference 224 to the prediction stage 204 to perform a prediction operation in the next iteration of the process 300A.
[0083] The decoder may iteratively perform process 300A to decode each coded BPU of a coded picture and generate a prediction reference 224 for decoding the next coded BPU of the coded picture. After decoding all coded BPUs of the coded picture, the decoder may output the picture to a video stream 304 for display and continue decoding the next coded picture in the video bitstream 228.
[0084] In the binary decoding stage 302, the decoder can perform the inverse of the binary coding technique used by the encoder (e.g., entropy coding, variable length coding, arithmetic coding, Huffman coding, context-adaptive binary arithmetic coding, or any other lossless compression algorithm). In some embodiments, in addition to the prediction data 206 and the quantized transform coefficients 216, the decoder can decode other information in the binary decoding stage 302, such as the prediction mode, parameters of the prediction operation, the transform type, parameters of the quantization process (e.g., quantization parameters), encoder control parameters (e.g., bitrate control parameters), etc. In some embodiments, if the video bitstream 228 is transmitted over the network in packet form, the decoder can depacketize the video bitstream 228 before feeding it to the binary decoding stage 302.
[0085] Figure 3B A schematic diagram of another example decoding process 300B consistent with embodiments of the present disclosure is shown. Process 300B can be modified from process 300A. For example, process 300B can be used by decoders compliant with hybrid video coding standards (e.g., the H.26x series). Compared to process 300A, process 300B additionally separates the prediction stage 204 into a spatial prediction stage 2042 and a temporal prediction stage 2044, and additionally includes a loop filter stage 232 and a buffer 234.
[0086] In process 300B, for a coded basic processing unit (referred to as a "current BPU") of a coded picture being decoded (referred to as a "current picture"), the prediction data 206 decoded by the decoder from the binary decoding stage 302 may include various types of data, depending on the prediction mode used by the encoder to encode the current BPU. For example, if the encoder encodes the current BPU using intra-frame prediction, the prediction data 206 may include a prediction mode indicator (e.g., a flag value) indicating intra-frame prediction, parameters for the intra-frame prediction operation, and the like. The parameters for the intra-frame prediction operation may include, for example, the location (e.g., coordinates) of one or more neighboring BPUs used as a reference, the size of the neighboring BPUs, extrapolation parameters, the orientation of the neighboring BPUs relative to the original BPU, and the like. For another example, if the encoder encodes the current BPU using inter-frame prediction, the prediction data 206 may include a prediction mode indicator (e.g., a flag value) indicating inter-frame prediction, parameters for the inter-frame prediction operation, and the like. The parameters of the inter-frame prediction operation may include, for example, the number of reference images associated with the current BPU, the weights associated with the reference images respectively, the positions (e.g., coordinates) of one or more matching regions in each reference image, one or more motion vectors associated with the matching regions respectively, etc.
[0087] Based on the prediction mode indicator, the decoder can decide whether to perform spatial prediction (eg, intra prediction) in the spatial prediction stage 2042 or temporal prediction (eg, inter prediction) in the temporal prediction stage 2044 . Figure 2B The details of performing such spatial prediction or temporal prediction are described in
[15] and will not be repeated below. After performing such spatial prediction or temporal prediction, the decoder may generate a predicted BPU 208. Figure 3A As described above, the decoder may add the predicted BPU 208 and the reconstructed residual BPU 222 to generate the prediction reference 224 .
[0088] In process 300B, the decoder may feed the prediction reference 224 to the spatial prediction stage 2042 or the temporal prediction stage 2044 to perform a prediction operation in the next iteration of process 300B. For example, if the current BPU is decoded using intra-frame prediction in the spatial prediction stage 2042, then after generating the prediction reference 224 (e.g., the decoded current BPU), the decoder may directly feed the prediction reference 224 to the spatial prediction stage 2042 for later use (e.g., for extrapolating the next BPU of the current picture). If the current BPU is decoded using inter-frame prediction in the temporal prediction stage 2044, then after generating the prediction reference 224 (e.g., a reference picture in which all BPUs have been decoded), the decoder may feed the prediction reference 224 to the loop filter stage 232 to reduce or eliminate distortion (e.g., blocking artifacts). The decoder may Figure 2B The loop filter is applied to the prediction reference 224 in the manner described. The loop filtered reference picture can be stored in a buffer 234 (e.g., a decoded picture buffer (DPB) in a computer memory) for later use (e.g., as an inter-frame prediction reference picture for a future coded picture in the video bitstream 228). The decoder can store one or more reference pictures in the buffer 234 for use in the temporal prediction stage 2044. In some embodiments, the prediction data can also include parameters of the loop filter (e.g., loop filter strength). In some embodiments, when the prediction mode indicator of the prediction data 206 indicates that inter-frame prediction was used to encode the current BPU, the prediction data includes the parameters of the loop filter. The reconstructed picture from the buffer 234 can also be sent to a display, such as a television, PC, smartphone, or tablet, for viewing by the end user.
[0089] Figure 4 FIG. 4 is a block diagram of an example apparatus 400 for encoding or decoding video consistent with an embodiment of the present disclosure. Figure 4As shown, the device 400 may include a processor 402. When the processor 402 executes the instructions described herein, the device 400 may become a special-purpose machine for video encoding or decoding. The processor 402 may be any type of circuit capable of manipulating or processing information. For example, the processor 402 may include any number of central processing units (or "CPUs"), graphics processing units (or "GPUs"), neural processing units ("NPUs"), microcontroller units ("MCUs"), optical processors, programmable logic controllers, microcontrollers, microprocessors, digital signal processors, intellectual property (IP) cores, programmable logic arrays (PLAs), programmable array logic (PALs), general array logic (GALs), complex programmable logic devices (CPLDs), field programmable gate arrays (FPGAs), systems on chip (SoCs), application-specific integrated circuits (ASICs), and the like. In some embodiments, the processor 402 may also be a group of processors grouped into a single logical component. For example, as Figure 4 As shown, processor 402 may include multiple processors, including processor 402a, processor 402b, and processor 402n.
[0090] The apparatus 400 may also include a memory 404 configured to store data (eg, a set of instructions, computer code, intermediate data, etc.). Figure 4 As shown, the stored data may include program instructions (e.g., program instructions for implementing stages in process 200A, 200B, 300A, or 300B) and data for processing (e.g., video sequence 202, video bitstream 228, or video stream 304). Processor 402 may access the program instructions and data for processing (e.g., via bus 410) and execute the program instructions to perform operations or control on the data for processing. Memory 404 may include a high-speed random access memory device or a non-volatile memory device. In some embodiments, memory 404 may include any number of random access memories (RAM), read-only memories (ROM), optical disks, magnetic disks, hard drives, solid-state drives, flash drives, secure digital (SD) cards, memory sticks, compact flash (CF) cards, etc. Memory 404 may also be a group of memories grouped into a single logical component ( Figure 4 not shown).
[0091] The bus 410 may be a communication device that transmits data between components within the apparatus 400 , such as an internal bus (eg, a CPU-memory bus), an external bus (eg, a Universal Serial Bus port, a Peripheral Component Interconnect Express port), and the like.
[0092] For ease of explanation and to avoid ambiguity, the processor 402 and other data processing circuitry are collectively referred to as "data processing circuitry" in this disclosure. The data processing circuitry may be implemented entirely in hardware, or in a combination of software, hardware, or firmware. Furthermore, the data processing circuitry may be a single standalone module, or may be fully or partially integrated into any other component of the apparatus 400.
[0093] The device 400 may further include a network interface 406 to provide wired or wireless communication with a network (e.g., the Internet, an intranet, a local area network, a mobile communication network, etc.). In some embodiments, the network interface 406 may include any number of network interface controllers (NICs), radio frequency (RF) modules, repeaters, transceivers, modems, routers, gateways, wired network adapters, wireless network adapters, Bluetooth adapters, infrared adapters, near field communication ("NFC") adapters, cellular network chips, etc.
[0094] In some embodiments, the apparatus 400 may optionally further include a peripheral interface 408 to provide a connection to one or more peripheral devices. Figure 4 As shown, peripheral devices may include, but are not limited to, a cursor control device (e.g., a mouse, touchpad, or touch screen), a keyboard, a display (e.g., a cathode ray tube display, a liquid crystal display, or a light emitting diode display), a video input device (e.g., a camera or an input interface coupled to a video archive), etc.
[0095] It should be noted that a video codec (e.g., a codec that performs processes 200A, 200B, 300A, or 300B) can be implemented as any combination of any software or hardware modules in apparatus 400. For example, some or all stages of processes 200A, 200B, 300A, or 300B can be implemented as one or more software modules of apparatus 400, such as program instructions that can be loaded into memory 404. For another example, some or all stages of processes 200A, 200B, 300A, or 300B can be implemented as one or more hardware modules of apparatus 400, such as dedicated data processing circuits (such as FPGAs, ASICs, NPUs, etc.).
[0096] Figure 5 is a diagram of an example of a bitstream 500 encoded by an encoder consistent with some embodiments of the present disclosure. In some embodiments, the structure of the bitstream 500 may be applied to Figures 2A-2B and Figures 3A-3B The video bitstream 228 is shown in FIG. Figure 5In the embodiment of the present invention, the bitstream 500 includes a video parameter set (VPS) 510, a sequence parameter set (SPS) 520, a picture parameter set (PPS) 530, a picture header 540, and slices 550-570, which are separated by synchronization markers M1-M7. Each slice 550-570 includes a corresponding header block (e.g., header 552) and a data block (e.g., data 554), and each data block includes one or more CTUs (e.g., CTU1-CTUn in data 554).
[0097] According to some embodiments, the bitstream 500 is a sequence of bits in the form of network abstraction layer (NAL) units or byte streams, forming one or more coded video sequences (CVSs). A CVS includes one or more coded layer video sequences (CLVSs). In some embodiments, a CLVS is a sequence of picture units (PUs), each PU containing a coded picture. In particular, a PU includes zero or one picture header NAL unit (e.g., picture header 540) containing a picture header syntax structure as a payload, a coded picture including one or more video coding layer (VCL) NAL units, and, optionally, one or more other non-VCL NAL units. VCL NAL units are a collective term for coded slice NAL units (e.g., slices 550-570) and a subset of NAL units with reserved values of NAL unit types that are classified as VCL NAL units in some embodiments. A coded slice NAL unit includes a slice header and a slice data block (e.g., header 552 and data 554).
[0098] In other words, in some embodiments of the present disclosure, a layer can be a set of video coding layer (VCL) NAL units and associated non-VCL NAL units with a specific NAL layer ID value. In these layers, inter-layer prediction can be applied between different layers to achieve high compression performance.
[0099] As described above, in general video coding (e.g., VVC / H.266) standards, an image can be divided into a set of CTUs, and multiple CTUs can form a brick, a slice, or a sub-image. When an image includes three sample arrays for storing three color components (e.g., one luma component and two chroma components), the CTU can include N×N (N is an integer) luma sample blocks, each luma sample block being associated with two chroma sample blocks. In some embodiments, an output layer set (OLS) can be specified to support decoding of some but not all layers. An OLS is a set of layers that includes a set of specified layers, where one or more layers in the set of layers are designated as output layers. Thus, an OLS may contain one or more output layers and other layers for inter-layer prediction required for decoding the output layers.
[0100] For example, Figure 6is a schematic diagram illustrating the structure of an image 600 segmented into blocks consistent with some embodiments of the present disclosure. Figure 6 , each square represents a CTU 610, and the image 600 is partitioned into 8×6 CTUs 610. In some embodiments, the maximum allowed size of a luma block in a CTU is 128×128, and the maximum allowed size of a luma transform block is 64×64. In some embodiments, the minimum allowed size of a luma block in a CTU is 32×32. It should be noted that the maximum allowed size of a luma block, the maximum allowed size of a luma transform block, and the minimum allowed size of a luma block may be specified as different values and different shapes in various video coding standards, and the present disclosure is not limited to the above examples.
[0101] Consistent with some embodiments of the present disclosure, an image may be partitioned into one or more brick rows and one or more brick columns. A "brick" in this disclosure may refer to a sequence of CTUs covering a rectangular area of an image. A "slice" in this disclosure may include an integer number of complete bricks, or an integer number of consecutive complete CTU rows within a brick of an image.
[0102] In some embodiments, an image can be divided into strips in two ways, namely, "raster scan strip mode" and "rectangular strip mode". In raster scan strip mode, a strip of an image can include a sequence of complete bricks in the raster scan order of the image. In rectangular strip mode, a strip of an image can include several complete bricks that together form a rectangular area of the image, or several consecutive complete CTU rows of bricks, where these CTU rows together form a rectangular area of the image. The bricks within the rectangular strip can be scanned in raster scan order within the formed rectangular area corresponding to the rectangular strip.
[0103] As an example, Figure 7 is a schematic diagram illustrating the structure of an image 700 segmented in a raster scan striping pattern consistent with some embodiments of the present disclosure. Figure 7 In FIG, each dashed square represents a CTU, and the image 700 is divided into 16×14 CTUs. The CTUs of the image 700 are formed into twelve bricks (e.g., bricks 712-716, 722-726, 732-736, and 742-746), including four brick rows and three brick columns, whose boundaries are represented by thinner solid lines overlapping with the dashed lines. In addition, the image 700 is divided into three raster scan strips represented by different shades, whose boundaries are represented by thicker solid lines overlapping with the dashed lines or thinner solid lines. Figure 7As shown, the first stripe includes tiles 712 and 714. The second stripe includes tiles 716, 722-726, and 732-734. The third stripe includes tiles 736 and 742-746. The three stripes of image 700 are segmented in raster scan order, and each of the three stripes includes an integer number of complete tiles.
[0104] As an example, Figure 8 is a schematic diagram showing the structure of an image 800 segmented in a rectangular strip pattern consistent with some embodiments of the present disclosure. Figure 8 In FIG800 , each dotted square represents a CTU, and the image 800 is divided into 16×14 CTUs. The CTUs of FIG800 form twenty bricks, including four brick rows and five brick columns, whose boundaries are represented by thinner solid lines overlapping with the dotted lines. In addition, the image 800 is divided into 9 rectangular strips represented by different shades, whose boundaries are represented by thicker solid lines overlapping with the dotted lines or thinner solid lines. Figure 8 As shown, nine strips of image 800 are divided into nine rectangular regions, each of which includes an integer number of complete bricks. For example, the first strip includes bricks 812 and 814. The second strip includes bricks 816 and 818. The third strip includes brick 819. The fourth strip includes bricks 822, 824, 832, and 834. The fifth strip includes bricks 826, 828, 836, and 838. The sixth strip includes bricks 829 and 839. The seventh strip includes bricks 842 and 844. The eighth strip includes bricks 846 and 848. The ninth strip includes brick 849.
[0105] As an example, Figure 9 is a schematic diagram showing the structure of an image 900 segmented in a rectangular strip pattern consistent with some embodiments of the present disclosure. Figure 9 In the diagram, each dotted square represents a CTU, and the diagram 900 is divided into 16×14 CTUs. The CTUs of the diagram 900 form four bricks 910, 920, 930, and 940, including two brick rows and two brick columns, whose boundaries are represented by dotted lines. For example, the first brick 910 can be located in the upper left and have a size of 7×10 CTUs. The second brick 920 can be located in the lower left and have a size of 7×4 CTUs. The third brick 930 can be located in the upper right and have a size of 9×10 CTUs. The fourth brick 940 can be located in the lower right and have a size of 9×4 CTUs. In addition, the image 900 is divided into 4 rectangular strips represented by different shadings, and their boundaries are represented by thicker solid lines overlapping with the dotted lines or thinner solid lines. As shown Figure 9As shown, the four slices of image 900 are partitioned in a rectangular manner to form four rectangular areas, and each of the four slices includes an integer number of complete bricks or an integer number of consecutive complete CTU rows that are located within the bricks of image 900. For example, a first slice (shown in white) may include two complete bricks 910 and 920, which are 7×14 CTUs in size. A second slice (shown in gray) may include a portion (e.g., portion 932) of brick 930, which is 9×4 CTUs in size. A third slice (shown in white) may include another portion (e.g., portion 934) of brick 930, which is 9×6 CTUs in size. A fourth slice (shown in gray) may include a complete brick 940, which is 9×4 CTUs in size.
[0106] As an example, Figure 10 is a schematic diagram showing the structure of an image 1000 segmented in a rectangular strip pattern consistent with some embodiments of the present disclosure. Figure 10 In FIG, each dotted square represents a CTU, and the image 1000 is divided into 16×16 CTUs. The CTUs of the image 1000 form 20 bricks 1012-1019, 1022-1029, 1032-1039, and 1042-1049, including four brick rows and five brick columns, whose boundaries are represented by thicker solid lines overlapping with the dotted lines. Figure 10 As shown, the 12 bricks on the left hand side (e.g., bricks 1012-1016, 1022-1026, 1032-1036, and 1042-1046) each cover a strip of 4×4 CTUs. The 8 bricks on the right hand side (e.g., 1018, 1019, 1028, 1029, 1038, 1039, 1048, and 1049) each cover two vertically stacked strips of 2×2 CTUs, resulting in 28 strips represented by different shadings, where each strip is a sub-image. For example, brick 1018 covers vertically stacked strips 1018a and 1018b, brick 1028 covers vertically stacked strips 1028a and 1028b, and so on. The boundaries of strips / sub-images are indicated by thicker dashed lines.
[0107] In some embodiments, the sub-image layout or sub-image partitioning may be indicated in a sequence parameter set (SPS). Figure 11 An exemplary coding syntax table of a partial SPS syntax structure 1100 for indicating sub-image layout is shown, consistent with some embodiments of the present disclosure. Figure 11 The pseudo code shown in may be part of the VVC standard.
[0108] exist Figure 11In some embodiments, when the SPS flag 1110 ("sps_subpic_info_present_flag") is equal to 1, it can specify that, for CLVS, sub-picture information is present and there may be one or more sub-pictures in each picture of the CLVS. Consistent with the above disclosure, a CLVS is a set of pictures belonging to the same layer, starting from a random access point and followed by pictures that may depend on each other and on the random access point pictures. When the SPS flag 1110 is equal to 0, for CLVS, sub-picture information is not present and there is only one sub-picture in each picture of the CLVS. In some embodiments, the SPS flag "sps_res_change_in_clvs_allowed_flag" is equal to 1 to specify that the value of the SPS flag 1110 is equal to 0. When the bitstream is the result of a sub-bitstream extraction process and contains only a subset of the sub-images of the input bitstream to the sub-bitstream extraction process, it may be necessary to set the value of the SPS flag 1110 to 1 in the raw byte sequence payload ("RBSP") of the sequence parameter set ("SPS").
[0109] exist Figure 11 In the SPS syntax element "sps_num_subpics_minus1 (sps_num_subpics_minus1)" (e.g., Figure 11 The syntax element 1112 in the CLVS plus 1 specifies the number of sub-pictures in each picture in the CLVS. The value of the syntax element 1112 ("sps_num_subpics_minus1") is in the range from 0 to ceil(sps_pic_width_max_in_luma_samples ÷ CtbSizeY)×ceil(sps_pic_height_max_in_luma_samples ÷ CtbSizeY)-1, inclusive. When not present, the value of the syntax element 1112 ("sps_num_subpics_minus1") is determined to be equal to 0.
[0110] exist Figure 11 In the present invention, when the SPS flag 1120 ("sps_independent_subpics_flag") is equal to 1, it can be specified that all sub-picture boundaries in the CLVS are treated as picture boundaries and no loop filtering is performed across sub-picture boundaries. The SPS flag 1120 equal to 0 does not impose such a constraint. When not present, the value of the SPS flag 1120 is determined to be equal to 1.
[0111] exist Figure 11In the SPS syntax element "sps_subpic_ctu_top_left_x[i](sps_subpic_ctu_top_left_x[i])" (e.g., Figure 11 The syntax element 1122 in the SPS specifies the horizontal position of the top left CTU of the i-th sub-picture in units of CtbSizeY (CtbSizeY). The length of this syntax element 1122 is ceil(log2((sps_pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits. When not present, the value of the SPS syntax element "sps_subpic_ctu_top_left_x[i]" is determined to be equal to 0.
[0112] Similarly, the SPS syntax element "sps_subpic_ctu_top_left_y[i]" (e.g., Figure 11 The syntax element 1124 in specifies the vertical position of the top left CTU of the i-th sub-image in units of CtbSizeY.
[0113] The length of this syntax element 1124 is ceil(log2((sps_pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits. When not present, the value of the SPS syntax element "sps_subpic_ctu_top_left_y[i]" is determined to be equal to 0.
[0114] exist Figure 11 In the SPS syntax element "sps_subpic_width_minus1[i] (sps_subpic_width_minus1[i])" (e.g., Figure 11 The syntax element 1126 in the SPS specifies the width of the i-th sub-image in units of CtbSizeY) plus 1. The length of this syntax element 1126 is ceil(log2((sps_pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits. When not present, the value of the SPS syntax element "sps_subpic_width_minus1[i]" is determined to be equal to ((ps_pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)-sps_subpic_ctu_top_left_x[i]-1.
[0115] Similarly, the SPS syntax element "SPS_subpic_height_minus1[i]" (e.g., Figure 11 The syntax element 1128 in the SPS specifies the height of the i-th sub-picture in units of CtbSizeY) plus 1. The length of this syntax element 1128 is ceil(log2((sps_pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits. When not present, the value of the SPS syntax element "sps_subpic_height_minus1[i]" is determined to be equal to ((ps_pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)-sps_subpic_ctu_top_left_y[i]-1.
[0116] In some embodiments, to satisfy bitstream conformance, the sub-images are shaped such that each sub-image, when decoded, has its entire left border and its entire top border including the image border or including the border of a previously decoded sub-image.
[0117] In some embodiments, for each sub-image with a sub-image index i in the inclusive range from 0 to the value of syntax element 1112, the following conditions are true to satisfy bitstream conformance. First, the value of (sps_subpic_ctu_top_left_x[i] × CtbSizeY) is less than (sps_pic_width_max_in_luma_samples - sps_conf_win_right_offset × SubWidthC). Second, the value of ((sps_subpic_ctu_top_left_x[i] + sps_subpic_width_minus1[i] + 1) × CtbSizeY) is greater than (sps_conf_win_left_offset × SubWidthC). Third, the value of (sps_subpic_ctu_top_left_y[i] × CtbSizeY) is less than (sps_pic_height_max_in_luma_samples - sps_conf_win_bottom_offset × SubHeightC). Fourth, the value of ((sps_subpic_ctu_top_left_y[i]+sps_subpic_height_minus1[i]+1)×CtbSizeY) is greater than (sps_conf_win_top_offset×SubHeightC).
[0118] exist Figure 11 , when the SPS flag 1130 ("sps_subpic_treated_as_pic_flag[i]") is equal to 1, it can specify that the i-th sub-picture of each coded picture in the CLVS is to be treated as a picture in the decoding process except for in-loop filtering operations. The SPS flag 1130 equal to 0 specifies that the i-th sub-picture of each coded picture in the CLVS is not to be treated as a picture in the decoding process except for in-loop filtering operations. When not present, the value of the SPS flag 1130 is determined to be equal to 1.
[0119] When the SPS syntax element "sps_num_subpics_minus1" (e.g. Figure 111130 is equal to 1, for each CLVS of the current layer that references the SPS, the target set of AUs ("targetAuSet") refers to all access units ("AUs") starting from the AU that includes the first picture of the CLVS in decoding order to the AU that includes the last picture of the CLVS in decoding order, inclusive. In some embodiments, to meet bitstream consistency, for a target layer set ("targetLayerSet"), the following conditions are true, where the target layer set includes the current layer and layers that use the current layer as a reference layer. First, for each AU in the targetAuSet, all pictures of each layer in the targetLayerSet have the same value of pps_pic_width_in_luma_samples and the same value of pps_pic_height_in_luma_samples. Second, all SPSs referenced by layers in targetLayerSet have the same value of syntax element 1112 and, for each value of j in the inclusive range from 0 to syntax element 1112, have the same values of sps_subpic_ctu_top_left_x[j], sps_subpic_ctu_top_left_y[j], sps_subpic_width_minus1[j], sps_subpic_height_minus1[j], and sps_subpic_treated_as_pic_flag[j], respectively. Third, for each AU in targetAuSet, all pictures of the layers in targetLayerSet have the same value of SubpicIdVal[j] for each value of j in the inclusive range from 0 to syntax element 1112.
[0120] exist Figure 11 In the present disclosure, when equal to 1, flag 1140 ("sps_loop_filter_across_subpic_enabled_flag[i]") specifies that loop filtering operations across subpicture boundaries are enabled and may be performed across the boundaries of the i-th subpicture in each coded picture in the CLVS. When equal to 0, flag 1140 specifies that loop filtering operations across subpicture boundaries are disabled and not performed across the boundaries of the i-th subpicture in each coded picture in the CLVS. When not present, the value of flag 1140 is determined to be equal to 0.
[0121] The SPS syntax element "sps_subpic_id_len_minus1 (sps_subpic_id_length_minus1)" (e.g., Figure 11 The syntax element 1142 in the SPS syntax element "sps_subpic_id[i](sps_sub-picture_id[i])" plus 1 specifies the number of bits used to represent the SPS syntax element "sps_subpic_id[i](sps_sub-picture_id[i])", the PPS syntax element "pps_subpic_id[i](pps_sub-picture_id[i])" (when present), and the syntax element "sh_subpic_id(sh_sub-picture_id)" (when present). In some embodiments, the value of the SPS syntax element "sps_subpic_id_len_minus1" is in the range from 0 to 15, inclusive. The value of 1<<(sps_subpic_id_len_minus1+1) is greater than or equal to sps_num_subpics_minus1+1.
[0122] exist Figure 11 , when equal to 1, flag 1150 ("sps_subpic_id_mapping_explicitly_signalled_flag") specifies that sub-picture ID mapping is explicitly indicated in the SPS or in the PPS referenced by a coded picture of the CLVS. When equal to 0, flag 1150 specifies that for the CLVS, sub-picture ID mapping is not explicitly indicated. When not present, the value of flag 1150 is determined to be equal to 0.
[0123] exist Figure 11 In the CLVS, flag 1160 ("sps_subpic_id_mapping_present_flag"), when equal to 1, specifies that sub-picture ID mapping is indicated in the SPS when flag 1150 is equal to 1. When equal to 0, flag 1160 specifies that sub-picture ID mapping is not indicated in the PPS referenced by coded pictures of the CLVS when flag 1150 is equal to 1.
[0124] The SPS syntax element "sps_subpic_id[i]" (e.g. Figure 11 The syntax element 1162 in the SPS specifies the sub-picture ID of the i-th sub-picture. In some embodiments, the length of the SPS syntax element "sps_subpic_id[i]" is the value of "sps_subpic_id_len_minus1" plus 1 bit.
[0125] In some embodiments, tile mapping information for tile and stripe partitioning may be indicated in a picture parameter set (PPS). Figure 12 An exemplary coding syntax table of a partial PPS syntax structure 1200 for indicating a brick map and slices in a brick map is shown, consistent with some embodiments of the present disclosure. Figure 12 The pseudo code shown in may be part of the VVC standard.
[0126] exist Figure 12 In some embodiments, the PPS flag 1210 ("pps_no_pic_partition_flag"), when equal to 1, may specify that picture partitioning is not applied to any picture that references a PPS (including the PPS flag 1210), and when equal to 0, may specify that each picture that references a PPS may be partitioned into more than one tile or slice. In some embodiments, a bitstream conformance requirement is that the value of the PPS flag 1210 be the same for all PPSs referenced by coded pictures within a coded layer video sequence (CLVS). In some embodiments, a bitstream conformance requirement is also that the value of the PPS flag 1210 be equal to 0 when the value of the syntax element 1112 ("sps_num_subpics_minus1") is greater than 0 or when the value of the syntax element "pps_mixed_nalu_types_in_pic_flag" is equal to 1.
[0127] exist Figure 12 In the embodiment of the present invention, the value of flag 1220 ("pps_subpic_id_mapping_present_flag") equal to 1 specifies that the sub-picture ID mapping is indicated in the PPS. Flag 1220 equal to 0 specifies that the sub-picture ID mapping is not indicated in the PPS. In some embodiments, if the SPS flag "sps_subpic_id_mapping_explicitly_signalled_flag" (e.g., flag 1150) is equal to 0 or the SPS flag "sps_subpic_id_mapping_present_flag" (e.g., flag 1160) is equal to 1, the value of flag 1220 is equal to 0. If SPS flag 1150 is equal to 1 and SPS flag 1160 is equal to 0, the value of flag 1220 is equal to 1.
[0128] exist Figure 12 In the syntax element "pps_num_subpics_minus1 (pps_number_subpics_minus1)" (e.g., Figure 12The value of the syntax element 1222 in the SPS is equal to the SPS syntax element "sps_num_subpics_minus1 (sps_number_subpics_minus1)" (e.g., Figure 11 When the PPS flag 1210 is equal to 1, the value of the syntax element 1222 is determined to be equal to 0.
[0129] exist Figure 12 In the syntax element "pps_subpic_id_len_minus1 (pps_subpic_id_length_minus1)" (for example, Figure 12 The value of the syntax element 1224 in the SPS is equal to the SPS syntax element "sps_subpic_id_len_minus1 (sps_sub-image_id_length_minus1)" (e.g., Figure 11 The value of the syntax element 1142 in .
[0130] exist Figure 12 In the syntax element "pps_subpic_id[i]" (e.g. Figure 12 The value of the syntax element 1226 in pps_subpic_id_len_minus1 specifies the sub-picture ID of the i-th sub-picture. In some embodiments, the length of the syntax element 1226 is pps_subpic_id_len_minus1+1 bits.
[0131] Figure 13 FIGURE 2 shows exemplary pseudo code for deriving the value of the variable SubpicIdVal according to some embodiments of the present disclosure. Figure 13 As shown, for each value of index i in the inclusive range from 0 to syntax element 1112 ("sps_num_subpics_minus1"), a value of the variable SubpicIdVal may be derived. In some embodiments, to satisfy bitstream conformance, the following two constraints apply. First, for any two different values of index i and index j in the inclusive range from 0 to syntax element 1112 ("sps_num_subpics_minus1"), SubpicIdVal[i] is not equal to SubpicIdVal[j]. Secondly, for each value of index i in the inclusive range from 0 to syntax element 1112 ("sps_num_subpics_minus1"), when the value of SubpicIdVal[i] of the current picture with nuh_layer_id (nuh_layer_id) equal to a particular value layerId (layerId) is not equal to the value of SubpicIdVal[i] of the reference picture with nuh_layer_id equal to layerId, the active entry of the reference picture list ("RPL") of the coded slice in the i-th sub-picture of the current picture does not include that reference picture.
[0132] exist Figure 12 In the syntax element "pps_log2_ctu_size_minus5" (e.g., Figure 12 The value of the syntax element 1228 in the SPS specifies the luma coding tree block size for each CTU plus 5. In some embodiments, the syntax element 1228 is equal to the syntax element "sps_log2_ctu_size_minus5" indicated in the SPS.
[0133] exist Figure 12 In the syntax element "pps_num_exp_tile_columns_minus1 (pps_number_explicit_tile_columns_minus1)" (for example, Figure 12 The value of the syntax element 1232 in (PicWidthInCtbsY-1) plus 1 specifies the number of explicitly provided brick column widths. In some embodiments, the value of the syntax element 1232 is in the range from 0 to "PicWidthInCtbsY-1", inclusive. When the PPS flag 1210 is equal to 1, the value of the syntax element 1232 is determined to be 0.
[0134] exist Figure 12 In the syntax element "pps_num_exp_tile_rows_minus1" (e.g., Figure 12 The value of the syntax element 1234 in (PicHeightInCtbsY-1) specifies the number of explicitly provided brick row heights. In some embodiments, the value of the syntax element 1234 is in the range from 0 to "PicHeightInCtbsY-1", inclusive. When the PPS flag 1210 is equal to 1, the value of the syntax element 1234 is determined to be 0.
[0135] exist Figure 12 In the syntax element "pps_tile_column_width_minus1[i]" (e.g., Figure 12The value of the syntax element 1236 in the PPS plus 1 specifies the width of the i-th tile column in units of CTBs, where the index i is in the range from 0 to the syntax element 1232, inclusive. In some embodiments, the syntax element "pps_tile_column_width_minus1[num_exp_tile_columns_minus1]" may be used to derive the width of tile columns with indices greater than the syntax element 1232 specified herein. The value of the syntax element 1236 is in the range from 0 to "PicWidthInCtbsY-1", inclusive. When not present in the PPS, the value of the syntax element "pps_tile_column_width_minus1[0]" is determined to be equal to "PicWidthInCtbsY-1".
[0136] exist Figure 12 In the syntax element "pps_tile_row_height_minus1[i]" (e.g., Figure 12 The value of the syntax element 1238 in [0] plus 1 specifies the height of the i-th tile row in units of CTBs, where the index i is in the range from 0 to the syntax element 1234, inclusive. In some embodiments, the syntax element "pps_tile_row_height_minus1[pps_num_exp_tile_rows_minus1]" is used to derive the height of tile rows with indices greater than the syntax element 1234 specified herein. The value of the syntax element 1238 is in the range from 0 to "PicHeightInCtbsY-1", inclusive. When not present in the PPS, the value of the syntax element "pps_tile_row_height_minus1[0]" is determined to be equal to "PicHeightInCtbsY-1".
[0137] exist Figure 12 , when equal to 1, flag 1230 ("pps_loop_filter_across_tiles_enabled_flag") specifies that in-loop filtering operations across tile boundaries are enabled and may be performed across tile boundaries in pictures referenced to the PPS. When equal to 0, flag 1230 specifies that in-loop filtering operations across tile boundaries are disabled and not performed across tile boundaries in pictures referenced to the PPS. In-loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of flag 1230 is determined to be equal to 1.
[0138] exist Figure 12In the SPS, when equal to 0, flag 1240 ("pps_rect_slice_flag") specifies that the tiles within each slice are in raster scan order and that the slice information is not indicated in the PPS. When equal to 1, flag 1240 specifies that the tiles within each slice cover a rectangular area of the image and that the slice information is indicated in the PPS. When not present in the PPS, flag 1240 may be determined to be equal to 1. In some embodiments, the value of flag 1240 is equal to 1 when SPS flag 1110 ("sps_subpic_info_present_flag") is equal to 1 or the PPS flag "pps_mixed_nalu_types_in_pic_flag" is equal to 1.
[0139] exist Figure 12 In
[0065] , when equal to 0, flag 1250 ("pps_single_slice_per_subpic_flag") specifies that each sub-picture may include one or more rectangular slices. When equal to 1, flag 1250 specifies that each sub-picture includes one rectangular slice. When not present, flag 1250 is determined to be equal to 1.
[0140] exist Figure 12 In the syntax element "pps_num_slices_in_pic_minus1" (e.g., Figure 12 The syntax element 1252 in the PPS flag 1210 ("pps_num_slices_in_pic_minus1") specifies the number of rectangular slices in each picture of the referenced PPS. In some embodiments, the value of the syntax element 1252 ("pps_num_slices_in_pic_minus1") is in the inclusive range from 0 to the value of the syntax element "MaxSlicesPerPicture" minus 1. The syntax element "MaxSlicesPerPicture" indicates a level limit on the maximum number of slices allowed in a picture. When the PPS flag 1210 is equal to 1, the value of the syntax element 1252 ("pps_num_slices_in_pic_minus1") is determined to be equal to 0. That is, picture segmentation is not applied to any picture of the referenced PPS, and therefore the picture includes a single slice.
[0141] When the PPS flag 1250 is equal to 1, the value of the syntax element 1252 ("pps_num_slices_in_pic_minus1") is determined to be equal to the value of the syntax element 1112 ("sps_num_subpics_minus1") in the SPS. That is, each sub-image includes a single rectangular slice, so the number of rectangular slices in each image is equal to the number of sub-images in each image.
[0142] exist Figure 12 When equal to 0, flag 1260 ("pps_tile_idx_delta_present_flag") specifies that the pps_tile_idx_delta_val[i] syntax element is not present in the PPS and that the picture referring to the PPS is partitioned into rectangular strip rows and rectangular strip columns in raster scan order. When equal to 1, flag 1260 specifies that the pps_tile_idx_delta_val[i] syntax element may be present in the PPS and that the rectangular strips in the picture referring to the PPS are specified in the order indicated by the value of the pps_tile_idx_delta_val[i] syntax element (in increasing order of index i). When not present, the value of flag 1260 is determined to be equal to 0.
[0143] exist Figure 12 In the syntax element "pps_slice_width_in_tiles_minus1[i]" (e.g., Figure 12 The syntax element 1262 in the PPS specifies the width of the i-th rectangular slice in units of tile columns plus 1. In some embodiments, the value of the syntax element 1262 ("pps_slice_width_in_tiles_minus1[i]") is in the range from 0 to "NumTileColumns-1", inclusive. When not present in the PPS, the value of the syntax element 1262 ("pps_slice_width_in_tiles_minus1[i]") is determined to be equal to 0.
[0144] exist Figure 12 In the syntax element "pps_slice_height_in_tiles_minus1[i]" (e.g., Figure 12The syntax element 1264 in ("pps_slice_height_in_tiles_minus1[i]") specifies the height of the i-th rectangular slice in units of tile rows plus 1. In some embodiments, the value of the syntax element 1264 ("pps_slice_height_in_tiles_minus1[i]") is in the range from 0 to "NumTileRows-1", inclusive. When the syntax element 1264 ("pps_slice_height_in_tiles_minus1[i]") does not exist in the PPS, if the value of "SliceTopLeftTileIdx[i] / NumTileColumns" is equal to the value of "NumTileRows-1", the value of the syntax element 1264 is determined to be equal to 0; otherwise, the value of the syntax element 1264 is determined to be equal to the value of "pps_slice_height_in_tiles_minus1[i-1]".
[0145] exist Figure 12 In the syntax element "pps_num_exp_slices_in_tile[i](pps_num_exp_slices_in_tile[i])" (e.g., Figure 12 The value of the syntax element 1266 in ("pps_num_exp_slices_in_tile[i]") specifies the number of stripe heights that are explicitly provided for the stripes in the current brick (e.g., the brick containing the i-th stripe). In some embodiments, the value of the syntax element 1266 ("pps_num_exp_slices_in_tile[i]") is in the inclusive range from 0 to "RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] - 1". When not present, the value of the syntax element 1266 is determined to be equal to 0. When the syntax element 1266 is equal to 0, the value of the variable "NumSlicesInTile[i]" is derived to be equal to 1, indicating that the brick containing the i-th stripe has not been split into multiple stripes. When the syntax element 1266 is greater than 0, the brick containing the i-th stripe can be split into multiple stripes.
[0146] exist Figure 12 In the syntax element "pps_exp_slice_height_in_ctus_minus1[i][j]" (for example, Figure 12The value of the syntax element 1268 in
[1264] plus 1 specifies the height of the j-th rectangular slice in the tile containing the i-th slice in units of CTU rows. When the syntax element 1266 ("pps_num_exp_slices_in_tile[i]") is greater than 0 (i.e., the tile can be split into multiple tiles), the index j is in the range from 0 to the value of "pps_num_exp_slices_in_tile[i] - 1", inclusive.
[0147] The value of the syntax element "pps_exp_slice_height_in_ctus_minus1[i][pps_num_exp_slices_in_tile[i]] is also used to derive the height of rectangular slices in the brick containing the i-th slice whose index is greater than pps_num_exp_slices_in_tile[i]-1 as specified herein. The value of the syntax element 1268 ("pps_exp_slice_height_in_ctus_minus1[i][j](pps_explicit_slice_height_in_ctus_minus1[i][j])") shall be in the range from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns]-1, inclusive. That is, the maximum possible value of the height of any rectangular strip in a brick shall be the height of the current brick.
[0148] exist Figure 12 In the syntax element "pps_tile_idx_delta_val[i]" (e.g., Figure 12 The syntax element 1272 in ("pps_tile_idx_delta_val[i]") specifies the difference between the tile index of the tile containing the first CTU in the (i+1)th rectangular slice and the tile index of the tile containing the first CTU in the i-th rectangular slice. The value of the syntax element 1272 ("pps_tile_idx_delta_val[i]") shall be in the range of "-NumTilesInPic+1" to "NumTilesInPic-1", inclusive. When not present, the value of the syntax element 1272 is determined to be equal to 0. When present, the value of the syntax element 1272 is not equal to 0.
[0149] In some embodiments, when flag 1240 is equal to 1, the bitstream conformance requirement is that for any two slices with picture level slice indices idxA and idxB belonging to the same picture and different sub-pictures, when SubpicIdxForSlice[idxA] is less than SubpicIdxForSlice[idxB], the value of idxA shall be less than idxB.
[0150] exist Figure 12In the embodiment of the present invention, when equal to 1, flag 1270 ("pps_loop_filter_across_slices_enabled_flag") specifies that in-loop filtering operations across slice boundaries are enabled and can be performed across slice boundaries in pictures referenced by the PPS. When equal to 0, flag 1270 specifies that in-loop filtering operations across slice boundaries are disabled and are not performed across slice boundaries in pictures referenced by the PPS. In-loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of flag 1270 is determined to be equal to 0.
[0151] The variable NumTileColumns that specifies the number of tile columns, and the list colWidth[i] that specifies the width of the i-th tile column in units of CTB can be derived, with i ranging from 0 to NumTileColumns-1 (inclusive). Figure 14 Exemplary pseudo code including the derivation of the variable NumTileColumns according to some embodiments of the present disclosure is shown.
[0152] The variable NumTileRows that specifies the number of tile rows, and the list RowHeight[j] that specifies the height of the j-th tile row in CTB units can be derived, with j ranging from 0 to NumTileRows-1 (inclusive). Figure 15 1 shows exemplary pseudo code including the derivation of the variable NumTileRows according to some embodiments of the present disclosure.The variable NumTilesInPic is set equal to NumTileColumns×NumTileRows.
[0153] A list tileColBd[i] can be derived that specifies the location of the i-th tile column boundary in CTB units, where i ranges from 0 to NumTileColumns (inclusive). Figure 16 FIGURE 1 shows exemplary pseudo code including the derivation of the variable tileColBd[i] according to some embodiments of the present disclosure. Figure 16 As shown, the size of the array tileColBd[] is one greater than the number of actual brick columns.
[0154] A list tileRowBd[j] can be derived that specifies the location of the j-th tile row boundary in units of CTB, where j ranges from 0 to NumTileRows (inclusive). Figure 17] shows exemplary pseudo code including the derivation of the variable tileRowBd[j] according to some embodiments of the present disclosure. Figure 17 As shown, the size of the array tileRowBd[] is one greater than the number of actual tile rows.
[0155] The lists CtbToTileColBd[ctbAddrX] and ctbToTileColIdx[ctbAddrX] specifying the conversion from the horizontal CTB address to the left brick column boundary and brick column index in units of CTB can be derived respectively, with ctbAddrX ranging from 0 to PicWidthInCtbsY (inclusive). Figure 18 FIGURE 1 shows exemplary pseudo code including the derivation of variables CtbToTileColBd and ctbToTileColIdx according to some embodiments of the present disclosure. Figure 18 As shown, the size of the arrays CtbToTileColBd[] and ctbToTileColIdx[] is one larger than the actual image width in the CTB.
[0156] The lists CtbToTileRowBd[ctbAddrY] and ctbToTileRowIdx[ctbAddrY] specifying the conversion from vertical CTB address to top tile column boundary in units of CTB and to tile row index respectively can be derived, with ctbAddrY ranging from 0 to PicHeightInCtbsY (inclusive). Figure 19 FIGURE 1 shows exemplary pseudo code including the derivation of variables CtbToTileRowBd and ctbToTileRowIdx according to some embodiments of the present disclosure. Figure 19 As shown, the size of the arrays CtbToTileRowBd[] and ctbToTileRowIdx[] is one greater than the actual image height in the CTB.
[0157] The lists SubpicWidthInTiles[i] (sub-image widthIntiles[i]) and SubpicHeightInTiles[i] (sub-image heightIntiles[i]), which respectively specify the width and height of the i-th sub-image, can be derived, respectively, where i ranges from 0 to syntax element 1112 ("sps_num_subpics_minus1") (inclusive), and the list subpicHeightLessThanOneTileFlag[i] (sub-image height less than one tile row) can be derived, where i ranges from 0 to syntax element 1112 ("sps_num_subpics_minus1") (inclusive). Figure 20 1 shows exemplary pseudo code including the derivation of variables SubpicWidthInTitles and SubpicHeightInTiles according to some embodiments of the present disclosure. Figure 20 As shown, when a tile is split into multiple rectangular strips and the i-th sub-image includes only a subset of the tile's rectangular strips, the tile is counted as one tile in the value of SubpicHeightInTiles[i].
[0158] When flag 1240 ("pps_rect_slice_flag") is equal to 1, the following can be derived: a list NumCtusInSlice[i] specifying the number of CTUs in the i-th slice, with i ranging from 0 to syntax element 1252 ("pps_num_slices_in_pic_minus1"), inclusive, a list SliceTopLeftTileIdx[i] specifying the tile index of the tile containing the first CTU in the slice, with i ranging from 0 to syntax element 1252 ("pps_num_slices_in_pic_minus1"), inclusive. pps_num_slices_in_pic_minus1”) (inclusive), and the matrix CtbAddrInSlice[i][j] (Ctb address In stripe[i][j]) specifying the image raster scan address of the j-th CTB in the i-th stripe, i ranging from 0 to syntax element 1252 (“pps_num_slices_in_pic_minus1”) (inclusive) and j ranging from 0 to NumCtusInSlice[i]-1 (inclusive), and the variable NumSlicesInTile[i] specifying the number of stripes in the tile containing the i-th stripe. Figure 21 and Figure 22 Exemplary pseudo code including the derivation of the variables NumCtusInSlice, SliceTopLeftTileIdx, CtbAddrInSlice, and NumSlicesInTile according to some embodiments of the present disclosure is shown.
[0159] To satisfy bitstream consistency, for i ranging from 0 to syntax element 1252 ("pps_num_slices_in_pic_minus1") (inclusive), the values of the list NumCtusInSlice[i] are all greater than 0. Furthermore, to satisfy bitstream consistency, for i ranging from 0 to syntax element 1252 ("pps_num_slices_in_pic_minus1") (inclusive), and j ranging from 0 to NumCtusInSlice[i]-1 (inclusive), the matrix CtbAddrInSlice[i][j] includes all CTB addresses in the range of 0 to PicSizeInCtbsY-1 (inclusive), once and only once.
[0160] The lists NumSlicesInSubpic[i] (number of slices In subpic[i]), SubpicLevelSliceIdx[j] (subpicture level slice index [j]), and SubpicIdxForSlice[j] (subpicture index For slice [j]) can be derived, which respectively specify the number of slices in the i-th subpicture, the subpicture level slice index of the slice with picture level slice index j, and the subpicture index of the slice with picture level slice index j. Figure 23 Exemplary pseudo code including the derivation of the variables NumSlicesInSubpic, SubpicLevelSliceIdx, and SubpicIdxForSlice according to some embodiments of the present disclosure is shown.
[0161] An embodiment of the present disclosure provides indicating a flag in the SPS to indicate whether an image in the current CLVS is divided into a plurality of tiles or strips, and indicating the flag in the PPS with the same value as the flag indicated in the SPS. Figure 24 An exemplary encoding syntax table of a portion of an SPS syntax structure 2400 indicated in an SPS is shown, with emphasis in bold, consistent with some embodiments of the present disclosure. Figure 11 The syntactic structure 1100 modifies the syntactic structure 2400. Figure 24 As shown, highlighting the Figure 11 Changes to the previous syntax shown.
[0162] and Figure 11 Compared to the SPS syntax shown in , in some embodiments, Figure 24In the SPS syntax shown, an SPS flag 2410 ("sps_no_pic_partition_flag") is indicated before the SPS flag 1110. An SPS flag 2410 ("sps_no_pic_partition_flag") equal to 1 specifies that picture partitioning is not applied to each picture that references this SPS. An SPS flag 2410 equal to 0 specifies that each picture that references this SPS may be partitioned into multiple tiles or slices.
[0163] In some embodiments, it is possible to introduce Figure 24 For example, the additional constraint may be that the value of the flag 1210 ("pps_no_pic_partition_flag") indicated in the PPS is equal to the value of the SPS flag 2410 ("sps_no_pic_partition_flag") in the associated SPS.
[0164] Additionally, another constraint may be added to ensure that when the value of the SPS flag 2410 is equal to 1, the value of the syntax element 1112 ("sps_num_subpics_minus1") is 0. Because a sub-picture is a set of slices, when there is no partitioning of slices (e.g., the SPS syntax element flag is 1), there can be no partitioning of sub-pictures (e.g., the SPS syntax element 1112 is 0).
[0165] Figure 25 An exemplary encoding syntax table of a portion of an SPS syntax structure 2500 indicated in an SPS is shown, with emphasis in bold, consistent with some embodiments of the present disclosure. The syntax structure 2500 is also based on Figure 11 The syntactic structure 1100 is modified. Figure 25 As shown, the Figure 11 Changes to the previous syntax shown.
[0166] As described above, in some embodiments, when the SPS flag 2410 ("sps_no_pic_partitoin_flag") is equal to 1, the number of sub-pictures can only be 1. Therefore, the SPS flag 1110 ("sps_subpic_info_present_flag") or the SPS syntax element 1112 ("sps_num_subpics_minus1") can indicate this conditionally based on the value of the SPS flag 2410 ("sps_no_pic_partitoin_flag"). For example, Figure 25As shown, when the SPS flag 2410 ("sps_no_pic_partitoin_flag") is equal to 0, the SPS flag 1110 ("sps_subpic_info_present_flag") is indicated, and when the value of the SPS flag 2410 ("sps_no_pic_partitoin_flag") is equal to 1, the indication of the SPS flag 1110 ("sps_subpic_info_present_flag") may be skipped. When the indication of the SPS flag 1110 is skipped, the value of the SPS flag 1110 ("sps_subpic_info_present_flag") may be determined to be 0. In other words, when the SPS does not allow the image to be split, the sub-picture information does not exist.
[0167] exist Figure 25 In the syntax of , an SPS flag 2410 ("sps_no_pic_partitoin_flag") equal to 1 specifies that picture partitioning is not applied to each picture of the reference SPS. An SPS flag 2410 equal to 0 specifies that each picture of the reference SPS may be partitioned into multiple tiles or strips. Figure 25 In the syntax of the CLVS, an SPS flag 1110 ("sps_subpic_info_present_flag") equal to 1 specifies that for CLVS, sub-picture information is present and that one or more sub-pictures may be present in each picture of the CLVS. An SPS flag 1110 ("sps_subpic_info_present_flag") equal to 0 specifies that for CLVS, sub-picture information is not present and that there may be only one sub-picture in each picture of the CLVS. When not present, the value of the SPS flag 1110 ("sps_subpic_info_present_flag") may be determined to be equal to 0.
[0168] Figure 26 Another exemplary encoding syntax table of a portion of an SPS syntax structure 2600 indicated in an SPS consistent with some embodiments of the present disclosure is shown, with emphasis in bold. The syntax structure 2600 is also based on Figure 11 The syntactic structure 1100 is modified. Figure 26 As shown, the Figure 11 Changes to the previous syntax shown.
[0169] like Figure 26As shown, in some embodiments, when the flag 1110 is equal to 1 and the SPS flag 2410 is equal to 0, the SPS flag 1112 ("sps_num_subpics_minus1") is indicated. In other words, when the SPS flag 2410 ("sps_no_pic_partitoin_flag") is equal to 1, the indication of the SPS flag 1112 ("sps_num_subpics_minus1") is skipped. As discussed above, when the value of the SPS flag 2410 is 1, the value of the SPS flag 1112 ("sps_num_subpics_minus1") is determined to be 0. In other words, when the SPS does not allow the image to be partitioned, the number of subpictures can only be 1.
[0170] exist Figure 26 In the syntax of , an SPS flag 2410 ("sps_no_pic_partitoin_flag") equal to 1 specifies that picture partitioning is not applied to each picture of the reference SPS. An SPS flag 2410 equal to 0 specifies that each picture of the reference SPS may be partitioned into multiple tiles or strips. Figure 26 In the syntax of
[0065] , the SPS flag 1112 ("sps_num_subpics_minus1") plus 1 specifies the number of sub-pictures in each picture in the CLVS. The value of the SPS flag 1112 ("sps_num_subpics_minus1") is in the range of 0 to Ceil(sps_pic_width_max_in_luma_samples ÷ CtbSizeY) × Ceil(sps_pic_height_max_in_luma_samples ÷ CtbSizeY) - 1, inclusive. When not present, the value of the SPS flag 1112 ("sps_num_subpics_minus1") may be determined to be equal to 0.
[0171] In some embodiments, the constraint that the value of the PPS flag 1210 ("pps_no_pic_partition_flag") must be the same for all PPSs referenced by coded pictures within a CLVS can be removed. In other words, for pictures within the same CLVS, different PPSs can independently indicate PPS flags 1210 ("pps_no_pic_partition_flag") with different values. As a result, within one CLVS, some pictures with the PPS flag 1210 ("pps_no_pic_partition_flag") equal to 1 are not partitioned into multiple slices or tiles, while other pictures with the PPS flag 1210 ("pps_no_pic_partition_flag") equal to 0 are partitioned into multiple slices or tiles. Therefore, the constraint that the value of the PPS flag 1210 ("pps_no_pic_partition_flag") must be the same for all PPSs referenced by coded pictures within a CLVS can be removed.
[0172] Figures 27A-27C Flowcharts of exemplary video encoding or decoding methods 2700A, 2700B, and 2700C consistent with some embodiments of the present disclosure are shown, respectively. By applying any of the video encoding or decoding methods 2700A, 2700B, and 2700C, one or more SPS syntax elements or flags can be conditionally indicated based on the values of other SPS syntax elements or flags, thereby reducing the number of output bits and achieving higher coding performance. When the value of an SPS syntax element or flag is not indicated in the SPS, it can be determined or allocated accordingly. In some embodiments, methods 2700A-2700C can be performed by an encoder (e.g., Figure 2A Course 200A or Figure 2B 200B in the encoder) or decoder (e.g., performing Figure 3A The decoding process 300A or Figure 3B The decoding process 300B in the decoder) is performed to generate or decode Figure 5 For example, an encoder or decoder may be implemented to encode or transcode a video sequence (e.g., Figure 2A or Figure 2B 202 in the video sequence to generate a bitstream of the video sequence (eg, Figure 2A or Figure 2B ), or a decoded bitstream (e.g., Figure 3A or Figure 3B 228) to reconstruct the video stream of the bitstream (e.g., Figure 3A or Figure 3B 304) of the video stream (e.g., Figure 4For example, one or more processors (e.g., Figure 4 The processor 402 in can execute methods 2700A-2700C.
[0173] Figure 24 The syntax structure 2400 shown in FIG2 can be applied in method 2700A. At step 2710, the apparatus is configured to encode or decode an SPS flag 2410 ("sps_no_pic_partition_flag") in a sequence parameter set (SPS) of a bitstream. The SPS flag 2410 indicates whether one or more pictures in a coded layer video sequence (CLVS) referenced by the SPS are allowed to be partitioned into tiles or slices.
[0174] At step 2720, the apparatus is configured to encode or decode an SPS flag 1110 ("sps_subpic_info_present_flag") in the SPS. The SPS flag 1110 indicates whether sub-picture information is present for the CLVS referencing the SPS.
[0175] At step 2730 , the device is configured to determine whether the SPS flag 1110 is equal to 1. In response to the SPS flag 1110 being zero (step 2730 —No), the device bypasses step 2740 and continues the encoding or decoding process without indicating the SPS syntax element 1112 (“sps_num_subpics_minus1”).
[0176] In response to the SPS flag 1110 being equal to 1 (step 2730 - yes), the device executes step 2740 and is configured to encode or decode the SPS syntax element 1112 ("sps_num_subpics_minus1") in the SPS. The SPS syntax element 1112 ("sps_num_subpics_minus1") is a sequence parameter related to the number of sub-pictures in each picture in the CLVS that references the SPS. In particular, the SPS syntax element 1112 plus 1 specifies the number of sub-pictures in each picture in the CLVS. It should be understood that although this example flowchart shows the SPS flag 1110 being equal to 1 as causing step 2740 to be executed, it should be understood that the indication of 0 and 1 is a design choice and the results of the SPS flag 1110 and other syntax elements can be reversed (e.g., the SPS flag 1110 being equal to 0 causes step 2740 to be executed).
[0177] At step 2750 , the apparatus is configured to encode or decode a PPS flag 1210 (“pps_no_pic_partition_flag”) in a picture parameter set (PPS) following the SPS, the PPS flag 1210 being equal to the SPS flag 1110 for indicating whether the picture referring to the PPS is allowed to be partitioned.
[0178] Figure 25 The syntax structure 2500 shown in can be applied to method 2700B. Compared to method 2700A, in method 2700B, after step 2170, the device performs step 2715 and is configured to determine whether the SPS flag 2410 is equal to zero (indicating that the image associated with the SPS is allowed to be segmented). In response to the SPS flag 2410 being one (step 2715-no), indicating that the image associated with the SPS is not segmented, the device bypasses step 2720 and skips encoding or decoding the SPS flag 1110. In some embodiments, when the indication of the SPS flag 1110 is skipped, the value of the SPS flag 1110 can be determined to be 0.
[0179] Figure 26 The syntax structure 2600 shown in FIG27 can be applied in method 2700C. Compared to methods 2700A and 2700B, in method 2700C, in response to the SPS flag 1110 being equal to 1 (step 2730—yes), the device performs step 2715 and is configured to determine whether the SPS flag 2410 is equal to zero. In response to the SPS flag 2410 being one (step 2715—no), indicating that the picture associated with the SPS is not segmented, the device bypasses step 2740 and skips encoding or decoding the SPS syntax element 1112 associated with the number of sub-pictures in each picture in the CLVS of the reference SPS. In some embodiments, when the indication of the SPS syntax element 1112 is skipped, the value of the SPS syntax element 1112 can be determined to be 0.
[0180] With the method 2700B or 2700C, the SPS flag 1110 ("sps_subpic_info_present_flag") or the SPS syntax element 1112 ("sps_num_subpics_minus1") may be conditionally indicated based on the value of the SPS flag 2410 ("sps_no_pic_partitoin_flag").
[0181] Embodiments of the present disclosure provide an updated method to indicate the flag 1240 ("pps_rect_slice_flag"). Figure 28FIG. 2 shows an exemplary modified coding syntax table of a partial PPS syntax structure 2800 including an updated flag indicating rectangular stripe mode or raster scan stripe mode according to some embodiments of the present disclosure. Figure 28 , with the highlighted Figure 12 Changes to the previous syntax shown.
[0182] In VVC (eg, VVC draft 9), flag 1240 ("pps_rect_slice_flag") is a flag indicating whether rectangular slice mode or raster scan slice mode is used. Figure 12 As shown, when the number of tiles is greater than 1, flag 1240 ("pps_rect_slice_flag") may be indicated. When the image contains only one tile, a raster scan strip containing only one tile may also be indicated by the rectangular strip mode. Therefore, when the number of tiles is equal to 1, there is no need to use the raster scan strip mode or indicate flag 1240 ("pps_rect_slice_flag"). Therefore, indication of flag 1240 ("pps_rect_slice_flag") is skipped, and the value of flag 1240 is determined to be 1, indicating that the rectangular strip mode is applied.
[0183] In some cases, when the number of bricks is less than a predetermined value, the indication of flag 1240 is unnecessary and redundant. When the number of bricks in an image is less than 4, there is at most one brick column or one brick row in the image, so raster scan strips can also be represented by rectangular strips. Therefore, in some embodiments, as long as the number of bricks is less than 4, the strip division of the raster scan strip is represented by a rectangular strip pattern. Alternatively, when the number of bricks is 2 or 3, the division can be represented by a rectangular strip pattern. By adopting this modification, the consistency and efficiency of the encoding and decoding process of the video stream can be improved.
[0184] Therefore, if Figure 28 As shown, when the number of tiles is less than 4, the indication of the flag 1240 ("pps_rect_slice_flag") may be skipped, and the value of the flag 1240 is determined to be 1. When the number of tiles is greater than 3, the flag 1240 ("pps_rect_slice_flag") is indicated. Figure 28In the syntax shown, a flag 1240 ("pps_rect_slice_flag") equal to 0 specifies that a raster scan stripe mode is used for each picture referenced by the PPS (i.e., tiles within each stripe are in raster scan order) and that stripe information is not indicated in the PPS. A flag 1240 ("pps_rect_slice_flag") equal to 1 specifies that a rectangular stripe mode is used for each picture referenced by the PPS (i.e., tiles within each stripe cover a rectangular area of the picture) and that stripe information is indicated in the PPS. When not present, the flag 1240 ("pps_rect_slice_flag") is determined to be equal to 1. The value of the flag 1240 ("pps_rect_slice_flag") is equal to 1 when the SPS flag 1110 ("sps_subpic_info_present_flag") is equal to 1 or the PPS flag "pps_mixed_nalu_types_in_pic_flag" is equal to 1.
[0185] Figure 29 Flowchart showing an exemplary video encoding or decoding method 2900 consistent with some embodiments of the present disclosure. Similar to methods 2700A-2700C, method 2900 may be performed by an encoder or decoder, which may be implemented as an apparatus for encoding or transcoding a video sequence or decoding a bitstream to reconstruct a video stream (e.g., Figure 4 For example, one or more processors (e.g., Figure 4 The processor 402 in can execute method 2900.
[0186] Figure 28The illustrated syntax structure 2800 can be used in method 2900. At step 2910, the device is configured to encode or decode, in a PPS following the SPS, a PPS flag 1210 ("pps_no_pic_partition_flag") indicating whether a picture referenced by the PPS is partitioned. As described above, in some embodiments, different PPSs within the same CLVS can independently indicate different values for the PPS flag 1210. For example, at step 2910, the device can encode or decode, in a first PPS, a first flag indicating whether a first picture referenced by the first PPS is partitioned into tiles or strips, and encode or decode, in a second PPS, a second flag indicating whether a second picture referenced by the second PPS is partitioned, where the first flag and the second flag have different values. For example, the first flag having a first value may indicate that the first picture of the CLVS is not partitioned, while the second flag having a second value different from the first value may indicate that partitioning of the second picture is permitted. In other words, the second picture of the CLVS may be partitioned, but the second picture may also be non-segmented.
[0187] At step 2920 , the apparatus is configured to determine whether the number of tiles of the image (eg, variable NumTilesInPic) is greater than a threshold value (eg, 3). In some embodiments, the threshold value is an integer greater than 1.
[0188] In response to the number of tiles of the image being greater than the threshold value (step 2920 —Yes), the device performs step 2930 to encode or decode a flag 1240 (“pps_rect_slice_flag”) indicating that a slice mode is applied to the image. For example, when a raster scan slice mode is applied to an image referenced by a PPS, the flag 1240 (“pps_rect_slice_flag”) is encoded or decoded with a first value (e.g., 0), and when a rectangular slice mode is applied to an image referenced by a PPS, the flag 1240 (“pps_rect_slice_flag”) is encoded or decoded with a second value (e.g., 1) different from the first value.
[0189] In response to the number of tiles of the image being not greater than the threshold (step 2920 —No), step 2930 is skipped. In some embodiments, when the indication of flag 1240 (“pps_rect_slice_flag”) is skipped, the value of flag 1240 is determined to be a second value (e.g., 1), indicating that rectangular strip mode is applied.
[0190] In step 2940, the device is configured to determine whether to apply the rectangular stripe mode based on the value of flag 1240. When the rectangular stripe mode is applied to the image referenced by the PPS (step 2940—Yes), the device performs step 2950 to encode or decode the stripe information in the PPS. When the raster scan stripe mode is applied to the image referenced by the PPS (step 2940—No), step 2950 is skipped.
[0191] Through method 2900, the constraints are removed so that different PPSs associated with images within the same CLVS can indicate PPS flags 1210 with different values. Furthermore, the indication of flags 1240 can be simplified and performed conditionally based on the number of tiles. Furthermore, stripe information can also be conditionally indicated in the PPS based on the stripe mode used for segmentation.
[0192] In VVC (e.g., VVC draft 9), according to the definition of rectangular slice mode, two cases of rectangular slices are supported in VVC. In the first case, a rectangular slice includes several complete bricks, which together constitute a rectangular area of the image. In the second case, a rectangular slice includes several consecutive complete CTU rows of a brick, which together constitute a rectangular area of the image. However, when pps_slice_flag is equal to 1, the semantics of pps_slice_flag only specifies the first case. Therefore, the previous semantics in VVC may not be accurate.
[0193] Embodiments of the present disclosure provide updated semantics for flag 1240 ("pps_rect_slice_flag"). In some embodiments, the case where a rectangular slice contains one or more complete tiles (e.g., Figure 9 The first stripe includes complete bricks 910 and 920) and a brick contains one or more stripes (e.g., Figure 9 The middle tile 930 (including portions 932 and 934 corresponding to the second and third slices) is specified in the semantics of flag 1240 ("pps_rect_slice_flag") being equal to 1. In other words, the semantics of flag 1240 are modified to reflect that flag 1240 ("pps_rect_slice_flag") being equal to 1 specifies that each tile within a slice covers a rectangular area of the image, "or each slice within a tile covers a rectangular area of the image," and that the slice information is indicated in the PPS.
[0194] Alternatively, the semantics of flag 1240 may also be modified to reflect that flag 1240 ("pps_rect_slice_flag") equal to 1 specifies that each tile within a slice covers a rectangular area of the image, "or each slice within a tile covers one or more consecutive complete CTU rows of the tile," and that the slice information is indicated in the PPS.
[0195] In some other embodiments, the semantics of the flag 1240 ("pps_rect_slice_flag") may directly refer to the raster scan strip mode and the rectangular strip mode. For example, the semantics of the flag 1240 may be modified to reflect that the flag 1240 ("pps_rect_slice_flag") equal to 0 specifies that "raster scan strip mode is used for each picture that references the PPS" and the strip information is not indicated in the PPS, and the flag 1240 ("pps_rect_slice_flag") equal to 1 specifies that "rectangular strip mode is used for each picture that references the PPS" and the strip information is indicated in the PPS.
[0196] In VVC (e.g., VVC draft 9), a flag 1250 ("pps_single_slice_per_subpic_flag") specifies whether each sub-image includes one or more rectangular slices. Therefore, the flag 1250 is relevant when the rectangular slice mode is applied. When the flag 1250 is not present, the value of the flag 1250 may be determined to be equal to 1. However, as Figure 12 As shown, the indication of flag 1250 ("pps_single_slice_per_subpic_flag") may be skipped in two different scenarios. In the first scenario, PPS flag 1210 ("pps_no_pic_partition_flag") is equal to 1, and flags and syntax elements related to slice partitioning are skipped. In the second scenario, flag 1240 ("pps_rect_slice_flag") is equal to 0, indicating that raster scan slice mode is applied, and flag 1250 ("pps_single_slice_per_subpic_flag") is irrelevant. Therefore, in the second scenario, it is unreasonable to determine the value of flag 1250 ("pps_single_slice_per_subpic_flag").
[0197] Thus, in some embodiments, when not present, the value of flag 1250 is determined when rectangular strip mode is applied, but is undetermined when raster scan strip mode is applied. Thus, flag 1250, when not present in the PPS, can be correctly determined in rectangular strip mode and not determined in the unrelated raster scan strip mode. Thus, encoding performance and consistency can be improved. For example, the semantics of flag 1250 can be modified to reflect that flag 1250 ("pps_single_slice_per_subpic_flag") equal to 1 specifies that each sub-image contains and only contains one rectangular strip. Flag 1250 ("pps_single_slice_per_subpic_flag") equal to 0 specifies that each sub-image can contain one or more rectangular strips. When PPS flag 1210 ("pps_no_pic_partition_flag") is equal to 1, the value of flag 1250 is determined to be equal to 1.
[0198] In VVC (e.g., VVC-Draft 9), when the syntax element 1262 ("pps_slice_width_in_tiles_minus1[i]") and the syntax element 1264 ("pps_slice_height_in_tiles_minus1[i]") are not present, the syntax elements 1262 and 1264 are determined to be equal to 0. However, in some semantics, the range of the index i is not clearly specified. Furthermore, in some embodiments, the syntax elements 1262 and 1264 indicate the width and height of the i-th slice, so the range of the index i is from 0 to the syntax element 1252 (e.g., the number of slices minus 1). However, for index i equal to the syntax element 1252 ("pps_num_slices_in_pic_minus1"), the values of the syntax element 1262 ("pps_slice_width_in_tiles_minus1[i]") and the syntax element 1264 ("pps_slice_height_in_tiles_minus1[i]") are not determined to be equal to 0. Therefore, it is desirable to clearly specify the range of index i for which the syntax elements 1262 and 1264 are determined to be equal to 0.
[0199] Embodiments of the present disclosure provide updated semantics for syntax elements 1262 and 1264. In some embodiments, the semantics of syntax elements 1262 and 1264 may be modified to reflect that syntax element 1262 plus 1 specifies the width of the i-th rectangular strip in units of tile columns, and that the value of syntax element 1262 should be in the range from 0 to NumTileColumns-1, inclusive. When not present for an index i in the range from 0 to syntax element 1252 minus 1, the value of syntax element 1262 is determined to be equal to 0.
[0200] Similarly, when syntax element 1266 is equal to 0, syntax element 1264 plus 1 specifies the height of the i-th rectangular strip in units of tile rows. The value of syntax element 1264 should be in the inclusive range from 0 to NumTileRows-1. When it does not exist for index i in the range from 0 to syntax element 1252 minus 1, the value of syntax element 1264 can be determined to be equal to 0 when SliceTopLeftTileIdx[i] / NumTileColumns is equal to NumTileRows-1. Otherwise, the value of syntax element 1264 for index i is determined to be equal to the value of syntax element 1264 for index (i-1) ("pps_slice_height_in_tiles_minus1[i-1]").
[0201] like Figure 12As shown, in some embodiments, the syntax element 1266 ("pps_num_exp_slices_in_tile[i]") specifies the number of slice heights that are explicitly provided for the slices in the tile containing the i-th slice. If the syntax element 1266 ("pps_num_exp_slices_in_tile[i]") is equal to 0, the tile containing the i-th slice is not split into multiple slices. If the syntax element 1266 ("pps_num_exp_slices_in_tile[i]") is not equal to 0 (for example, the syntax element 1266 ("pps_num_exp_slices_in_tile[i]") is greater than 0), the tile containing the i-th slice may or may not be split into multiple slices. In addition, when the syntax element 1266 ("pps_num_exp_slices_in_tile[i]") is greater than 0, the syntax element 1268 ("pps_exp_slice_height_in_ctus_minus1[i][j]") plus 1 specifies the height of the j-th rectangular slice in the tile containing the i-th slice in units of CTU rows, with index j in the range from 0 to the syntax element 1266 ("pps_num_exp_slices_in_tile[i]) minus 1, inclusive. The value of the syntax element 1268 ("pps_exp_slice_height_in_ctus_minus1[i][j]") is in the range from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns]-1, inclusive.
[0202] In the scenario where a tile includes only one strip, two different indication methods can be applied. In the first method, syntax element 1266 ("pps_num_exp_slices_in_tile[i]") is equal to 0, and the indication of syntax element 1268 ("pps_exp_slice_height_in_ctus_minus1[i][j]") is skipped. In the second method, syntax element 1266 ("pps_num_exp_slices_in_tile[i]") is equal to 1, and pps_exp_slice_height_in_ctus_minus1[i][0] is equal to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns]–1 (e.g., the height of the tile minus 1). Both indication methods indicate that the tile includes only one strip.
[0203] In some embodiments, the redundancy in the above indication method can be eliminated by modifying the syntax elements and their semantics. Embodiments of the present disclosure provide updated semantics for the PPS syntax. Figure 30 FIG. 3 shows an exemplary modified coding syntax table of a portion of the PPS syntax structure 3000 consistent with some embodiments of the present disclosure. Figure 30 Shown, from Figure 12 Changes to the previous syntax shown are shown in highlight mode, and syntax proposed for deletion is further shown in strikethrough.
[0204] and Figure 12 Compared to the SPS syntax shown, in some embodiments, such as Figure 30 As shown, the syntax element 1266 ("pps_num_exp_slices_in_tile[i]") is replaced with the syntax element 3066 ("pps_num_exp_slices_in_tile_minus1[i]") (e.g., pps_num_exp_slices_in_tile[i] minus 1). Thus, the first indication method is removed. When a tile includes one slice, the encoder indicates that the syntax element 3066 ("pps_num_exp_slices_in_tile_minus1[i]") is equal to 0, and then indicates that the syntax element 1268 (e.g., "pps_exp_slice_height_in_ctus_minus1[i][0]") is equal to the tile height minus 1.
[0205] exist Figure 30 In the syntax of , syntax element 3066 plus 1 specifies the number of stripe heights to be explicitly provided for the stripe in the brick containing the i-th stripe (i.e., the brick with brick index equal to SliceTopLeftTileIdx[i]). The value of syntax element 3066 shall be in the range from 0 to the corresponding brick height (RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns]) minus 2, inclusive. When not present, the value of syntax element 3066 is determined to be equal to 0.
[0206] exist Figure 30In the syntax of
[0065] , syntax element 1268 plus 1 specifies the height of the j-th rectangular slice in the tile containing the i-th slice in units of CTU rows, where index j is in the range from 0 to syntax element 3066 ("pps_num_exp_slices_in_tile_minus1[i]") inclusive. The syntax element "pps_exp_slice_height_in_ctus_minus1[i][pps_num_exp_slices_in_tile_minus1[i]]" is also used to derive the height of rectangular slices in the tile containing the i-th slice with indices greater than the syntax element 3066 specified herein.
[0207] Figure 31A and Figure 31B The following are respectively shown in accordance with some embodiments of the present disclosure. Figure 29 Example detailed operations for encoding or decoding the slice information in the PPS in step 2950 of method 2900. Figure 12 When the syntax is Figure 31A As shown, step 2950 includes steps 2952 and 2954. In step 2952, the device encodes or decodes the syntax element 1266 ("pps_num_exp_slices_in_tile[i]"), which specifies the number of slice heights explicitly provided for the slices in the tile containing the i-th slice. In step 2954, the device encodes or decodes the syntax element 1268 ("pps_exp_slice_height_in_ctus_minus1[i][j]"). The syntax element 1268 plus 1 specifies the height of the j-th rectangular slice in the tile containing the i-th slice.
[0208] When applied Figure 30 When the syntax of the modification is Figure 31B As shown, step 2950 includes steps 2956 and 2954. At step 2956, the device encodes or decodes syntax element 3066 ("pps_num_exp_slices_in_tile_minus1[i]"). Syntax element 3066 plus 1 specifies the number of slice heights explicitly provided for the slices in the tile containing the i-th slice.
[0209] Figure 32A flow chart of an exemplary video encoding or decoding method 3200 consistent with some embodiments of the present disclosure is shown. By applying the video encoding or decoding method 3200, one or more PPS syntax elements or flags can be conditionally indicated based on the values of other syntax elements or flags, which reduces the number of output bits and achieves higher encoding performance. When not indicated in the PPS, the value of the PPS syntax element or flag can be determined or assigned accordingly. Similar to methods 2700A-2700C and 2900, method 3200 can be performed by an encoder or decoder, which can be implemented as an apparatus for encoding or transcoding a video sequence, or decoding a bitstream to reconstruct a video stream (e.g., Figure 4 For example, one or more processors (e.g., Figure 4 The processor 402 in can execute method 3200.
[0210] In step 3205, the device is configured to encode or decode a PPS flag 1210 ("pps_no_pic_partition_flag") in a PPS, the PPS flag 1210 being used to indicate whether a picture referenced by the PPS is partitioned. As described above, in some embodiments, different PPSs within the same CLVS may independently indicate PPS flags 1210 having different values. For example, the device may encode or decode a first flag in a first PPS indicating whether a first picture referenced by the first PPS is partitioned into tiles or strips, and may encode or decode a second flag in a second PPS indicating whether a second picture referenced by the second PPS is partitioned, wherein the first flag and the second flag have different values.
[0211] In step 3210, the device determines whether the image referenced by the PPS is unsegmented based on the value of the PPS flag 1210. When the PPS flag 1210 is equal to 1 (step 3210—Yes), the image referenced by the PPS is unsegmented, and the device performs steps 3220 and 3230 to skip encoding or decoding the flag 1250 and determines the value of the flag 1250 to indicate that each sub-image includes a single rectangular strip. For example, in step 3230, the flag 1250 may be determined to be 1. When the PPS flag 1210 is equal to zero (step 3210—No), the device performs step 3225 to encode or decode the flag 1250.
[0212] After determining or encoding / decoding the value of flag 1250 in step 3230 or step 3225, the device determines, in step 3240, for an index i in the range from 0 to an upper limit equal to the number of rectangular slices in the image minus 2, that the syntax element 1262 ("pps_slice_width_in_tiles_minus1[i]") is zero when the syntax element 1262 is absent from the PPS. For index i, the syntax element 1262 is an image parameter associated with the width of the i-th rectangular slice. In some embodiments, the value of the syntax element 1262 is in the range from 0 to the number of columns of the corresponding tile (NumTileColumns) minus 1, inclusive.
[0213] As step 3250, for an index i in the range from 0 to an upper limit equal to the number of rectangular slices in the image minus 2, when the syntax element 1264 ("pps_slice_height_in_tiles_minus1[i]") is absent in the PPS, the device determines the value of the syntax element 1264. For index i, the syntax element 1264 is an image parameter associated with the height of the i-th rectangular slice. In some embodiments, the value of the syntax element 1264 is in the inclusive range from 0 to the number of rows of the corresponding tile (e.g., NumTileRows) minus 1. As discussed in the above embodiments, when absent, the syntax element 1264 for the i-th rectangular slice can be determined to be zero or equal to the value of the syntax element 1264 for the (i-1)-th rectangular slice.
[0214] In some other embodiments, the semantics of syntax element 1268 may be modified to reflect that the value of syntax element 1268 is in the inclusive range from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] minus 2. In other words, syntax element 1268 is an image parameter that is encoded or decoded using the upper limit value of the corresponding tile height minus 2.
[0215] Since the maximum value of syntax element 1268 is reduced to the height of the tile minus 2, the second indication method is removed. Therefore, when the corresponding tile contains a single stripe, syntax element 1266 is encoded or decoded as equal to 0. When the corresponding tile contains two or more stripes, syntax element 1266 is encoded or decoded as equal to or greater than 1.
[0216] As discussed above, in some embodiments, for rectangular strips within a tile, syntax element 1266 specifies the number of slice heights explicitly provided for the strips in the tile containing the i-th stripe. When syntax element 1266 is greater than 0, syntax element 1268, incremented by 1, specifies the height, in CTU rows, of the j-th rectangular strip in the tile containing the i-th stripe, with index j in the range from 0 to syntax element 1266 minus 1, inclusive. The value of syntax element 1268 is in the range from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] minus 1, inclusive.
[0217] It should be noted that for each individual stripe in a brick, each explicitly indicated stripe height ranges from 0 to the brick's height. Furthermore, given that the sum of the heights of all stripes within a brick should equal the brick's height, the sum of the explicitly indicated stripe heights is less than or equal to the brick's height. Since the minimum stripe height is 1, each explicitly indicated stripe height minus 1 should be less than or equal to the brick's height minus the total number of stripes in the brick.
[0218] Embodiments of the present disclosure provide updated semantics for syntax element 1268. Thus, the range of each explicitly indicated slice height may be reduced to a more precise value. In particular, the maximum value of syntax element 1268 ("pps_exp_slice_height_in_ctus_minus1[i][j]") may be changed to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] minus the number of strip heights explicitly provided for the strips in the current tile.
[0219] When with Figure 12 When combined with the illustrated embodiments, the semantics of syntax element 1268 may be modified to reflect that the value of syntax element 1268 should be in the inclusive range from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] minus the value of syntax element 1266. In other words, the upper limit of syntax element 1268 is the height of the corresponding tile minus the number of strip heights explicitly provided for the strips in the corresponding tile.
[0220] When with Figure 30 When combined with the illustrated embodiment of replacing syntax element 1266 with syntax element 3066, the semantics of syntax element 1268 may be modified to reflect that the value of syntax element 1268 should be in the inclusive range of 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] minus the value of syntax element 3066 minus 1.
[0221] When combined with an embodiment that reduces the maximum value of syntax element 1268 to the height of the tile minus 2, a function max(pps_num_exp_slices_in_tile[i],2) can be used which selects the larger of syntax element 1266 ("pps_num_exp_slices_in_tile[i]") and 2, and the semantics of syntax element 1268 can be further modified to reflect that the value of syntax element 1268 should be in the inclusive range from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] minus max(pps_num_exp_slices_in_tile[i],2). In other words, the upper limit value of syntax element 1268 is the smaller value of the height of the corresponding tile (e.g., RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns]) minus 2, or the height of the corresponding tile minus the number of tile heights explicitly provided in the corresponding tile (pps_num_exp_slices_in_tile[i]).
[0222] Figure 33 FIGURE 1 shows exemplary pseudo code including updated derivation of variables NumCtusInSlice, SliceTopLeftTileIdx, CtbAddrInSlice, and NumSlicesInTile according to some embodiments of the present disclosure. Figure 33 As shown, changes from the previous VVC are shown in a highlighted mode, and the syntax proposed for deletion is further shown in a strikethrough.
[0223] Figure 34 FIGURE 1 shows exemplary pseudo code including update derivation of variables NumCtusInSlice and CtbAddrInSlice according to some embodiments of the present disclosure. Figure 34 As shown, changes from the previous VVC are shown in italics, and proposed syntax deletions are further shown in strikethrough. Figure 34 In the pseudocode shown, an error and a redundant line in the derivation of NumCtusInSlice[i] and CtbAddrInSlice[i][j] in the previous VVC pseudocode are corrected.
[0224] In summary, as proposed in various embodiments of the present disclosure, by modifying the SPS and PPS syntax elements related to brick / slice partitioning, the encoding / decoding method can be consistent and efficient. In addition, by correctly determining the value of the syntax element when the syntax element is not indicated, the indication of some syntax elements related to brick / slice partitioning can be skipped in some cases, which reduces the number of output bits and thus improves coding efficiency.
[0225] Although various embodiments of the present disclosure are described with respect to the current VVC standard, it will be appreciated that the various embodiments are applicable to other video coding technologies.
[0226] The embodiments may be further described using the following terms:
[0227] 1. A method for encoding or decoding a video, comprising:
[0228] In a plurality of picture parameter sets (PPSs) associated with a picture of a coded layer video sequence (CLVS), encode or decode a corresponding first PPS flag, the first PPS flag indicating whether the picture is allowed to be partitioned into a plurality of tiles or slices, wherein:
[0229] In the first PPS, a corresponding first PPS flag having a first value indicates that the first image of the CLVS is not segmented, and in the second PPS, another corresponding first PPS flag having a second value different from the first value indicates that the second image of the CLVS is allowed to be segmented.
[0230] 2. A method for encoding or decoding a video, comprising:
[0231] determining whether the number of bricks that segment the image is greater than a threshold, the threshold being greater than 1; and
[0232] In response to whether the number of tiles of the segmented image is greater than a threshold, a second PPS flag associated with a striping mode applied to the segmented image is encoded or decoded.
[0233] 3. The method of clause 1 or clause 2, wherein encoding or decoding the second PPS indicator comprises:
[0234] When the raster scan strip mode is applied to the segmented image of the reference PPS, a second PPS flag having a third value is encoded or decoded; or when the rectangular strip mode is applied to the segmented image of the reference PPS, a second PPS flag having a fourth value different from the third value is encoded or decoded.
[0235] 4. The method according to Article 3, further comprising:
[0236] When a rectangular slice mode is applied to the divided image referring to the PPS, one or more syntax elements specifying slice information in the PPS are encoded or decoded.
[0237] 5. A method for encoding or decoding a video, comprising:
[0238] Determine whether the image is segmented into tiles or strips; and
[0239] In response to determining that partitioning of a picture into a plurality of tiles or slices is permitted, encoding or decoding in a picture parameter set (PPS) a first flag associated with a slice mode applied to pictures that reference the PPS, wherein:
[0240] When the raster scan strip mode is applied to segment the image, a first flag having a first value is encoded or decoded; or when the rectangular strip mode is applied to segment the image, a first flag having a second value different from the first value is encoded or decoded.
[0241] 6. A method according to any one of clauses 3 to 5, wherein:
[0242] In raster scan strip mode, the image is divided into a plurality of raster scan strips, and any one of the raster scan strips comprises a sequence of one or more complete bricks in a brick raster scan of the image; and
[0243] In rectangular strip mode, the image is partitioned into multiple rectangular strips, where one of the rectangular strips includes one or more tiles covering a rectangular area of the image, or one of the rectangular strips covers one or more consecutive rows of coding tree units of a tile.
[0244] 7. The method according to Article 5 or Article 6, further comprising:
[0245] Encodes or decodes a first picture parameter that specifies the number of strip heights provided for the strips in the corresponding brick minus 1. If the corresponding brick contains a single strip, the first picture parameter is equal to 0.
[0246] 8. The method of clause 7, wherein the value of the first image parameter is within an inclusive range from 0 to the corresponding brick height minus 2.
[0247] 9. The method according to any one of clauses 5 to 8, further comprising:
[0248] Encodes or decodes a third picture parameter that specifies the number of tile heights provided for strips in the corresponding tile. If the corresponding tile contains a single strip, the third picture parameter is equal to 0.
[0249] 10. The method according to Article 9, further comprising:
[0250] Encodes or decodes a second image parameter that specifies the height of the corresponding rectangular strip in the corresponding brick minus 1.
[0251] 11. The method according to claim 10, wherein the upper limit value of the second image parameter is the height of the corresponding brick minus 2.
[0252] 12. The method of clause 10, wherein the upper limit value of the second image parameter is the height of the corresponding brick minus a fourth image parameter, wherein the fourth image parameter indicates the number of strip heights provided for the strips in the corresponding brick.
[0253] 13. The method according to clause 10, wherein the upper limit of the second image parameter is the height of the corresponding brick minus the fifth image parameter, minus 1.
[0254] Therein, the fifth image parameter indicates the number of strip heights provided for the strips in the corresponding brick minus one.
[0255] 14. The method of clause 10, wherein the upper limit value of the second image parameter is the smaller value of the height of the corresponding brick minus 2 or the height of the corresponding brick minus the number of strip heights provided in the corresponding brick.
[0256] 15. A method for encoding or decoding a video, comprising:
[0257] encoding or decoding, in a picture parameter set (PPS) associated with at least one picture of a coded layer video sequence (CLVS), a first PPS flag indicating whether the associated picture is allowed to be split into a plurality of tiles or slices, wherein the first PPS flag being equal to a first value indicates that the associated picture is not split, or the first PPS flag being equal to a second value different from the first value indicates that the associated picture is allowed to be split; and
[0258] When the first PPS flag is equal to the first value, encoding or decoding a second PPS flag is skipped in the PPS, the second PPS flag indicating whether each sub-image of the associated image includes a single rectangular strip, and determining the value of the second PPS flag to be equal to a third value, wherein the second PPS flag equal to the third value indicates that each sub-image of the associated image includes a single rectangular strip.
[0259] 16. A method for encoding or decoding a video, comprising:
[0260] encoding or decoding, for index i, a first picture parameter associated with a width of an i-th rectangular slice in a picture parameter set (PPS) associated with at least one picture of a coded layer video sequence (CLVS); and
[0261] When the first image parameter does not exist in the PPS, determining that the first image parameter is zero,
[0262] Here, the index i ranges from 0 to an upper limit value equal to the number of rectangular strips in the image minus 2.
[0263] 17. The method according to Article 16, further comprising:
[0264] For index i, encoding or decoding a second image parameter associated with the height of the i-th rectangular strip; and
[0265] When the second picture parameter does not exist in the PPS for index i, the second picture parameter is determined to be zero or equal to the value of the third image parameter associated with the height of the (i-1)th rectangular strip.
[0266] 18. A method for encoding or decoding a video, comprising:
[0267] In a sequence parameter set (SPS) of a bitstream, encoding or decoding a first SPS flag indicating whether one or more pictures in a coded layer video sequence (CLVS) referencing the SPS are partitioned into multiple tiles or slices; and
[0268] In a picture parameter set (PPS) associated with an SPS, a first PPS flag equal to a first SPS flag is encoded or decoded, the first PPS flag being used to indicate whether a picture referring to the PPS is segmented.
[0269] 19. The method according to Article 18, further comprising:
[0270] In response to the first SPS flag indicating that the one or more pictures are not segmented, encoding or decoding a second SPS flag in the SPS is skipped, the second SPS flag indicating whether sub-picture information exists for the CLVS of the reference SPS.
[0271] 20. The method according to Article 18 or Article 19, further comprising:
[0272] In response to a first SPS flag indicating that the one or more pictures are not segmented, encoding or decoding a first SPS sequence parameter associated with a number of sub-pictures in each picture in the CLVS of the reference SPS is skipped.
[0273] 21. An apparatus comprising:
[0274] a memory configured to store instructions; and
[0275] One or more processors configured to execute instructions to cause the apparatus to:
[0276] In a plurality of picture parameter sets (PPSs) associated with a picture of a coded layer video sequence (CLVS), encoding or decoding a corresponding first PPS flag, the corresponding first PPS flag indicating whether the picture is allowed to be partitioned into a plurality of tiles or slices, wherein:
[0277] In the first PPS, a corresponding first PPS flag having a first value indicates that the first image of the CLVS is not segmented, and in the second PPS, another corresponding first PPS flag having a second value different from the first value indicates that the second image of the CLVS is allowed to be segmented.
[0278] 22. An apparatus comprising:
[0279] a memory configured to store instructions; and
[0280] One or more processors configured to execute instructions to cause the apparatus to:
[0281] determining whether the number of bricks that segment the image is greater than a threshold, the threshold being greater than 1; and
[0282] In response to the number of tiles that divide the image being greater than the threshold, a second PPS flag associated with a striping pattern applied to the divided image is encoded or decoded.
[0283] 23. The apparatus of clause 21 or clause 22, wherein the one or more processors are configured to execute instructions to cause the apparatus to encode or decode the second PPS marker by:
[0284] When the raster scan stripe mode is applied to the split image of the reference PPS, a second PPS flag having a third value is encoded or decoded; or when the rectangular stripe mode is applied to the split image of the reference PPS, the second PPS flag having a fourth value different from the third value is encoded or decoded.
[0285] 24. An apparatus according to clause 23, wherein the one or more processors are configured to execute instructions to further cause the apparatus to:
[0286] When the rectangular slice mode is applied to a divided picture referring to a PPS, one or more syntax elements specifying slice information in the PPS are encoded or decoded.
[0287] 25. An apparatus comprising:
[0288] a memory configured to store instructions; and
[0289] One or more processors configured to execute instructions to cause the apparatus to:
[0290] Determine whether the image is segmented into tiles or strips; and
[0291] In response to determining that partitioning of the picture into a plurality of tiles or slices is permitted, encoding or decoding in a picture parameter set (PPS) a first flag associated with a slice mode applied to the picture referenced to the PPS, wherein:
[0292] When the raster scan strip mode is applied to partition the image, a first flag having a first value is encoded or decoded; or when the rectangular strip mode is applied to partition the image, the first flag having a second value different from the first value is encoded or decoded.
[0293] 26. An apparatus according to Article 25, wherein:
[0294] In a raster scan strip mode, the image is divided into a plurality of raster scan strips, and any one of the raster scan strips comprises a sequence of one or more complete bricks in a brick raster scan of the image; and
[0295] In rectangular strip mode, the image is partitioned into multiple rectangular strips, where one of the rectangular strips includes one or more tiles covering a rectangular area of the image, or one of the rectangular strips covers one or more consecutive rows of coding tree units of a tile.
[0296] 27. An apparatus according to clause 25 or clause 26, wherein the one or more processors are configured to execute instructions to further cause the apparatus to:
[0297] Encodes or decodes a first picture parameter that specifies the number of strip heights provided for the strips in the corresponding brick minus 1. If the corresponding brick contains a single strip, the first picture parameter is equal to 0.
[0298] 28. An apparatus according to clause 27, wherein the value of the first image parameter is within an inclusive range from 0 to the corresponding brick height minus 2.
[0299] 29. The apparatus of any of clauses 25-28, wherein the one or more processors are configured to execute instructions to further cause the apparatus to:
[0300] Encodes or decodes a third picture parameter that specifies the number of tile heights provided for strips in the corresponding tile. If the corresponding tile contains a single strip, the third picture parameter is equal to 0.
[0301] 30. An apparatus according to clause 29, wherein the one or more processors are configured to execute instructions to further cause the apparatus to:
[0302] Encodes or decodes a second image parameter that specifies the height of the corresponding rectangular strip in the corresponding brick minus 1.
[0303] 31. The device according to clause 30, wherein the upper limit value of the second image parameter is the height of the corresponding brick minus 2.
[0304] 32. An apparatus according to clause 30, wherein the upper limit value of the second image parameter is the height of the corresponding brick minus a fourth image parameter, wherein the fourth image parameter indicates the number of strip heights provided for the strips in the corresponding brick.
[0305] 33. The device according to clause 30, wherein the upper limit of the second image parameter is the height of the corresponding brick minus the fifth image parameter, minus 1.
[0306] Therein, the fifth image parameter indicates the number of strip heights provided for the strips in the corresponding brick minus one.
[0307] 34. An apparatus according to clause 30, wherein the upper limit value of the second image parameter is the smaller value of the height of the corresponding brick minus 2 or the height of the corresponding brick minus the number of strip heights provided in the corresponding brick.
[0308] 35. An apparatus comprising:
[0309] a memory configured to store instructions; and
[0310] One or more processors configured to execute instructions to cause the apparatus to:
[0311] encoding or decoding, in a picture parameter set (PPS) associated with at least one picture of a coded layer video sequence (CLVS), a first PPS flag indicating whether the associated picture is allowed to be split into a plurality of tiles or slices, wherein the first PPS flag being equal to a first value indicates that the associated picture is not split, or the first PPS flag being equal to a second value different from the first value indicates that the associated picture is allowed to be split; and
[0312] When the first PPS flag is equal to the first value, encoding or decoding a second PPS flag is skipped in the PPS, the second PPS flag indicating whether each sub-image of the associated image includes a single rectangular strip, and determining the value of the second PPS flag to be equal to a third value, wherein the second PPS flag equal to the third value indicates that each sub-image of the associated image includes a single rectangular strip.
[0313] 36. An apparatus comprising:
[0314] a memory configured to store instructions; and
[0315] One or more processors configured to execute instructions to cause the apparatus to:
[0316] encoding or decoding, for index i, a first picture parameter associated with a width of an i-th rectangular slice in a picture parameter set (PPS) associated with at least one picture of a coded layer video sequence (CLVS); and
[0317] When the first image parameter does not exist in the PPS, determining that the first image parameter is zero,
[0318] Here, the index i ranges from 0 to an upper limit value equal to the number of rectangular strips in the image minus 2.
[0319] 37. An apparatus according to clause 36, wherein the one or more processors are configured to execute instructions to further cause the apparatus to:
[0320] For index i, encoding or decoding a second image parameter associated with the height of the i-th rectangular strip; and
[0321] When the second picture parameter does not exist in the PPS for index i, the second picture parameter is determined to be zero or equal to the value of the third image parameter associated with the height of the (i-1)th rectangular strip.
[0322] 38. An apparatus comprising:
[0323] a memory configured to store instructions; and
[0324] One or more processors configured to execute instructions to cause the apparatus to:
[0325] In a sequence parameter set (SPS) of a bitstream, encoding or decoding a first SPS flag indicating whether one or more pictures in a coded layer video sequence (CLVS) referencing the SPS are partitioned into multiple tiles or slices; and
[0326] In a picture parameter set (PPS) associated with an SPS, a first PPS flag equal to a first SPS flag is encoded or decoded, the first PPS flag indicating whether a picture referring to the PPS is segmented.
[0327] 39. An apparatus according to clause 38, wherein the one or more processors are configured to execute instructions to further cause the apparatus to:
[0328] In response to the first SPS flag indicating that the one or more pictures are not segmented, encoding or decoding a second SPS flag in the SPS is skipped, the second SPS flag indicating whether sub-picture information exists for the CLVS of the reference SPS.
[0329] 40. An apparatus according to clause 38 or clause 39, wherein the one or more processors are configured to execute instructions to further cause the apparatus to:
[0330] In response to a first SPS flag indicating that the one or more pictures are not segmented, encoding or decoding a first SPS sequence parameter associated with a number of sub-pictures in each picture in the CLVS of the reference SPS is skipped.
[0331] 41. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processors of a device to cause the device to perform operations comprising:
[0332] In a plurality of picture parameter sets (PPSs) associated with a picture of a coded layer video sequence (CLVS), encoding or decoding a corresponding first PPS flag, the corresponding first PPS flag indicating whether the picture is allowed to be partitioned into a plurality of tiles or slices, wherein:
[0333] In the first PPS, a corresponding first PPS flag having a first value indicates that the first image of the CLVS is not segmented, and in the second PPS, another corresponding first PPS flag having a second value different from the first value indicates that the second image of the CLVS is allowed to be segmented.
[0334] 42. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processors of a device to cause the device to perform operations comprising:
[0335] determining whether the number of bricks that segment the image is greater than a threshold, the threshold being greater than 1; and
[0336] In response to the number of tiles of the divided image being greater than a threshold, a second PPS flag associated with a striping pattern applied to the divided image is encoded or decoded.
[0337] 43. The non-transitory computer-readable storage medium of clause 41 or clause 42, wherein the set of instructions executable by one or more processors of the device further causes the device to encode or decode a second PPS marker by:
[0338] When the raster scan strip mode is applied to the split image of the reference PPS, a second PPS flag having a third value is encoded or decoded; or when the rectangular strip mode is applied to the split image of the reference PPS, a second PPS flag having a fourth value different from the third value is encoded or decoded.
[0339] 44. The non-transitory computer-readable storage medium of clause 43, wherein the set of instructions executable by one or more processors of the device further cause the device to perform operations comprising:
[0340] When the rectangular slice mode is applied to a divided picture referring to a PPS, one or more syntax elements specifying slice information in the PPS are encoded or decoded.
[0341] 45. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processors of a device to cause the device to perform operations comprising:
[0342] Determine whether the image is segmented into tiles or strips; and
[0343] In response to determining that partitioning of the picture into a plurality of tiles or slices is permitted, encoding or decoding in a picture parameter set (PPS) a first flag associated with a slice mode applied to the picture referenced to the PPS, wherein:
[0344] When the raster scan strip mode is applied to segment the image, a first flag having a first value is encoded or decoded; or when the rectangular strip mode is applied to segment the image, a first flag having a second value different from the first value is encoded or decoded.
[0345] 46. A non-transitory computer-readable storage medium according to clause 45, wherein:
[0346] In raster scan strip mode, the image is divided into a plurality of raster scan strips, and any one of the raster scan strips comprises a sequence of one or more complete bricks in a brick raster scan of the image; and
[0347] In rectangular strip mode, the image is partitioned into multiple rectangular strips, where one of the rectangular strips includes one or more tiles covering a rectangular area of the image, or one of the rectangular strips covers one or more consecutive rows of coding tree units of a tile.
[0348] 47. The non-transitory computer-readable storage medium of clause 45 or clause 46, wherein the set of instructions executable by one or more processors of the device further causes the device to perform operations comprising:
[0349] Encodes or decodes a first picture parameter, where the first picture parameter specifies the number of strip heights provided for the strips in the corresponding brick minus 1. If the corresponding brick contains a single strip, the first picture parameter is equal to 0.
[0350] 48. The non-transitory computer-readable storage medium of clause 47, wherein the value of the first image parameter is within an inclusive range of 0 to a height of the corresponding brick minus 2.
[0351] 49. The non-transitory computer-readable storage medium of any of clauses 45-48, wherein the set of instructions executable by one or more processors of the device further causes the device to perform operations comprising:
[0352] Encodes or decodes a third picture parameter that specifies the number of brick heights to provide for strips in the corresponding brick. If the corresponding brick contains a single strip, the third picture parameter is equal to 0.
[0353] 50. The non-transitory computer-readable storage medium of clause 49, wherein the set of instructions executable by one or more processors of the device further cause the device to perform operations comprising:
[0354] Encodes or decodes a second image parameter that specifies the height of the corresponding rectangular strip in the corresponding brick minus 1.
[0355] 51. The non-transitory computer-readable storage medium of clause 50, wherein the upper limit of the second image parameter is the height of the corresponding brick minus 2.
[0356] 52. A non-transitory computer-readable storage medium according to clause 50, wherein the upper limit value of the second image parameter is the height of the corresponding brick minus a fourth image parameter, wherein the fourth image parameter indicates the number of strip heights provided for the strips in the corresponding brick.
[0357] 53. The non-transitory computer-readable storage medium of clause 50, wherein the upper limit of the second image parameter is the height of the corresponding brick minus the fifth image parameter, minus 1.
[0358] Therein, the fifth image parameter indicates the number of strip heights provided for the strips in the corresponding brick minus one.
[0359] 54. A non-transitory computer-readable storage medium according to Article 50, wherein the upper limit value of the second image parameter is the smaller value of the height of the corresponding brick minus 2 or the height of the corresponding brick minus the number of strip heights provided in the corresponding brick.
[0360] 55. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processors of a device to cause the device to perform operations comprising:
[0361] encoding or decoding, in a picture parameter set (PPS) associated with at least one picture of a coded layer video sequence (CLVS), a first PPS flag indicating whether the associated picture is allowed to be split into a plurality of tiles or slices, wherein the first PPS flag being equal to a first value indicates that the associated picture is not split, or the first PPS flag being equal to a second value different from the first value indicates that the associated picture is allowed to be split; and
[0362] When the first PPS flag is equal to the first value, encoding or decoding a second PPS flag is skipped in the PPS, the second PPS flag indicating whether each sub-image of the associated image includes a single rectangular strip, and determining the value of the second PPS flag to be equal to a third value, wherein the second PPS flag equal to the third value indicates that each sub-image of the associated image includes a single rectangular strip.
[0363] 56. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processors of a device to cause the device to perform operations comprising:
[0364] encoding or decoding, for index i, a first picture parameter associated with a width of an i-th rectangular slice in a picture parameter set (PPS) associated with at least one picture of a coded layer video sequence (CLVS); and
[0365] When the first image parameter does not exist in the PPS, determining that the first image parameter is zero,
[0366] Here, the index i ranges from 0 to an upper limit value equal to the number of rectangular strips in the image minus 2.
[0367] 57. The non-transitory computer-readable storage medium of clause 56, wherein the set of instructions executable by one or more processors of the device further cause the device to perform operations comprising:
[0368] For index i, encoding or decoding a second image parameter associated with the height of the i-th rectangular strip; and
[0369] When the second image parameter does not exist in the PPS for index i, the second image parameter is determined to be zero or equal to the value of the third image parameter associated with the height of the (i-1)th rectangular strip.
[0370] 58. A non-transitory computer-readable storage medium storing a set of instructions executable by one or more processors of a device to cause the device to perform operations comprising:
[0371] In a sequence parameter set (SPS) of a bitstream, encoding or decoding a first SPS flag indicating whether one or more pictures in a coded layer video sequence (CLVS) referencing the SPS are partitioned into multiple tiles or slices; and
[0372] In a picture parameter set (PPS) associated with an SPS, a first PPS flag equal to a first SPS flag is encoded or decoded, the first PPS flag indicating whether a picture referring to the PPS is segmented.
[0373] 59. The non-transitory computer-readable storage medium of clause 58, wherein the set of instructions executable by one or more processors of the device further cause the device to perform operations comprising:
[0374] In response to a first SPS flag indicating that one or more pictures are not segmented, encoding or decoding a second SPS flag in the SPS is skipped, the second SPS flag indicating whether sub-picture information exists for a CLVS referencing the SPS.
[0375] 60. The non-transitory computer-readable storage medium of clause 58 or clause 59, wherein the set of instructions executable by one or more processors of the device further causes the device to perform operations comprising:
[0376] In response to a first SPS flag indicating that the one or more pictures are not segmented, encoding or decoding a first SPS sequence parameter associated with a number of sub-pictures in each picture in the CLVS of the reference SPS is skipped.
[0377] The present disclosure also provides an apparatus for encoding or decoding a video, comprising:
[0378] a first processing module for encoding or decoding, in a plurality of picture parameter sets (PPSs) associated with a picture of a coded layer video sequence (CLVS), corresponding first PPS flags, the corresponding first PPS flags indicating whether the picture is allowed to be split into a plurality of tiles or slices;
[0379] The second processing module is configured to, in a first PPS, indicate that a first image of the CLVS is not segmented by a corresponding first PPS flag having a first value, and in a second PPS, indicate that a second image of the CLVS is allowed to be segmented by another corresponding first PPS flag having a second value different from the first value.
[0380] In some embodiments, the apparatus for encoding or decoding a video further includes: a third processing module; the third processing module is configured to:
[0381] determining whether the number of bricks that segment the image is greater than a threshold, the threshold being greater than 1; and
[0382] In response to the number of tiles of the segmented image being greater than the threshold, a second PPS flag is encoded or decoded, the second PPS flag being associated with a striping mode applied to the segmented image.
[0383] In some embodiments, the third processing module is specifically configured to:
[0384] When a raster scan strip mode is applied to the segmented image referenced by the PPS, the second PPS flag having a third value is encoded or decoded; or when a rectangular strip mode is applied to the segmented image referenced by the PPS, the second PPS flag having a fourth value different from the third value is encoded or decoded.
[0385] In some embodiments, the apparatus for encoding or decoding a video further includes: a fourth processing module; and a fourth processing module configured to:
[0386] When the rectangular slice mode is applied to the divided picture referring to the PPS, one or more syntax elements specifying slice information in the PPS are encoded or decoded.
[0387] In some embodiments, a non-transitory computer-readable storage medium including instructions is also provided, and the instructions can be executed by a device (e.g., the disclosed encoder and decoder) to perform the above method. Common forms of non-transitory media include, for example, a floppy disk, a foldable disk, a hard disk, a solid-state drive, a magnetic tape or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with a hole pattern, RAM, PROM and EPROM, FLASH-EPROM or any other flash memory, NVRAM, cache, registers, any other memory chip or cartridge and network versions thereof. The device may include one or more processors (CPUs), input / output interfaces, network interfaces, and / or memories.
[0388] It should be noted that relational terms in this document, such as "first" and "second," are used only to distinguish one entity or operation from another entity or operation, and do not require or imply any actual relationship or order between these entities or operations. In addition, the words "include," "have," "include," and other similar forms are intended to have the same meaning and are open-ended, in that one or more items following any of these words are not intended to be an exhaustive list of the one or more items, or to be limited to only the one or more items listed.
[0389] As used herein, unless specifically stated otherwise, the term "or" includes all possible combinations unless otherwise indicated. For example, if it is stated that a database may include A or B, then unless otherwise specified or not applicable, the database may include A, or B, or A and B. As a second example, if it is stated that a database may include A, B, or C, then unless otherwise specified or not applicable, the database may include A, or B, or C, or A and B, or A and C, or B and C, or A, B, and C.
[0390] It will be understood that the above embodiments can be implemented by hardware or software (program code) or a combination of hardware and software. If implemented by software, it can be stored in the above-mentioned computer-readable medium. When the software is executed by a processor, the disclosed method can be executed. The computing units and other functional units described in this disclosure can be implemented by hardware, software or a combination of hardware and software. Those of ordinary skill in the art will also understand that multiple of the above-mentioned modules / units can be combined into one module / unit, and each of the above-mentioned modules / units can be further divided into multiple sub-modules / sub-units.
[0391] In the foregoing description, embodiments have been described with reference to many specific details that may vary depending on the implementation. Certain adjustments and modifications may be made to the described embodiments. Other embodiments may be apparent to those skilled in the art, given the description and practice of the present disclosure disclosed herein. This description and examples are to be considered merely exemplary, with the true scope and spirit of the present disclosure being indicated by the following claims. The order of steps shown in the figures is also for illustrative purposes only and is not intended to be limiting to any particular order of steps. Therefore, those skilled in the art will appreciate that these steps may be performed in different orders while implementing the same method.
[0392] In the drawings and the specification, exemplary embodiments have been disclosed. However, many variations and modifications may be made to these embodiments. Therefore, although specific terms are used, they are used only in a generic and descriptive sense and not for purposes of limitation.
Claims
1. A method for encoding or decoding a video, wherein: include: In a plurality of picture parameter sets PPS associated with a picture of a coding layer video sequence CLVS, encoding or decoding a corresponding first PPS flag, the corresponding first PPS flag indicating whether partitioning of the picture into a plurality of tiles or slices is allowed, wherein: In a first PPS, a corresponding first PPS flag having a first value indicates that the first image of the CLVS is not segmented, and in a second PPS, another corresponding first PPS flag having a second value different from the first value indicates that segmentation of the second image of the CLVS is permitted; and and skipping encoding or decoding a second PPS flag in the first PPS, the second PPS flag indicating whether each sub-image of the first image includes a single rectangular strip, and determining a value of the second PPS flag equal to a third value, wherein the second PPS flag equal to the third value indicates that each sub-image of the first image includes a single rectangular strip.
2. The method according to claim 1, wherein Also includes: determining whether the number of bricks that segment the image is greater than a threshold, the threshold being greater than or equal to 1; as well as In response to the number of tiles of the segmented image being greater than the threshold, a third PPS flag is encoded or decoded, the third PPS flag being associated with a striping mode applied to the segmented image.
3. The method according to claim 2, wherein: The encoding or decoding of the third PPS indicator comprises: When a raster scan strip mode is applied to the segmented image referenced by the PPS, the third PPS flag having a fourth value is encoded or decoded; or when a rectangular strip mode is applied to the segmented image referenced by the PPS, the third PPS flag having a fifth value different from the fourth value is encoded or decoded.
4. The method according to claim 3, wherein: Also includes: When the rectangular slice mode is applied to the divided picture referring to the PPS, one or more syntax elements specifying slice information in the PPS are encoded or decoded.
5. A device for encoding or decoding video, wherein: include: a memory configured to store instructions; as well as One or more processors configured to execute the instructions to cause the apparatus to: Determine if the image is split into tiles or strips; as well as In response to determining that partitioning of the picture into a plurality of tiles or slices is permitted, encoding or decoding in a picture parameter set (PPS) a first flag associated with a slice mode applied to the picture referenced by the PPS, wherein: encoding or decoding a first flag having a first value when a raster scan strip mode is applied to segment the image; or encoding or decoding the first flag having a second value different from the first value when a rectangular strip mode is applied to segment the image; encoding or decoding a first picture parameter, the first picture parameter specifying a number of tile heights to provide for strips in a corresponding tile, the first picture parameter being equal to 0 in response to the corresponding tile comprising a single strip; and A second image parameter is encoded or decoded, the second image parameter specifying a height of a corresponding rectangular strip in the corresponding brick minus 1.
6. The device according to claim 5, wherein: In the raster scan strip mode, the image is divided into a plurality of raster scan strips, and any of the raster scan strips comprises a sequence of one or more complete bricks in a brick raster scan of the image; and In the rectangular strip mode, the image is partitioned into a plurality of rectangular strips, wherein one of the rectangular strips comprises one or more bricks covering a rectangular area of the image, or one of the rectangular strips covers one or more consecutive rows of coding tree units of a brick.
7. The device according to claim 5, wherein The one or more processors are configured to execute the instructions to further cause the apparatus to: A third picture parameter is encoded or decoded, the first picture parameter specifying a number of stripe heights provided for stripes in a corresponding tile minus one, the third picture parameter being equal to zero in response to the corresponding tile containing a single stripe.
8. The device according to claim 7, wherein The value of the first image parameter is within the inclusive range from 0 to the height of the corresponding brick minus 2.
9. The device according to claim 5, in, The upper limit of the second image parameter is the height of the corresponding brick minus 1.
10. The device according to claim 5, wherein The upper limit value of the second image parameter is the height of the corresponding tile minus a fourth image parameter, wherein the fourth image parameter indicates the number of stripe heights provided for the stripes in the corresponding tile.
11. The device according to claim 5, wherein The upper limit of the second image parameter is the height of the corresponding brick minus the fifth image parameter, minus 1. Wherein, the fifth image parameter indicates the number of strip heights provided for the strips in the corresponding brick minus 1.
12. The device according to claim 5, wherein The upper limit value of the second image parameter is the smaller value of the height of the corresponding tile minus 2 or the height of the corresponding tile minus the number of stripe heights provided in the corresponding tile.
13. A non-transitory computer-readable storage medium storing a video data bitstream, wherein: The bitstream comprises a picture parameter set PPS associated with at least one picture of a coding layer video sequence CLVS, the bitstream being processed by an encoder or a decoder according to the following method, the method comprising: encoding or decoding a first PPS flag in the PPS, the first PPS flag indicating whether an associated picture is allowed to be segmented into a plurality of tiles or strips, wherein the first PPS flag being equal to a first value indicates that the associated picture is not segmented, or the first PPS flag being equal to a second value different from the first value indicates that segmentation of the associated picture is allowed; and When the first PPS flag is equal to a first value, encoding or decoding a second PPS flag is skipped in the PPS, the second PPS flag indicating whether each sub-image of the associated image includes a single rectangular strip, and determining that the value of the second PPS flag is equal to a third value, wherein the second PPS flag equal to the third value indicates that each sub-image of the associated image includes a single rectangular strip.
14. The non-transitory computer-readable storage medium of claim 13, wherein: The method further comprises: For index i, in the PPS, encode or decode a first picture parameter associated with the width of the i-th rectangular strip; and When the first image parameter does not exist in the PPS, determining that the first image parameter is zero, The index i ranges from 0 to an upper limit value equal to the number of rectangular strips in the image minus 2.
15. The non-transitory computer-readable storage medium of claim 14, wherein: The method further comprises: For the index i, encoding or decoding a second picture parameter associated with the height of the i-th rectangular strip in the PPS; and When the second picture parameter does not exist in the PPS for the index i, the second picture parameter is determined to be zero or equal to a value of a third image parameter associated with a height of an (i-1)th rectangular slice.
16. The non-transitory computer-readable storage medium of claim 13, wherein: The bitstream further comprises a sequence parameter set (SPS) associated with the PPS, and the method further comprises: In the SPS, encoding or decoding a first SPS flag, the first SPS flag indicating whether one or more pictures in the CLVS referring to the SPS are divided into a plurality of tiles or strips; and In the PPS, a first PPS flag equal to the first SPS flag is encoded or decoded, the first PPS flag being used to indicate whether the image referring to the PPS is segmented.
17. The non-transitory computer-readable storage medium of claim 16, wherein: The method further comprises: In response to the first SPS flag indicating that the one or more pictures are not segmented, encoding or decoding a second SPS flag in the SPS is skipped, the second SPS flag indicating whether sub-picture information exists for the CLVS referencing the SPS.
18. The non-transitory computer-readable storage medium of claim 16, wherein: The method further comprises: In response to the first SPS flag indicating that the one or more pictures are not segmented, encoding or decoding a first SPS sequence parameter associated with a number of sub-pictures in each picture in the CLVS referencing the SPS is skipped in the SPS.
Citation Information
Patent Citations
Method and apparatus for video coding and decoding
US20140218473A1