Overlap Block Motion Compensation (OBMC) for Intra Mode

OBMC enhances video coding efficiency by applying intra-mode processing to predicted blocks, addressing the need for improved compression in advanced standards like VVC/H.266, reducing bandwidth and memory requirements.

JP2026522485APending Publication Date: 2026-07-07ALIBABA (CHINA) CO LTD

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
ALIBABA (CHINA) CO LTD
Filing Date
2024-06-28
Publication Date
2026-07-07

AI Technical Summary

Technical Problem

Existing video coding standards face challenges in achieving high compression efficiency, particularly with the development of advanced standards like VVC/H.266, where techniques like Joint Search Model (JEM) have shown improved coding performance but still require further enhancements to meet the goal of doubling compression efficiency while maintaining subjective quality.

Method used

Implementing overlap block motion compensation (OBMC) for intra-mode video processing, which involves decoding and encoding processes that utilize OBMC on predicted blocks to enhance compression efficiency.

Benefits of technology

OBMC improves video coding efficiency by reducing the required bandwidth and memory usage, aligning with the goals of modern standards like VVC/H.266, while maintaining visual quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026522485000001_ABST
    Figure 2026522485000001_ABST
Patent Text Reader

Abstract

The video processing method includes receiving a bitstream and decoding one or more pictures using the encoded information of the bitstream. Decoding includes performing overlap block motion compensation (OBMC) on blocks predicted in intra-mode.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] (Cross-reference of related applications) This disclosure claims priority to U.S. Provisional Application No. 63 / 511,661, filed 2 July 2023, and to U.S. Patent Application No. 18 / 748,757, “Overlap Block Motion Compensation (OBMC) for Intra-Modes,” filed 20 June 2024. Both applications are incorporated herein by reference in their entirety.

[0002] This disclosure relates in general to video processing, and more specifically to a method and apparatus for performing overlap-block motion compensation (OBMC) for intra-mode video. [Background technology]

[0003] Video is a series of still pictures (or "frames") that capture visual information. To reduce memory usage and transmission bandwidth, video can be compressed before storage or transmission and 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, most commonly based on prediction, transformation, quantization, entropy coding, and in-loop filtering. Video coding standards that specify a particular video coding format, such as the High Efficiency Video Codec (HEVC / H.265) standard, the Versatile Video Coding (VVC / H.266) standard, and the AVS standard, are developed by standardization organizations. As increasingly advanced video coding techniques are adopted in video standards, the coding efficiency of new video coding standards increases. [Overview of the project]

[0004] A first aspect of this disclosure provides a video processing method, which includes receiving a bitstream and decoding one or more pictures using the encoded information of the bitstream. Decoding one or more pictures using the encoded information of the bitstream includes performing overlap block motion compensation (OBMC) on blocks predicted in intra-mode.

[0005] A second aspect of this disclosure provides a method for encoding a video sequence into a bitstream. This method includes receiving a video sequence, encoding one or more pictures of the video sequence, and generating a bitstream. Encoding one or more pictures of the video sequence includes performing overlap block motion compensation (OBMC) on blocks predicted in intra-mode.

[0006] A third aspect of the present disclosure provides a video processing device comprising a receiving module configured to receive a bitstream and a decoding module configured to decode one or more pictures using coded information of the bitstream, wherein the decoding module is configured to perform overlap block motion compensation (OBMC) on predicted blocks in intra-mode.

[0007] A fourth aspect of the present disclosure provides an apparatus for encoding a video sequence into a bitstream, comprising: a receiving module configured to receive the video sequence; an encoding module configured to encode one or more pictures of the video sequence; and a generating module configured to generate a bitstream, wherein the encoding module is configured to perform overlapping block motion compensation (OBMC) on predicted blocks in intra-mode.

[0008] A fifth aspect of the present disclosure provides an electronic device comprising one or more processors and a computer-readable storage medium communicably coupled to one or more processors, wherein the computer-readable storage medium is executable by one or more processors and stores computer-readable instructions that, when executed by one or more processors, perform the method described in the first or second aspect.

[0009] A sixth aspect of the present disclosure provides a non-temporary, computer-readable storage medium for storing a bitstream of video, wherein, once the bitstream is encoded by a decoder, the encoder causes the encoder to perform a method according to the first aspect.

[0010] A seventh aspect of the present disclosure provides a non-temporary computer-readable storage medium for storing a bitstream of video, wherein, once the bitstream is encoded by an encoder, a decoder is caused to perform a method according to a second aspect.

[0011] In an eighth aspect of this disclosure, a computer program product is provided which includes computer program instructions, the computer program instructions enabling a computer to perform the method described in the first or second aspect.

[0012] In an eighth aspect of this disclosure, a computer program is provided that enables a computer to perform the method described in the first or second aspect. [Brief explanation of the drawing]

[0013] Embodiments and various aspects of this disclosure are shown in the following detailed description and accompanying drawings. Various features shown in the drawings are not depicted to scale.

[0014] [Figure 1]This is a schematic diagram showing the structure of an exemplary video sequence according to some embodiments of the present disclosure.

[0015] [Figure 2A] This is a schematic diagram illustrating an exemplary coding process of a hybrid video coding system consistent with the embodiments of the present disclosure.

[0016] [Figure 2B] This schematic diagram shows another exemplary coding process for a hybrid video coding system consistent with the embodiments of the present disclosure.

[0017] [Figure 3A] This is a schematic diagram illustrating an exemplary decoding process of a hybrid video coding system consistent with the embodiments of the present disclosure.

[0018] [Figure 3B] This schematic diagram illustrates another exemplary decoding process for a hybrid video coding system, consistent with the embodiments of this disclosure.

[0019] [Figure 4] This is a block diagram of an exemplary apparatus for encoding or decoding video, according to some embodiments of the present disclosure.

[0020] [Figure 5] The following are exemplary overlapping block motion compensation (OBMC) performed on block boundaries according to some embodiments of this disclosure.

[0021] [Figure 6] An exemplary OBMC template is shown according to some embodiments of this disclosure.

[0022] [Figure 7A]An example of the processing sequence of the current coded tree unit (CTU) according to some embodiments of this disclosure is shown, along with available reference samples in the current CTU and the left-hand CTU. [Figure 7B] An example of the processing sequence of the current coded tree unit (CTU) according to some embodiments of this disclosure is shown, along with available reference samples in the current CTU and the left-hand CTU. [Figure 7C] An example of the processing sequence of the current coded tree unit (CTU) according to some embodiments of this disclosure is shown, along with available reference samples in the current CTU and the left-hand CTU. [Figure 7D] An example of the processing sequence of the current coded tree unit (CTU) according to some embodiments of this disclosure is shown, along with available reference samples in the current CTU and the left-hand CTU. [Figure 7E] An example of the processing sequence of the current coded tree unit (CTU) according to some embodiments of this disclosure is shown, along with available reference samples in the current CTU and the left-hand CTU. [Figure 7F] An example of the processing sequence of the current coded tree unit (CTU) according to some embodiments of this disclosure is shown, along with available reference samples in the current CTU and the left-hand CTU.

[0023] [Figure 8A] Examples of block vector (BV) adjustments for horizontal and vertical inversion, according to some embodiments of this disclosure, are shown below. [Figure 8B] Examples of block vector (BV) adjustments for horizontal and vertical inversion, according to some embodiments of this disclosure, are shown below.

[0024] [Figure 9] The following are exemplary subpixel positions used in a subpixel-mode intra-TMP according to some embodiments of this disclosure.

[0025] [Figure 10]An exemplary intra-predictive mode according to some embodiments of this disclosure is shown.

[0026] [Figure 11] A flowchart illustrating an exemplary method for performing OBMC on a block according to some embodiments of this disclosure is shown.

[0027] [Figure 12] Examples of BVC, BVN, predC, and predN subblocks at the upper boundary of a block when performing OBMC, according to some embodiments of this disclosure, are shown.

[0028] [Figure 13] An exemplary block illustrating a merge block according to some embodiments of this disclosure is shown.

[0029] [Figure 14] An exemplary block illustrating a method for padding block vectors according to some embodiments of this disclosure is shown. [Modes for carrying out the invention]

[0030] Herein, exemplary embodiments shown in the accompanying drawings will be described in detail. The following description refers to the accompanying drawings, in which, unless otherwise noted, the same number in different drawings represents the same or similar elements. The embodiments described below in the description of exemplary embodiments do not represent all embodiments consistent with the present disclosure. Rather, these embodiments are merely examples of apparatus and methods consistent with aspects related to the present disclosure enumerated in the accompanying claims. Specific aspects of the present disclosure will be described in more detail below. In the event of any conflict between terms and / or definitions incorporated by reference and those provided herein, the terms and definitions provided herein shall prevail.

[0031] The Joint Video Expert Team (JVET), comprised of the ITU-T Video Coding Expert Group (ITU-TVCEG) and the ISO / IEC Video Expert Group (ISO / IECMPEG), is currently developing the Multipurpose 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, the goal of VVC is to achieve the same subjective quality as HEVC / H.265 with half the bandwidth.

[0032] To achieve the same subjective quality as HEVC / H.265 using half the bandwidth, JVET has developed techniques that surpass HEVC using the Joint Search Model (JEM) reference software. Because coding techniques were incorporated into JEM, JEM achieved significantly higher coding performance than HEVC.

[0033] The VVC standard is a relatively recent development and continues to incorporate more coding techniques to provide better compression performance. VVC is based on the same hybrid video coding system used in modern video compression standards such as HEVC, H.264 / AVC, MPEG2, and H.263.

[0034] Video is a set of still pictures (or "frames") arranged in chronological order to store visual information. A video capture device (e.g., a camera) can be used to capture and store these pictures in chronological order, and a video playback device (e.g., a television, computer, smartphone, tablet computer, video player, or any end-user terminal with display capabilities) can be used to display such pictures in chronological order. Furthermore, in some applications, the video capture device can transmit the captured video in real time to a video playback device (e.g., a computer with a monitor) for purposes such as supervision, conference hosting, or live broadcasting.

[0035] To reduce the memory space and transmission bandwidth required for such applications, video can be compressed before storage and transmission and decompressed before display. This compression and decompression can be implemented by software executed by a processor (e.g., a general-purpose computer processor) or by dedicated hardware. The module for compression is generally called an "encoder," and the module for decompression is generally called a "decoder." Encoders and decoders can be collectively called a "codec." Encoders and decoders can be implemented as various suitable hardware, software, or combinations thereof. For example, hardware implementations of encoders and decoders may include circuit mechanisms 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 may include program code, computer-executable instructions, firmware, or any suitable computer-implemented algorithm or process fixed in a computer-readable medium. Video compression and decompression can be performed by various algorithms or standards such as MPEG-1, MPEG-2, MPEG-4, and the H.26x series. In some applications, a codec can decompress video using a first encoding standard and then recompress the decompressed video using a second encoding standard. In this case, the codec can be called a "transcoder."

[0036] A video encoding process can identify and retain useful information that can be used to reconstruct the picture, while ignoring information that is not important for reconstruction. If the ignored, unimportant information cannot be fully reconstructed, such an encoding process can be called "lossy." Otherwise, it can be called "lossy." Most encoding processes are lossy, which is a trade-off to reduce the required memory space and transmission bandwidth.

[0037] Useful information about the picture being encoded (referred to as the "current picture") includes changes relative to the reference picture (e.g., a previously encoded and reconstructed picture). Such changes can include changes in pixel position, brightness, or color, of which changes in position are of greatest interest. Changes in the position of a group of pixels representing an object can reflect the movement of the object between the reference picture and the current picture.

[0038] A picture coded without referencing another picture (i.e., the picture is its own reference picture) is called an "I-picture" or "I-slice". A picture is called a "P-picture" or "P-slice" if some or all of its blocks (for example, a block that generally refers to a portion of a video picture) are predicted using intra-prediction or inter-prediction with one reference picture (e.g., single prediction). A picture is called a "B-picture" or "B-slice" if at least one of its blocks is predicted with two reference pictures (e.g., bi-prediction).

[0039] Figure 1 shows the structure of an exemplary video sequence 100 according to some embodiments of the present disclosure. The video sequence 100 may be live video or captured and archived video. The video 100 may be real video, computer-generated video (e.g., computer game video), or a combination thereof (e.g., real video with augmented reality effects). The video sequence 100 may be input from a video capture device (e.g., a camera), a video archive containing previously captured video (e.g., video files stored in a storage device), or a video feed interface for receiving video from a video content provider (e.g., a video broadcast transceiver).

[0040] As shown in Figure 1, the video sequence 100 may include a series of pictures arranged in time along a timeline, including pictures 102, 104, 106, and 108. Pictures 102-106 are consecutive, with further pictures between pictures 106 and 108. In Figure 1, picture 102 is an I picture, and its reference picture is picture 102 itself. Picture 104 is a P picture, and its reference picture is picture 102, as indicated by the arrows. Picture 106 is a B picture, and its reference pictures are pictures 104 and 108, as indicated by the arrows. In some embodiments, the reference picture of a picture (e.g., picture 104) may not be immediately before or after that picture. For example, the reference picture of picture 104 may be the picture before picture 102. Please note that the reference pictures 102-106 are merely examples, and this disclosure does not limit the embodiments of the reference pictures to the examples shown in Figure 1.

[0041] Typically, video codecs do not encode or decode an entire picture at once due to the complexity of computation for such tasks. Rather, they can divide the picture into basic segments and encode or decode the picture segment by segment. In this disclosure, such basic segments are referred to as basic processing units ("BPUs"). For example, structure 110 in Figure 1 shows an exemplary structure of a picture (e.g., any of pictures 102-108) in video sequence 100. In structure 110, the picture is divided into 4x4 basic processing units, their boundaries shown as dashed lines. In some embodiments, basic processing units may be referred to as "macroblocks" in some video encoding standards (e.g., the MPEG family, H.261, H.263, or H.264 / AVC) or as "encoded tree units" ("CTUs") in some other video encoding standards (e.g., H.265 / HEVC or H.266 / VVC). In pictures, the basic processing unit can have variable sizes such as 128x128, 64x64, 32x32, 16x16, 4x8, 16x32, or any arbitrary shape and size of pixels. The size and shape of the basic processing unit can be selected for pictures based on a balance between encoding efficiency and the level of detail to be preserved in the basic processing unit.

[0042] A basic processing unit can be a logical unit that may contain various types of video data stored in computer memory (e.g., in a video frame buffer). For example, a basic processing unit for a color picture may include a luminance component (Y) representing achromatic luminance information, one or more chroma components (e.g., Cb and Cr) representing color information, and associated syntactic elements, where the lumina and chroma components may be of similar size to the basic processing unit. The lumina and chroma components may be called an "encoded tree block" ("CTB") in some video encoding standards (e.g., H.265 / HEVC or H.266 / VVC). Any operation performed on a basic processing unit can be repeated on its lumina and chroma components, respectively.

[0043] Video encoding involves multiple operational stages, examples of which are shown in Figures 2 and 3. At each stage, the size of the basic processing unit may still be too large for processing and therefore can be further divided into segments referred to in this disclosure as “basic processing subunits.” In some embodiments, a basic processing subunit may be referred to as a “block” in some video encoding standards (e.g., the MPEG family, H.261, H.263, or H.264 / AVC) or as an “encoding unit” (“CU”) in some other video encoding standards (e.g., H.265 / HEVC or H.266 / VVC). A basic processing subunit may be the same size as, or smaller than, a basic processing unit. Similar to a basic processing unit, a basic processing subunit is a logical unit that may contain various types of video data (e.g., Y, Cb, Cr, and associated syntactic elements) stored in computer memory (e.g., in a video frame buffer). Any operation performed on a basic processing subunit can be repeated on its luma and chroma components, respectively. It should be noted that such division may be carried out to further levels depending on the processing requirements. Also, it should be noted that different stages can divide the basic processing unit using different methods.

[0044] For example, during the mode determination phase (an example of which is shown in Figure 2B), the encoder can determine which prediction mode (e.g., intra-picture prediction or inter-picture prediction) to use for the basic processing unit, but the basic processing unit may be too large to make such a determination. The encoder can divide the basic processing unit into multiple basic processing subunits (e.g., CUs, as in the case of H.265 / HEVC or H.266 / VVC) and determine the type of prediction for each basic processing subunit.

[0045] As another example, in the prediction phase (an example of which is shown in Figures 2A-2B), the encoder can perform predictive operations at the level of the basic processing subunit (e.g., CU). However, in some cases, the basic processing subunit may still be too large to process. The encoder can further divide the basic processing subunit into smaller segments (e.g., called "predictive blocks" or "PBs" in H.265 / HEVC or H.266 / VVC) and perform predictive operations at that level.

[0046] As another example, in the conversion stage (an example of which is shown in Figures 2A-2B), the encoder can perform conversion operations on residual basic processing subunits (e.g., CUs). However, in some cases, the basic processing subunit may still be too large to process. The encoder can further divide the basic processing subunit into smaller segments (e.g., called "conversion blocks" or "TBs" in H.265 / HEVC or H.266 / VVC) and perform conversion operations at that level. Note that the division method for the same basic processing subunit may differ between the prediction and conversion stages. For example, in H.265 / HEVC or H.266 / VVC, the prediction blocks and conversion blocks of the same CU may differ in size and number.

[0047] In the structure 110 of Figure 1, the basic processing unit 112 is further divided into 3x3 basic processing subunits, and their boundaries are shown as dotted lines. Different basic processing units of the same picture can be divided into basic processing subunits in different ways.

[0048] In some implementations, a picture can be divided into multiple regions for processing to provide parallel processing and error tolerance for video encoding and decoding. This ensures that the encoding or decoding process for a given region of the picture does not depend on information from any other region of the picture. In other words, each region of the picture can be processed independently. In this way, the codec can process different regions of the picture in parallel, increasing encoding efficiency. Furthermore, if data in a region is corrupted during processing or lost during network transmission, the codec can correctly encode or decode other regions of the same picture without relying on the corrupted or lost data, thus providing error tolerance. In some video encoding standards, a picture can be divided into different types of regions. For example, H.265 / HEVC and H.266 / VVC offer two types of regions: "slices" and "tiles." It should also be noted that various pictures in video sequence 100 may have various division schemes for dividing the picture into multiple regions.

[0049] For example, in Figure 1, structure 110 is divided into three regions 114, 116, and 118, their boundaries shown as solid lines within structure 110. Region 114 contains four basic processing units. Regions 116 and 118 each contain six basic processing units. Note that the basic processing units, basic processing subunits, and regions of structure 110 in Figure 1 are merely examples, and this disclosure does not limit its embodiments.

[0050] Figure 2A shows a schematic diagram of an exemplary encoding process 200A consistent with embodiments of the present disclosure. For example, the encoding process 200A can be performed by an encoder. As shown in Figure 2A, the encoder can encode a video sequence 202 into a video bitstream 228 according to process 200A. Similar to video sequence 100 in Figure 1, video sequence 202 may include a series of pictures (referred to as “original pictures”) arranged in chronological order. Similar to structure 110 in Figure 1, each original picture in video sequence 202 can be divided by the encoder into a basic processing unit, a basic processing subunit, or a region for processing. In some embodiments, the encoder can perform process 200A at the level of a basic processing unit for each original picture in video sequence 202. For example, the encoder can perform process 200A iteratively, in which case the encoder can encode one basic processing unit in one iteration of process 200A. In some embodiments, the encoder can execute process 200A in parallel for each region of the original picture in the video sequence 202 (e.g., regions 114-118).

[0051] In Figure 2A, the encoder can generate predicted data 206 and predicted BPU 208 by sending the basic processing unit of the original picture of the video sequence 202 (called the "original BPU") to the prediction stage 204. The encoder can generate residual BPU 210 by subtracting the predicted BPU 208 from the original BPU. The encoder can generate quantization conversion coefficients 216 by sending the residual BPU 210 to the conversion stage 212 and the quantization stage 214. The encoder can generate the video bitstream 228 by sending the predicted data 206 and quantization conversion coefficients 216 to the binary coding stage 226. Components 202, 204, 206, 208, 210, 212, 214, 216, 226, and 228 may be called the "forward path". During process 200A, after the quantization stage 214, the encoder can generate a reconstructed residual BPU 222 by sending the quantization conversion coefficients 216 to the inverse quantization stage 218 and the inverse conversion stage 220. The encoder can then generate a prediction criterion 224, which will be used for the next iteration of process 200A in the prediction stage 204, by adding the reconstructed residual BPU 222 to the prediction BPU 208. Components 218, 220, 222, and 224 of process 200A may 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.

[0052] The encoder can iteratively perform process 200A to encode each original BPU of the original picture (in the forward path) and generate a predictive criterion 224 for encoding the next original BPU of the original picture (in the reconstruction path). After encoding all original BPUs of the original picture, the encoder can proceed to encoding the next picture in the video sequence 202.

[0053] Referring to process 200A, the encoder can receive a video sequence 202 generated by a video capture device (e.g., a camera). As used herein, the term “receive” may mean any act by any means of receiving, inputting, acquiring, retrieving, obtaining, reading, accessing, or inputting data.

[0054] In prediction stage 204, in the current iteration, the encoder receives the original BPU and prediction criterion 224 and can perform prediction operations to generate prediction data 206 and prediction BPU 208. The prediction criterion 224 can be generated from the reconstruction path in the previous iteration of process 200A. The objective of prediction stage 204 is to reduce information redundancy by extracting prediction data 206 that can be used to reconstruct the original BPU as prediction BPU 208 from the prediction data 206 and prediction criterion 224.

[0055] Ideally, the predicted BPU 208 can be identical to the original BPU. However, due to non-ideal prediction and reconstruction operations, the predicted BPU 208 is usually slightly different from the original BPU. To record such differences, the encoder can generate the residual BPU 210 by subtracting the predicted BPU 208 from the original BPU after generating it. For example, the encoder can subtract the pixel values ​​(e.g., grayscale or RGB values) of the predicted BPU 208 from the corresponding pixel values ​​of the original BPU. Each pixel in the residual BPU 210 may have a residual value resulting from such a subtraction between the corresponding pixels in the original BPU and the predicted BPU 208. Compared to the original BPU, the predicted data 206 and residual BPU 210 may have fewer bits, but they can be used to reconstruct the original BPU without a significant loss of quality. Thus, the original BPU is compressed.

[0056] To further compress the residual BPU210, in the conversion stage 212, the encoder can reduce the spatial redundancy of the residual BPU210 by decomposing it into a set of two-dimensional "base patterns," each associated with a "conversion coefficient." The base patterns can have the same size (e.g., the size of the residual BPU210). Each base pattern can represent the fluctuating frequency component (e.g., brightness fluctuation frequency) of the residual BPU210. No base pattern can be reproduced from any combination of any other base patterns (e.g., a linear combination). In other words, the decomposition allows the fluctuations of the residual BPU210 to be decomposed into the frequency domain. Such a decomposition is analogous to the discrete Fourier transform of a function, where the base patterns are analogous to the basis functions of the discrete Fourier transform (e.g., trigonometric functions), and the conversion coefficients are analogous to the coefficients associated with the basis functions.

[0057] Different transformation algorithms can use different base patterns. Various transformation algorithms can be used in the transformation stage 212, such as discrete cosine transform and discrete sine transform. The transformation in the transformation stage 212 is reversible; that is, the encoder can reconstruct the residual BPU 210 by performing the inverse operation of the transformation (called the "inverse transformation"). For example, to reconstruct the pixels of the residual BPU 210, the inverse transformation might involve multiplying the values ​​of the corresponding pixels in the base pattern by their respective associated coefficients and adding their products to produce a weighted sum. In video coding standards, both the encoder and decoder can use the same transformation algorithm (and therefore the same base pattern). Thus, the encoder can record only the transformation coefficients, and the decoder can reconstruct the residual BPU 210 from these transformation coefficients without receiving the base pattern from the encoder. While the transformation coefficients may have fewer bits compared to the residual BPU 210, they can be used to reconstruct the residual BPU 210 without significant quality degradation. Therefore, the residual BPU 210 is further compressed.

[0058] The encoder can further compress the conversion coefficients in the quantization stage 214. In the conversion process, different base patterns can represent different fluctuation frequencies (e.g., brightness fluctuation frequencies). Generally, the human eye is better at recognizing low-frequency fluctuations, so the encoder can ignore information about high-frequency fluctuations without causing significant quality degradation during decoding. For example, in the quantization stage 214, the encoder can generate quantization conversion coefficients 216 by dividing each conversion coefficient by an integer value (called the "quantization scale factor") and rounding the quotient to its nearest integer. After such an operation, some conversion coefficients for high-frequency base patterns may be converted to zero, and conversion coefficients for low-frequency base patterns may be converted to smaller integers. The encoder can ignore quantization conversion coefficients 216 with zero values, thereby further compressing the conversion coefficients. The quantization process is also reversible, in which the quantization conversion coefficients 216 can be reconstructed into conversion coefficients in the inverse operation of quantization (called "inverse quantization").

[0059] Because the encoder ignores the remainder of such division in rounding operations, the quantization stage 214 can be irreversible. Typically, the quantization stage 214 can cause the greatest information loss in process 200A. The greater the information loss, the fewer bits the quantization conversion coefficient 216 may require. To obtain different levels of information loss, the encoder can use different values ​​for the quantization parameters or any other parameters of the quantization process.

[0060] In the binary coding stage 226, the encoder can encode the predicted data 206 and the quantization conversion coefficients 216 using binary coding techniques such as entropy coding, variable-length coding, arithmetic coding, Huffman coding, context-adaptive binary arithmetic coding, or any other reversible or irreversible compression algorithm. In some embodiments, in addition to the predicted data 206 and the quantization conversion coefficients 216, the encoder can encode other information in the binary coding stage 226, such as the prediction mode used in the prediction stage 204, parameters of the prediction operation, the conversion type in the conversion stage 212, parameters of the quantization process (e.g., quantization parameters), and encoder control parameters (e.g., bitrate control parameters). The encoder can use the output data from the binary coding stage 226 to generate a video bitstream 228. In some embodiments, the video bitstream 228 may be further packetized for network transmission.

[0061] Referring to the reconstruction path of process 200A, in the inverse quantization stage 218, the encoder can generate reconstruction transformation coefficients by performing inverse quantization on the quantization transformation coefficients 216. In the inverse transformation stage 220, the encoder can generate reconstruction residual BPU 222 based on the reconstruction transformation coefficients. The encoder can add the reconstruction residual BPU 222 to the prediction BPU 208 to generate a prediction criterion 224 to be used in the next iteration of process 200A.

[0062] 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 executed in a different order by the encoder. 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, the conversion stage 212 and the 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 omit one or more stages in Figure 2A.

[0063] Figure 2B shows a schematic diagram of another exemplary coding process 200B consistent with embodiments of the present disclosure. Process 200B may be a modification of process 200A. For example, process 200B may be used by an encoder compliant with a hybrid video coding standard (e.g., the H.26x series). Compared with process 200A, the forward path of process 200B further includes a mode determination 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 further includes a loop filter stage 232 and a buffer 234.

[0064] Generally, prediction techniques can be classified into two types: spatial prediction and temporal prediction. Spatial prediction (e.g., intra-picture prediction or "intra-prediction") can predict the current BPU by using pixels from one or more already coded neighboring BPUs in the same picture. That is, the prediction criterion 224 in spatial prediction can include neighboring BPUs. Spatial prediction can reduce the inherent spatial redundancy of a picture. Temporal prediction (e.g., inter-picture prediction or "inter-prediction") can predict the current BPU by using regions from one or more already coded pictures. That is, the prediction criterion 224 in temporal prediction can include coded pictures. Temporal prediction can reduce the inherent temporal redundancy of a picture.

[0065] Referring to process 200B, in the forward path, the encoder performs prediction operations in the spatial prediction stage 2042 and the temporal prediction stage 2044. For example, in the spatial prediction stage 2042, the encoder can perform intra-prediction. For the original BPU of the picture being encoded, the prediction criterion 224 can include one or more adjacent BPUs that are encoded (in the forward path) and reconstructed (in the reconstruction path) in the same picture. The encoder can generate the prediction BPU 208 by extrapolating adjacent BPUs. Extrapolation techniques may include, for example, linear extrapolation or interpolation, or polynomial extrapolation or interpolation. In some embodiments, the encoder can perform extrapolation at the pixel level, such as by extrapolating the values ​​of the corresponding pixels for each pixel of the prediction BPU 208. The adjacent BPU used for extrapolation can be positioned from various directions relative to the original BPU, such as vertically (e.g., above the original BPU), horizontally (e.g., to the left of the original BPU), diagonally (e.g., lower left, lower right, upper left, or upper right of the original BPU), or in any direction defined by the video coding standard used. In intra-prediction, the prediction data 206 may include, for example, the location (e.g., coordinates) of the adjacent BPU used, the size of the adjacent BPU used, the extrapolation parameters, and the orientation of the adjacent BPU used relative to the original BPU.

[0066] As another example, in the temporal prediction stage 2044, the encoder can perform interpretation. For the original BPU of the current picture, the prediction criterion 224 may include one or more pictures (referred to as "reference pictures") that have been encoded (in the forward path) and reconstructed (in the reconstruction path). In some embodiments, the reference pictures may be encoded and reconstructed for each BPU. For example, the encoder may generate a reconstructed BPU by adding the reconstructed residual BPU 222 to the prediction BPU 208. Once all the reconstructed BPUs for the same picture have been generated, the encoder can generate a reconstructed picture as a reference picture. The encoder may perform a "motion estimation" operation to search for a matching region within the range of the reference picture (referred to as the "search window"). The position of the search window in the reference picture may be determined based on the position of the original BPU in the current picture. For example, the search window may be centered at a position in the reference picture that has the same coordinates as the original BPU in the current picture and may extend outward by a predetermined distance. When the encoder identifies a region in the search window that is similar to the original BPU (for example, by using a pixel recursion algorithm, a block matching algorithm, etc.), the encoder can determine such a region as a matching region. The matching region may have different dimensions from the original BPU (for example, smaller than, equal to, larger than, or a different shape from the original BPU). Because the reference picture and the current picture are separated in time on the timeline (for example, as shown in Figure 1), the matching region can be considered to "move" to the position of the original BPU over time. The encoder can record the direction and distance of such movement as a "motion vector". If multiple reference pictures are used (for example, as picture 106 in Figure 1), the encoder can search for a matching region for each reference picture and determine the associated motion vector.In some embodiments, the encoder can assign weights to the pixel values ​​of the matching region of each matching reference picture.

[0067] Motion estimation can be used to identify various types of motion, such as translation, rotation, and zooming. In interpretation, the prediction data 206 may include, for example, the location (e.g., coordinates) of the matching region, the motion vector associated with the matching region, the number of reference pictures, and the weights associated with the reference pictures.

[0068] To generate a predicted BPU 208, the encoder can perform a “motion compensation” operation. Motion compensation can be used to reconstruct the predicted BPU 208 based on prediction data 206 (e.g., motion vectors) and prediction criteria 224. For example, the encoder can move the matching region of a reference picture according to the motion vectors, thereby allowing the encoder to predict the original BPU of the current picture. If multiple reference pictures are used (e.g., picture 106 in Figure 1), the encoder can move the matching region of the reference picture according to the respective motion vectors and average pixel values ​​of the matching region. In some embodiments, if the encoder has assigned weights to the pixel values ​​of the matching region of each matching reference picture, the encoder can add the weighted sum of the pixel values ​​of the moved matching region.

[0069] In some embodiments, interpretation may be unidirectional or bidirectional. Picture 104 in Figure 1 is a unidirectional interpretation picture in which a reference picture (i.e., picture 102) precedes picture 104. Bidirectional interpretation can use one or more reference pictures that are in both temporal directions relative to the current picture. For example, picture 106 in Figure 1 is a bidirectional interpretation picture in which reference pictures (i.e., pictures 104 and 108) are in both temporal directions relative to picture 104.

[0070] Continuing to refer to the forward path of process 200B, after the spatial prediction 2042 and the temporal prediction stage 2044, in the mode determination stage 230, the encoder can select a prediction mode (e.g., either intra-prediction or inter-prediction) for the current iteration of process 200B. For example, the encoder can perform a rate distortion optimization technique, in which the encoder can select a prediction mode based on the bit rate of a candidate prediction mode and the distortion of the reconstructed reference picture in the candidate prediction mode to minimize the value of the cost function. Depending on the selected prediction mode, the encoder can generate the corresponding prediction BPU 208 and prediction data 206.

[0071] In the reconstruction path of process 200B, if the intra-prediction mode is selected in the forward path, after generating the prediction criterion 224 (e.g., the current BPU encoded and reconstructed with the current picture), the encoder can send the prediction criterion 224 directly to the spatial prediction stage 2042 for later use (e.g., to extrapolate the next BPU of the current picture). The encoder can also send the prediction criterion 224 to the loop filter stage 232, where the encoder can apply a loop filter to the prediction criterion 224 to reduce or remove distortions (e.g., blocking artifacts) introduced during the encoding of the prediction criterion 224. In the loop filter stage 232, the encoder can apply various loop filtering techniques, such as deblocking, sample-adaptive offset, or adaptive loop filtering. The loop-filtered reference picture can be stored in the buffer 234 (or "decoded picture buffer") for later use (e.g., to use as an inter-prediction criterion picture for future pictures in the video sequence 202). The encoder can store one or more reference pictures in the buffer 234 for use in the temporal prediction stage 2044. In some embodiments, the encoder can encode the parameters of the loop filter (e.g., the strength of the loop filter) along with the quantization conversion coefficients 216, the prediction data 206, and other information in the binary coding stage 226.

[0072] Figure 3A shows a schematic diagram of an exemplary decoding process 300A consistent with embodiments of the present disclosure. For example, the decoding process 300A can be performed by a decoder, e.g., the image / video decoder 144 in Figure 1. Process 300A may be a decompression process corresponding to the compression process 200A in Figure 2A. In some embodiments, process 300A may be analogous to the reconstruction path of process 200A. The decoder (e.g., the image / video decoder 144 in Figure 1) can decode the video bitstream 228 into a video stream 304 according to process 300A. The video stream 304 may be very similar to the video sequence 202. However, due to the loss of information in the compression and decompression processes (e.g., the quantization stage 214 in Figures 2A and 2B), the video stream 304 is usually not identical to the video sequence 202. Similar to processes 200A and 200B in Figures 2A and 2B, the decoder can execute process 300A at the level of the basic processing unit (BPU) for each picture encoded in the video bitstream 228. For example, the decoder can execute process 300A iteratively, in which case the decoder can decode one basic processing unit in one iteration of process 300A. In some embodiments, the decoder can execute process 300A in parallel for each region of picture encoded in the video bitstream 228 (e.g., regions 114-118).

[0073] In Figure 3A, the decoder can send a portion of the video bitstream 228 associated with the basic processing unit of the encoded picture (called the "encoded BPU") to the binary decoding stage 302. In the binary decoding stage 302, the decoder can decode this portion into prediction data 206 and quantization conversion coefficients 216. The decoder can generate a reconstructed residual BPU 222 by sending the quantization conversion coefficients 216 to the inverse quantization stage 218 and the inverse conversion stage 220. The decoder can generate a prediction BPU 208 by sending the prediction data 206 to the prediction stage 204. The decoder can generate a prediction criterion 224 by adding the reconstructed residual BPU 222 to the prediction BPU 208. In some embodiments, the prediction criterion 224 can be stored in a buffer (e.g., a decoded picture buffer in computer memory). The decoder can send the prediction criterion 224 to the prediction stage 204 to perform a prediction operation in the next iteration of process 300A.

[0074] The decoder can decode each encoding BPU of the encoded picture by iteratively executing process 300A and generate a prediction criterion 224 to encode the next encoding BPU of the encoded picture. After decoding all encoding BPUs of the encoded picture, the decoder can output the picture to the video stream 304 for display and proceed to decode the next encoded picture in the video bitstream 228.

[0075] In the binary decoding stage 302, the decoder can perform the inverse operation of the binary coding technique used by the encoder (e.g., entropy coding, variable-length coding, arithmetic coding, Huffman coding, context-adaptive binary arithmetic coding, or any other lossless compression algorithm). In some embodiments, in the binary decoding stage 302, the decoder can decode other information in addition to the predicted data 206 and quantization conversion coefficients 216, such as the prediction mode, parameters of the prediction operation, conversion type, parameters of the quantization process (e.g., quantization parameters), and encoder control parameters (e.g., bitrate control parameters). In some embodiments, if the video bitstream 228 is transmitted in packet form over the network, the decoder can depacketize the video bitstream 228 before sending it to the binary decoding stage 302.

[0076] Figure 3B shows a schematic diagram of another exemplary decoding process 300B consistent with embodiments of the present disclosure. Process 300B may be a modification of process 300A. For example, process 300B may be used by a decoder compliant with a hybrid video coding standard (e.g., the H.26x series). Compared with process 300A, process 300B additionally divides the prediction stage 204 into a spatial prediction stage 2042 and a temporal prediction stage 2044, and further includes a loop filter stage 232 and a buffer 234.

[0077] In process 300B, for the encoding base processing unit ("current BPU") of the encoded picture being decoded ("current picture"), the prediction data 206 decoded by the decoder from the binary decoding stage 302 may contain various types of data depending on which prediction mode was used by the encoder to encode the current BPU. For example, if intra-prediction was used by the encoder to encode the current BPU, the prediction data 206 may include a prediction mode indicator (e.g., a flag value) indicating intra-prediction, parameters of the intra-prediction operation, etc. Parameters of the intra-prediction operation may include, for example, the location (e.g., coordinates) of one or more adjacent BPUs used as reference, the size of the adjacent BPUs, extrapolation parameters, the orientation of the adjacent BPUs relative to the original BPU, etc. As another example, if inter-prediction was used by the encoder to encode the current BPU, the prediction data 206 may include a prediction mode indicator (e.g., a flag value) indicating inter-prediction, parameters of the inter-prediction operation, etc. Parameters for interpretation operation may include, for example, the number of reference pictures associated with the current BPU, the weights associated with each reference picture, the location (e.g., coordinates) of one or more matching regions in each reference picture, and one or more motion vectors associated with each matching region.

[0078] Based on the prediction mode indicator, the decoder can decide whether to perform a spatial prediction (e.g., intra-prediction) in the spatial prediction stage 2042 or a temporal prediction (e.g., inter-prediction) in the temporal prediction stage 2044. Details of performing such spatial or temporal predictions are shown in Figure 2B and will not be repeated below. After performing such spatial or temporal predictions, the decoder can generate a prediction BPU 208. The decoder can generate a prediction criterion 224 by adding the prediction BPU 208 and the reconstructed residual BPU 222, as shown in Figure 3A.

[0079] In process 300B, the decoder can send the prediction criterion 224 to the spatial prediction stage 2042 or the temporal prediction stage 2044 to perform a prediction operation in the next iteration of process 300B. For example, if the current BPU is decoded using intra-prediction in the spatial prediction stage 2042, after generating the prediction criterion 224 (e.g., the decoded current BPU), the decoder can send the prediction criterion 224 directly to the spatial prediction stage 2042 for later use (e.g., to extrapolate the next BPU of the current picture). If the current BPU is decoded using inter-prediction in the temporal prediction stage 2044, after generating the prediction criterion 224 (e.g., the reference picture with all BPUs decoded), the decoder can send the prediction criterion 224 to the loop filter stage 232 to reduce or remove distortion (e.g., blocking artifacts). The decoder can apply a loop filter to the prediction criterion 224 in the manner shown in Figure 2B. Loop-filtered reference pictures can be stored in buffer 234 (e.g., a decoded picture buffer in computer memory) for later use (e.g., for use as an inter-prediction reference picture for future encoded pictures of the video bitstream 228). The decoder may store one or more reference pictures in buffer 234 for use in the temporal prediction stage 2044. In some embodiments, the prediction data may further include loop filter parameters (e.g., loop filter strength). In some embodiments, the prediction data may include loop filter parameters if the prediction mode indicator of the prediction data 206 indicates that inter-prediction was used to encode the current BPU.

[0080] Figure 4 is a block diagram of an exemplary apparatus 400 for processing image data, consistent with embodiments of the present disclosure. As shown in Figure 4, the apparatus 400 may include a processor 402. When the processor 402 executes the instructions described herein, the apparatus 400 can become a dedicated machine for encoding or decoding video. The processor 402 may be any type of circuit capable of manipulating or processing information. For example, the processor 402 may include any number and any combination of such as a central processing unit (or "CPU"), graphics processing unit (or "GPU"), neural processing unit ("NPU"), microcontroller unit ("MCU"), optical processor, programmable logic controller, microcontroller, microprocessor, digital signal processor, intellectual property (IP) core, programmable logic array (PLA), programmable array logic (PAL), generic array logic (GAL), complex programmable logic device (CPLD), field programmable gate array (FPGA), system-on-a-chip (SoC), application-specific integrated circuit (ASIC), etc. In some embodiments, the processor 402 may be a set of processors grouped as a single logical component. For example, as shown in Figure 4, the processor 402 may include multiple processors, including processor 402a, processor 402b, and processor 402n.

[0081] The device 400 may also include a memory 404 configured to store data (e.g., instruction sets, computer code, intermediate data, etc.). For example, as shown in Figure 4, the stored data may include program instructions (e.g., program instructions for implementing stages of process 200A, 200B, 300A, or 300B) and processing data (e.g., video sequence 202, video bitstream 228, or video stream 304). The processor 402 can access the program instructions and processing data (e.g., via bus 410), execute the program instructions, and perform operations or manipulations on the processing data. The memory 404 may include a high-speed random-access memory or a non-volatile memory. In some embodiments, the memory 404 may include any number and any combination of random-access memory (RAM), read-only memory (ROM), optical disks, magnetic disks, hard drives, solid-state drives, flash drives, security digital (SD) cards, memory sticks, compact flash (CF) cards, etc. Memory 404 may be a group of memories grouped as a single logical component (not shown in Figure 4).

[0082] Bus 410 may be a communication device that transfers data between components in device 400, such as an internal bus (e.g., CPU memory bus) or an external bus (e.g., a universal serial bus port, a peripheral component interconnection express port).

[0083] To facilitate explanation without creating ambiguity, the processor 402 and other data processing circuits are collectively referred to as “data processing circuits” in this disclosure. The data processing circuits may be implemented entirely in hardware, or as a combination of software, hardware, or firmware. Furthermore, the data processing circuits may be a single, independent module, or may be combined whole or partially with any other component of the device 400.

[0084] The device 400 may further include a network interface 406 for providing wired or wireless communication to a network (e.g., the Internet, an intranet, a local area network, a mobile communication network, etc.). In some embodiments, the network interface 406 may include any number and any combination of a network interface controller (NIC), radio frequency (RF) module, transponder, transceiver, modem, router, gateway, wired network adapter, wireless network adapter, Bluetooth adapter, infrared adapter, near-field communication ("NFC") adapter, cellular network chip, etc.

[0085] In some embodiments, the apparatus 400 may optionally further include a peripheral interface 408 for providing connectivity to one or more peripheral devices. As shown in Figure 4, 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 connected to video archives), and the like.

[0086] It should be noted that a video codec (for example, a codec that runs processes 200A, 200B, 300A, or 300B) may 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 may be implemented as one or more software modules of device 400, such as program instructions that can be loaded into memory 404. As another example, some or all stages of processes 200A, 200B, 300A, or 300B may be implemented as one or more hardware modules of device 400, such as dedicated data processing circuits (e.g., FPGA, ASIC, NPU, etc.).

[0087] Overlap block motion compensation (OBMC) is an inter-coding tool used in an extended compression model (ECM). When OBMC is applied to a coding unit (CU), OBMC is executed for the upper and left boundaries of the CU. Also, when the CU is coded in sub-CU mode (e.g., affine mode or decoder-side motion vector refinement (DMVR) mode), OBMC is further executed for the boundary of each sub-CU other than the boundary of the CU. To uniformly process the boundaries, OBMC is executed at the 4×4 sub-block level for all activated boundaries. OBMC is applied to both the luma component and the chroma component.

[0088] FIG. 5 shows OBMC executed for a block boundary according to some embodiments of the present disclosure. As shown in FIG. 5, block 500 is divided into 4×4 sub-blocks. For the upper and left block boundaries, OBMC is executed at the 4×4 sub-block level. When OBMC is applied to the current sub-block 511, in addition to the current motion vector MV C the motion vector MV N from an adjacent sub-block is also used to derive the prediction block of the current sub-block. For example, when the current sub-block 511 is at the upper boundary 510, if the motion vector MV N from the upper adjacent sub-block 501 is available and not the same as the current motion vector MV C it is used to derive the prediction block of the current sub-block 511. When the current sub-block 521 is at the left boundary 520, if the motion vector MV N from the left adjacent sub-block 502 is available and not the same as the current motion vector MV C it is used to derive the prediction block of the current sub-block 521. Let the prediction signal based on the current motion vector MV C be pred C and the prediction signal based on the adjacent motion vector MV N be pred NThen, by mixing the two, the final prediction signal for the current subblock pred is generated. MV N MV C If this is the case, OBMC will not run on the current subblock.

[0089] In early ECMs, a fixed set of weights is used for blending. For subblocks located at the top boundary, samples in the same row share the same weight, and for subblocks located at the left boundary, samples in the same column share the same weight. These weights are shown in Equation 1, where the coordinates (i,j) represent the horizontal distance i and vertical distance j between the current chroma sample and the chroma sample in the upper left corner of the current 4x4 subblock.

number

[0090] Next, an OBMC scheme based on template matching was adopted. Figure 6 shows an OBMC template according to some embodiments of this disclosure. As shown in Figure 6, for upper blocks (e.g., A, B, C, D) whose respective size at the upper CU boundary is 4×4, the size of the template 601 is equal to 4×1. If N adjacent blocks have the same motion information, the size of the template is merged to 4N×1 so that motion compensation operations can be processed at once. For left-side blocks (e.g., A, E, F, G) whose respective size at the left-side CU boundary is 4×4, the size of the left-side template 602 is equal to 1×4 or 1×4N.

[0091] For each of the upper subblocks (or N 4x4 block groups) of a 4x4 grid, the predicted boundary sample values ​​are derived by the following steps. For example, if block A is the current block and its adjacent block above it is AboveNeighbor_A, the operation for the block to the left is performed in a similar manner.

[0092] First, we measure three template matching costs (Cost1, Cost2, and Cost3) from the sum of absolute differences (SAD) between the reconstructed template sample and its corresponding reference sample, which is derived through motion compensation processing based on the following three types of motion information. Cost 1 is calculated based on A's movement information. Cost 2 is calculated based on the movement information of AboveNeighbor_A. Cost3 is calculated based on weighted predictions of the movement information of A and AboveNeighbor_A, where the weight coefficients are 3 / 4 and 1 / 4, respectively.

[0093] Next, by comparing Cost1, Cost2, and Cost3, one method is selected to calculate the final prediction result for the boundary samples.

[0094] If Cost 1 is the minimum,

number

[0095] If (Cost2+(Cost2>>2)+(Cost2>>3))<=Cost1, then blending mode 1 is used, as shown in Equation 1.

[0096] If Cost1 <= Cost2, blending mode 2 is used, as shown in Equation 3.

[0097] Otherwise, blending mode 3 is used, as shown in Equation 2.

[0098] For chroma samples, blending can only be performed on the first row or first column.

number

[0099] For sub-CU boundaries, OBMC is performed at a 4x4 subblock level, excluding the CU boundary. For each subblock, in addition to the current motion vector, the motion vectors of four connected adjacent subblocks (if they are available and not identical to the current motion vector) are also used to derive the predicted block for the current subblock. These multiple predicted blocks, based on multiple motion vectors, are combined to generate the final predicted signal for the current subblock.

[0100] In Advanced Motion Vector Prediction (AMVP) mode, a flag is signaled to indicate whether or not to perform OBMC on the CU. In skip-and-merge mode, OBMC is always performed without any signaling.

[0101] OBMC is controlled by the Sequence Parameter Set (SPS) flag, which can be set based on the hash block hit rate in the encoder. If the value is greater than the threshold, the video sequence is interpreted as screen content and OBMC is not applied.

[0102] If there are adjacent blocks encoded in intra-block copy (IBC), palette, or block-based differential pulse code modulation (BDPCM) mode, OBMC is not applied to those blocks.

[0103] When applying OBMC to a subblock, an additional check is performed on the subblock boundary to determine whether OBMC should be applied to the subblock boundary, based on the current subblock's reference samples. If the absolute difference between the predicted samples and the uninterpolated (integer pixel) reference samples is greater than the threshold, OBMC will not be applied to that boundary.

[0104] Intra-block copying (IBC) is a tool employed in VVC. IBC is well known to significantly improve the coding efficiency of screen content materials. Since IBC mode is implemented as a block-level coding mode, block matching (BM) is performed in the encoder to find the optimal block vector (or motion vector) for each CU. Here, the block vector is used to indicate the displacement from the current block to a reference block already reconstructed within the current picture. The chroma block vector of an IBC-coded CU is integer-precision. The chroma block vector is also rounded to integer precision. When combined with AMVR, IBC mode can be switched between 1-pixel motion vector precision and 4-pixel motion vector precision. CUs coded with IBC are treated as a third prediction mode other than intra-prediction mode or inter-prediction mode. IBC mode is applicable to CUs where both width and height are 64 lumens or less.

[0105] On the encoder side, hash-based motion estimation is performed on the IBC. The encoder performs rate distortion (RD) checks on blocks with a width or height of 16 luma samples or less. In non-merge mode, a block vector search is first performed using a hash-based search. If the hash search does not return any valid candidates, a local search based on block matching can be performed.

[0106] In hash-based lookups, hash key matching (32-bit cyclic redundancy check (CRC)) between the current block and the reference block is extended to all allowed block sizes. Hash key calculation for all positions in the current picture is based on 4x4 subblocks. For larger current blocks, a hash key is determined to match the reference block's hash key if all hash keys in all 4x4 subblocks match the hash key at the corresponding reference position. If multiple reference block hash keys are found to match the current block's hash key, the block vector cost for each matched reference is calculated, and the one with the lowest cost is selected.

[0107] In block matching searches, the search scope is set to cover both the previous coded tree unit (CTU) and the current coded tree unit.

[0108] At the CU level, the IBC mode is signaled by a flag and can be signaled as either IBC AMVP mode or IBC skip / merge mode, as follows:

[0109] In IBC skip / merge mode, the merge candidate index is used to indicate which of the block vectors in the list of IBC-encoded blocks of adjacent candidates is used to predict the current block. The merge list consists of spatial, HMVP, and candidate pairs.

[0110] In IBC AMVP mode, the difference between block vectors is coded in a similar way to the difference between motion vectors. The block vector prediction method uses two candidates as predictors, one from the left-side neighbor and one from the upper-side neighbor (if coded in IBC). If neither the candidate from the left-side neighbor nor the candidate from the upper-side neighbor is available, the default block vector is used as the predictor. A flag is signaled to indicate the block vector predictor index.

[0111] To reduce memory consumption and decoder complexity, the IBC in the VVC allows only reconstructed portions of a predefined region, including the region of the current CTU and a portion of the region of the left CTU. Figures 7A–7F show the processing sequence of the current CTU, as well as the available reference samples in the current CTU and the left CTU, according to some embodiments of the present disclosure. As shown in Figures 7A–7F, each block represents a 64 × 64 Luma sample unit.

[0112] Depending on the current location of the CU within the CTU, the following applies:

[0113] Referring to Figure 7A, if the current block 701 is in the upper left 64x64 block of the current CTU 710, then in addition to the reconstructed sample in the current CTU, the reference sample in the lower right 64x64 block 723 of the left CTU 720 can also be referenced using the current picture reference (CPR) mode. The current block 701 can also reference the reference sample in the lower left 64x64 block 722 of the left CTU and the reference sample in the upper right 64x64 block 721 of the left CTU using CPR mode.

[0114] Referring to Figure 7B, if the current block 702 is in the upper right 64x64 block of the current CTU, and the Luma position (0,64) relative to the current CTU 710 has not yet been reconstructed, then in addition to the reconstructed sample in the current CTU 710, the current block 702 can also refer to the reference samples in the lower left 64x64 block 722 and the lower right 64x64 block 723 of the left CTU 720 using CPR mode.

[0115] Referring to Figure 7C, if the current block 702 is placed in the upper right 64x64 block of the current CTU and the Luma position (0,64) relative to the current CTU 710 is reconstructed, then in addition to the reconstructed sample in the current CTU 710, the current block 702 can also reference the reference sample in the lower right 64x64 block 723 of the left CTU 720 using CPR mode.

[0116] Referring to Figure 7D, if the current block 703 is in the lower left 64x64 block of the current CTU710, and the Luma position (64,0) relative to the current CTU710 has not yet been reconstructed, then in addition to the reconstructed sample in the current CTU710, the current block 703 can also refer to the reference samples in the upper right 64x64 block 721 and the lower right 64x64 block 723 of the left CTU720 using CPR mode.

[0117] Referring to Figure 7E, if the current block 703 is placed in the lower left 64x64 block of the current CTU710, and the Luma position (64,0) relative to the current CTU710 is reconstructed, then in addition to the reconstructed sample in the current CTU710, the current block 703 can also reference the reference sample in the lower right 64x64 block 723 of the left CTU720 using CPR mode.

[0118] Referring to Figure 7F, if the current block 704 is located in the lower right 64x64 block of the current CTU710, then the current block 704 can use CPR mode to refer only to the reconstructed samples in the current CTU710.

[0119] This limitation makes it possible to implement IBC mode using local on-chip memory for hardware implementation.

[0120] In IBC-encoded blocks, the Reconstruction and Reorder IBC (RR-IBC) mode is available. When RR-IBC is applied, the samples within the reconstructed block are inverted according to the inversion type of the current block. On the encoder side, the original block is inverted before motion search and residual calculation, but the predicted block is derived without inversion. On the decoder side, the reconstructed block is inverted to restore the original block.

[0121] Blocks coded with RR-IBC support two inversion methods: horizontal and vertical. First, for blocks coded with IBC AMVP, a syntax flag is signaled indicating whether the reconstruction will be inverted, and if so, another flag specifying the inversion type is further signaled. In IBC merges, the inversion type is inherited from adjacent blocks without syntax signaling. Considering horizontal or vertical symmetry, the current block and referenced blocks are typically aligned horizontally or vertically. Therefore, when a horizontal inversion is applied, the vertical component of the block vector (BV) is not signaled and is assumed to be equal to 0. Similarly, when a vertical inversion is applied, the horizontal component of the BV is not signaled and is assumed to be equal to 0.

[0122] To better utilize the symmetry properties, block vector candidates are refined using a BV adjustment approach that takes inversion into account. Figures 8A and 8B show BV adjustments for horizontal and vertical inversion according to some embodiments of the present disclosure, respectively. For example, as shown in Figures 8A and 8B, (x nbr ,ynbr ) and (x cur ,y cur ) represents the coordinates of the adjacent block and the center sample of the current block, respectively, BV nbr and BV cur These represent the BV of the adjacent block and the current block, respectively. As shown in Figure 8A, instead of directly inheriting the BV from the adjacent block, if the adjacent block is coded with horizontal inversion, the BV nbr The horizontal component (BV nbr h By adding a motion shift to (shown as), BV cur The horizontal component is calculated. That is, BV cur h =2(x nbr -x cur )+BV nbr h Similarly, as shown in Figure 8B, if adjacent blocks are coded with a vertical inversion, BV nbr The vertical component (BV nbr v By adding a motion shift to (shown as), BV cur The vertical component of is calculated. That is, BV cur v =2(y nbr -y cur )+BV nbr v That is the case.

[0123] The combined use of intrablock copy and intraprediction (IBC-CIIP) is a coding tool for CU, which uses IBC and intraprediction to obtain two prediction signals, and then weights and adds these two prediction signals together to generate the final prediction signal as follows.

number

[0124] To generate an intra-prediction signal, an intra-prediction mode (IPM) candidate list is used, with the size of the IPM candidate list predefined as 2. An IPM index is signaled to indicate which IPM is being used.

[0125] The Intrablock Copy (IBC-GPM) geometry partitioning mode is a coding tool that geometrically divides a CU into two subpartitions. Predicted signals for the two subpartitions are generated using IBC and intra-prediction. IBC-GPM can be used in the normal IBC merge mode or IBC TM merge mode. An IPM candidate list is constructed, and the size of this IPM candidate list is predefined to 3. There are a total of 48 geometry partitioning modes, which are divided into the following two geometry partitioning mode sets.

[0126] JPEG2026522485000006.jpg27170JPEG2026522485000007.jpg100170

[0127] When IBC-GPM is used, the IBC-GPM geometry partitioning mode set flag is signaled to indicate whether the first or second geometry partitioning mode set is selected, followed by the geometry partitioning mode index. The IBC-GPM intra flag is signaled to indicate whether intra prediction is used for the first subpartition. If intra prediction is used for the subpartition, the intra prediction mode index is signaled. If IBC is used for the subpartition, the merge index is signaled.

[0128] Intrablock Copy with Local Illumination Compensation (IBC-LIC) is a coding tool that compensates for local illumination variations between IBC-coded CUs and their predicted blocks within a picture using a linear equation. The parameters of the linear equation are derived from a reference template. IBC-LIC can be applied to IBC AMVP mode and IBC Merge mode. In IBC AMVP mode, the IBC-LIC flag is signaled to indicate the use of IBC-LIC. In IBC Merge mode, the IBC-LIC flag is inferred from the merge candidate.

[0129] Intra-Template Matching Prediction (Intra-TMP) is a special intra-prediction mode that copies the best prediction block from the reconfigured portion of the current frame, and its L-shaped template matches the current template. In other words, the block vector of the current block is derived from the template on both the encoder and decoder sides, rather than being signaled. For a predefined search range, the encoder searches the reconfigured portion of the current frame for the template most similar to the current template and uses the corresponding block as the prediction block. The vector representing the position of the matched block is then stored as the block vector of the current block. The encoder then signals to use this mode, and the same prediction operation is performed on the decoder side.

[0130] The prediction signal is generated by matching the current block's L-shaped causal adjacent blocks with other blocks within a predefined search area.

[0131] The absolute difference sum (SAD) can be used as a cost function. Within each region, the decoder searches for the template with the smallest SAD for the current template and uses the corresponding block as the prediction block. The block vector is stored for the current block.

[0132] In accordance with the disclosed embodiments, multiple candidate intra-TMPs can be used. The intra-TMP selects only one matching block with the minimum template matching cost (SAD value). However, typically, there are multiple blocks similar to the current block, and their template matching costs are similar. A multi-candidate intra-TMP method is proposed that uses multiple candidates for the intra-TMP. A candidate list is constructed, and the candidate matching blocks are ranked in ascending order of template matching cost. An index is signaled within the bitstream to indicate which candidate is actually used for the current block.

[0133] In the intra-TMP fusion mode, N candidate matching blocks corresponding to N minimum template matching costs are fused to obtain the final predicted block of the intra-TMP. In some embodiments, an index is signaled to indicate the candidate set used for intra-TMP fusion. The 15 best block vectors obtained by template matching are designated as BV0~BV14. The above index is used to indicate which of the three candidate sets {BV0~BV4}, {BV5~BV9}, and {BV10~BV14} is used for fusion. Two methods are supported for weight derivation in fusion: a SAD-based weight derivation method and a Wiener filter-based weight derivation method. A flag is signaled to indicate which method is used.

[0134] In intra-TMP filter mode, a linear filter model is applied to the prediction of intra-TMP. The 6-tap linear filter consists of five spatial luma samples and a bias term in the matching block. The filter coefficients are derived block by block using regression based on the minimum MSE of the samples between the matching template and the current template.

[0135] In the subpixel mode intra-TMP, three subpixel accuracies are supported: half-pixel, quarter-pixel, and three-quarter-pixel, which have eight directions around integer pixel positions. Figure 9 shows subpixel positions used in the subpixel mode intra-TMP according to some embodiments of the present disclosure. A precision index is signaled to indicate which of the three subpixel accuracies is used, and a direction index is signaled to indicate which of the four directions is used. A four-tap discrete cosine transform-based interpolation filter (DCT-IF) is used for subpixel interpolation in the intra-TMP.

[0136] In VVC, the intra-prediction modes that are effective for the luma component are the planar mode, DC mode, angular intra-prediction mode, multi-reference line (MRL) prediction mode, intra-subdivision (ISP) mode, and matrix-based intra-prediction (MIP) mode.

[0137] Angle intra-prediction is a directional intra-prediction method supported in HEVC and also part of VVC. To capture any edge direction appearing in natural video, the number of angle intra-prediction modes in VVC is extended from 33 used in HEVC to 65. Figure 10 shows intra-prediction modes according to some embodiments of this disclosure. As shown in Figure 10, new angle intra-prediction modes not present in HEVC are indicated by dotted arrows.

[0138] Similar to HEVC, VVC also supports two non-angle intra-prediction modes: DC mode and Planar mode. The DC intra-prediction mode uses the average sample value of reference samples relative to the block for prediction generation. VVC calculates the average using only reference samples along the long side of a rectangular block, but for a square block, reference samples from both the left and top sides are used. In Planar mode, the predicted sample value is obtained as a weighted average of four reference sample values. Here, the reference sample in the same row or column as the current sample, as well as the reference samples located at the bottom left and top right of the block, are used.

[0139] In VVC, the results of intra-prediction based on DC mode, planar mode, and several angular modes are further modified by a position-dependent intra-prediction coupling (PDPC) method. PDPC is applied without signaling to intra-modes of planar, DC, intra-angles below horizontal, and intra-angles above vertical and with an index of 80 or less.

[0140] The above OBMC method has the following problems.

[0141] Current OBMC (Object-Based Coding) is performed only on blocks coded in inter-prediction mode to improve coding efficiency. OBMC resolves block artifacts by mixing different motion vectors at boundaries. However, OBMC cannot be performed on blocks predicted in intra-mode, such as intra-prediction mode (IPM), intra-TMP, IBC, and IBC-CIIP. Specifically, current OBMC cannot be performed on blocks coded in intra-TMP and IBC, which use block vectors. The difference between motion vectors and block vectors is that motion vectors correspond to positions in other frames, while block vectors correspond to positions in the current frame. Block artifacts can be assumed to exist even if the block vector of the current block differs from the block vector of an adjacent block.

[0142] This disclosure proposes an OBMC method performed on blocks predicted in intra-mode. The intra-mode includes one of the following: intra-prediction mode, intra-TMP mode, IBC mode, IBC-CIIP mode, RR-IBC mode, IBC-AMVP mode, intra-TMP fusion mode, IBC-LIC mode, intra-TMP filter mode, etc.

[0143] In some embodiments, an OBMC method using block vectors is proposed. For example, the proposed OBMC method is applied to blocks predicted using intra-TMP mode or IBC mode. The blocks are predicted using intra-TMP mode or IBC mode. This means that a block vector exists for the current frame, and this block vector corresponds to the reconstructed blocks in the current frame.

[0144] In some embodiments, OBMC is performed at the subblock level for one or more boundaries of a block, for example, the top boundary or left boundary of the block. For example, a block may contain 4x4 subblocks, and the subblocks may be 4x4 subblocks, meaning that both the width and height of the subblocks are 4 samples of the luma component. In some other examples, both the block and subblocks may be of other sizes, and are not limited here. In some embodiments, OBMC can be applied at the subblock level or the sample level.

[0145] In some embodiments, when OBMC is applied to the current subblock, the current block vector BV C In addition, block vector BV from the upper adjacent subblock. N (If the current subblock is located at the top boundary), or the block vector BV from the adjacent subblock to the left. N (If the current subblock is located on the left boundary), it is also used to derive the prediction signal for the current subblock.

[0146] Figure 11 shows a flowchart of an exemplary method for performing OBMC on a block according to some embodiments of the present disclosure. Method 1100 may be performed by an encoder (e.g., process 200A in Figure 2A or process 200B in Figure 2B), a decoder (e.g., process 300A in Figure 3A or process 300B in Figure 3B), or by one or more software or hardware components of a device (e.g., device 400 in Figure 4). For example, a processor (e.g., processor 402 in Figure 4) can perform Method 1100. In some embodiments, Method 1100 may be implemented by a computer program product embodied in a computer-readable medium, the computer program product including computer-executable instructions such as program code, which are executed by a computer (e.g., device 400 in Figure 4). Referring to Figure 11, Method 1100 may include the following steps 1102-1106.

[0147] In step 1102, a first prediction signal is obtained based on the first block vector of the block. For example, the current block vector BV C The predictive signal based on pred C This is considered the first prediction signal. In some embodiments, the block vector BV C This is obtained by performing intra-TMP or IBC on the current block. Thus, OBMC is performed after obtaining the predicted signal using intra-TMP mode or IBC mode. The top and left boundaries of the current block are corrected at the sub-block level using the block vectors of the adjacent blocks.

[0148] In step 1104, a second prediction signal is obtained based on a second block vector corresponding to the adjacent block. For example, the adjacent block vector BV N The predictive signal based on pred NThis is considered a second prediction signal. Figure 12 shows the BV of subblock 1201 located at the upper boundary of block 1210 when performing OBMC according to some embodiments of the present disclosure. C BV N ,pred C and pred N Here is an example.

[0149] In step 1106, a third prediction signal is generated according to the first and second prediction signals. For example, the third prediction signal indicated by pred is generated according to the first prediction signal pred C and the second prediction signal pred N It can be produced by mixing.

[0150] In some embodiments, this method uses a first prediction signal pred C The process further includes determining which of the first and third prediction signals, pred, will be the final prediction signal for further processing. C If it was determined that this was the final predicted signal, it was found that OBMC could not be performed.

[0151] In some embodiments, OBMC is executed at the subblock level.

[0152] In some embodiments, it is determined whether an adjacent subblock is available. For example, if the adjacent subblock is outside the frame or slice boundary, if the adjacent subblock is not predicted in intra-TMP mode or IBC mode, or if the adjacent subblock does not have a valid block vector, the first prediction signal pred C This is determined to be the final prediction signal.

[0153] In some embodiments, adjacent block vector BV N It is determined whether or not it is available in the current subblock. Adjacent block vector BV N If it is not available in the current subblock, i.e., BV NIf a subblock at the position corresponding to the current subblock obtained using is unavailable (for example, if it is outside the frame or slice boundary, or has not yet been reconstructed), the first prediction signal pred C This is determined to be the final prediction signal.

[0154] In some embodiments, the first prediction signal pred C The determination of which of the third prediction signal, pred, will be the final prediction signal on the subblock is made based on the predicted values ​​of the samples in the subblock.

[0155] In some embodiments, the first prediction signal pred C and the second prediction signal pred N The maximum absolute difference between and is calculated, and this value is the first prediction signal pred to the subblock. C This is used to determine whether or not to perform OBMC. If the value is greater than (or equal to) the threshold, the first prediction signal pred C This is determined to be the final prediction signal.

[0156] In some embodiments, the first prediction signal pred C The average value and the second prediction signal pred N The absolute difference from the mean is calculated, and this value is the first prediction signal pred C This is used to determine which of the first and third prediction signals, pred, will be the final prediction signal for the subblock. If its value is greater than (or equal to) the threshold, the first prediction signal pred C This is determined to be the final prediction signal.

[0157] In some embodiments, the first prediction signal pred C and the second prediction signal pred N The sum of absolute differences (SAD) between the first and second prediction signals is calculated, and this value is the first prediction signal pred CThis is used to determine which of the first and third prediction signals, pred, will be the final prediction signal for the subblock. If its value is greater than (or equal to) the threshold, the first prediction signal pred C This is determined to be the final prediction signal.

[0158] In some embodiments, the first prediction signal pred C Determining which of the first and third prediction signals, pred, will be the final prediction signal is based on the prediction mode of the adjacent subblock. For example, if the subblock is located at the upper boundary, the first prediction signal pred C Determining which of the first and third prediction signals, pred, will be the final prediction signal for the subblock is based on the prediction mode of the adjacent subblock above. If the subblock is located on the left boundary, the first prediction signal pred C Determining which of the first and third prediction signals pred will be the final prediction signal to the subblock is based on the prediction mode of the adjacent subblock to the left. In some embodiments, if the adjacent subblock to the left or the adjacent subblock above is in one of the following modes: IBC GPM mode, IBC CIIP mode, RR-IBC mode, or intra-TMP fusion mode, the first prediction signal pred C This is determined to be the final prediction signal for the subblock.

[0159] In some embodiments, in step 1106, blending is performed by the following equation, where the coordinates (i,j) represent the horizontal distance i and vertical distance j between the current sample and the sample in the upper left corner of the current subblock. For subblocks located at the top boundary, samples in the same row share the same weight. For subblocks located at the left boundary, samples in the same column share the same weight. In equation 4, w0 c ~w3 c is pred C The weight in each row or column, w0 N ~w3 N is pred NThey are the weights in each row or column, and they can be any integer value.

Number

[0160] In some embodiments, the weights used for blending in the OBMC of the sub - block are the first prediction signal pred C and the first prediction signal pred N and are determined based on them. For example, the weights used for blending are the maximum value of the absolute difference between pred C and pred N , the absolute difference between the average value of pred C and the average value of pred N , or are determined based on the SAD value between pred C and pred N .

[0161] In some embodiments, the maximum value max of the absolute difference between pred C and pred N is used to determine the weights used for blending in the OBMC of the sub - block. When max is greater than the threshold TH1, it is determined that the first prediction signal pred C is the final prediction signal. When max is greater than the threshold TH2 and less than or equal to the threshold TH1, the weights corresponding to Equation 3 are used. When max is greater than the threshold TH3 and less than or equal to the threshold TH2, the weights corresponding to Equation 2 are used. When max is less than or equal to the threshold TH3, the weights corresponding to Equation 1 are used. The thresholds TH1, TH2, and TH3 can be any positive integers. As an example, TH1 = 384, TH2 = 264, and TH3 = 144.

[0162] In some embodiments, when max is greater than the threshold TH4, the first prediction signal pred CThis is determined to be the final prediction signal for the current subblock. If max is greater than threshold TH5 and less than or equal to threshold TH4, the weights corresponding to Equation 5 are used. If max is greater than threshold TH6 and less than or equal to threshold TH5, the weights corresponding to Equation 3 are used. If max is greater than threshold TH7 and less than or equal to threshold TH4, the weights corresponding to Equation 2 are used. If max is less than or equal to threshold TH7, the weights corresponding to Equation 1 are used. Thresholds TH4, TH5, TH6, and TH7 can be any positive integers.

number

[0163] In some embodiments, for a subblock, the first prediction signal pred C It has been proposed to further mix the third prediction signal pred with the current block's fourth prediction signal pred(i,j)' as shown in Equation 6, where w is pred as shown in Equation 7. C and pred N It can be calculated based on the SAD value, where TH is the threshold.

[0164]

number

[0165]

number

[0166] The fourth prediction signal is determined to be the final prediction signal for further processing.

[0167] In some embodiments, if there are several consecutive subblocks, these consecutive subblocks can be merged and OBMC can be executed.

[0168] In some embodiments, whether or not to merge subblocks is determined based on whether the adjacent subblocks corresponding to each of the consecutive subblocks exist within the same block. For example, Figure 13 shows an exemplary block illustrating a merged block according to some embodiments of the present disclosure. As shown in Figure 13, if the adjacent subblock 1321 above subblock 1311 and the adjacent subblock 1322 above subblock 1312 exist within the same block 1320, then subblocks 1311 and 1312 of block 1310 can be merged to form a larger subblock (if the original subblocks are 4x4, the merged subblock will be 8x4), and OBMC is performed on the merged subblock.

[0169] In some embodiments, whether or not to merge subblocks depends on the BV of each adjacent subblock corresponding to each adjacent subblock. N This is determined based on whether the prediction mode parameters are the same or not. For example, see Figure 13, the BV of the adjacent subblock 1321 of subblock 1311. N The prediction mode parameter is the BV of the adjacent subblock 1322 of subblock 1312. N If the prediction mode parameter is the same, subblocks 1311 and 1312 of block 1310 can be merged into a larger subblock (if the original subblocks were 4x4, the merged subblocks would be 8x4), and OBMC will be run on the merged subblock.

[0170] In some embodiments, a second prediction signal pred is generated using prediction parameters of adjacent subblocks. N This allows for the generation of a subblock. This means that the prediction parameters of adjacent subblocks can be inherited and applied to the current subblock.

[0171] In some embodiments, when OBMC is performed on a subblock, the BV of the adjacent subblock N and prediction parameters NThis is generated. In other words, the prediction parameters of adjacent subblocks are inherited by the current subblock, and pred N This can be obtained.

[0172] In some embodiments, if an adjacent subblock is predicted in intra-TMP filter mode, the filter coefficients are inherited. In this example, the current subblock is also predicted in intra-TMP filter mode, and the BV from the adjacent subblock N And the filter coefficients, pred for OBMC N This is generated. In some embodiments, if an adjacent subblock is predicted in intra-TMP filter mode, pred N To generate BV N Only this is used.

[0173] In some embodiments, when an adjacent subblock is predicted in intra-TMP fusion mode, the block vector and fusion weight used are inherited. In this example, the current subblock is also predicted in intra-TMP fusion mode, and the BV used for the adjacent subblock N And by fusion weights, pred for OBMC N This is generated. In some embodiments, if at least one of the block vectors used for fusion is not available in the current subblock, pred N To generate BV N Only (block vectors stored in adjacent subblocks) are used. In some embodiments, if at least one of the block vectors used for fusion is unavailable in the current subblock, the first prediction signal pred C It is determined that this is the final prediction signal to the current subblock. In some embodiments, if an adjacent subblock is predicted in intra-TMP fusion mode, pred N To generate BV N Only (block vectors stored in adjacent subblocks) are used.

[0174] In some embodiments, when an adjacent subblock is predicted in intra-TMP subpixel mode, the subpixel accuracy and orientation used are inherited. In this example, the current subblock is also predicted in intra-TMP subpixel mode, and the BV used for the adjacent subblock is inherited. N And by subpixel precision and orientation, pred for OBMC N This is generated. In some embodiments, if adjacent subblocks are predicted in intra-TMP subpixel mode, pred N To generate BV N Only (block vectors stored in adjacent subblocks) are used.

[0175] In some embodiments, if an adjacent subblock is predicted in IBC LIC mode, the LIC parameters are inherited. In this example, the current subblock is also predicted in BV mode. N Predicted in IBC LIC mode using BV from adjacent subblocks N And the LIC parameters for OBMC N This is generated. In some embodiments, if an adjacent subblock is predicted in IBC LIC mode, pred N To generate BV N Only (block vectors stored in adjacent subblocks) are used.

[0176] In some embodiments, when an adjacent subblock is predicted in IBC CIIP mode, the intra-prediction mode and weights are inherited. In this example, the current subblock is also predicted in IBC CIIP mode, and BV N Then, by weighting the prediction signal obtained from the intra prediction mode with the weights from the adjacent subblock, pred for OBMC N This is generated. In some embodiments, if an adjacent subblock is predicted in IBC-CIIP mode, pred N To generate BV N Only (block vectors stored in adjacent subblocks) are used.

[0177] In some embodiments, when adjacent subblocks are predicted in IBC-GPM mode, the intra-prediction mode and geometry subdivision mode are inherited. In this example, the current subblock is also predicted in IBC-GPM mode, and the BV from adjacent subblocks is inherited. N Predictive signal and division mode for OBMC N This is generated. In some embodiments, if an adjacent subblock is predicted in IBC-GPM mode, pred N To generate BV N Only (block vectors stored in adjacent subblocks) are used.

[0178] In some embodiments, when an adjacent subblock is predicted in RR-IBC mode, the first prediction signal pred C This is determined to be the final prediction signal for the current subblock.

[0179] In the above embodiment, when an adjacent subblock is predicted in intra-prediction mode, that is, when an adjacent subblock is predicted in non-intra-TMP mode or non-IBC mode, or when no block vector is stored for the adjacent subblock, the first prediction signal pred C This is determined to be the final prediction signal for the current subblock.

[0180] In some embodiments, when an adjacent subblock is predicted in intra-prediction mode, the intra-prediction mode of the stored adjacent subblock (one of angle mode, planar mode, and DC mode) is used for predation for OBMC. N It can generate [this].

[0181] In some embodiments, if an adjacent subblock is predicted in intra-prediction mode, the block vector is derived and the current subblock's pred NIt is possible to generate a block vector. For example, a padding method is used to derive the block vector of an adjacent block coded in intra-prediction mode. In some embodiments, for adjacent subblocks located at the upper boundary of a block, if the block vector for that adjacent subblock is not stored, the block vectors from the adjacent subblocks to the left and right of the adjacent subblock can be padded into the adjacent subblock. For adjacent subblocks located at the left boundary of a block, if the block vector for that adjacent subblock is not stored, the block vectors from the adjacent subblocks above and below the adjacent subblock can be padded into the adjacent subblock. For example, Figure 14 shows an exemplary block illustrating a block vector padding method according to some embodiments of the present disclosure. As shown in Figure 14, the adjacent subblock 1403 of subblock 1413 is predicted in intra-prediction mode, and as a result, the block vector for adjacent subblock 1403 is not stored, and then the block vector BV1 of adjacent subblock 1402 can be padded into adjacent subblock 1403. When OBMC is performed on subblock 1413, the block vector BV1 is used to pred N This generates... In another example, when OBMC is performed on subblock 1413, both the block vector BV1 of the adjacent subblock 1402 and the block vector BV3 of the adjacent subblock 1404 are used to pred N Generates.

[0182] In some embodiments, prediction parameters are also padded in addition to block vectors. Prediction parameters include prediction mode, filter coefficients for intra-TMP filter mode, block vectors and fusion weights for intra-TMP fusion mode, subpixel accuracy and direction for intra-TMP subpixel mode, LIC parameters for IBC-LIC mode, intra-prediction mode and weights for IBC-CIIP mode, and intra-prediction mode and geometry partitioning mode for IBC-GPM mode.

[0183] In some embodiments, OBMC is performed at the sample level.

[0184] In some embodiments, the first prediction signal pred C Which of the two, the first or the third prediction signal pred, becomes the final prediction signal for the sample in the subblock is determined based on the predicted value of the sample. In this example, for the sample at coordinate (i,j), the first prediction signal is pred C (i,j), the second prediction signal is pred N (i,j), the third prediction signal is pred(i,j). In some embodiments, pred C (i,j) and pred N The difference between (i,j) is calculated, and this difference is used to determine the first prediction signal pred C It is determined which of the first and third prediction signals, pred, will be the final prediction signal for the sample at coordinate (i,j). If the difference between them is greater than (or equal to) the threshold, the first prediction signal pred C (i,j) is determined to be the final predicted signal. If the difference is less than the threshold, the third predicted signal pred(i,j) is determined to be the final predicted signal for the sample, and the third predicted signal pred(i,j) is determined to be pred C (i,j) and pred N It is obtained by mixing (i,j).

[0185] In some embodiments, it is determined at the block level whether the first prediction signal or the third prediction signal becomes the final prediction signal.

[0186] In some embodiments, a block-level flag is signaled to indicate whether the first or third prediction signal is the final prediction signal for the block. In some embodiments, whether or not the flag is signaled is determined by the prediction mode of the current block. For example, if the current block is predicted in IBC-AMVP mode, the block-level flag is signaled to indicate whether the first or third prediction signal is the final prediction signal for the block. Otherwise, the third prediction signal is determined to be the final prediction signal without any signaling.

[0187] In some embodiments, for all blocks predicted in intra-TMP mode or IBC mode, a third prediction signal is determined to be the final prediction signal without any signaling.

[0188] In some embodiments, whether the first or third prediction signal becomes the final prediction signal for a block is determined based on the number of samples in the block. For example, if the number of samples in the block is 256 or more, the first prediction signal is determined to be the final prediction signal, and if the number of samples in the block is less than 256, the third prediction signal is determined to be the final prediction signal.

[0189] In some embodiments, whether the first or third prediction signal becomes the final prediction signal for the block is determined based on the prediction mode of the current block. For example, if the current block is predicted in IBC-GPM mode, IBC-CIIP mode, RR-IBC mode, IBC-AMVP mode, or intra-TMP fusion mode, the first prediction signal is determined to be the final prediction signal.

[0190] In some embodiments, it is determined whether the first or third prediction signal is the final prediction signal for the block based on the type of the current slice. For example, the slice type of the current block (e.g., B-slice or I-slice) is determined, and if the block is an I-slice, then the first prediction signal is determined to be the final prediction signal for the block.

[0191] In some embodiments, the determination of whether the first or third prediction signal becomes the final prediction signal for a block is based on the SPS level flag. In one example, for a screen content sequence, the SPS flag is set to false, which means that OBMC is not being performed for the screen content sequence. That is, the first prediction signal is determined to be the final prediction signal for the block.

[0192] In some embodiments, it is determined based on the type of block whether the first or third prediction signal is the final prediction signal for the block. For example, the type of block (luma block or chroma block) is determined, and if the block is a chroma block, then it is determined that the first prediction signal is the final prediction signal for the block.

[0193] In some embodiments, OBMC can also be performed when the current block is predicted in intra-prediction mode, that is, when there is no block vector for the current block. C This is the prediction signal for intra-prediction mode. N , pred, and the first prediction signal pred C and the third prediction signal pred C The decision of which of the above to use to perform OBMC is obtained through the aforementioned OBMC process.

[0194] In some embodiments, the embodiments described above can be freely combined.

[0195] In some embodiments, a non-temporary, computer-readable storage medium for storing the bitstream is also provided. The bitstream can be encoded and decoded according to OBMC for the disclosed intra-mode. In some embodiments, the bitstream includes a block flag indicating which of the first and third prediction signals will be the final prediction signal to the block. In some embodiments, the bitstream includes an SPS level flag indicating which of the first and third prediction signals will be the final prediction signal to the block.

[0196] Embodiments can be further described using the following clauses. 1. A video processing method, Receiving a bitstream and This includes decoding one or more pictures using the encoded information of the bitstream, Decoding one or more pictures using the encoded information of the bitstream is: A method including performing overlap block motion compensation (OBMC) for predicted blocks in intra-mode. 2. Performing OBMC on the block predicted in the intra mode means Based on the first block vector of the aforementioned block, a first prediction signal is obtained, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The method according to Clause 1, further comprising generating a third prediction signal according to the first prediction signal and the second prediction signal. 3. The method according to clause 2, wherein the OBMC is performed on subblocks at one or more boundaries of the block, and the second block vector is a block vector relating to an adjacent subblock. 4. The method according to Clause 3, wherein the one or more boundaries include at least one of the upper boundary or the left boundary of the block. 5. Based on the block, obtaining the first prediction signal is: The method according to clause 3, further comprising performing intra-template matching prediction (intra-TMP) or intra-block copy (IBC) on the block to obtain the first block vector. 6. Generating the third prediction signal for the OBMC according to the first and second prediction signals is: The method according to Clause 3, comprising mixing the first prediction signal and the second prediction signal to obtain the third prediction signal. 7. To obtain the third prediction signal by mixing the first prediction signal and the second prediction signal, The method according to Clause 6, further comprising determining weights based on the maximum value of the absolute difference between the first prediction signal and the second prediction signal, the absolute difference between the mean value of the first prediction signal and the mean value of the second prediction signal, or the sum of the absolute differences (SAD) of the first prediction signal and the second prediction signal. 8. Performing OBMC on the block predicted in the intra mode means Merging consecutive subblocks, The method of the clause 3, further comprising performing the OBMC on the merged subblocks. 9. Merging the aforementioned consecutive subblocks is Determining whether adjacent subblocks corresponding to the aforementioned consecutive subblocks are located within the same block, The method of Clause 8, further comprising merging the adjacent subblocks if they are within the same block. 10. Merging the aforementioned consecutive subblocks is The process involves determining whether the block vector and prediction mode parameter of each adjacent subblock corresponding to each of the aforementioned consecutive subblocks are the same, The method of clause 8, further comprising merging the consecutive subblocks when the block vector and the prediction mode parameter are the same. 11. The method according to Clause 3, wherein the second prediction signal is obtained from the second block vector of the adjacent subblock and the prediction parameters of the adjacent subblock. 12. When the adjacent subblock is predicted in intra prediction mode, the method is: The method according to clause 3, further comprising generating the second prediction signal using the stored intra-prediction modes of the adjacent subblocks. 13. When the adjacent subblock is predicted in the intra prediction mode, the method is: The second block vector is derived by the padding method, The method according to clause 12, further comprising generating the second prediction signal using the second block vector. 14. The second block vector is derived by the padding method described above. If the adjacent subblock is located at the upper boundary of the block and no block vector is stored for the adjacent subblock, the block vectors from the adjacent subblocks to the left and right are padded onto the adjacent subblock. The method of clause 13, further comprising: if the adjacent subblock is located on the left boundary of the block and no block vector is stored for the adjacent subblock, padding the adjacent subblock with block vectors from the adjacent subblocks above and below. 15. The second block vector is derived by the padding method described above. If the adjacent subblock is located at the upper boundary of the block, the prediction parameters from the adjacent subblocks to the left and right of the adjacent subblock are padded onto the adjacent subblock, or The method according to clause 14, wherein, if the adjacent subblock is located on the left boundary of the block, predictive parameters from adjacent subblocks above and below the adjacent subblock are padded into the adjacent subblock. 16. The method of Clause 3, further comprising determining which of the first prediction signal and the third prediction signal will be the final prediction signal on the subblock. 17. Determining which of the first prediction signal and the third prediction signal will be the final prediction signal on the subblock is: Determining whether the adjacent subblock of the aforementioned subblock is available, The method of the clause 16, further comprising determining the first prediction signal as the final prediction signal if the adjacent subblock is unavailable. 18. Determining which of the first prediction signal and the third prediction signal becomes the final prediction signal on the subblock is: To determine whether the aforementioned second block vector is available, The method of Clause 16, further comprising determining the first prediction signal as the final prediction signal if the second block vector is unavailable. 19. Determining which of the first and third prediction signals becomes the final prediction signal on the subblock is the method of Clause 16, based on the predicted values ​​of the sample of the subblock. 20. Based on the predicted values ​​of the samples of the subblock, determining which of the first predicted signal and the third predicted signal will be the final predicted signal on the subblock is: The maximum value of the absolute difference between the first predicted signal and the second predicted signal is calculated, The method according to Clause 19, comprising determining the first predicted signal as the final predicted signal if the maximum value of the absolute difference between the first predicted signal and the second predicted signal is greater than or equal to a threshold. 21. Based on the predicted values ​​of the samples of the subblock, determining which of the first predicted signal and the third predicted signal will be the final predicted signal on the subblock is: The absolute difference between the average value of the first prediction signal and the average value of the second prediction signal is calculated, The method according to clause 19, comprising determining the first prediction signal as the final prediction signal if the absolute difference between the average value of the first prediction signal and the average value of the second prediction signal is greater than or equal to a threshold. 22. Based on the predicted values ​​of the samples of the subblock, determining which of the first predicted signal and the third predicted signal will be the final predicted signal on the subblock is: The process involves calculating the sum of the absolute differences (SAD) between the first predicted signal and the second predicted signal, The method according to clause 19, comprising determining the first prediction signal as the final prediction signal if the SAD is greater than or equal to a threshold. 23. Determining which of the first prediction signal and the third prediction signal becomes the final prediction signal on the subblock is the method of Clause 16, based on the prediction mode of the adjacent subblock. 24. If the subblock is located at the upper boundary, determining which of the first and third prediction signals will be the final prediction signal on the subblock is based on the prediction mode of the adjacent subblock above, or If the subblock is located on the left boundary, determining which of the first and third prediction signals becomes the final prediction signal on the subblock is the method according to clause 23, based on the prediction mode of the adjacent subblock to the left. 25. Determining which of the first prediction signal and the third prediction signal becomes the final prediction signal on the subblock is: The method according to Clause 24, further comprising determining the first prediction signal as the final prediction signal on the subblock if the left adjacent subblock or the upper adjacent subblock is in intrablock copy with geometry partitioning (IBC-GPM) mode, intrablock copy and intraprediction combined (IBC-CIIP) mode, reconfiguration and reordering intrablock copy (RR-IBC) mode, or intratemplate matching prediction (intraTMP) fusion mode. 26. The method according to clause 2, wherein the OBMC is executed for samples of sub-blocks existing at one or more boundaries of the block. 27. The method according to clause 26, further comprising determining which of the first prediction signal and the third prediction signal is the final prediction signal on the sample. 28. The method according to clause 27, wherein determining which of the first prediction signal and the third prediction signal is the final prediction signal is based on the predicted value of the sample of the sub-block. 29. Based on the predicted value of the sample of the sub-block, determining which of the first prediction signal and the third prediction signal is the final prediction signal, calculating the difference between the first prediction signal of the sample and the second prediction signal of the sample; if the difference between the first prediction signal of the sample and the second prediction signal of the sample is greater than or equal to a threshold value, determining the first prediction signal as the final prediction signal on the sample; The method according to clause 28, further comprising: if the difference between the first prediction signal of the sample and the second prediction signal of the sample is less than the threshold value, determining the third prediction signal as the final prediction signal on the sample. 30. The method according to clause 2, further comprising determining at the block level which of the first prediction signal and the third prediction signal is the final prediction signal. 31. Executing the OBMC for the block predicted in the intra mode, The method according to clause 30, further comprising determining which of the first prediction signal and the third prediction signal is the final prediction signal based on any one of the number of samples in the block, the prediction mode of the block, the slice type of the block, or the type of the block. 32. When determining which of the first prediction signal and the third prediction signal is the final prediction signal is performed based on the prediction mode of the block, the method is, The method according to Clause 31, further comprising determining the first predicted signal as the final predicted signal if the block is predicted by any of the following modes: intrablock copy with geometry partitioning (IBC-GPM) mode, intrablock copy and intraprediction combined mode (IBC-CIIP) mode, reconfiguration and rearrangement intrablock copy (RR-IBC), intrablock copy with advanced motion vector prediction (IBC-AMVP) mode, or intratemplate matching prediction (intraTMP) fusion mode. 33. If the determination of which of the first prediction signal and the third prediction signal becomes the final prediction signal is made based on the slice type of the block, the method is: Determining the slice type of the aforementioned block, The method according to clause 31, further comprising determining the first prediction signal as the final prediction signal if the block is an I-slice. 34. When determining which of the first and third prediction signals will be the final prediction signal based on the type of the block, the method is: Determining the type of the aforementioned block, The method according to clause 31, further comprising determining the first prediction signal as the final prediction signal if the block is a chroma block. 35. The method of Clause 2, further comprising decoding a flag indicating which of the first prediction signal and the third prediction signal is the final prediction signal. 36. The method according to clause 35, wherein the flag is a sequence parameter set (SPS) flag. 37. The method according to clause 35, wherein the flag is signaled and determined based on the prediction mode of the block. 38. Determining which of the first prediction signal and the third prediction signal will be the final prediction signal is: Determine whether the block is predicted in intrablock copy (IBC-AMVP) mode with advanced motion vector prediction. If the aforementioned block is predicted in IBC-AMVP mode, Decode the aforementioned flag, The final predicted signal is determined according to the aforementioned flag. If the aforementioned block is not predicted in IBC AMVP mode, The method according to clause 37, further comprising determining the third prediction signal as the final prediction signal. 39. To obtain a fourth prediction signal by mixing the first prediction signal and the third prediction signal, The method of Clause 2, further comprising determining the fourth prediction signal as the final prediction signal. 40. To obtain a fourth prediction signal by mixing the first prediction signal and the third prediction signal, The weight of the first prediction signal is determined based on the sum of the absolute differences (SAD) between the first prediction signal and the second prediction signal, and If the SAD is greater than or equal to the threshold, the weight of the first prediction signal is determined to be 1, or The method according to clause 39, further comprising determining the weight as the value obtained by dividing the SAD by the threshold if the SAD is less than the threshold. 41. When the block is predicted in intra prediction mode, the method is: To obtain a first prediction signal which will be the prediction signal for the intra prediction mode, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The method according to Clause 1, further comprising generating a third prediction signal according to the first prediction signal and the second prediction signal. 42. A method for encoding a video sequence into a bitstream, Receiving a video sequence, Encoding one or more pictures of the aforementioned video sequence, This includes generating a bitstream, Encoding one or more pictures of the aforementioned video sequence is: A method including performing overlap block motion compensation (OBMC) for predicted blocks in intra-mode. 43. Performing OBMC on the block predicted in the intra mode is: Based on the first block vector of the aforementioned block, a first prediction signal is obtained, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The method according to Clause 42, further comprising generating a third prediction signal according to the first prediction signal and the second prediction signal. 44. The method of clause 43, wherein the OBMC is performed on subblocks at one or more boundaries of the block, and the second block vector is a block vector relating to an adjacent subblock. 45. Based on the block, obtaining the first prediction signal is: The method according to clause 44, further comprising performing intra-template matching prediction (intra-TMP) or intra-block copy (IBC) on the block to obtain the first block vector. 46. ​​The method according to clause 44, wherein the second prediction signal is obtained from the second block vector of the adjacent subblock and the prediction parameters of the adjacent subblock. 47. When the adjacent subblock is predicted in intra prediction mode, the method is: The method according to clause 44, further comprising generating the second prediction signal using the stored intra-prediction modes of the adjacent subblocks. 48. When the block is predicted in intra prediction mode, the method is: To obtain a first prediction signal which will be the prediction signal for the intra prediction mode, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The method according to Clause 42, further comprising generating a third prediction signal according to the first prediction signal and the second prediction signal. 49. An image processing apparatus, comprising: a reception module configured to receive a bit stream; a decoding module configured to decode one or more pictures using the encoded information of the bit stream; wherein the decoding module is configured to perform overlapping block motion compensation (OBMC) on a block predicted in an intra mode. 50. The decoding module of the apparatus according to clause 49 is configured to: obtain a first prediction signal based on a first block vector of the block; obtain a second prediction signal based on a second block vector corresponding to an adjacent block; generate a third prediction signal according to the first prediction signal and the second prediction signal. 51. The apparatus according to clause 50, wherein the OBMC is performed on sub-blocks at one or more boundaries of the block, and the second block vector is a block vector related to an adjacent sub-block. 52. The apparatus according to clause 51, wherein the decoding module is configured to obtain the first block vector by performing intra-template matching prediction (intra TMP) or intra block copy (IBC) on the block. 53. The apparatus according to clause 51, wherein the second prediction signal is obtained from the second block vector of the adjacent sub-block and prediction parameters of the adjacent sub-block. 54. When the adjacent sub-block is predicted in an intra prediction mode, the decoding module of the apparatus according to clause 51 is configured to generate the second prediction signal using the intra prediction mode of the stored adjacent sub-block. 55. When the block is predicted in an intra prediction mode, the decoding module of the apparatus is ​​To obtain a first prediction signal which will be the prediction signal for the intra prediction mode, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The apparatus according to Clause 49, configured to generate a third prediction signal according to the first prediction signal and the second prediction signal. 56. A device for encoding a video sequence into a bitstream, A receiving module configured to receive a video sequence, An encoding module configured to encode one or more pictures of the aforementioned video sequence, A generation module configured to generate a bitstream, The aforementioned encoding module is A device configured to perform overlap block motion compensation (OBMC) for predicted blocks in intra-mode. 57. The encoding module is, Based on the first block vector of the aforementioned block, a first prediction signal is obtained, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The apparatus according to Clause 56, configured to generate a third prediction signal according to the first prediction signal and the second prediction signal. 58. The apparatus according to Clause 57, wherein the OBMC is performed on subblocks at one or more boundaries of the block, and the second block vector is a block vector relating to an adjacent subblock. 59. The encoding module is, The apparatus according to Clause 58, configured to perform intra-template matching prediction (intra-TMP) or intra-block copy (IBC) on the block to obtain the first block vector. 60. The apparatus according to Clause 58, wherein the second prediction signal is obtained from the second block vector of the adjacent subblock and the prediction parameters of the adjacent subblock. 61. When the adjacent subblock is predicted in intra prediction mode, the coding module shall The apparatus according to Clause 58, configured to generate the second prediction signal using the stored intra-prediction modes of the adjacent subblocks. 62. When the block is predicted in intra prediction mode, the coding module: To obtain a first prediction signal which will be the prediction signal for the intra prediction mode, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The apparatus according to Clause 56, configured to generate a third prediction signal according to the first prediction signal and the second prediction signal. 63. One or more processors, A computer-readable storage medium communicably coupled to one or more of the aforementioned processors, The computer-readable storage medium is an electronic device that is executable by one or more processors and, when executed by the one or more processors, stores computer-readable instructions that perform the method described in any one of the clauses 1 to 48. 64. A non-temporary, computer-readable storage medium for storing a bitstream of video, wherein, when the bitstream is decoded by a decoder, the decoder causes the decoder to perform the method described in any one of the clauses 1 to 41. 65. A non-temporary, computer-readable storage medium for storing a bitstream of video, wherein the bitstream, once encoded by an encoder, causes the encoder to perform the method described in any one of the clauses 42 to 48. 66. A computer program product comprising computer program instructions, wherein the computer program instructions enable a computer to perform the method described in any one of the clauses 1 to 48. 67. A computer program that enables a computer to perform any of the methods described in any one of the clauses 1 through 48.

[0197] In some embodiments, non-temporary computer-readable storage media containing instructions are also provided, which can be executed by a device (such as the disclosed encoder and decoder) to perform the methods described above. Common forms of non-temporary media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tapes, or any other magnetic data storage media, CD-ROMs, any other optical data storage media, physical media having a pattern of holes, RAM, PROMs, and EPROMs, flash EPROMs or any other flash memory, NVRAMs, caches, registers, any other memory chips or cartridges, and networked versions thereof. The device may include one or more processors (CPUs), input / output interfaces, network interfaces, and / or memory.

[0198] It should be noted that relational terms such as “first” and “second” used herein are used solely to distinguish one entity or operation from another, and do not require or imply any actual relationship or order between these entities or operations. Furthermore, the words “comprising,” “having,” “containing,” and “including,” as well as other similar forms, are intended to be open-ended in that they are equivalent in meaning, and that one or more items following any one of these words do not exhaustively list such one or more items, nor are they limited to the one or more items listed.

[0199] As used herein, unless otherwise specified, the term “or” encompasses all possible combinations, unless impractical. For example, if it is stated that a database may contain A or B, then unless otherwise specified or impractical, the database may contain A, or B, or A and B. As a second example, if it is stated that a database may contain A, B, or C, then unless otherwise specified or impractical, the database may contain A, or B, or C, or A and B, or A and C, or B and C, or A and B and C.

[0200] It will be understood that the embodiments described above may be implemented by hardware, software (program code), or a combination of hardware and software. If implemented by software, it may be stored in the computer-readable medium described above. When executed by a processor, the software may perform the methods disclosed herein. The computing units and other functional units described herein may be implemented by hardware, software, or a combination of hardware and software. It will also be understood by those skilled in the art that several of the above modules / units may be integrated into a single module / unit, and each of the above modules / units may be further divided into several submodules / subunits.

[0201] In the above specification, embodiments have been described with reference to numerous specific details that may vary depending on the embodiment. Specific adaptations and modifications may be made to the above embodiments. Other embodiments may become apparent to those skilled in the art given the specifications and practices of this disclosure disclosed herein. This specification and examples are to be considered merely illustrative, and the true scope and spirit of this disclosure is intended to be shown by the appended claims. Furthermore, the order of steps shown in the figures is for illustrative purposes only and is not intended to limit the steps to any particular order. Therefore, those skilled in the art will understand that these steps may be performed in different orders while carrying out the same method.

[0202] Exemplary embodiments are disclosed in the drawings and specification. However, many variations and modifications can be made to these embodiments. Accordingly, certain terms are used, but only in a general and descriptive sense, and not as limiting.

Claims

1. A video processing method, Receiving a bitstream and This includes decoding one or more pictures using the encoded information of the bitstream, Decoding one or more pictures using the encoded information of the bitstream is: A method comprising performing overlap block motion compensation (OBMC) for predicted blocks in intra-mode.

2. Executing the OBMC on the block predicted in the intra mode means that Based on the first block vector of the aforementioned block, a first prediction signal is obtained, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The method according to claim 1, further comprising generating a third prediction signal according to the first prediction signal and the second prediction signal.

3. The method according to claim 2, wherein the OBMC is performed on subblocks at one or more boundaries of the block, and the second block vector is a block vector related to an adjacent subblock.

4. Based on the block, obtaining the first prediction signal is: The method according to claim 3, further comprising performing intra-template matching prediction (intra-TMP) or intra-block copying (IBC) on the block to obtain the first block vector.

5. The method according to claim 3, wherein the second prediction signal is obtained from the second block vector of the adjacent subblock and the prediction parameters of the adjacent subblock.

6. When the adjacent subblock is predicted in intra prediction mode, the method is: The method according to claim 3, further comprising generating the second prediction signal using the stored intra-prediction modes of the adjacent subblocks.

7. If the block is predicted in intra prediction mode, the method is: To obtain a first prediction signal which will be the prediction signal for the intra prediction mode, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The method according to claim 1, further comprising generating a third prediction signal according to the first prediction signal and the second prediction signal.

8. A method for encoding a video sequence into a bitstream, Receiving a video sequence, Encoding one or more pictures of the aforementioned video sequence, This includes generating a bitstream, Encoding one or more pictures of the aforementioned video sequence is: A method comprising performing overlap block motion compensation (OBMC) for predicted blocks in intra-mode.

9. Executing the OBMC on the block predicted in the intra mode means that Based on the first block vector of the aforementioned block, a first prediction signal is obtained, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The method according to claim 8, further comprising generating a third prediction signal according to the first prediction signal and the second prediction signal.

10. The method according to claim 9, wherein the OBMC is performed on subblocks at one or more boundaries of the block, and the second block vector is a block vector relating to an adjacent subblock.

11. Based on the block, obtaining the first prediction signal is: The method according to claim 10, further comprising performing intra-template matching prediction (intra-TMP) or intra-block copying (IBC) on the block to obtain the first block vector.

12. The method according to claim 10, wherein the second prediction signal is obtained from the second block vector of the adjacent subblock and the prediction parameters of the adjacent subblock.

13. When the adjacent subblock is predicted in intra prediction mode, the method is: The method according to claim 10, further comprising generating the second prediction signal using the stored intra-prediction modes of the adjacent subblocks.

14. If the block is predicted in intra prediction mode, the method is: To obtain a first prediction signal which will be the prediction signal for the intra prediction mode, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The method according to claim 8, further comprising generating a third prediction signal according to the first prediction signal and the second prediction signal.

15. An image processing device, A receiving module configured to receive a bitstream, A decoding module configured to decode one or more pictures using the encoded information of the bitstream, The decoding module is, A device configured to perform overlap block motion compensation (OBMC) for predicted blocks in intra-mode.

16. The decoding module is, Based on the first block vector of the aforementioned block, a first prediction signal is obtained, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The apparatus according to claim 15, configured to generate a third prediction signal according to the first prediction signal and the second prediction signal.

17. The apparatus according to claim 16, wherein the OBMC is performed on subblocks at one or more boundaries of the block, and the second block vector is a block vector relating to an adjacent subblock.

18. The decoding module is, The apparatus according to claim 17, configured to obtain the first block vector by performing intra-template matching prediction (intra-TMP) or intra-block copying (IBC) on the block.

19. The apparatus according to claim 17, wherein the second prediction signal is obtained from the second block vector of the adjacent subblock and the prediction parameters of the adjacent subblock.

20. When the adjacent subblock is predicted in intra-prediction mode, the decoding module: The apparatus according to claim 17, configured to generate the second prediction signal using the stored intra-prediction modes of the adjacent subblocks.

21. If the block is predicted in intra prediction mode, the decoding module will To obtain a first prediction signal which will be the prediction signal for the intra prediction mode, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The apparatus according to claim 15, configured to generate a third prediction signal according to the first prediction signal and the second prediction signal.

22. A device for encoding a video sequence into a bitstream, A receiving module configured to receive a video sequence, An encoding module configured to encode one or more pictures of the aforementioned video sequence, A generation module configured to generate a bitstream, The aforementioned encoding module is A device configured to perform overlap block motion compensation (OBMC) for predicted blocks in intra-mode.

23. The aforementioned encoding module is Based on the first block vector of the aforementioned block, a first prediction signal is obtained, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The apparatus according to claim 22, configured to generate a third prediction signal according to the first prediction signal and the second prediction signal.

24. The apparatus according to claim 23, wherein the OBMC is performed on subblocks at one or more boundaries of the block, and the second block vector is a block vector relating to an adjacent subblock.

25. The aforementioned encoding module is The apparatus according to claim 24, configured to perform intra-template matching prediction (intra-TMP) or intra-block copying (IBC) on the block to obtain the first block vector.

26. The apparatus according to claim 24, wherein the second prediction signal is obtained from the second block vector of the adjacent subblock and the prediction parameters of the adjacent subblock.

27. When the adjacent subblock is predicted in intra-prediction mode, the coding module: The apparatus according to claim 24, configured to generate the second prediction signal using the stored intra-prediction modes of the adjacent subblocks.

28. When the block is predicted in intra prediction mode, the coding module: To obtain a first prediction signal which will be the prediction signal for the intra prediction mode, Based on a second block vector corresponding to the adjacent block, a second prediction signal is obtained, The apparatus according to claim 22, configured to generate a third prediction signal according to the first prediction signal and the second prediction signal.

29. One or more processors, A computer-readable storage medium is provided which is communicably coupled to one or more processors, The computer-readable storage medium is an electronic device that is executable by one or more processors and, when executed by the one or more processors, stores computer-readable instructions that perform the method according to any one of claims 1 to 14.

30. A non-temporary, computer-readable storage medium for storing a video bitstream, wherein, when the bitstream is decoded by a decoder, the decoder is instructed to perform the method according to any one of claims 1 to 7.

31. A non-temporary, computer-readable storage medium for storing a video bitstream, wherein the bitstream, once encoded by an encoder, causes the encoder to perform the method according to any one of claims 8 to 14.

32. A computer program product comprising computer program instructions, wherein the computer program instructions enable a computer to perform the method according to any one of claims 1 to 14.

33. A computer program that enables a computer to perform the method described in any one of claims 1 to 14.