Method of performing loop motion compensation

By using a video coding method that receives and utilizes orbital motion compensation flags and offsets, the problem of insufficient coding efficiency in the VVC/H.266 standard is solved, achieving more efficient video coding and transmission.

CN120264012BActive Publication Date: 2026-03-31ALIBABA (CHINA) CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-12-17
Publication Date
2026-03-31

AI Technical Summary

Technical Problem

Existing video coding technologies, such as VVC/H.266, have not fully utilized surround motion compensation techniques to improve coding efficiency in high-efficiency video coding standards.

Method used

By receiving the surround motion compensation flag and offset, it determines whether surround motion compensation is enabled and performs motion compensation operations based on the flag and offset to optimize the video encoding process.

Benefits of technology

It improves video encoding efficiency, reduces storage space and transmission bandwidth requirements, and enhances video quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120264012B_ABST
    Figure CN120264012B_ABST
Patent Text Reader

Abstract

The present disclosure provides a method for performing wrap-around motion compensation. The method can include receiving a first wrap-around motion compensation flag, wherein the first wrap-around motion compensation flag is associated with a picture in a group of pictures; determining whether the first wrap-around motion compensation flag is enabled; in response to determining that the first wrap-around motion compensation flag is enabled, receiving a wrap-around motion compensation offset, wherein the wrap-around motion compensation offset is associated with the picture; and performing motion compensation on the picture according to the first wrap-around motion compensation flag and the wrap-around motion compensation offset.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] This disclosure claims priority to U.S. Provisional Patent Application No. 62 / 949,396, filed December 17, 2019, the entire contents of which are incorporated herein by reference. Technical Field

[0003] This disclosure relates generally to video processing, and more specifically to methods and systems for performing orbital motion compensation. Background Technology

[0004] Video is a set of still images (or "frames") that capture visual information. To reduce storage memory and transmission bandwidth, video can be compressed before storage or transmission and then decompressed before display. The compression process is usually called encoding, and the decompression process is usually called decoding. There are various video coding formats that use standardized video coding techniques, the most common being prediction, transform, quantization, entropy coding, and in-loop filtering. Video coding standards, such as High Efficiency Video Coding (e.g., HEVC / H.265), Universal Video Coding (e.g., VVC / H.266), and AVS, specify particular video coding formats and are developed by standardization organizations. As more advanced video coding techniques are adopted in video standards, the coding efficiency of new video coding standards is becoming increasingly higher. Summary of the Invention

[0005] This disclosure provides a method for performing motion compensation. The method includes:

[0006] The system receives a first surround motion compensation flag, wherein the first surround motion compensation flag is associated with an image in a set of images; determines whether to enable the first surround motion compensation flag; in response to determining that the first surround motion compensation flag is enabled, receives a surround motion compensation offset, wherein the surround motion compensation offset is associated with the image; and performs motion compensation on the image based on the first surround motion compensation flag and the surround motion compensation offset.

[0007] This disclosure also provides a system for performing motion compensation. The system includes a memory storing a set of instructions, and a processor configured to execute the set of instructions to cause the system to: receive a first surround motion compensation flag, wherein the first surround motion compensation flag is associated with an image in a set of images; determine whether to enable the first surround motion compensation flag; in response to determining that the first surround motion compensation flag is enabled, receive a surround motion compensation offset, wherein the surround motion compensation offset is associated with the image; and perform motion compensation on the image based on the first surround motion compensation flag and the surround motion compensation offset.

[0008] Embodiments of this disclosure also provide a non-transitory computer-readable medium storing a set of instructions executable by one or more processors of a device to cause the device to initiate a method for performing motion compensation, the method comprising: receiving a first surround motion compensation flag, wherein the first surround motion compensation flag is associated with an image in a set of images; determining whether to enable the first surround motion compensation flag; in response to determining that the first surround motion compensation flag is enabled, receiving a surround motion compensation offset, wherein the surround motion compensation offset is associated with the image; and performing motion compensation on the image based on the first surround motion compensation flag and the surround motion compensation offset. Attached Figure Description

[0009] Embodiments and aspects of this disclosure are illustrated in the following detailed description and accompanying drawings. The various features shown in the figures are not drawn to scale.

[0010] Figure 1 The structure of an example video sequence according to some embodiments of this disclosure is shown.

[0011] Figure 2A A schematic diagram of an exemplary encoding process according to some embodiments of the present disclosure is shown.

[0012] Figure 2B A schematic diagram of another example encoding process according to some embodiments of the present disclosure is shown.

[0013] Figure 3A A schematic diagram of an exemplary decoding process according to some embodiments of the present disclosure is shown.

[0014] Figure 3B A schematic diagram of another example decoding process according to some embodiments of the present disclosure is shown.

[0015] Figure 4 A block diagram of an exemplary apparatus for encoding or decoding video according to some embodiments of the present disclosure is shown.

[0016] Figure 5A A schematic diagram of an example blending operation for generating a reconstructed rectangular projection according to some embodiments of the present disclosure is shown.

[0017] Figure 5B A schematic diagram of an example clipping operation for generating a reconstructed rectangular projection is shown according to some embodiments of the present disclosure.

[0018] Figure 6A A schematic diagram of an example horizontal surround motion compensation process for a rectangular projection according to some embodiments of the present disclosure is shown.

[0019] Figure 6B A schematic diagram of an exemplary horizontal surround motion compensation process for filling a rectangular projection according to some embodiments of the present disclosure is shown.

[0020] Figure 7 The syntax of an example set of sequence parameters for orbital motion compensation according to some embodiments of this disclosure is shown.

[0021] Figure 8 The semantics of an example set of sequence parameters for orbital motion compensation according to some embodiments of this disclosure are illustrated.

[0022] Figure 9 The syntax of an example set of sequence parameters for improved orbital motion compensation according to some embodiments of this disclosure is shown.

[0023] Figure 10 The semantics of an example set of sequence parameters for improved orbital motion compensation according to some embodiments of this disclosure are illustrated.

[0024] Figure 11 The semantics of an example set of sequence parameters for improved surround motion compensation with maximum image width are illustrated according to some embodiments of this disclosure.

[0025] Figure 12 Example derivations of the variables “PicRefWraparoundEnableFlag” and “PicRefWraparoundOffset” according to some embodiments of this disclosure are shown.

[0026] Figure 13 An example derivation of sample positions for motion compensation according to some embodiments of this disclosure is shown.

[0027] Figure 14 The syntax of example sequence parameter sets and image parameter sets for orbital motion compensation with orbital motion compensation offsets in an image parameter set, according to some embodiments of the present disclosure, is shown.

[0028] Figure 15 The semantics of example sequence parameter sets and image parameter sets for orbital motion compensation with orbital motion compensation offsets in an image parameter set are illustrated according to some embodiments of the present disclosure.

[0029] Figure 16 The syntax of an example set of sequence parameters for improved orbital motion compensation without orbital motion compensation offset is shown according to some embodiments of the present disclosure.

[0030] Figure 17 The syntax for an example set of image parameters for improved orbital motion compensation with orbital motion compensation offset, according to some embodiments of the present disclosure, is shown.

[0031] Figure 18 The semantics of example sequence parameter sets and image parameter sets for improved orbital motion compensation with orbital motion compensation offsets in image parameter sets, according to some embodiments of the present disclosure, are illustrated.

[0032] Figure 19 Example derivations of the variables “PicRefWraparoundEnableFlag” and “PicRefWraparoundOffset” according to some embodiments of this disclosure are shown.

[0033] Figure 20 The syntax of an example sequence parameter set for improved orbital motion compensation in the absence of orbital motion compensation offsets in the sequence parameter set is shown according to some embodiments of the present disclosure.

[0034] Figure 21 The syntax of an example set of image parameters for improved orbital motion compensation with orbital control flags, according to some embodiments of this disclosure, is shown.

[0035] Figure 22 The semantics of example sequence parameter sets and image parameter sets with surround control flags in an image parameter set are illustrated according to some embodiments of the present disclosure.

[0036] Figure 23 The semantics of example sequence parameter sets and image parameter sets for improved surround motion compensation with surround control flags in the image parameter set are illustrated according to some embodiments of the present disclosure.

[0037] Figure 24 An example derivation of the variable “PicRefWraparoundOffset” according to some embodiments of this disclosure is shown.

[0038] Figure 25The semantics of example sequence parameter sets and image parameter sets for improved orbital motion compensation with limitations on image size, according to some embodiments of this disclosure, are illustrated.

[0039] Figure 26 The semantics of an example set of sequence parameters for improved orbital motion compensation according to some embodiments of the present disclosure are shown, the orbital motion compensation having constraints imposed on the variables “pic_width_max_in_luma_samples”, “CtbSizeY”, and “MinCbSizeY”.

[0040] Figure 27 The semantics of an example set of image parameters for improved surround motion compensation according to some embodiments of this disclosure are shown, the surround motion compensation having a constraint imposed on the variable "pic_width_max_in_luma_sample".

[0041] Figure 28 A flowchart is shown for an example method for performing motion compensation according to some embodiments of the present disclosure.

[0042] Figure 29 A flowchart is shown of an example method for performing motion compensation with a limited range for sequence surround motion compensation offset, according to some embodiments of the present disclosure.

[0043] Figure 30 A flowchart is shown as an example method for performing motion compensation using an image associated with a sequence of surround motion compensation offset, according to some embodiments of the present disclosure.

[0044] Figure 31 A flowchart is shown as an example method for performing motion compensation using a limited maximum image size, according to some embodiments of the present disclosure. Detailed Implementation

[0045] Exemplary embodiments will now be described in detail, examples of which are illustrated in the accompanying drawings. The following description refers to the accompanying drawings, wherein, unless otherwise stated, the same numerals in different drawings denote the same or similar elements. The embodiments set forth in the following description of the exemplary embodiments do not represent all embodiments consistent with this disclosure. Rather, they are merely examples of apparatuses and methods consistent with aspects of this disclosure as described in the appended claims. Specific aspects of this disclosure are described below in more detail. In the event of any conflict with terms and / or definitions incorporated by reference, the terms and definitions provided herein shall prevail.

[0046] 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 Universal 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.

[0047] To achieve the same subjective quality as HEVC / H.265 using half the bandwidth, JVET has been developing technologies beyond HEVC using the Joint Exploratory Model (JEM) reference software. With the incorporation of coding techniques into JEM, JEM achieves higher coding performance than HEVC. VCEG and MPEG have officially begun developing next-generation video compression standards beyond HEVC.

[0048] The VVC standard is a recent development and continues to include more coding techniques that provide better compression performance. VVC is based on a hybrid video coding system that has been used in modern video compression standards such as HEVC, H.264 / AVC, MPEG2, and H.263.

[0049] Video is a set of still images (or “frames”) arranged in chronological order to store visual information. These images can be captured and stored in chronological order using video capture devices (e.g., cameras), and displayed in a time-series using video playback devices (e.g., televisions, computers, smartphones, tablets, video players, or any end-user terminal with a display capability). Furthermore, in some applications, video capture devices can transmit captured video in real time to video playback devices (e.g., computers with monitors), such as for surveillance, conferencing, or live broadcasting.

[0050] 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 by software executed by a processor (e.g., a processor in a general-purpose computer) or dedicated hardware. The module used for compression is typically called an "encoder," and the module used for decompression is typically called a "decoder." Encoders and decoders can be collectively referred to as a "codec." Encoders and decoders can be implemented as 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 embedded in a computer-readable medium, computer-executable instructions, firmware, or any suitable computer-implemented algorithm or process. Video compression and decompression can be implemented using various algorithms or standards, such as MPEG-1, MPEG-2, MPEG-4, the H.26x series, etc. In some applications, a codec can decompress video from a first encoding standard and recompress the decompressed video using a second encoding standard; in this case, the codec can be referred to as a "transcoder."

[0051] Video encoding processes identify and retain useful information that can be used to reconstruct the image, while ignoring unimportant reconstruction information. If ignoring unimportant information prevents complete reconstruction, such an encoding process can be called "lossy." Otherwise, it can be called "lossless." Most encoding processes are lossy, a trade-off to reduce required storage space and transmission bandwidth.

[0052] In many cases, useful information about an encoded image (referred to as the "current image") includes changes relative to a reference image (e.g., a previously encoded and reconstructed image). Such changes can include variations in pixel position, brightness, or color, with positional changes being the most important. The positional changes of a set of pixels representing an object can reflect the object's movement between the reference and current images.

[0053] An image encoded without referencing another image (i.e., it is its own reference image) is called an "I-image". An image encoded using a previous image as a reference image is called a "P-image", and an image encoded using both a previous image and a future image as reference images is called a "B-image" (the reference is "bidirectional").

[0054] Figure 1The structure of an example video sequence 100 according to some embodiments of the present disclosure is shown. The video sequence 100 may be live video or video that has been captured and archived. The video 100 may be real-life video, computer-generated video (e.g., computer game video), or a combination of both (e.g., real video with augmented reality effects). The video sequence 100 may originate 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) receiving video from a video content provider.

[0055] like Figure 1 As shown, video sequence 100 may include a series of images arranged temporally along a timeline, including images 102, 104, 106, and 108. Images 102-106 are consecutive, with more images between images 106 and 108. Figure 1 In this diagram, image 102 is an I-image, and its reference image is image 102 itself. Image 104 is a P-image, and its reference image is image 102, as indicated by the arrow. Image 106 is a B-image, and its reference images are images 104 and 108, as indicated by the arrow. In some embodiments, the reference image of an image (e.g., image 104) may not immediately precede or follow the image. For example, the reference image of image 104 may be an image preceding image 102. It should be noted that the reference images of images 102-106 are merely examples, and this disclosure does not limit the scope to such cases. Figure 1 An example of the reference image shown.

[0056] Typically, due to the computational complexity of encoding and decoding tasks, video codecs do not encode or decode the entire image at once. Instead, they can segment the image into basic segments and encode or decode each segment sequentially. In this disclosure, such basic segments are referred to as basic processing units (“BPUs”). For example, Figure 1Structure 110 illustrates an example structure of an image (e.g., any of images 102-108) from 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., 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 may have a variable size in the image, such as 128×128, 64×64, 32×32, 16×16, 4×8, 16×32, or pixels of any shape and size. The size and shape of the basic processing units for the image can be chosen based on a balance between coding efficiency and the level of detail to be maintained within the basic processing units.

[0057] A basic processing unit can be a logical unit that may include a set of different types of video data stored in computer memory (e.g., in a video frame buffer). For example, a basic processing unit for a color image may include a luminance component (Y) representing achromatic luminance information, one or more chrominance components (e.g., Cb and Cr) representing color information, and associated syntax elements, where the luminance and chrominance components may have the same size as the basic processing unit. In some video coding standards (e.g., H.265 / HEVC or H.266 / VVC), the luminance and chrominance components may be referred to as “code tree blocks” (“CTBs”). Any operation performed on a basic processing unit may be performed repeatedly on each of its luminance and chrominance components.

[0058] Video encoding involves multiple operational stages, examples of which are as follows: Figure 2A-2B and Figures 3A-3BAs shown. For each stage, the size of the basic processing unit may still be too large for the processing, and therefore can be further divided into segments referred to herein as "basic processing subunits". In some embodiments, the basic processing subunit may be referred to as a "block" in some video coding standards (e.g., MPEG family, H.261, H.263, or H.264 / AVC), or as a "coding unit" ("CU") in some other video coding standards (e.g., H.265 / HEVC or H.266 / VVC). The basic processing subunit may have the same size as the basic processing unit or a smaller size. Similar to the basic processing unit, the basic processing subunit is also a logical unit that may include a set of different types of video data (e.g., Y, Cb, Cr, and associated syntax elements) stored in computer memory (e.g., in a video frame buffer). Any operation performed on the basic processing subunit may be repeated for each of its luminance and chrominance components. It should be noted that this division can be performed to further levels as needed for processing. It should also be noted that different schemes can be used to divide the basic processing units for different stages.

[0059] For example, in the pattern decision-making stage (examples of which are in...) Figure 2A As shown, the encoder can decide which prediction mode (e.g., intra-frame prediction or inter-frame prediction) to use for a basic processing unit, which may be too large to make such a decision. The encoder can divide the basic processing unit into multiple basic processing subunits (e.g., CUs in H.265 / HEVC or H.266 / VVC) and determine the prediction type for each individual basic processing subunit.

[0060] For another example, in the prediction phase (the example is in...) Figure 2A-2B As shown in the diagram, the encoder can perform prediction operations at the level of a basic processing subunit (e.g., a CU). However, in some cases, the basic processing subunit may still be too large to handle. The encoder can further divide the basic processing subunit into smaller segments (e.g., referred to as "prediction blocks" or "PBs" in H.265 / HEVC or H.266 / VVC) at which prediction operations can be performed.

[0061] For another example, in the transformation phase (the example of which is in...) Figure 2A-2BAs shown in the diagram, the encoder can perform transformation operations on residual basic processing subunits (e.g., CUs). However, in some cases, the basic processing subunits may still be too large to process. The encoder can further divide the basic processing subunits into smaller segments (e.g., referred to as "transform blocks" or "TBs" in H.265 / HEVC or H.266 / VVC), at which level transformation operations can be performed. It is important to note that the partitioning scheme of the same basic processing subunit can differ between the prediction and transformation phases. 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.

[0062] exist Figure 1 In structure 110, the basic processing unit 112 is further divided into 3×3 basic processing sub-units, the boundaries of which are shown by dashed lines. Different basic processing units of the same image can be divided into basic processing sub-units in different schemes.

[0063] In some implementations, to provide parallel processing capabilities and fault tolerance for video encoding and decoding, an image can be divided into regions for processing, such that the encoding or decoding process for a given region of the image 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 encoding efficiency. Furthermore, when data in one region is corrupted during processing or lost during network transmission, the codec can correctly encode or decode other regions of the same image without relying on the corrupted or lost data, thus providing fault tolerance. In some video coding standards, images 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 regions.

[0064] For example, in Figure 1 In the diagram, structure 110 is divided into three regions 114, 116, and 118, whose boundaries are shown as solid lines within structure 110. Region 114 comprises four basic processing units. Regions 116 and 118 each comprise six basic processing units. It should be noted that... Figure 1 The basic processing unit, basic processing subunit, and structural region of 110 are merely examples, and this disclosure does not limit its embodiments.

[0065] Figure 2A A schematic diagram of an exemplary encoding process 200A according to 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 can encode the video sequence 202 into a video bitstream 228 according to process 200A. Similar to... Figure 1 Video sequence 100 and video sequence 202 may include a set of images arranged in chronological order (referred to as "original images"). Similar to... Figure 1 In structure 110, each raw image of video sequence 202 can be divided into basic processing units, basic processing subunits, or regions by an encoder for processing. In some embodiments, the encoder can perform process 200A at the level of basic processing units for each raw image of video sequence 202. For example, the encoder can perform process 200A iteratively, wherein the encoder can encode basic processing units in one iteration of process 200A. In some embodiments, the encoder can perform process 200A in parallel for regions (e.g., regions 114-118) of each raw image of video sequence 202.

[0066] refer to Figure 2A The encoder feeds the basic processing unit (referred to as the "raw BPU") of the original image of video sequence 202 to prediction stage 204 to generate prediction data 206 and prediction BPU 208. The encoder subtracts the predicted BPU 208 from the raw BPU to generate residual BPU 210. The encoder feeds residual BPU 210 to transform stage 212 and quantization stage 214 to generate quantized transform coefficients 216. The encoder feeds prediction data 206 and quantized transform coefficients 216 to binary encoding stage 226 to generate video bitstream 228. Components 202, 204, 206, 208, 210, 212, 214, 216, 226, and 228 may be referred to as the "forward path". During process 200A, after quantization stage 214, the encoder feeds the quantized transform coefficients 216 to inverse quantization stage 218 and inverse transform stage 220 to generate 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 stage 204 of the next iteration of process 200A. Components 218, 220, 222, and 224 of process 200A can be referred to as the "reconstruction path". The reconstruction path can be used to ensure that both the encoder and decoder use the same reference data for prediction.

[0067] The encoder can iteratively execute process 200A to encode each raw BPU of the original image (in the forward path) and generate a prediction reference 224 for encoding the next raw BPU of the original image (in the reconstruction path). After encoding all raw BPUs of the original image, the encoder can continue to encode the next image in the video sequence 202.

[0068] Referring to process 200A, the encoder may receive a video sequence 202 generated by a video acquisition device (e.g., a camera). As used herein, the term "receive" can refer to any action that receives, inputs, acquires, retrieves, obtains, reads, accesses, or is used for inputting data in any manner.

[0069] In prediction phase 204, during the current iteration, the encoder can receive the original BPU and prediction reference 224, and perform prediction operations to generate prediction data 206 and prediction BPU 208. Prediction reference 224 can be generated from the reconstruction path of previous iterations of process 200A. The purpose of prediction phase 204 is to reduce information redundancy by extracting prediction data 206 from prediction data 206 and prediction reference 224 that can be used to reconstruct the original BPU into prediction BPU 208.

[0070] Ideally, the predicted BPU 208 should be identical to the original BPU. However, due to non-ideal prediction and reconstruction operations, the predicted BPU 208 is typically slightly different from the original BPU. To record these differences, the encoder can subtract the predicted BPU 208 from the original BPU to generate the residual BPU 210. For example, the encoder can subtract the value of the corresponding pixel in the predicted BPU 208 (e.g., grayscale or RGB value) from the pixel value of the original BPU. Each pixel in the residual BPU 210 can have a residual value as the result of this subtraction between the corresponding pixel in 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 a significant quality degradation. Thus, the original BPU is compressed.

[0071] 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 “base patterns”. Each base pattern is associated with “transform coefficients”. The base patterns can have the same size (e.g., the size of the residual BPU 210), and each base pattern can represent the frequency components of the residual BPU 210 (e.g., the frequency of brightness variations). None of the base patterns can be reproduced from any combination of any other base patterns (e.g., a linear combination). In other words, the decomposition decomposes the variations of the residual BPU 210 into the frequency domain. This decomposition is analogous to the discrete Fourier transform of a function, where the base patterns are analogous to the base functions of the discrete Fourier transform (e.g., trigonometric functions), and the transform coefficients are analogous to the coefficients associated with the base functions.

[0072] Different transform algorithms can use different base patterns. Various transform algorithms can be used at transform stage 212, such as discrete cosine transform, discrete sine transform, etc. The transform at transform stage 212 is reversible. That is, the encoder can recover the residual BPU 210 through the inverse operation of the transform (called the "inverse transform"). For example, to recover the pixels of the residual BPU 210, the inverse transform can be to multiply the values ​​of the corresponding pixels of the base pattern by the corresponding correlation coefficients and sum the products to produce a weighted sum. For video coding standards, both the encoder and decoder can use the same transform algorithm (and therefore have the same base pattern). Therefore, the encoder can only record the transform coefficients, from which the decoder can reconstruct the residual BPU 210 without receiving the base pattern from the encoder. The transform coefficients can have fewer bits than the residual BPU 210, but they can be used to reconstruct the residual BPU 210 without significant quality degradation. Therefore, the residual BPU 210 is further compressed.

[0073] The encoder can further compress the transform coefficients during the quantization stage 214. During the transform process, different fundamental patterns can represent different frequencies of change (e.g., brightness change frequencies). Because the human eye is generally better at recognizing low-frequency changes, the encoder can ignore information about high-frequency changes without causing significant quality degradation in decoding. For example, in the quantization stage 214, the encoder can generate quantized transform coefficients 216 by dividing each transform coefficient by an integer value (called the “quantization parameter”) and rounding the quotient to its nearest integer. After such an operation, some transform coefficients of the high-frequency fundamental patterns can be converted to zero, and the transform coefficients of the low-frequency fundamental patterns can be converted to smaller integers. The encoder can ignore the zero-valued quantized transform coefficients 216, thus further compressing the transform coefficients. This 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”).

[0074] Because the encoder ignores the remainder of the division during rounding, quantization stage 214 can be lossy. Typically, quantization stage 214 contributes the most to information loss in process 200A. The greater the information loss, the fewer bits are required for the quantization transform coefficients 216. To obtain different levels of information loss, the encoder can use different quantization parameter values ​​or any other parameter of the quantization process.

[0075] In the binary encoding stage 226, the encoder can encode the prediction data 206 and the quantization transform coefficients 216 using binary encoding techniques, such as 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, besides the prediction data 206 and the quantization transform coefficients 216, the encoder can 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 at the transform stage 212, the parameters of the quantization process (e.g., quantization parameters), encoder control parameters (e.g., bit rate control parameters), etc. The encoder can use the output data of the binary encoding stage 226 to generate a video bitstream 228. In some embodiments, the video bitstream 228 can be further packaged for network transmission.

[0076] Following the reconstruction path of process 200A, in the inverse quantization stage 218, the encoder can perform inverse quantization on the quantized transform coefficients 216 to generate reconstructed transform coefficients. In the inverse transform stage 220, the encoder can generate a reconstruction residual BPU 222 based on the reconstructed transform coefficients. The encoder can add the reconstruction residual BPU 222 to the prediction BPU 208 to generate a prediction reference 224 that will be used in the next iteration of process 200A.

[0077] It should be noted that other variations of process 200A can be used to encode video sequence 202. In some embodiments, the stages of process 200A may be performed by the encoder in different orders. 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 the process.

[0078] Figure 2B A schematic diagram of another example encoding process 200B according to an embodiment of the present disclosure is shown. Process 200B can be modified from process 200A. For example, process 200B can be used by an encoder conforming to a hybrid video coding standard (e.g., H.26x series). Compared to process 200A, the forward path of process 200B further 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 also additionally includes a loop filtering stage 232 and a buffer 234.

[0079] Generally, prediction techniques can be categorized into two types: spatial prediction and temporal prediction. Spatial prediction (e.g., intra-frame image prediction or "intra-prediction") uses pixels from one or more already encoded neighboring BPUs in the same image to predict the current BPU. That is, the prediction reference 224 in spatial prediction can include neighboring BPUs. Spatial prediction can reduce the inherent spatial redundancy of images. Temporal prediction (e.g., inter-image prediction or "inter-frame prediction") uses regions from one or more already encoded images to predict the current BPU. That is, the prediction reference 224 in temporal prediction can include encoded images. Temporal prediction can reduce the inherent temporal redundancy of images.

[0080] In reference process 200B, during the forward path, the encoder performs prediction operations in spatial prediction phase 2042 and temporal prediction phase 2044. For example, in spatial prediction phase 2042, the encoder may perform intra-frame prediction. For the original BPU of the encoded image, prediction reference 224 may include one or more adjacent BPUs that have been encoded (in the forward path) and reconstructed (in the reconstruction path) in the same image. The encoder can generate the predicted BPU 208 by interpolating adjacent BPUs. Interpolation techniques may include, for example, linear interpolation or interpolation, polynomial interpolation or interpolation, etc. In some embodiments, the encoder may perform interpolation at the pixel level, for example, by interpolating to predict the value of the corresponding pixel for each pixel of BPU 208. The adjacent BPUs used for interpolation may be located in various directions relative to the original BPU, such as in the vertical direction (e.g., at the top of the original BPU), the horizontal direction (e.g., to the left of the original BPU), the diagonal direction (e.g., at the lower left, lower right, upper left, or upper right of the original BPU), or any direction defined in the video coding standard used. For intra-frame prediction, prediction data 206 may include, for example, the location (e.g., coordinates) of the neighboring BPUs used, the size of the neighboring BPUs used, the interpolation parameters, the orientation of the neighboring BPUs used relative to the original BPU, etc.

[0081] In another example, during the temporal prediction phase 2044, the encoder can perform inter-frame prediction. For the original BPU of the current image, the prediction reference 224 can 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 can be encoded and reconstructed on a BPU-by-BPU basis. For example, the encoder can add the reconstructed residual BPU 222 to the prediction BPU 208 to generate a reconstructed BPU. When all reconstructed BPUs for the same image have been generated, the encoder can generate a reconstructed image as the reference image. The encoder can perform a "motion estimation" operation to search for matching regions within the range of the reference image (referred to as a "search window"). The position of the search window in the reference image can be determined based on the position of the original BPU in the current image. For example, the search window can be centered at a location in the reference image that has the same coordinates as the original BPU in the current image and can extend outward by a predetermined distance. When the encoder identifies a region in the search window that resembles the original BPU (e.g., by using a PEL recursive algorithm, a block matching algorithm, etc.), the encoder can determine such a region as a matching region. The matching region can have a different size than the original BPU (e.g., less than, equal to, greater than, or with a different shape). This is because the reference image and the current image are temporally separated on the timeline (e.g., as...). Figure 1 As shown in the image, the matching region can be considered to have "moved" to the original BPU's location over time. The encoder can record the direction and distance of this movement as a "motion vector." When using multiple reference images (e.g., such as...), Figure 1 In image 06), the encoder can search for matching regions and determine the associated motion vector for each reference image. In some embodiments, the encoder can assign weights to the pixel values ​​of the matching regions of each matching reference image.

[0082] Motion estimation can be used to identify various types of motion, such as translation, rotation, scaling, etc. For inter-frame prediction, 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, the weights associated with the reference images, etc.

[0083] To generate the predicted BPU 208, the encoder can perform a "motion compensation" operation. Motion compensation can be used to reconstruct the predicted BPU 208 based on the predicted data 206 (e.g., motion vectors) and the predicted reference 224. For example, the encoder can move a matching region of the reference image according to the motion vectors, where the encoder can predict the original BPU of the current image. When using multiple reference images (e.g., such as...), Figure 1In image 06), the encoder can move the matching region of the reference image based on the individual motion vectors and average pixel values ​​of the matching region. In some embodiments, if the encoder has already assigned weights to the pixel values ​​of the matching regions of the respective matching reference images, the encoder can add the weighted sums of the pixel values ​​of the moved matching regions.

[0084] In some embodiments, inter-frame prediction can be unidirectional or bidirectional. Unidirectional inter-frame prediction can use one or more reference images in the same temporal direction relative to the current image. For example, Figure 1 Image 104 in the diagram is a one-way inter-frame prediction image, where the reference image (i.e., image 102) precedes image 104. Two-way inter-frame prediction can use one or more reference images in two temporal directions relative to the current image. For example, Figure 1 Image 106 in the image is a bidirectional inter-frame prediction image, in which the reference image (i.e., images 104 and 08) is relative to image 104 in two temporal directions.

[0085] Referring again to the forward path of process 200B, after spatial prediction 2042 and temporal prediction stages 2044, in the mode decision stage 230, the encoder can select a prediction mode (e.g., one of intra-frame prediction or inter-frame prediction) for the current iteration of process 200B. For example, the encoder can perform a rate distortion optimization technique, whereby the encoder selects a prediction mode based on the bit rate of the candidate prediction modes and the distortion of the reconstructed reference image under the candidate prediction modes to minimize the value of the cost function. Based on the selected prediction mode, the encoder can generate the corresponding prediction BPU 208 and prediction data 206.

[0086] In the reconstruction path of process 200B, if intra-frame prediction mode has been selected in the forward path, the encoder can directly feed prediction reference 224 (e.g., the current BPU that has been encoded and reconstructed in the current image) to spatial prediction stage 2042 for later use (e.g., for interpolating the next BPU of the current image) after generating prediction reference 224. If inter-frame prediction mode has been selected in the forward path, the encoder can feed prediction reference 224 (e.g., the current image where all BPUs have been encoded and reconstructed) to loop filter stage 232 after generating prediction reference 224. In this stage, the encoder can apply loop filters to prediction reference 224 to reduce or eliminate distortions introduced by inter-frame prediction (e.g., block artifacts). The encoder can apply various loop filter techniques at loop filter stage 232, such as deblocking, adaptive sampling compensation, adaptive loop filtering, etc. The loop-filtered reference image can be stored in buffer 234 (or "decoded image buffer") for later use (e.g., as an inter-frame prediction reference image for future images of video sequence 202). The encoder can store one or more reference images in buffer 234 for use at temporal prediction stage 2044. In some embodiments, the encoder can encode parameters of the loop filter (e.g., loop filter strength) as well as quantization transform coefficients 216, prediction data 206, and other information at binary encoding stage 226.

[0087] Figure 3A A schematic diagram of an exemplary decoding process 300A according to an embodiment of the present disclosure is shown. Process 300A may be corresponding to Figure 2A The compression process 200A in the video stream is followed by the decompression process. In some embodiments, process 300A can be similar to the reconstruction path of process 200A. The decoder can decode the video bitstream 228 into video stream 304 according to process 300A. Video stream 304 can be very similar to video sequence 202. However, due to information loss during compression and decompression (e.g., Figure 2A-2B In the quantization stage 214), typically, video stream 304 differs from video sequence 202. Similar to... Figure 2A-2B In processes 200A and 200B, the decoder can perform process 300A at the basic processing unit (BPU) level for each image encoded in the video bitstream 228. For example, the decoder can perform process 300A iteratively, 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 a region (e.g., region 114-118) of each image encoded in the video bitstream 228.

[0088] like Figure 3AAs shown, the decoder can feed a portion of the video bitstream 228 associated with a basic processing unit (referred to as the "encoded BPU") of the encoded image to a binary decoding stage 302, where the decoder can decode this portion into prediction data 206 and quantization transform coefficients 216. The decoder can feed the quantization transform coefficients 216 to an inverse quantization stage 218 and an inverse transform stage 220 to generate a reconstruction residual BPU 222. The decoder can feed the prediction data 206 to a prediction stage 204 to generate a prediction BPU 208. The decoder can add the reconstruction residual BPU 222 to the prediction BPU 208 to generate a prediction reference 224. In some embodiments, the prediction reference 224 can be stored in a buffer (e.g., a decoded image buffer in computer memory). The decoder can feed the prediction reference 224 to the prediction stage 204 for performing a prediction operation in the next iteration of process 300A.

[0089] The decoder can iteratively execute process 300A to decode each encoded BPU of the encoded image and generate a prediction reference 224 for the next encoded BPU of the encoded image. After decoding all encoded BPUs of the encoded image, the decoder can output the image to video stream 304 for display and continue decoding the next encoded image in video bit stream 228.

[0090] In the binary decoding stage 302, the decoder can perform the inverse operation of the binary encoding 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, transform type, parameters of the quantization process (e.g., quantization parameters), encoder control parameters (e.g., bit rate control parameters), etc. In some embodiments, if the video bitstream 228 is transmitted over a network in packets, the decoder can unpack it before feeding the video bitstream 228 to the binary decoding stage 302.

[0091] Figure 3B A schematic diagram of another example decoding process 300B according to an embodiment of the present disclosure is shown. Process 300B can be modified from process 300A. For example, process 300B can be used by a decoder conforming to a hybrid video coding standard (e.g., H.26x series). Compared to process 300A, process 300B additionally divides the prediction stage 204 into a spatial prediction stage 2042 and a temporal prediction stage 2044, and additionally includes a loop filtering stage 232 and a buffer 234.

[0092] In process 300B, for the encoding basic processing unit (referred to as the "current BPU") of the decoded encoded image (referred to as the "current image"), the prediction data 206 decoded by the decoder from the binary decoding stage 302 can include various types of data depending on the prediction mode used by the encoder to encode the current BPU. For example, if the encoder uses intra-frame prediction to encode the current BPU, the prediction data 206 can include prediction mode indicators (e.g., flag values) that indicate intra-frame prediction, parameters of the intra-frame prediction operation, etc. Parameters of the intra-frame prediction operation can include, for example, the positions (e.g., coordinates) of one or more neighboring BPUs used as references, the sizes of neighboring BPUs, interpolation parameters, the orientation of neighboring BPUs relative to the original BPU, etc. For another example, if the current BPU is encoded by inter-frame prediction used by the encoder, the prediction data 206 can include prediction mode indicators (e.g., flag values) that indicate inter-frame prediction, parameters of the inter-frame prediction operation, etc. 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 the corresponding reference images, and one or more motion vectors associated with the matching regions respectively.

[0093] Based on the prediction mode indicator, the decoder can decide whether to perform spatial prediction (e.g., intra-frame prediction) in the spatial prediction phase 2042 or temporal prediction (e.g., inter-frame prediction) in the temporal prediction phase 2044. The details of performing this spatial or temporal prediction are... Figure 2B As described herein, it will not be repeated below. After performing such spatial or temporal prediction, the decoder can generate a predicted BPU 208, which can be added to the predicted BPU 208 and the reconstructed residual BPU 222 to generate a prediction reference 224, as shown below. Figure 3A As described in [the text].

[0094] In process 300B, the decoder can feed prediction reference 224 to either spatial prediction stage 2042 or temporal prediction stage 2044 for performing prediction operations in the next iteration of process 300B. For example, if intra-frame prediction is used to decode the current BPU in spatial prediction stage 2042, the decoder can feed prediction reference 224 directly to spatial prediction stage 2042 for later use (e.g., for interpolating the next BPU of the current image) after generating prediction reference 224 (e.g., the decoded current BPU). If inter-frame prediction is used to decode the current BPU in temporal prediction stage 2044, the encoder can feed prediction reference 224 to loop filter stage 232 to reduce or eliminate distortion (e.g., block artifacts) after generating prediction reference 224 (e.g., a reference image where all BPUs are decoded). The decoder can, as follows: Figure 2BThe loop filter is applied to prediction reference 224 in the manner shown. The loop-filtered reference image can be stored in buffer 234 (e.g., a decoded image buffer in computer memory) for later use (e.g., as an inter-prediction reference image for future encoded images of video bitstream 228). The decoder can store one or more reference images in buffer 234 for use at temporal prediction stage 2044. In some embodiments, the prediction data can further include parameters of the loop filter (e.g., loop filter strength) when the prediction mode indicator of prediction data 206 indicates that inter-frame prediction is used to encode the current BPU.

[0095] Figure 4 This is a block diagram of an example apparatus 400 for encoding or decoding video according to embodiments of the present disclosure. Figure 4 As shown, device 400 may include processor 402. When processor 402 executes the instructions described herein, device 400 may become a dedicated machine for video encoding or decoding. Processor 402 may be any type of circuit capable of manipulating or processing information. For example, processor 402 may include any number of central processing units (or “CPU”), graphics processing units (or “GPU”), neural processing units (“NPU”), microcontroller units (“MCU”), optical processors, programmable logic controllers, microprocessors, digital signal processors, intellectual property (IP) cores, programmable logic arrays (PLAs), programmable array logic (PALs), general-purpose array logic (GALs), complex programmable logic devices (CPLDs), field-programmable gate arrays (FPGAs), system-on-a-chip (SoCs), application-specific integrated circuits (ASICs), and any combination thereof. In some embodiments, processor 402 may also be a group of processors grouped into individual logic components. For example, such as Figure 4 As shown, processor 402 may include multiple processors, including processor 402a, processor 402b and processor 402n.

[0096] The device 400 may also include a memory 404 configured to store data (e.g., instruction sets, computer code, intermediate data, etc.). For example, such as Figure 4As shown, the stored data may include program instructions (e.g., for implementing stages in processes 200A, 200B, 300A, or 300B) and data for processing (e.g., video sequence 202, video bitstream 228, or video stream 304). Processor 402 can access the program instructions and data for processing (e.g., via bus 410) and execute the program instructions to perform operations or manipulations 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 combination of any number of random access memories (RAM), read-only memories (ROM), optical discs, magnetic disks, hard disks, solid-state drives, flash drives, secure digital cards (SD cards), memory sticks, compact flash memory (CF cards), etc. Memory 404 may also be a group of memories grouped into single logical components. Figure 4 (Not shown in the image).

[0097] Bus 410 may be a communication device for transmitting data between components within device 400, such as an internal bus (e.g., CPU-memory bus), an external bus (e.g., a Universal Serial Bus port, a Peripheral Component Interconnect Fast Port), or the like.

[0098] 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 as a combination of software, hardware, or firmware. Furthermore, the data processing circuitry may be a single, independent module, or it may be wholly or partially integrated into any other component of the device 400.

[0099] Device 400 may also include a network interface 406 to provide wired or wireless communication with a network (e.g., the Internet, intranet, local area network, mobile communication network, etc.). In some embodiments, network interface 406 may include any combination of any number of network interface controllers (NICs), radio frequency (RF) modules, transceivers, transceivers, modems, routers, gateways, wired network adapters, wireless network adapters, Bluetooth adapters, infrared adapters, near field communication (“NFC”) adapters, cellular network chips, etc.

[0100] In some embodiments, optionally, the device 400 may further include a peripheral interface 408 to provide connectivity to one or more peripheral devices. Figure 4 As shown, peripheral devices may include, but are not limited to, cursor control devices (e.g., mouse, touchpad, or touchscreen), keyboards, displays (e.g., cathode ray tube displays, liquid crystal displays, or light-emitting diode displays), video input devices (e.g., cameras or input interfaces coupled to video files), etc.

[0101] Note that a video codec (e.g., the codec performing processes 200A, 200B, 300A, or 300B) can be implemented as any combination of any software or hardware modules in device 400. For example, some or all stages of processes 200A, 200B, 300A, or 300B can be implemented as one or more software modules of device 400, such as program instances 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 device 400, such as dedicated data processing circuits (e.g., FPGA, ASIC, NPU, etc.).

[0102] In quantization and inverse quantization functional blocks (e.g., Figure 2A or Figure 2B quantization 214 and inverse quantization 218 of Figure 3A or Figure 3B inverse quantization 218 of , a quantization parameter (QP) is used to determine the amount of quantization (and inverse quantization) applied to the prediction residual. The initial QP value for encoding an image or a slice can be signaled at a higher level, e.g., using the init_qp_minus26 syntax element in the picture parameter set (PPS) and using the slic_qp_delta syntax element in the slice header. Additionally, delta QP values sent at the granularity of quantization groups can be used to adapt the QP value locally for each CU.

[0103] Equirectangular projection (“ERP”) formats such as etc. are common projection formats for representing 360-degree videos and images. This projection maps the meridians to equally spaced vertical lines and the latitude circles to equally spaced horizontal lines. Since the relationship between the position of an image pixel on the map and its corresponding geographical location on the sphere is particularly simple, ERP is one of the most common projections for 360-degree videos and images.

[0104] The algorithm description of the projection format conversion and video quality metrics output by JVET gives the coordinate conversion between ERP and the sphere and an introduction. For the 2D to 3D coordinate conversion, given a sampling position (m, n), (u, v) can be calculated according to the following formulae.

[0105] u = (m + 0.5) / W, 0 ≤ m < W Formula (1)

[0106] v = (n + 0.5) / H, 0 ≤ n < H Formula (2)

[0107] Then, the longitude and latitude (φ, θ) on the sphere can be calculated from (u, v) according to the following formulae.

[0108] φ=(u-0.5)×(2×π) Formula (3)

[0109] θ=(0.5-v)×π Formula (4)

[0110] The coordinates (X, Y, Z) can be calculated using the following formula.

[0111] X=cos(θ)cos(φ) Formula (5)

[0112] Y=sin(θ) Formula (6)

[0113] Z = -cos(θ)sin(φ) Formula (7)

[0114] For the 3D to 2D coordinate transformation starting from (X, Y, Z), (φ, θ), it can be calculated according to the following equations. Then, (u, v) is calculated according to equations (3) and (4). Finally, (m, n) can be calculated according to equations (1) and (2).

[0115] Φ=tan -1 (-Z / X) Formula (8)

[0116] θ=sin -1 (Y / (X 2 +Y 2 +Z 2 ) 1 / 2 ) Formula (9)

[0117] To reduce seam artifacts in the reconstructed viewport containing the left and right boundaries of the ERP image, a new format called Filled Equal Rectangular Projection (“PERP”) is provided by filling samples on the left and right sides of the ERP image.

[0118] When using PEP to represent 360-degree video, the PEP image is encoded. After decoding, the reconstructed PEP is converted back to the reconstructed ERP by either mixing duplicated samples or cropping and padding regions.

[0119] Figure 5A A schematic diagram of example blending operations for generating reconstructed isorectangular projections according to some embodiments of the present disclosure is shown. Unless otherwise stated, "recPERP" is used to denote the PEP of the reconstruction before post-processing, and "recERP" is used to denote the ERP of the reconstruction after post-processing. Figure 5A As shown, replicas of recPERP can be blended by applying a distance-based weighted average operation. For example, region A can be generated by blending region A1 with A2, and region B can be generated by blending region B1 with B2.

[0120] In the following description, the width and height of the unpadded recERP are represented as "W" and "H" respectively. The left and right padded widths are represented as "P" respectively. L "and "P R The total fill width is represented as "P". w “, which can be P” L and P R The sum. In some embodiments, recPERP can be converted to recERP through a mixing operation. For example, for a sample recERP(j,i) in A where i = [0, P... R-1 Given j = [0, H-1], recERP(j, i) can be determined according to the following formula.

[0121] A = w × A1 + (1 - w) × A2, where w comes from P L / P W Formula (10)

[0122] In A, recERP(j,i)=(recPERP(j,i+P L )×(i+P L )+recPERP(j, i+P L+W )×(P R-i (P) w >>1)) / P w Formula (11)

[0123] In some embodiments, for a sample recERP(j, i) in B, where i = [WP L If [0, H-1] and j = [0, H-1], recERP(j, i) can be generated according to the following formula.

[0124] B = k × B1(1-k) × B2, where k ranges from 0 to P. L / P W Formula (12)

[0125] recERP(j,i)=(recPERP(j,i+P) in B L )x(P R-i +W)+recPERP(j,i+P) L-W )×(i–W+P L (P) w >>1)) / P w Formula (13)

[0126] Figure 5B A schematic diagram of an example clipping operation for generating a reconstructed rectangular projection, according to some embodiments of the present disclosure, is shown. Figure 5BAs shown, during the cropping process, the padding samples in recPERP can be directly discarded to obtain recERP. For example, padding samples B1 and A2 can be discarded, and padding region A equals A1, while padding region B equals b2.

[0127] In some embodiments, horizontal wrap motion compensation can be used to improve ERP encoding performance. For example, horizontal wrap motion compensation can be used in the VVC standard as a 360-specific encoding tool designed to improve the visual quality of reconstructed 360-degree video in ERP or PEP formats. In conventional motion compensation, when motion vectors reference samples outside the image boundaries of a reference image, repeated padding is applied to derive the values ​​of the samples exceeding the boundary by copying from those nearest neighbors on the corresponding image boundary. For 360-degree video, this repeated padding approach is unsuitable and can lead to visual artifacts known as “seam artifacts” in the reconstructed viewport video. Because 360-degree video is captured on a sphere and inherently has no “boundaries,” reference samples exceeding the reference image boundaries in the projection domain can be obtained from neighboring samples in the spherical domain. For general projection formats, it can be difficult to derive the corresponding neighboring samples in the spherical domain because it involves 2D-to-3D and 3D-to-2D coordinate transformations, as well as sample interpolation of fractional sample locations. This problem can be solved using ERP or PEP projection formats with left and right boundaries, because spherical neighbors beyond the left image boundary can be obtained from samples within the right image boundary, and vice versa. Given the widespread use and relatively easy implementation of ERF or PEP projection formats, VVC employs horizontal surround motion compensation to improve the visual quality of 360-degree video encoded in ERP or PEP projection formats.

[0128] Figure 6A A schematic diagram of an exemplary horizontal surround motion compensation process for a rectangular projection according to some embodiments of the present disclosure is shown. Figure 6A As shown, when a portion of the reference block lies outside the left (or right) boundary of the reference image in the projection domain, the "outside boundary" portion can be obtained from the corresponding spherical neighbor within the reference image located at the right (or left) boundary in the projection domain, instead of repeated padding. In some embodiments, repeated padding is only used for the top and bottom image boundaries.

[0129] Figure 6B A schematic diagram is shown illustrating an exemplary horizontal surround motion compensation process for filling a rectangular projection according to some embodiments of the present disclosure. Figure 6BAs shown, horizontal wrap motion compensation can be combined with decanted padding methods commonly used in 360-degree video coding. In some embodiments, this is achieved by signaling high-level syntax elements to indicate a wrap motion compensation offset, which can be set to the ERP image width before padding. This syntax can then be used to adjust the position of the horizontal wrap. In some embodiments, this syntax is unaffected by specific padding amounts on the left or right image boundaries. As a result, this syntax naturally supports asymmetric padding of EIRE images. In asymmetric padding of ERP images, the left and right paddings are different. In some embodiments, wrap motion compensation can be determined according to the following equation:

[0130]

[0131] The offset can be a motion compensation offset signaled in the bitstream, picW can be the image width including the padding region before encoding, and pos x The reference position can be determined by the current block position and the motion vector; the formula outputs pos. x `_wrap` can be the reference block derived from the actual reference position of the surround motion compensation. To save the overhead of signaling the surround motion compensation offset, it can be done in units of the smallest luminance coded block; therefore, `offset` can be used. w ×MinCbSizeY replaces the offset, where offset is the value of the offset. w This is the surround motion compensation offset in units of the smallest luminance coded block transmitted as a signal in the bitstream, and MinCbSizeY is the size of the smallest luminance coded block. Conversely, in traditional motion compensation, this can be achieved by adjusting the pos... x Cut within 0 to picW-1 to directly derive the actual reference location of the reference block.

[0132] When the reference sample is outside the left and right boundaries of the reference image, horizontal surround motion compensation can provide more meaningful information for motion compensation. Under common test conditions for 360-degree video, this tool can improve compression performance not only in terms of rate distortion, but also in terms of reducing seam artifacts and improving the subjective quality of the reconstructed 360-degree video. Horizontal surround motion compensation can also be used for other single-sided projection formats with a constant sampling density in the horizontal direction, such as adjusted equal-area projections.

[0133] In some embodiments, a constraint is imposed on the wraparound motion compensation offset. The offset value can be derived from a range of (CtbSizeY / MinCbSizeY+2) to (pic_width_in_luma_samples / MinCbSizeY). Here, the variable "CtbSizeY" refers to the luminance size of the coding tree block ("CTB"), the variable "MinCbSizeY" refers to the minimum size of the luminance coding block, and the variable "pic_width_in_luma_sampies" refers to the image width in the luminance samples, to avoid unnecessary repeated wraparound in practical applications, thereby burdening the hardware implementation.

[0134] Figure 7 The syntax for example sequence parameter sets for orbital motion compensation according to some embodiments of this disclosure is shown. Figure 7 As shown, in VVC (e.g., VVC draft 7), for surround motion compensation, the enable flag "sps_ref_wraparound_enabled_flag" and the offset "sps_ref_wraparound_offset_minus1" can be signaled in the sequence parameter set ("SPS").

[0135] Figure 8 The semantics of example sequence parameter sets for orbital motion compensation according to some embodiments of this disclosure are illustrated. It should be understood that... Figure 8 The semantics shown can correspond to Figure 7 The syntax is shown below. (As shown in the image) Figure 8 As shown, in some embodiments, "sps_ref_wraparound_enabled_flag" can indicate whether horizontal wraparound motion compensation is applied in inter-frame prediction. For example, a value of 1 can indicate that horizontal wraparound motion compensation is applied, while a value of 0 can indicate that horizontal wraparound motion compensation is not applied. In some embodiments, when the value of (CtbSizeY / MinCbSizeY+1) is greater than (pic_width_in_luma_samples / MinCbSizeY-1), the value of sps_ref_wraparound_enabled_flag is equal to 0, where "pic_width_in_luma_samples" is the value of "pic_width_in_luma_samples" in any PPS referencing the SPS.

[0136] In some embodiments, such as Figure 8 As shown,

[0137] The increment of 1 in “sps_ref_wraparound_offset_minus1” represents the offset used to calculate the horizontal wraparound position in units of “MinCbSizeY” luminance samples. In some embodiments, the value of ref_wraparound_offset_minus1 ranges from (CtbSizeY / MinCbSizeY)1 to (“pic_width_in_luma_samples / MinCbSize-Y)-1, including the end value, where pic_width_in_luma_samples refers to the value of pic_width_in_luma_samples in any PPS referencing the SPS.

[0138] Figure 7 The syntax shown is Figure 8 The semantics presented have several issues. Specifically, "sps_ref_wraparound_enabled_flag" and "sps_ref_wraparound_offset_minus1" are syntax elements signaled in SPS, but there's a consistency constraint that depends on all "pic_width_in_luma_samples" signaled in PPS. Limiting the values ​​of SPS syntax elements by all associated PPS syntax elements can be problematic because SPS is a higher-level syntax than PPS, and higher-level syntax generally shouldn't reference lower-level syntax. Furthermore, in some embodiments, wraparound motion compensation is controlled at the sequence level, but image resizing is allowed in VVC drafts (e.g., VVC draft 7). Meanwhile, "sps_ref_wraparound_enabled_flag" can only be true if the widths of all images in the sequence referencing SPS satisfy the constraint. Therefore, wraparound motion compensation cannot be used even if only one frame fails to meet the size condition, meaning the benefits of wraparound motion compensation for the entire sequence might be lost due to a single frame.

[0139] Furthermore, in some embodiments, the range of "sps_ref_wraparound_offset_minus1" is from (CtbSizeY / MinCbSizeY)+1 to (pic_width_in_luma_samples / MinCbSizeY)–1. Therefore, the minimum value of sps_ref_wraparound_offset_minus1 signaled in the bitstream is (CtbSizeY / MinCbSizeY)+1, which may not be zero. Typically, larger values, rather than smaller values, occupy more bits in the signal notification. Therefore, signaling with syntax elements whose range values ​​do not start from zero is inefficient.

[0140] The embodiments of this disclosure provide improved methods for solving the above-mentioned problems. Figure 9 Syntax for an example set of sequence parameters for improved surround motion compensation according to some embodiments of this disclosure is shown. In some embodiments, signaling overhead for the surround motion compensation (“MC”) offset can be saved. To save the number of bits dedicated to the surround motion compensation offset, (CtbSizeY / MinCbSizeY) + 2 can be subtracted from the surround motion compensation offset before signaling the offset. Thus, the minimum value of this syntax element can be 0.

[0141] Figure 10 The semantics of an example set of sequence parameters for improved orbital motion compensation according to some embodiments of this disclosure are illustrated. For example... Figure 10 As shown, the changes to the previous VVC are shown in italics. It should be understood that... Figure 10 The semantics shown can correspond to Figure 9 The syntax shown.

[0142] In some embodiments, such as Figure 10 As shown, the "sps_ref_wraparound_enabled_flag" indicates whether horizontal wraparound motion compensation is applied in inter-frame prediction. For example, a value of 1 indicates that horizontal wraparound motion compensation is applied, and a value of 0 indicates that horizontal wraparound motion compensation is not applied. In some embodiments, when the value of (CtbSizeY / MinCbSizeY+1) is greater than (pic_width_in_luma_samples / MinCbSizeY-1),

[0143] The value of “sps_ref_wraparound_enabled_flag” is equal to 0.

[0144] In some embodiments, such as Figure 10As shown, "sps_ref_wraparound_offset" plus (CtbSizeY / MinCbSizeY) + 2 indicates the offset used to calculate the horizontal wraparound position in units of "MinCbSizeY" luminance samples. The value of "sps_ref_wraparound_offset" can range from 0 to (pic_width_in_luma_samples / MinCbSizeY) - (CtbSizeY / MinCbSizeY) – 2, inclusive, where pic_width_in_luma_samples refers to the value of pic_width_in_luma_samples in any PPS referencing the SPS.

[0145] As mentioned above, another problem with the traditional design is that wraparound motion compensation (MC) is disabled for all images in the video sequence, even if one image in the video sequence has a size that violates consistency requirements. In some embodiments, the constraints on syntax element values ​​are removed. First, the control flag of wraparound motion compensation, `sps_ref_wraparound_enabied_flag`, is signaled in the SPS. In some embodiments, if `sps_ref_wraparound_enabled_flag` is true, the offset value, `sps_ref_wraparound_offset_minus1`, is signaled.

[0146] Figure 11 The semantics of example sequence parameter sets for improved surround motion compensation with maximum image width are illustrated according to some embodiments of this disclosure. For example... Figure 11 As shown, changes to the previous VVC are displayed in italics, and the suggested deletion semantics are further shown with strikethrough.

[0147] In some embodiments, such as Figure 11 As shown, the "sps_ref_wraparound_enabled_flag" indicates whether horizontal wraparound motion compensation is applied in inter-frame prediction. For example, a value of 1 indicates that horizontal wraparound motion compensation is applied in inter-frame prediction, and a value of 0 indicates that horizontal wraparound motion compensation is not applied.

[0148] In some embodiments, such as Figure 11As shown, adding 1 to "sps_ref_wraparound_offset_minus1" indicates the maximum value of the offset used to calculate the horizontal wraparound position in units of "MinCbSizeY" luminance samples. In some embodiments, the value of "sps_ref_wraparound_offset_minus1" ranges from (CtbSizeY / MinCbSizeY)+1 to (pic_width_max_in_luma_samples / MinCbSizeY)–1, including end values.

[0149] In some embodiments, "pic_width_max_in_luma_samples" refers to the maximum width in units of luminance samples for each decoded image referenced to the SPS.

[0150] In some embodiments, for each image in the sequence, two variables, “PicRefWraparoundEnableFlag” and “PicRefWraparoundOffset”, can be defined. Figure 12 The derivation of the variables “PicRefWraparoundEnableFlag” and “PicRefWraparoundOffset” according to some embodiments of this disclosure is shown. Figure 12 As shown, "pic_width_in_luma_samples" refers to the width of the image, which is used to signal the PPS of "pic_width_in_luma_samples".

[0151] In some embodiments, such as Figure 12 As shown, the variable “PicRefWraparoundEnableFlag” can be used to determine whether wraparound motion compensation (MC) can be enabled for the current image. For example, if the value of “PicRefWraparoundEnableFlag” indicates that wraparound MC can be enabled for the current image, then the offset “PicRefWraparoundOffset” is used during motion compensation.

[0152] Figure 13 Example derivations of sample positions for motion compensation according to some embodiments of this disclosure are shown. Figure 13 As shown, the sample location (xlnt) i ylnt i ) is the position surrounding the previous sample, which can determine the sample position (xlnt). i ylnt iIn some embodiments, the variable "picW" is equal to the variable "pic_width_in_luma_samples". In some embodiments, the functions "ClipH" and "Clip3" can be determined based on... Figure 13 Use the formula shown to execute.

[0153] In some embodiments, the surround motion compensation control flag can still be signaled in the SPS, but the surround motion compensation offset is signaled in the PPS instead of the SPS. Figure 14 The syntax of example sequence parameter sets and image parameter sets for orbital motion compensation with orbital motion compensation offsets in an image parameter set, according to some embodiments of this disclosure, is shown. Figure 14 As shown, changes to the previous VVC are displayed in italics, and syntax that is suggested for deletion is further shown with strikethrough. In some embodiments, such as Figure 14 As shown, a signal is sent in SPS to notify “sps_ref_wraparound_enabled_flag”, and a signal is sent in PPS to notify “pps_ref_wraparound_offset_minus1”.

[0154] Figure 15 The semantics of example sequence parameter sets and image parameter sets for orbital motion compensation with orbital motion compensation offsets in an image parameter set, according to some embodiments of this disclosure, are illustrated. For example... Figure 15 As shown, changes to the previous VVC are displayed in italics, and the semantics for which deletion is recommended are further indicated with strikethrough. It should be understood that... Figure 15 The syntax shown corresponds to Figure 14 The syntax shown.

[0155] In some embodiments, such as Figure 15 As shown,

[0156] The "sps_ref_wraparound_enabled_flag" indicates whether horizontal wraparound motion compensation is applied in inter-frame prediction. For example, a value of 1 indicates that horizontal wraparound motion compensation can be applied, while a value of 0 indicates that horizontal wraparound motion compensation is not applied.

[0157] In some embodiments, such as Figure 15As shown, "pps_ref_wraparound_offset_minus1 plus 1" represents the offset used to calculate the horizontal wraparound position in units of "MinCbSizeY" luminance samples. In some embodiments, "pps_ref_wraparound_offset_minus1" equals 0 when "sps_ref_wraparound_enabled_flag" is equal to 0 or the value of CtbSizeY / MinCbSizeY+1 is greater than (pic_width_in_luma_samples / MinCbSizeY-1). Otherwise,

[0158] The range of “pps_ref_wraparound_offset_minus1” is from (CtbSizeY / MinCbSizeY)+1 to (pic_width_in_luma_samples / MinCbSizeY)–1, including the end value.

[0159] In some embodiments, for each image in the sequence, two variables, "PicRefWraparoundEnableFlag" and "PicRefWraparoundOffset", can be defined. In some embodiments, this can be done as follows: Figure 12 The "PicRefWraparoundEnableFlag" is determined as shown. In some embodiments, "PicRefWraparoundOffset" can be determined as "pps_ref_wraparound_offset_minus1" plus 1.

[0160] In some embodiments, during decoding, "PicRefWraparoundEnableFlag" and "PicRefWraparoundOffset" can be used for surround motion compensation. For example, the sample position (xint) used for motion compensation... i ylnt i ) can be Figure 13 Export as shown. Figure 13 As shown, in some embodiments, the variable “picW” can be equal to “pic_width_in_luma_samples”.

[0161] In some embodiments, the surround motion compensation control flag may still be signaled, but the surround motion compensation offset is signaled in the PPS instead of the SPS. Additionally, "pps_ref_wraparound_offset" can also indicate the use of surround motion compensation for the reference PPS image. Figure 16The syntax for an example set of sequence parameters for improved orbital motion compensation without orbital motion compensation offset, according to some embodiments of this disclosure, is shown. Figure 16 As shown, changes to the previous VVC are displayed in italics, and suggested deletion syntax is further shown with strikethrough. For example... Figure 14 As shown, "sps_ref_wraparound_enabled_flag" can be signaled in SPS.

[0162] Figure 17 The syntax for an example set of image parameters for improved orbital motion compensation with orbital motion compensation offset, according to some embodiments of this disclosure, is shown. Figure 17 As shown, the changes to the previous VVC are shown in italics, which is understandable. Figure 17 The PPS shown corresponds to Figure 16 The SPS shown. (e.g.) Figure 17 As shown, "pps_ref_wraparound_offset" can be signaled in the PPS. In some embodiments, "pps_ref_wraparound_offset" signaled in the PPS can also indicate the use of surround motion compensation for the image referencing the PPS. In other words, the encoder can disable PPS-level surround motion compensation by setting pps_ref_wraparound_offset to a special value.

[0163] Figure 18 The semantics of example sequence parameter sets and image parameter sets for improved orbital motion compensation with orbital motion compensation offsets in image parameter sets, according to some embodiments of this disclosure, are illustrated. For example... Figure 18 As shown, changes to the previous VVC are displayed in italics, and the suggested deletion semantics are further shown with strikethrough. It should be understood that... Figure 18 The semantics shown can correspond to Figure 18 The syntax shown.

[0164] In some embodiments, such as Figure 18 As shown, the "sps_ref_wraparound_enabled_flag" indicates whether horizontal wraparound motion compensation is applied in inter-frame prediction. For example, a value of 1 indicates that horizontal wraparound motion compensation is applied in inter-frame prediction, and a value of 0 indicates that horizontal wraparound motion compensation is not applied.

[0165] In some embodiments, such as Figure 18As shown, adding 1 to "pps_ref_wraparound_offset" represents the offset used to calculate the horizontal wraparound position in units of MinCbSizeY luminance samples. For example, when "pps_ref_wraparound_offset" equals 0, wraparound motion compensation is disabled. "pps_ref_wraparound_offset" equals 0 when "sps_ref_wraparound_enabled_flag" equals 0 or the value of (CtbSizeY / MinCbSizeY+1) is greater than (pic_width_in_luma_samples / MinCbSizeY-1). Otherwise, the value of "pps_ref_wraparound_offset" ranges from (CtbSizeY / MinCbSizeY)+1 to (pic_width_in_luma_samples / MinCbSizeY)–1, inclusive.

[0166] In some embodiments, for each image in the sequence, two variables, “PicRefWraparoundEnableFlag” and “PicRefWraparoundOffset”, can be defined. Figure 19 Example derivations of the variables “PicRefWraparoundEnableFlag” and “PicRefWraparoundOffset” according to some embodiments of this disclosure are shown.

[0167] In some embodiments, during decoding, "PicRefWraparoundEnableFlag" and "PicRefWraparoundOfFsef" can be used for surround motion compensation. For example, the sample positions (xlnti, ylnti) used for motion compensation can be... Figure 11 Export as shown. Figure 11 As shown, in some embodiments, the variable "picW" can be equal to "pic_width_in_luma_samples".

[0168] In some embodiments, the syntax is modified. The surround motion compensation control flag can still be signaled in the SPS, but the surround motion compensation offset is signaled in the PPS instead of the SPS. Additionally, the PPS-level surround motion compensation control flag can also be signaled. Figure 20 The syntax of an example sequence parameter set for improved orbital motion compensation without orbital motion compensation offsets in the sequence parameter set is shown according to some embodiments of this disclosure. Figure 20As shown, changes to the previous VVC are displayed in italics, and suggested deletion syntax is further shown with strikethrough. Figure 20 As shown, "sps_ref_wraparound_enabled_flag" can be signaled in SPS.

[0169] Figure 21 The syntax of an example set of image parameters for improved surround motion compensation with surround control flags, according to some embodiments of this disclosure, is shown. Figure 21 The changes to the previous VVC are shown in italics. Figure 21 As shown, "pps_ref_wraparound_enabled_flag" can be signaled in PPS. In some embodiments, if "pps_ref_wraparound_enabled_flag" is true (e.g., the value is equal to 1), "pps_ref_wraparound_oflfsef" can be signaled.

[0170] Figure 22 The semantics of example sequence parameter sets and image parameter sets for improved surround motion compensation with surround motion compensation flags in the image parameter sets are shown. For example... Figure 22 As shown, the changes to the previous VVC are shown in italics, and the proposed deletion semantics are further indicated by strikethrough. It can be understood that... Figure 22 The semantics shown correspond to Figure 21 The syntax shown.

[0171] In some embodiments, such as Figure 22 As shown, the "sps_ref_wraparpund_enabled_flag" indicates whether horizontal wrap-around motion compensation is applied in inter-frame prediction. For example, a value of 1 indicates that horizontal wrap-around motion compensation can be applied in inter-frame prediction, while a value of 0 indicates that horizontal wrap-around motion compensation is not applied.

[0172] In some embodiments, such as Figure 22 As shown, "pps_ref_wraparound_enabled_flag" equal to 1 indicates that horizontal wraparound motion compensation is applied in inter-frame prediction. "pps_ref_wraparound_enabled_flag" equal to 0 indicates that horizontal wraparound motion compensation is not applied. In some embodiments, when "sps_ref_wraparound_enabled_flag" equals 0 or the value of (CthSizeY / MinCbSizeY+1) is greater than (pic_width_in_luma_samples / MinCbSizeY-1),

[0173] "pps_ref_wraparound_enabled_flag" equals 0.

[0174] In some embodiments, Figure 22 and Figure 23 Alternative semantics for sequence parameter sets and image parameter sets are shown. Figure 23 The semantics of example sequence parameter sets and image parameter sets for improved orbital motion compensation with orbital control flags in the image parameter set are illustrated according to some embodiments of this disclosure. For example... Figure 23 As shown, changes to the previous VVC are displayed in italics, and the suggested deletion semantics are further shown with strikethrough. It should be understood that... Figure 23 The semantics shown correspond to Figure 20 and Figure 20 The syntax shown.

[0175] In some embodiments, such as Figure 23 As shown, a value of 1 for "pps_ref_wraparound_enabled_flag" indicates that horizontal wraparound motion compensation is applied in inter-frame prediction. A value of 0 for "pps_ref_wraparound_enabled_flag" indicates that horizontal wraparound motion compensation is not applied. In some embodiments, "pps_ref_wraparound_enabled_flag" is 0 when "sps_ref_wraparound_enabled_flag" is 0 or when the value of (CtbSizeY / MinCbSizeY+1) is greater than (pic_width_in_luma_samples / MinCbSizeY-1). Otherwise, "pps_ref_wraparound_enabled_flag" is 1.

[0176] In some embodiments, such as Figure 23 As shown, "pps_ref_wraparound_offset" plus (CtbSizeY / MinCbSizeY) + 2 specifies the offset value used to calculate the horizontal wraparound position in units of MinCbSizeY luminance samples. In some embodiments, when present, the value of "pps_ref_wraparound_offset" can be in the range of 0 to (pic_width_in_luma_samples / MinCbSizeY) – (CtbSizeY / MinCbSizeY) – 2, including the extreme values.

[0177] In some embodiments, for each image in the sequence, a variable “PicRefWraparoundOffset” can be defined. For example, “PicRefWraparoundOffset” can be exported as pps_ref_wraparound_offset_minus1+1.

[0178] In some embodiments, during the decoding process, the variables “pps_ref_wraparound_enabled_flag” and “PicRefWraparoundOffset” can be used for surround motion compensation. Figure 24 Example derivations of the variable "PicRefW raparoundoffset" according to some embodiments of this disclosure are shown. Figure 24 As shown, the variable "PicRefWraparoundOffset" can be derived from the variables "pps_ref_wraparound_offset", "CtbSizeY", and "MinCbSizeY". In some embodiments, the variable "PicRefWraparoundOffset" can also be used to determine the sample location (xlnt) used for motion compensation. i ylnt i ), similar to Figure 13 The sample locations are shown in the image. Figure 13 As shown, the variable “picW” can be equal to “pic_width_in_luma_samples”.

[0179] In some embodiments, "sps_ref_wraparound_enabled_flag" can be removed, while "pps_ref_wraparound_enabled_flag" and "pps_ref_wraparound_offset" can be retained.

[0180] In some embodiments, the restrictions on the range of values ​​for "sps_ref_wraparound_enabled_flag" and "sps_ref_wraparound_offset_minus1" can be removed, and restrictions can be added to the range of values ​​for the image size notified by signals in SPS and PPS. Furthermore, no syntax modifications are present here. Figure 25 The semantics of example sequence parameter sets and image parameter sets for improved orbital motion compensation with limitations on image size are illustrated according to some embodiments of this disclosure. For example... Figure 25 As shown, changes to the previous VVC are displayed in italics, and suggested deletion semantics are displayed with strikethrough.

[0181] In some embodiments, such as Figure 25 As shown, "pic_width_max_in_luma_samples" can indicate the maximum width in luminance samples for each decoded image of the reference SPS. In some embodiments, "pic_width_max_in_luma_samples" may not be equal to 0 and may be an integer multiple of max(8, MinCbSizeY).

[0182] In some embodiments, such as Figure 25 As shown, "pic_height_max_in_luma_samples" can indicate the maximum height in luminance samples for each decoded image of the reference SPS. In some embodiments, "pic_height_max_in_luma_samples" may not be equal to 0 and may be an integer multiple of max(8, MinCbSizeY).

[0183] In some embodiments, such as Figure 25 As shown, "sps_ref_wraparound_enabled_flag" equal to 1 indicates that horizontal wraparound motion compensation can be applied in inter-frame prediction, and "sps_ref_wraparound_enabled_flag" equal to 0 indicates that horizontal wraparound motion compensation is not applied.

[0184] In some embodiments, adding 1 to "sps_ref_wraparound_offset_minus1" can indicate the offset used to calculate the horizontal wraparound position in units of "MinChSizeY" luminance samples. In some embodiments, "sps_ref_wraparound_offset_minus1" is greater than or equal to (CtbSizeY / MinChSizeY) + 1.

[0185] In some embodiments, restrictions can be imposed on “pic_width_max_in_luma_samples”, “CtbSizeY”, and “MinCbSizeY”. Figure 26 The semantics of an example set of sequence parameters for improved orbital motion compensation according to some embodiments of this disclosure are illustrated, the improved orbital motion compensation having constraints imposed on the variables “pic_width_max_in_luma_samples”, “CtbSizeY”, and “MinCbSizeY”. Figure 26 As shown, changes to the previous VVC are displayed in italics, and the suggested deletion semantics are further shown with strikethrough.

[0186] In some embodiments, a limit may be imposed on “pic_width_in_luma_samples” that is signaled in PPS. Figure 27 The semantics of an example set of image parameters for improved surround motion compensation according to some embodiments of this disclosure are illustrated, the improved surround motion compensation having a constraint imposed on the variable “pic_width_in_luma_samples”. Figure 27 As shown, changes to the previous VVC are displayed in italics, and the suggested deleted semantics are further shown with strikethrough.

[0187] In some embodiments, such as Figures 9 to 11 The method shown can be used with Figure 11-27 Any of the methods shown can be used in combination. Because the specified value has been subtracted from the orbital motion compensation offset before the orbital motion compensation offset is signaled (e.g., ...), Figure 9-10 The methods shown can be used to reduce the cost of signal notification. Therefore, when these methods are combined, the range limits for the orbital motion compensation offset notified by signaling in the bit stream can also be changed. For example, the same specified value can be subtracted from both the upper and lower limits. Furthermore, if the lower limit after subtraction is zero, it can be removed because it can be guaranteed that the offset notified by signaling in the bit stream is a non-negative value in the VVC standard (e.g., VVC Draft 7).

[0188] Embodiments of this disclosure also provide other methods for performing motion compensation. Figure 28 A flowchart illustrating an example method for performing motion compensation according to some embodiments of the present disclosure is shown. It should be understood that... Figure 28 The method 28000 shown can be based on Figure 9 and Figure 10 The syntax and semantics execution are shown.

[0189] In step S28010, a sequence of images is received. This sequence is associated with a sequence of surrounding motion compensation flags and a sequence of surrounding motion compensation offsets. The minimum value of the sequence of surrounding motion compensation offsets is 0. For example, as... Figure 9 As shown, to save bits dedicated to the orbital motion compensation offset, (CtbSizeY / MinCbSizeY) + 2 can be subtracted from the orbital motion compensation offset before signaling it. Therefore, the minimum value of this syntax element can be 0.

[0190] In step S28020, it is determined whether the sequence orbital motion compensation flag is enabled.

[0191] In step S28030, in response to enabling the sequence surround motion compensation flag, surround motion compensation is performed on the images in the image sequence according to the sequence surround motion compensation offset. In some embodiments, the motion compensation is performed according to the VVC standard.

[0192] Embodiments of this disclosure further disclose a method for performing motion compensation with a limited range for sequence-around motion compensation offset. Figure 29 A flowchart is shown illustrating an example method for performing motion compensation with a limited range for sequence-around motion compensation offset, according to some embodiments of this disclosure. It should be understood that... Figure 29 The method 29000 shown can be based on Figure 11 The semantic execution is shown.

[0193] In step S29010, a sequence of images is received. This sequence is associated with a sequence around motion compensation flag and a sequence around motion compensation offset. The range of the sequence around motion compensation offset is limited based on the maximum width of the images in the image sequence. For example, as... Figure 11 As shown, "pic_width_max_m_luma_samples" can represent the maximum width of each decoded image of the reference SPS in units of luminance samples. The value of "sps_ref_wraparound_offset_minus1" can range from (CtbSizeY / MinCbSizeY)1 to (pic_width_max_in_luma_samples / MinCbSizeY)-1, inclusive.

[0194] In step S29020, it is determined whether to enable the sequence orbital motion compensation flag.

[0195] In step S29030, in response to enabling the sequence surround motion compensation flag, surround motion compensation is performed on the images in the image sequence according to the sequence surround motion compensation offset. In some embodiments, motion compensation is performed according to the VVC standard. In some embodiments, surround motion compensation may be performed on multiple images in the image sequence, and the multiple images may have different sizes. In some embodiments, in response to enabling the image surround enable flag, surround motion compensation is performed on the images according to the sequence surround motion compensation offset. The image surround enable flag can be determined based on the sequence surround motion compensation flag. For example, as... Figure 12 As shown, the image wraparound enabled flag can be determined from the formula that includes the variable "sps_ref_wraparound_enabled_flag".

[0196] Embodiments of this disclosure also include a method for performing motion compensation on images having a sequence of surrounding motion compensation offsets. Figure 30 A flowchart illustrating an example method for performing motion compensation on an image having a sequence of surrounding motion compensation offsets, according to some embodiments of this disclosure, is shown. It should be understood that... Figure 30 The method 30000 shown can be based on Figure 14 and Figure 15 The syntax and semantics shown are used for execution.

[0197] In step S30010, an image sequence is received. The sequence is associated with a sequence-around motion compensation flag, and the images in the sequence are associated with an image-around motion compensation offset. For example, such as... Figure 14 As shown, a new variable “pps_ref_wraparound_offset” can be included in the image parameter set.

[0198] In step S30020, it is determined whether to enable the sequence orbital motion compensation flag.

[0199] In step S30030, in response to enabling the sequence surround motion compensation flag, surround motion compensation is performed on the images in the image sequence according to the sequence surround motion compensation offset. In some embodiments, motion compensation is performed according to the VVC standard. In some embodiments, surround motion compensation may be performed on multiple images in the image sequence, and the multiple images may have different sizes.

[0200] In some embodiments, in response to an image wrap-around enable flag, wrap-around motion compensation of the image is performed based on a sequence wrap-around motion compensation offset. The image wrap-around enable flag can be determined based on a sequence wrap-around motion compensation flag. For example, as... Figure 12 As shown, the image wraparound enabled flag can be determined according to a formula including the variable "sps_ref_wraparound_enabled_flag". In some embodiments, the minimum value of the image wraparound motion compensation offset is 0. For example, as... Figure 18 As shown. Figure 18 As shown, the minimum value of the variable "pps_ref_wraparound_offset" can be 0.

[0201] In some embodiments, the image is associated with an image surround motion compensation flag. In response to enabling the image surround motion compensation flag, surround motion compensation can be performed on the image based on an image surround motion compensation offset. For example, as... Figure 21 As shown, a new variable "pps_ref_wraparound_enabled_flag" can be added to the image parameter set. Figure 22As shown, the variable "pps_ref_wraparound_enabled_flag" can indicate whether horizontal wraparound motion compensation is applied at the image level. In some embodiments, in response to the enabled image wraparound motion compensation flag, the image wraparound motion compensation offset can be signaled.

[0202] Embodiments of this disclosure also provide a method for performing motion compensation with a limited maximum image size. Figure 31 A flowchart is shown illustrating an example method for performing motion compensation with a limited maximum image size, according to some embodiments of this disclosure. It should be understood that... Figure 31 The method 31000 shown can be based on Figure 25 The semantic execution is shown.

[0203] In step S31010, an image sequence is received. The images are associated with a sequence-around motion compensation flag, and the images in the sequence are associated with an image-around motion compensation offset.

[0204] In step S31020, it is determined whether to enable the sequence orbital motion compensation flag.

[0205] In step S31030, in response to enabling the sequence surround motion compensation flag, surround motion compensation is performed on the images in the image sequence according to the sequence surround motion compensation offset, and the maximum size of the image is limited to a minimum value according to the sequence surround motion compensation offset. For example, as Figure 26 As shown, the maximum image width can be determined according to a formula including "sps_ref_wraparound_offset_minusl". In some embodiments, motion compensation is performed according to the VVC standard. In some embodiments, wraparound motion compensation can be performed on multiple images in an image sequence, and the multiple images may have different sizes. In some embodiments, the image size is limited to a minimum based on the sequence wraparound motion compensation offset. For example, as... Figure 27 As shown, the image width can be determined using a formula that includes "sps_ref_wraparound_offset_minus1".

[0206] In some embodiments, a non-transitory computer-readable storage medium including instructions is also provided, and these instructions can be executed by a device (such as the disclosed encoder and decoder) to perform the methods described above. Common forms of non-transitory media include, for example, floppy disks, hard disks, solid-state drives, magnetic tape or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical media with holes, RAM, PROMs and EPROMs, FLASH-EPROMs or any other flash memory, NVRAM, caches, registers, any other memory chips or cassette tapes and their networking versions. The device may include one or more processors (CPUs), input / output interfaces, network interfaces, and / or memory.

[0207] It should be noted that the relational terms such as “first” and “second” used here are used only to distinguish one entity or operation from another, without requiring or implying any actual relationship or order between these entities or operations. Furthermore, the words “contains,” “has,” “includes,” and “includes,” as well as other similar forms, are equivalent in meaning and are open-ended, because one or more items following any of these words do not imply an exhaustive list of such one or more items, or are limited to only the listed one or more items.

[0208] As used herein, unless otherwise specified, the term "or" includes all possible combinations unless impractical. For example, if a database is declared to include A or B, then unless otherwise expressly stated or impractical, the database may include A, or B, or A and B. As a second example, if a predetermined database may include A, B, or C, then unless otherwise expressly stated or impractical, 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.

[0209] It should be understood that the above embodiments can be implemented by hardware, software (program code), or a combination of hardware and software. If implemented by software, it can be stored in the above-described computer-readable medium. The software, when executed by a processor, can perform the disclosed methods. 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 skilled in the art will also understand that multiple modules / units in the above modules / units can be combined into one module / unit, and each module / unit in the above modules / units can be further divided into multiple sub-modules / sub-units.

[0210] In the foregoing description, numerous specific details have been described with reference to embodiments, which may vary as implementation progresses. Certain modifications and variations may be made to the described embodiments. Other embodiments will be apparent to those skilled in the art upon consideration of the specification and practice of the invention disclosed herein. This specification and embodiments are to be considered exemplary only, and the true scope and spirit of the invention are indicated by the appended claims. The sequences of steps shown in the accompanying drawings are also intended for illustrative purposes only and are not intended to limit one to any particular sequence of steps. Therefore, those skilled in the art will understand that these steps may be performed in different orders while implementing the same method.

[0211] The embodiments may be further described using the following terms:

[0212] 1. A method for performing motion compensation, comprising:

[0213] Receive a first orbital motion compensation flag, wherein the first orbital motion compensation flag is associated with an image;

[0214] Determine whether to enable the first surround motion compensation flag; in response to determining that the first surround motion compensation flag is enabled, receive a surround motion compensation offset, wherein the surround motion compensation offset is associated with the image; and

[0215] Motion compensation is performed on the image based on the first orbital motion compensation flag and the orbital motion compensation offset.

[0216] 2. The method described in Clause 1 further includes:

[0217] Receive a second orbital motion compensation flag, wherein the second orbital motion compensation flag is associated with a set of images, the set of images including the images associated with the first orbital motion compensation flag;

[0218] Determine whether to disable the second orbital motion compensation flag; and

[0219] In response to determining that the second orbital motion compensation flag is disabled, it is also determined that the first orbital motion compensation flag is disabled.

[0220] 3. The method according to Clause 2, wherein determining whether to enable the first orbital motion compensation flag further includes:

[0221] Determine the image width of the image associated with the first surrounding motion compensation flag; and

[0222] Whether to enable the first surround motion compensation flag is determined based on the image width.

[0223] 4. The method described in Clause 3 further includes:

[0224] Determine whether the size of the luminance coding tree block, in units of minimum coding block plus 1, is greater than the image width of the image, in units of minimum coding block minus 1; and

[0225] In response to determining that the size of the luminance coding tree block in units of minimum coding block plus 1 is greater than the image width of the image in units of minimum coding block minus 1, it is determined that the first motion compensation flag is disabled.

[0226] 5. The method according to any one of clauses 2-4 further includes:

[0227] Determine whether to enable the second orbital motion compensation flag; and

[0228] In response to determining that the second surround motion compensation flag is enabled, it is determined that the image width of the image is greater than or equal to the size of the luminance coding tree block plus an offset.

[0229] 6. The method described in Clause 5 further includes:

[0230] In response to determining that the second surround motion compensation flag is enabled, it is determined that the size of the luminance coding tree block in units of minimum coding block plus 1 is less than or equal to the image width in units of minimum coding block minus 1.

[0231] 7. The method according to any one of Clauses 2-6, wherein:

[0232] The second orbital motion compensation flag is signaled in the sequence parameter set, and the first orbital motion compensation flag and the orbital motion compensation offset are signaled in the image parameter set.

[0233] 8. The method according to any one of clauses 1-7, wherein the motion compensation is performed according to a common video coding standard.

[0234] 9. The method according to any one of Clauses 1-8 further includes: performing motion compensation on a plurality of images, wherein the plurality of images have different sizes.

[0235] 10. The method according to any one of clauses 1-9, wherein performing motion compensation on the image based on the surrounding motion compensation offset further comprises:

[0236] The second orbital motion compensation offset is determined by adding an offset to the orbital motion compensation offset received from the bit stream; and

[0237] Motion compensation is performed on the image based on the second surrounding motion compensation offset.

[0238] 11. A system for performing motion compensation, the system comprising:

[0239] A memory, wherein the memory stores a set of instructions; and

[0240] A processor, configured to execute the set of instructions to cause the system to perform the following operations:

[0241] Receive a first orbital motion compensation flag, wherein the first orbital motion compensation flag is associated with an image;

[0242] Determine whether to enable the first surround motion compensation flag; in response to determining that the first surround motion compensation flag is enabled, receive a surround motion compensation offset, wherein the surround motion compensation offset is associated with the image; and

[0243] Motion compensation is performed on the image based on the first orbital motion compensation flag and the orbital motion compensation offset.

[0244] 12. The system according to Clause 11, wherein the processor is further configured to execute the set of instructions to cause the system to perform:

[0245] Receive a second orbital motion compensation flag, wherein the second orbital motion compensation flag is associated with a set of images, the set of images including the images associated with the first orbital motion compensation flag;

[0246] Determine whether to disable the second orbital motion compensation flag; and

[0247] In response to determining that the second orbital motion compensation flag is disabled, it is also determined that the first orbital motion compensation flag is disabled.

[0248] 13. The system according to Clause 12, wherein the processor is further configured to execute the set of instructions to cause the system to perform:

[0249] Determine the image width of the image associated with the first surrounding motion compensation flag; and

[0250] Whether to enable the first surround motion compensation flag is determined based on the image width.

[0251] 14. The system according to Clause 13, wherein the processor is further configured to execute the set of instructions to cause the system to perform:

[0252] Determine whether the size of the luminance coding tree block, in units of minimum coding block plus 1, is greater than the image width of the image, in units of minimum coding block minus 1; and

[0253] In response to determining that the size of the luminance coding tree block in units of minimum coding block plus 1 is greater than the image width of the image in units of minimum coding block minus 1, it is determined that the first motion compensation flag is disabled.

[0254] 15. The system according to any one of clauses 12-14, wherein the processor is further configured to execute the set of instructions to cause the system to perform:

[0255] Determine whether to enable the second orbital motion compensation flag; and

[0256] In response to determining that the second surround motion compensation flag is enabled, it is determined that the image width of the image is greater than or equal to the size of the luminance coding tree block plus an offset.

[0257] 16. The system according to Clause 15, wherein the processor is further configured to execute the set of instructions to cause the system to perform:

[0258] In response to determining that the second surround motion compensation flag is enabled, it is determined that the size of the luminance coding tree block in units of minimum coding block plus 1 is less than or equal to the image width in units of minimum coding block minus 1.

[0259] 17. The system according to any one of clauses 12-16, wherein:

[0260] The second orbital motion compensation flag is signaled in the sequence parameter set, and the first orbital motion compensation flag and the orbital motion compensation offset are signaled in the image parameter set.

[0261] 18. The system according to any one of clauses 11-17, wherein the processor is further configured to execute the set of instructions to cause the system to perform:

[0262] Motion compensation is performed on multiple images, wherein the multiple images have different sizes.

[0263] 19. The system according to any one of clauses 11-18, wherein the processor is further configured to execute the set of instructions to cause the system to perform:

[0264] The second orbital motion compensation offset is determined by adding an offset to the orbital motion compensation offset received from the bit stream; and

[0265] Motion compensation is performed on the image based on the second surrounding motion compensation offset.

[0266] 20. A non-transitory computer-readable medium storing a set of instructions executable by one or more processors of a device to cause the device to initiate a method for performing motion compensation, the method comprising:

[0267] Receive a first orbital motion compensation flag, wherein the first orbital motion compensation flag is associated with an image in a set of images;

[0268] Determine whether to enable the first orbital motion compensation flag;

[0269] In response to determining that the first surround motion compensation flag is enabled, a surround motion compensation offset is received, wherein the surround motion compensation offset is associated with the image; and

[0270] Motion compensation is performed on the image based on the first orbital motion compensation flag and the orbital motion compensation offset.

[0271] 21. A non-transitory computer-readable medium as described in Clause 20, wherein the set of instructions is executable by the at least one processor of the computer system to cause the computer system to perform further actions:

[0272] Determine the image width of the image associated with the first orbital motion compensation flag; and

[0273] Whether the first surround motion compensation flag is enabled is determined based on the image width.

[0274] Exemplary embodiments have been disclosed in the accompanying drawings and description. However, many variations and modifications can be made to these embodiments. Therefore, although specific terminology has been used, it is used only in a general and descriptive sense and not for limiting purposes.

Claims

1. A method for decoding video, comprising: receiving a first wraparound motion compensation flag associated with one or more pictures, the first wraparound motion compensation flag indicating whether horizontal wraparound motion compensation is enabled or disabled for the one or more pictures; and determining whether the first surround motion compensation flag is equal to a first value or a second value based on a luma coding tree block size, wherein determining whether the first wraparound motion compensation flag is equal to the first value or the second value based on the luma coding tree block size further comprises: when the luma coding tree block size in minimum coding block units plus 1 is greater than a picture width in minimum coding block units minus 1, determining that the first wraparound motion compensation flag is equal to the second value; wherein the first wraparound motion compensation flag being equal to the first value indicates that horizontal wraparound motion compensation is enabled, and the first wraparound motion compensation flag being equal to the second value indicates that the horizontal wraparound motion compensation is disabled.

2. The method of claim 1, further comprising: receiving a second wraparound motion compensation flag associated with a sequence of pictures, the second wraparound motion compensation flag indicating whether horizontal wraparound is enabled or disabled for the sequence of pictures; and determining whether the first wraparound motion compensation flag is equal to the first value or the second value based on the second wraparound motion compensation flag, wherein determining whether the first wraparound motion compensation flag is equal to the first value or the second value based on the second wraparound motion compensation flag further comprises: when the second wraparound motion compensation flag is equal to a second value, determining that the first wraparound motion compensation flag is equal to the second value; when the second wraparound motion compensation flag is equal to a first value, and the luma coding tree block size in minimum coding block units plus 1 is equal to or less than the picture width in minimum coding block units minus 1, determining that the first wraparound motion compensation flag is equal to the first value; wherein the second wraparound motion compensation flag being equal to the first value indicates that the horizontal wraparound motion compensation is enabled, and the second wraparound motion compensation flag being equal to the second value indicates that the horizontal wraparound motion compensation is disabled.

3. The method of claim 2, wherein the first wraparound motion compensation flag is signaled in a picture parameter set, and the second wraparound motion compensation flag is signaled in a sequence parameter set.

4. The method of claim 2, further comprising: in response to determining that the first wraparound motion compensation flag is equal to the first value, receiving a parameter associated with a wraparound motion compensation offset, the wraparound motion compensation offset being associated with the one or more pictures.

5. The method of claim 4, wherein a value of the parameter associated with the wraparound motion compensation offset is less than or equal to a difference minus 2, the difference being obtained by subtracting the luma coding tree block size in minimum coding block units from the picture width in minimum coding block units.

6. The method of claim 4, wherein the parameter associated with the wraparound motion compensation offset is received in a picture parameter set.

7. The method of claim 4, further comprising: ​ determining a second parameter associated with the second wrap-around motion compensation offset by adding an offset value to a parameter associated with the wrap-around motion compensation offset received from the bitstream; and performing motion compensation on the one or more pictures based on the second parameter associated with the second wrap-around motion compensation offset.

8. A method for encoding a video, comprising: signaling a first wrap-around motion compensation flag associated with one or more pictures, the first wrap-around motion compensation flag indicating whether horizontal wrap-around motion compensation is enabled or disabled for the one or more pictures; and determining whether the first surround motion compensation flag is equal to a first value or a second value based on a luma coding tree block size, wherein determining whether the first wrap-around motion compensation flag is equal to the first value or the second value based on the luma coding tree block size further comprises: when the luma coding tree block size in minimum coding block units plus 1 is greater than the picture width in minimum coding block units minus 1, determining that the first wrap-around motion compensation flag is equal to a second value; wherein the first wrap-around motion compensation flag being equal to the first value indicates that horizontal wrap-around motion compensation is enabled, and the first wrap-around motion compensation flag being equal to the second value indicates that the horizontal wrap-around motion compensation is disabled.

9. The method of claim 8, further comprising: signaling a second wrap-around motion compensation flag associated with a sequence of pictures, the second wrap-around motion compensation flag indicating whether horizontal wrap-around is enabled or disabled for the sequence of pictures; and determining whether the first wrap-around motion compensation flag is equal to the first value or the second value based on the second wrap-around motion compensation flag, wherein determining whether the first wrap-around motion compensation flag is equal to the first value or the second value based on the second wrap-around motion compensation flag further comprises: when the second wrap-around motion compensation flag is equal to a second value, determining that the first wrap-around motion compensation flag is equal to a second value; when the second wrap-around motion compensation flag is equal to a first value, and the luma coding tree block size in minimum coding block units plus 1 is equal to or less than the picture width in minimum coding block units minus 1, determining that the first wrap-around motion compensation flag is equal to a first value; wherein the second wrap-around motion compensation flag being equal to the first value indicates that the horizontal wrap-around motion compensation is enabled, and the second wrap-around motion compensation flag being equal to the second value indicates that the horizontal wrap-around motion compensation is disabled.

10. The method of claim 9, wherein the first wrap-around motion compensation flag is signaled in a picture parameter set, and the second wrap-around motion compensation flag is signaled in a sequence parameter set. further comprising:

11. The method of claim 9, wherein, in response to determining that the first wrap-around motion compensation flag is equal to the first value, signaling a parameter associated with a wrap-around motion compensation offset, the wrap-around motion compensation offset being associated with the one or more pictures.

12. The method of claim 11, wherein a value of the parameter associated with the wrap-around motion compensation offset is less than or equal to a difference minus 2, the difference being obtained by subtracting the luma coding tree block size in minimum coding block units from the picture width in minimum coding block units. ​ 13. The method of claim 11, wherein a parameter associated with the wraparound motion compensation offset is signaled in a picture parameter set.

14. The method of claim 11, further comprising: determining a second parameter associated with the second wraparound motion compensation offset by adding an offset value to a parameter associated with the wraparound motion compensation offset received from a bitstream; and performing motion compensation on the one or more pictures according to the second parameter associated with the second wraparound motion compensation offset.

15. A method of storing a bitstream to a non-transitory computer readable storage medium, wherein, the bitstream is generated by an encoder, the method comprising: signaling a first wraparound motion compensation flag associated with one or more pictures, the first wraparound motion compensation flag indicating whether horizontal wraparound motion compensation is enabled or disabled for the one or more pictures; and determining whether the first wraparound motion compensation flag is equal to a first value or a second value based on a luma coding tree block size, wherein determining whether the first wraparound motion compensation flag is equal to the first value or the second value based on the luma coding tree block size further comprises: determining that the first wraparound motion compensation flag is equal to the second value when the luma coding tree block size in minimum coding block units plus 1 is greater than the picture width in minimum coding block units minus 1; wherein the first wraparound motion compensation flag being equal to the first value indicates that horizontal wraparound motion compensation is enabled, and the first wraparound motion compensation flag being equal to the second value indicates that the horizontal wraparound motion compensation is disabled.

16. The method of claim 15, further comprising: signaling a second wraparound motion compensation flag associated with a sequence of pictures, the second wraparound motion compensation flag indicating whether horizontal wraparound is enabled or disabled for the sequence of pictures; and determining whether the first wraparound motion compensation flag is equal to the first value or the second value based on the second wraparound motion compensation flag, wherein determining whether the first wraparound motion compensation flag is equal to the first value or the second value based on the second wraparound motion compensation flag further comprises: determining that the first wraparound motion compensation flag is equal to the second value when the second wraparound motion compensation flag is equal to a second value; determining that the first wraparound motion compensation flag is equal to the first value when the second wraparound motion compensation flag is equal to a first value and the luma coding tree block size in minimum coding block units plus 1 is equal to or less than the picture width in minimum coding block units minus 1; wherein the second wraparound motion compensation flag being equal to the first value indicates that the horizontal wraparound motion compensation is enabled, and the second wraparound motion compensation flag being equal to the second value indicates that the horizontal wraparound motion compensation is disabled.

17. The method of claim 16, wherein the first wraparound motion compensation flag is signaled in a picture parameter set, and the second wraparound motion compensation flag is signaled in a sequence parameter set. the operations further comprise:

18. The method of claim 16, wherein, ​ in response to determining that the first wraparound motion compensation flag is equal to the first value, signaling a parameter associated with a wraparound motion compensation offset, the wraparound motion compensation offset being associated with the one or more pictures.

19. The method of claim 18, wherein a value of the parameter associated with the wraparound motion compensation offset is less than or equal to a difference minus 2, the difference being obtained by subtracting a luma coding tree block size in units of minimum coding blocks from a picture width in units of minimum coding blocks.

20. The method of claim 18, wherein signaling a parameter associated with the wraparound motion compensation offset in a picture parameter set.