Adaptive predictor blending and processing order in overlapped blocks

OBMC addresses the challenges of blocking artifacts and prediction accuracy in video coding by combining multiple predictors across block boundaries, enhancing video quality and coding efficiency.

WO2026046374A1PCT designated stage Publication Date: 2026-03-05MEDIATEK INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2025/117974
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-12-18
Filing Date
2025-08-29
Publication Date
2026-03-05

AI Technical Summary

Technical Problem

Existing video coding standards face challenges in efficiently reducing blocking artifacts and improving prediction accuracy, particularly in scenarios involving geometric and non-rectangular block partitions, which can lead to visual distortions and reduced coding efficiency.

Method used

The implementation of overlapped block motion compensation (OBMC) techniques that combine multiple predictors using weighted averaging across block boundaries, including geometric partitions and sub-blocks, to generate a final predictor for improved encoding and decoding.

Benefits of technology

OBMC reduces visual distortions and enhances coding efficiency by smoothing transitions between blocks, leading to improved video quality and reduced bit rate, while maintaining computational efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025117974_05032026_PF_FP_ABST
    Figure CN2025117974_05032026_PF_FP_ABST
Patent Text Reader

Abstract

A method for using overlapped block motion compensation (OBMC) to encode pixel blocks is provided. A video coder generates a first predictor for a first portion or entirety of a current block and a second predictor for a second portion or entirety of the current block. The video coder generates a final predictor of the current block based on the first and second predictors. When a first condition is true, the first and second predictors are refined along their respective boundaries using predictive information neighboring the first and second portions or entireties and the final predictor is generated using the refined first and second predictors. When a second condition is true, the final predictor is refined along boundaries of the current block using predictive information neighboring the current block and the current block is encoded or decoded by using the refined final predictor.
Need to check novelty before this filing date? Find Prior Art

Description

ADAPTIVE PREDICTOR BLENDING AND PROCESSING ORDER IN OVERLAPPED BLOCKSCROSS REFERENCE TO RELATED PATENT APPLICATION (S)

[0001] The present disclosure is part of a non-provisional application that claims the priority benefit of U.S. Provisional Patent Application Nos. 63 / 688,421 and 63 / 735,454, filed on 29 August 2024 and 18 December 2024, respectively. Contents of above-listed applications are herein incorporated by reference.TECHNICAL FIELD

[0002] The present disclosure relates generally to video coding. In particular, the present disclosure relates to methods of coding pixel blocks by motion compensation and inter prediction.BACKGROUND

[0003] Unless otherwise indicated herein, approaches described in this section are not prior art to the claims listed below and are not admitted as prior art by inclusion in this section.

[0004] High-Efficiency Video Coding (HEVC) is an international video coding standard developed by the Joint Collaborative Team on Video Coding (JCT-VC) . HEVC is based on the hybrid block-based motion-compensated DCT-like transform coding architecture. The basic unit for compression, termed coding unit (CU) , is a 2Nx2N square block of pixels, and each CU can be recursively split into four smaller CUs until the predefined minimum size is reached. Each CU contains one or multiple prediction units (PUs) .

[0005] Versatile video coding (VVC) is the latest international video coding standard developed by the Joint Video Expert Team (JVET) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11. The input video signal is predicted from the reconstructed signal, which is derived from the coded picture regions. The prediction residual signal is processed by a block transform. The transform coefficients are quantized and entropy coded together with other side information in the bitstream. The reconstructed signal is generated from the prediction signal and the reconstructed residual signal after inverse transform on the de-quantized transform coefficients. The reconstructed signal is further processed by in-loop filtering for removing coding artifacts. The decoded pictures are stored in the frame buffer for predicting the future pictures in the input video signal.

[0006] In VVC, a coded picture is partitioned into non-overlapped square block regions represented by the associated coding tree units (CTUs) . The leaf nodes of a coding tree correspond to the coding units (CUs) . A coded picture can be represented by a collection of slices, each comprising an integer number of CTUs. The individual CTUs in a slice are processed in raster-scan order. A bi-predictive (B) slice may be decoded using intra prediction or inter prediction with at most two motion vectors (MVs) and reference indices to predict the sample values of each block. A predictive (P) slice is decoded using intra prediction or inter prediction with at most one motion vector and reference index to predict the sample values of each block. An intra (I) slice is decoded using intra prediction only.

[0007] A CTU can be partitioned into one or multiple non-overlapped coding units (CUs) using the quadtree (QT) with nested multi-type-tree (MTT) structure to adapt to various local motion and texture characteristics. A CU can be further split into smaller CUs using one of the five split types: quad-tree partitioning, vertical binary tree partitioning, horizontal binary tree partitioning, vertical center-side triple-tree partitioning, horizontal center-side triple-tree partitioning.

[0008] Each CU contains one or more prediction units (PUs) . The prediction unit, together with the associated CU syntax, works as a basic unit for signaling the predictor information. The specified prediction process is employed to predict the values of the associated pixel samples inside the PU. Each CU may contain one or more transform units (TUs) for representing the prediction residual blocks. A transform unit (TU) is comprised of a transform block (TB) of luma samples and two corresponding transform blocks of chroma samples and each TB correspond to one residual block of samples from one color component. An integer transform is applied to a transform block. The level values of quantized coefficients together with other side information are entropy coded in the bitstream. The terms coding tree block (CTB) , coding block (CB) , prediction block (PB) , and transform block (TB) are defined to specify the 2-D sample array of one-color component associated with CTU, CU, PU, and TU, respectively. Thus, a CTU consists of one luma CTB, two chroma CTBs, and associated syntax elements. A similar relationship is valid for CU, PU, and TU.

[0009] For each inter-predicted CU, motion parameters consisting of motion vectors, reference picture indices and reference picture list usage index, and additional information are used for inter-predicted sample generation. The motion parameter can be signalled in an explicit or implicit manner. When a CU is coded with skip mode, the CU is associated with one PU and has no significant residual coefficients, no coded motion vector delta or reference picture index. A merge mode is specified whereby the motion parameters for the current CU are obtained from neighboring CUs, including spatial and temporal candidates, and additional schedules introduced in VVC. The merge mode can be applied to any inter-predicted CU. The alternative to merge mode is the explicit transmission of motion parameters, where motion vector, corresponding reference picture index for each reference picture list and reference picture list usage flag and other needed information are signalled explicitly per each CU.

[0010] Intra block copy (IBC) or current picture referencing (CPR) refer to coding pixel blocks by referencing pixel positions within same current picture as the current block by using block vectors. Intra template matching prediction (IntraTMP) is a special intra prediction mode that copies the best prediction block from the reconstructed part of the current frame, whose L-shaped template matches the L-shaped template of the current block.

[0011] Bi-prediction with CU-level Weight (BCW) is a coding tool that is used to enhance bidirectional prediction. BCW allows applying different weights to L0 prediction and L1 prediction before combining them to produce the bi-prediction for the CU. For a CU to be coded by BCW, one weighting parameter w is signaled for both L0 and L1 prediction, such that the bi-prediction result Pbi-pred is computed based on w.

[0012] In advanced motion vector prediction (AMVP) mode, a motion vector predictor (MVP) candidate is determined based on template matching (TM) error to select the one that reaches the minimum difference between the current block template and the reference block template, and then TM is performed only for this particular MVP candidate for MV refinement. The TM process may refine this MVP candidate using iterative search according to an adaptive motion vector resolution (AMVR) mode search pattern.SUMMARY

[0013] The following summary is illustrative only and is not intended to be limiting in any way. That is, the following summary is provided to introduce concepts, highlights, benefits and advantages of the novel and non-obvious techniques described herein. Select and not all implementations are further described below in the detailed description. Thus, the following summary is not intended to identify essential features of the claimed subject matter, nor is it intended for use in determining the scope of the claimed subject matter.

[0014] Some embodiments of the disclosure provide methods for using overlapped block motion compensation (OBMC) to encode pixel blocks. A video coder receives data to be encoded or decoded as a current block of pixels of a current picture of a video. The video coder generates a first predictor for a first portion or entirety of the current block and a second predictor for a second portion or entirety of the current block. The video coder generates a final predictor of the current block based on the first and second predictors. When a first condition is true, the first and second predictors are refined along their respective boundaries using predictive information neighboring the first and second portions or entireties and the final predictor is generated using the refined first and second predictors. When a second condition is true, the final predictor is refined along boundaries of the current block using predictive information neighboring the current block and the current block is encoded or decoded by using the refined final predictor.

[0015] The first and second portions may be geometric partitions, or subblocks, or another type of partitions of the current block. The first and second portions may also be the entirety of the current block. In some embodiments, the first and second predictors may be generated using first and second motion information associated with the first and second portions of the current block, respectively. The first and second predictors may be two predictors of the current block generated using two motion vectors of bi-prediction. The first predictor (or the second predictor) may be generated by a block vector referencing samples of the current picture.

[0016] The video coder may determine whether to perform OBMC based on a prediction mode or coding tool of the current block (e.g., bi-prediction, GPM, CIIP, IBC, intra prediction, DIMD, etc. ) The video coder may also determine whether to perform OBMC based on syntax elements explicitly signaled in a coded video, at e.g., SPS level, PPS level, picture header, slice header, CTU, block.

[0017] The predictive information neighboring the first (or second) portion or entirety may include motion information associated with a block or subblock that is adjacent to (or neighboring) the first (or second) portion or entirety. The video coder may refine the first (or second) predictor by weighted blending along boundaries of the first portion with an inter-predictor of a block neighboring the first portion, or with an intra predictor that is generated based on neighboring reconstructed samples by using DIMD process to identify an intra prediction mode or direction, or with a current picture predictor that is generated based on a block vector of a neighboring block.BRIEF DESCRIPTION OF THE DRAWINGS

[0018] The accompanying drawings are included to provide a further understanding of the present disclosure, and are incorporated in and constitute a part of the present disclosure. The drawings illustrate implementations of the present disclosure and, together with the description, serve to explain the principles of the present disclosure. It is appreciable that the drawings are not necessarily in scale as some components may be shown to be out of proportion than the size in actual implementation in order to clearly illustrate the concept of the present disclosure.

[0019] FIG. 1 illustrates neighboring reconstructed samples used for decoder side intra mode derivation (DIMD) .

[0020] FIG. 2 shows an example GPM candidate that corresponds to one entry of the GPM candidate list.

[0021] FIG. 3 illustrate an example GPM template.

[0022] FIG. 4 illustrates GPM blending along GPM partition boundary.

[0023] FIG. 5 shows L-shaped neighborhood for a given predicted block.

[0024] FIG. 6 shows overlapped motion compensation (OBMC) being applied for the current block based on its inter-predicted neighbors.

[0025] FIG. 7 illustrates OBMC predictors that are generated when performing inter-prediction of the current block.

[0026] FIG. 8 conceptually illustrates OBMC for geometric partitioning.

[0027] FIGS. 9A-9B conceptually illustrate OBMC for vertical or horizontal motion partitions.

[0028] FIGS. 10A-10B conceptually illustrate applying OBMC to sub-blocks.

[0029] FIG. 11 illustrates template matching based OBMC.

[0030] FIG. 12 shows OBMC with intra prediction.

[0031] FIG. 13 shows the constraint on the range of intra prediction modes for blending boundary pixels.

[0032] FIG. 14 shows OBMC boundary artifact between overlap inter region and overlap intra region.

[0033] FIG. 15 illustrates how boundary pixels adjacent to intra blocks are processed under OBMC.

[0034] FIG. 16 conceptually illustrates block vector of current block or subblock and neighboring subblock in IBC-GPM mode.

[0035] FIG. 17 illustrates an example video encoder that may use OBMC to encode pixel blocks.

[0036] FIG. 18 illustrates portions of the video encoder that implement OBMC with adaptive processing order.

[0037] FIG. 19 conceptually illustrates a process for encoding a block of pixels using OBMC with adaptive processing order.

[0038] FIG. 20 illustrates an example video decoder that may use OBMC to decode pixel blocks.

[0039] FIG. 21 illustrates portions of the video decoder that implement OBMC with adaptive processing order.

[0040] FIG. 22 conceptually illustrates a process for decoding a block of pixels using OBMC with adaptive processing order.

[0041] FIG. 23 conceptually illustrates an electronic system with which some embodiments of the present disclosure are implemented.DETAILED DESCRIPTION

[0042] In the following detailed description, numerous specific details are set forth by way of examples in order to provide a thorough understanding of the relevant teachings. Any variations, derivatives and / or extensions based on teachings described herein are within the protective scope of the present disclosure. In some instances, well-known methods, procedures, components, and / or circuitry pertaining to one or more example implementations disclosed herein may be described at a relatively high level without detail, in order to avoid unnecessarily obscuring aspects of teachings of the present disclosure. I. Predictor Fusion

[0043] In some embodiments, multiple different predictors are generated for a current block or one or more portions of the current block. Such multiple predictors may be generated by one or multiple different predictive coding tools. Some embodiments of the disclosure provide methods for combining or fusing the multiple predictors into a final predictor for encoding or decoding the current block.

[0044] A. Decoder side intra mode derivation (DIMD)

[0045] When decoder side intra mode derivation (DIMD) is applied, up to five intra modes are derived from the reconstructed neighbor samples, and those five predictors may be combined or fused with the planar mode predictor with the weights derived from the histogram of gradients as described in JVET-O0449. The division operations in weight derivation are performed utilizing the same lookup table (LUT) based integerization scheme used by the CCLM. For example, the division operation in the orientation calculation Orient = Gy / Gx

[0046] is computed by the following LUT-based scheme: x = Floor (Log2 (Gx) ) normDiff = ( (Gx<< 4) >> x) &15 x += (3 + (normDiff ! = 0) ? 1: 0) Orient = (Gy* (DivSigTable [normDiff] | 8) + (1<< (x-1) ) ) >> x

[0047] where DivSigTable

[0016] = {0, 7, 6, 5 , 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 0} .

[0048] For a block of size W×H, the weight for each of the five derived modes is modified if the one the above or left histogram magnitudes is twice larger than the other one. In this case, the weights are location dependent and computed as follows: If the above histogram is twice the left, then: wi(x, y) = wDimdi + Δi –2Δi (y /  (H–1) ) If the left histogram is twice the above, then: wi(x, y) = wDimdi + Δi –2Δi (x /  (W–1) )

[0049] where wDimdi is an unmodified uniform weight of the DIMD, Δi is pre-defined and set to 10. Derived intra modes are included into the primary list of intra most probable modes (MPM) , so the DIMD process is performed before the MPM list is constructed. The primary derived intra mode of a DIMD block is stored with a block and is used for MPM list construction of the neighboring blocks. The region of decoded reference samples of current WxH luma CB may be extended towards the above-right side if available, up to W additional columns, and / or extended towards the bottom-left side if available, up to H additional rows.

[0050] The DIMD chroma mode uses the DIMD derivation method to derive the chroma intra prediction mode of the current block based on the neighboring reconstructed Y, Cb and Cr samples in the second neighboring row and column. FIG. 1 illustrates neighboring reconstructed samples used for DIMD. For DIMD chroma mode, a horizontal gradient and a vertical gradient are calculated for each collocated reconstructed luma sample of the current chroma block, as well as the reconstructed Cb and Cr samples, to build a HoG. Then the intra prediction mode with the largest histogram amplitude values is used for performing chroma intra prediction of the current chroma block.

[0051] When the intra prediction mode derived from the DIMD chroma mode is the same as the intra prediction mode derived from the DM mode, the intra prediction mode with the second largest histogram amplitude value is used as the DIMD chroma mode. A CU level flag is signaled to indicate whether the proposed DIMD chroma mode is applied.

[0052] In some embodiments, for a W×H pair of chroma CBs to predict, to build the histogram of gradients associated to the collocated luma CB, the pairs of a vertical gradient and a horizontal gradient are extracted from the second and third lines in this luma CB instead of being extracted from the regular set of DIMD decoded reference samples around this luma CB.

[0053] In some embodiments, two chroma intra prediction signals can be fused together. One of the two chroma intra prediction signals is predicted using one of the DM mode, DIMD chroma mode and the four default modes (non-LM mode) . The other chroma intra prediction signal is predicted using cross-component linear prediction modes (LM mode) . Two different methods are supported. In the first method, the LM mode is fixed to MMLM_LT mode, and the final predictor is derived as follows: predC (i, j) = (w0 × pred0 (i, j) + w1 × pred1 (i, j) + (1 << (shift –1) ) ) >> shift

[0054] where pred0 (i, j) is the predictor obtained by applying the non-LM mode, pred1 (i, j) is the predictor obtained by applying the MMLM_LT mode and predC(i,j) is the final predictor of the current chroma block. The two weights, w0 and w1 are determined by the intra prediction mode of adjacent chroma blocks and shift is set equal to 2. Specifically, when the above and left adjacent blocks are both coded with LM modes, {w0, w1} = {1, 3} ; when the above and left adjacent blocks are both coded with non-LM modes, {w0, w1} = {3, 1} ; otherwise, {w0, w1} = {2, 2} .

[0055] In the second method, the LM mode can be either MMLM or CCLM mode, and the final predictor is derived as follows: predC (i, j) = α0×pred0 (i, j) + α1×rec′L (i, j) + α2× β

[0056] where pred0 (i, j) is the predictor obtained by applying the non-LM mode, rec′L (i, j) is the set of downsampled reconstructed luma samples at co-located positions and predC (i, j) is the final predictor of the current chroma block. β is a fixed value and is set equal to 512 for 10-bit content. The three weights, α1, α2, and α3 are derived from the adjacent luma and chroma samples using the same LDL derivation method as in CCCM.

[0057] For the syntax design, one index is signaled to indicate whether fusion is applied and which method is used. It is noted that for I slices, the non-LM mode can be DM mode, DIMD chroma mode and the four default modes. For non-I slices, only DIMD chroma mode is allowed to be fused with LM modes.

[0058] B. Fusion for Template-based Intra Mode Derivation (TIMD)

[0059] For each intra prediction mode in MPMs, as well as the wide-angle modes if the above-right and / or bottom-left reference samples are available, SATD between the prediction and reconstruction samples of the template is calculated. First two intra prediction modes with the minimum SATD and one non-angular intra prediction mode (i.e. DC or Planar) with the lowest SATD cost are selected as the TIMD modes. These three TIMD modes are fused with the weights after applying PDPC process, and such weighted intra prediction is used to code the current CU. Position dependent intra prediction combination (PDPC) is included in the derivation of the TIMD modes.

[0060] The conditions below are checked to determine whether the non-angular intra prediction mode is used in fusion: (1) the non-angular intra prediction mode is different from the two selected intra prediction modes; (2) costMode3 < 1.5*costMode1, where the costMode3 is the SATD cost of the non-angular intra prediction mode and costMode1 is the SATD cost of the first intra prediction mode. If both conditions (1) and (2) are true, three intra prediction modes are used to generate the prediction. And the weights of each intra prediction mode are computed from SATD cost:

[0061] Otherwise, the non-angular intra prediction mode is not used in prediction, and the costs of the two selected modes are compared with a threshold, in the test the cost factor of 2 is applied as follows: costMode2 < 2*costMode1

[0062] If this condition is true, the fusion is applied, otherwise the only mode1 is used. Weights of the modes are computed from their SATD costs as follows: weight1 = costMode2 /  (costMode1+ costMode2) weight2 = 1 -weight1

[0063] The division operations are conducted using the same lookup table (LUT) based integerization scheme used by the CCLM. In addition, location-dependent sample-based fusion used in DIMD fusion process is used for the TIMD fusion but the location-dependent criterion applying to amplitudes of the selected predictors is replaced by a SATD cost-based criteria. The location-dependent criterion is determined from a ratio of the normalized SATD of the selected TIMD predictors computed in above and left template area.

[0064] C. Intra Prediction Fusion

[0065] In some embodiments, an intra prediction method derives predicted samples as a weighted combination of multiple predictors generated from different reference lines. In this process multiple intra predictors are generated and then fused by weighted averaging. The process of deriving the predictors to be used in the fusion process is described as follows: 1) For angular intra prediction modes including the single mode case of TIMD and DIMD, the  intra prediction is derived by weighting intra predictions obtained from multiple reference lines represented as pfusion = w0pline + w1pline+1, wherein pline is the intra prediction from the default reference line and pline+1 is the prediction from the line above the default reference line. The weights are set as w0 = 3 / 4 and w1 = 1 / 4. 2) For TIMD mode with blending, pline is used for the first mode (w0 = 1, w1 = 0) and pline+1 is  used for the second mode (w0 = 0, w1 = 1) . 3) For DIMD mode with blending, the number of predictors selected for a weighted average is  increased from 3 to 6.

[0066] The angular intra prediction fusion method is applied to luma blocks when angular intra mode has non-integer slope (required reference samples interpolation) and the block size is greater than 16, it is used with MRL and not applied for ISP coded blocks. In the method studied in the sub-test a, PDPC is applied for the intra prediction mode using the closest to the current block reference line.

[0067] The TIMD mode with blending method is applied when all the following conditions are satisfied: (1) both the first and second modes are angular prediction mode, (2) the current block is not ISP coded block,  and (3) all of the following conditions are false: - abs (predModeIntra1 –predModeIntra2) is greater than Threshold. The value of Threshold is set to 8 or  4 depending on block size. - (predModeIntra1 -EXT_HOR_IDX) * (predModeIntra2 -EXT_HOR_IDX) is less than 0. - (predModeIntra1 -EXT_VER_IDX) * (predModeIntra2 -EXT_VER_IDX) is less than 0.

[0068] D. Spatial Geometric Partitioning Mode (SGPM)

[0069] SGPM is an intra mode that resembles the inter coding tool of GPM, where the two prediction parts are generated from intra predicted process. In SGPM mode, a candidate list is built. FIG. 2 shows an example GPM candidate that correspond to one entry of the GPM candidate list. As illustrated, the candidate corresponds to a one partition split (partition mode) and two intra prediction modes (intra_pred_mode0 and intra_pred_mode1) . Each candidate in the list may be a combination or pairing of a partition mode and two or more intra prediction mode (s) that are selected from 26 partition modes and 9 intra prediction modes. The length of the candidate list may be set equal to 16. The selected candidate index is signalled. The list may be reordered using a GPM template where SAD between the prediction and reconstruction of the template is used for ordering. The template size may be fixed to 1. FIG. 3 illustrates an example GPM template.

[0070] For each partition mode, an IPM list is derived for each part using the same intra-inter GPM list derivation. The IPM list size is set to 3. In the list, TIMD derived mode is replaced by 2 derived modes with horizontal and vertical orientations. The list is further augmented with block-vector based prediction candidates obtained from the adjacent and non-adjacent merge candidates coded in IntraTMP or IBC mode. The template cost is employed to select up to 6 block vectors. The final list contains up to 9 predictors: 3 regular intra modes and up to 6 BV-based predictors.

[0071] The SGPM mode is applied with a restricted blocks size: 4<=width<=64, 4<=height<=64, width<height*8, height<width*8, width*height>=32. A PPS flag is coded to indicate whether no blending of two intra predictions is allowed. When this PPS flag is set to false, the following adaptive blending is also used for spatial GPM. FIG. 4 illustrates GPM blending along GPM partition boundary, where blending depth τ is derived as follows: ● If min (width, height) ==4, 1 / 2 τ is selected ● else if min (width, height) ==8, τ is selected ● else if min (width, height) ==16, 2 τ is selected · else if min (width, height) ==32, 4 τ is selected · else, 8 τ is selected.

[0072] Otherwise (the PPS flag is set to true) , 1 / 4 τ is always used for spatial GPM coded blocks to make sure no blending is used when SGPM block has partition angle completely horizontal or vertical, and much narrower blending width is used when SGPM block has other partition angles. It is noted that the flag is set to true in current Common Test Conditions (CTC) for the screen content videos.

[0073] E. Matrix-based Intra Prediction (MIP)

[0074] Matrix based intra prediction (MIP) , or position dependent intra prediction (PDP) , may be used to replace conventional intra modes. In some embodiments, a matrix of weights, which are defined for a block shape and intra mode, is introduced, those weights are multiplied by the neighbour reference template to derive the prediction samples replacing conventional intra prediction. The weights are applied to the reference samples of the L shaped causal neighborhood template as shown in the FIG. 5, which shows L-shaped neighborhood for a given predicted block (labeled “p” ) . The reference samples in the causal neighborhood are denoted as r, and F (x, y) is the matrix of weights. Then the prediction P (x, y) can be derived as: P(x, y) = ∑k F (x, y, k) *r (k)

[0075] where k denotes the index of the reference sample in the template. In some embodiments, this prediction is used for block size with both width and height up to 32 (except for 4×32, 32×4, 8×32, and 32×8) . The template size is 2 for blocks with both width and height up to 16 and it is only used for mode 0, 1, and (2+2*k) . For other blocks, template size is set to 1; is used for mode 0, 1, and (2+4*k) ; prediction is only performed for 16x16 positions, and the rest of the samples are generated by bilinear interpolation. For all block sizes, block shape and mode-based symmetry is used. Reference length is set to W and H for modes greater than 18 and less than 50 and set to 2*W and 2*H otherwise. II. Overlapped Block Motion Compensation (OBMC)

[0076] Overlapped Block Motion Compensation (OBMC) is a technique used in video coding to reduce blocking artifacts and improve prediction accuracy. It works by overlapping blocks during motion compensation, allowing for smoother transitions between blocks and reducing the visual distortions often seen at block boundaries. Each pixel within the overlapped region is predicted using motion vectors from one or more neighboring blocks, and multiple predictors  / predictions are combined using weighting factors. This overlapping and weighted averaging helps to create smoother transitions between blocks, reducing the visual impact of block boundaries.

[0077] In some embodiments, OBMC is applied for the current block based on its inter-predicted neighbors, as shown in FIG. 6. As illustrated, for a current block 600, if the above block and the left block are coded in inter mode, the MV of the above block is used to generate an OBMC block A (based on reference samples 610) and the MV of the left block is used to generate an OBMC block L (based on reference samples 620. ) The predictors of OBMC block A and OBMC block L are then blended with the predictor (s) of the current block, or current predictor (s) .

[0078] In some embodiments, when performing MC of the current block, reference pixels are fetched to generate OBMC predictors of bottom and right neighboring blocks. FIG. 7 illustrates OBMC predictors that are generated when performing inter-prediction of the current block.

[0079] In some embodiments, OBMC finds a Linear Minimum Mean Squared Error (LMMSE) estimate of a pixel's intensity value based on motion-compensated (MC) signals that are derived from its nearby block motion vectors (MVs) . From an estimation-theoretic perspective, these MVs are regarded as different plausible hypotheses for its true motion. To maximize coding efficiency, these different hypotheses are weighted to minimize the mean squared prediction error subject to the unit-gain constraint.

[0080] In some embodiments, for a CU with size less than or equal to 256 luma samples, a CU level flag may be signaled to indicate whether OBMC is applied or not for the current CU. For the CUs with size larger than 256 luma samples or not coded with AMVP mode, OBMC may be applied by default.

[0081] At the encoder, when OBMC is applied for a CU, its impact is taken into account during the motion estimation stage. The prediction signal formed by OBMC using motion information of the top neighboring block and the left neighboring block are used to compensate the top and left boundaries of the original signal of the current CU, and then the normal motion estimation process is applied. The following sections provide various examples of applying OBMC:

[0082] A. OBMC applied to Geometric Partitioning

[0083] OBMC may be applied to geometric partitioning (e.g., partitioning a block into partitions that are not rectangularly shaped) . In geometric partitioning, a transform block is likely to contain pixels belonging to different partitions. Since two different motion vectors may be used by different geometric partitions for motion compensation, the pixels at the geometric partition boundary may have large discontinuities that can produce visual artifacts similar to blockiness. This in turn decreases the transform efficiency.

[0084] Let the two regions created by geometry partitioning be denoted by region 1 and region 2. A pixel from region 1 is defined to be a boundary pixel if any of its four connected neighbors (left, top, right, and bottom) belongs to region 2. FIG. 8 conceptually illustrates overlapped motion compensation (OBMC) for geometric partitioning. As illustrated, for a current block 800, pixels labeled “1” belong to the boundary of region 1 and pixels labeled “2” belong to the boundary of region 2. A predictor 810 is generated for region 1 and a predictor 820 is generated for region 2. The predictors 810 and 820 are motion predictions (or motion compensations) that are generated based on motion vectors (e.g., MV1 and MV2) that reference samples from reference pictures.

[0085] The two predictors 810 and 820 are combined to form the final prediction (may be final motion compensation) for the current block 800. For each boundary pixel (or a pixel in the overlapping boundary region) , the final prediction is generated using a weighted sum of the two overlapping predictors 810 and 820. For a region 1 boundary pixel, the prediction from predictor 810 is weighted 3 / 4 and the prediction from the predictor 820 is weighted 1 / 4. Conversely, for region 2 boundary pixel, the prediction from predictor 820 is weighted 3 / 4 and the prediction from the predictor 810 is weighted 1 / 4. The overlapping boundaries improve the visual quality of the reconstructed video while also providing BD-rate gain.

[0086] B. OBMC applied to Horizontal or Vertical partitioning

[0087] If a 2N×2N coding unit (CU) is partitioned into two 2N×N (or N×2N) partition units (PUs) , OBMC may be applied to the horizontal (or vertical) boundary of the two 2N×N (or N×2N) prediction blocks. Since those partitions may be predicted by different motion vectors, the pixels at partition boundaries may have large discontinuities, which may generate visual artifacts and also reduce the transform / coding efficiency. OBMC may be used to smooth the boundaries of two motion partitions. The two motion partitions may be symmetrical motion partitions.

[0088] FIGS. 9A-9B conceptually illustrate OBMC for vertical or horizontal motion partitions. In the figures, a current block 900 is partitioned horizontally (as shown in FIG. 9A) or vertically (as shown in FIG. 9B) into partitions 1 and 2. The pixels labeled “1” are pixels belonging to partition 1 and pixels labeled “2” are pixels belonging to partition 2. The overlapped region in the luma component is defined as 2 rows (columns) of pixels on each side of the horizontal (vertical) boundary. Predictors 910 and 920 are generated for partitions 1 and 2 respectively, by motion vectors MV1 and MV2 respectively. MV1 and MV2 are used to fetch samples from different reference pictures to generate the predictors 910 and 920.

[0089] The two predictors 910 and 920 are combined under OBMC to generate a final predictor (which may be a final motion compensation) for the current block 900. The predictions for the pixels along the partition boundary are generated by weighted sum of the two overlapping predictors 910 and 920 at the corresponding pixel positions. FIG. 9A shows OBMC weighting footprint for horizontal partitioning with two 2N×N partitions. FIG. 9B shows OBMC weighting footprint for vertical partitioning with two N×2N partitions. As illustrated, for pixels which are 1 row (column) apart from the partition boundary, OBMC weighting factors are (3 / 4, 1 / 4) . For pixels which are 2 rows (columns) apart from the partition boundary, OBMC weighting factors are (7 / 8, 1 / 8) . For chroma components, the overlapped region is defined as 1 row (column) of pixels on each side of the horizontal (vertical) boundary, and the weighting factors are (3 / 4, 1 / 4) .

[0090] Currently, the OBMC is performed after normal MC, and BIO is also applied in these two MC processes, separately. That is, the MC results for the overlapped region between two CUs or PUs is generated by another process not in the normal MC process. And BIO is applied to refine these two MC results. This can help to skip the redundant OBMC and BIO processes, when two neighboring MVs are the same. However, the required bandwidth and MC operations for the overlapped region is increased compared to integrating OBMC process into the normal MC process. For example, the current PU size is 16x8, the overlapped region is 16x2, and the interpolation filter in MC is 8-tap. If the OBMC is performed after normal MC, then we require (16+7) × (8+7) + (16+7) × (2+7) = 552 reference pixels per reference list for current PU and the related OBMC. If the OBMC operations are combined with normal MC into one stage, then only (16+7) × (8+2+7) = 391 reference pixels per reference list for current PU and the related OBMC. Therefore, in the following, in order to reduce the computation complexity or memory bandwidth of BIO, several methods are proposed, when BIO and OBMC are enabled simultaneously.

[0091] In some embodiments, OBMC may be switched on and off using syntax at the CU level. When OBMC is used, the OBMC is performed for all motion compensation (MC) block boundaries except the right and bottom boundaries of a CU. Moreover, it is applied for both the luma and chroma components.

[0092] C. OBMC Applied at Sub-block level

[0093] For some embodiments in which a MC block corresponds to a coding block, when a CU is coded with sub-CU mode (includes sub-CU merge, affine and FRUC mode) , each sub-block of the CU is a MC block. To process CU boundaries in a uniform fashion, OBMC may be performed at sub-block level for all MC block boundaries, where sub-block size is set equal to 4×4. FIGS. 10A-10B conceptually illustrate applying OBMC to sub-blocks.

[0094] When OBMC is applied to the current sub-block, in addition to the current motion vectors (motion vectors of the current block) , motion vectors of connected neighboring sub-blocks, if available and are not identical to the current motion vector, can be used to derive prediction block for the current sub-block. In some embodiments, OBMC is applied to boundary subblocks based on MVs of neighboring subblocks that are outside of the current block. FIG. 10A shows OBMC being applied to sub-blocks at CU or PU boundary of a current block 1000. As illustrated, OBMC being applied to boundary sub-block 1010 based on MVs of neighboring subblocks 1012 and 1014 that are outside of the current block 1000. OBMC is also applied to boundary sub-block 1020 based on MV of neighboring subblock 1022 outside of the current block 1000. OBMC is also applied to boundary sub-block 1020 based on MV of neighboring subblock 1032 outside of the current block 1000.

[0095] In some embodiments, the current block may be coded in ATMVP mode such that each subblock may have its own MV. Thus, regardless of whether a subblock is a boundary subblock, OBMC may be applied to the subblock based on MVs of other subblocks that are adjacent or neighboring to the subblock, including adjacent or neighboring subblocks that are within the current block. FIG. 10B, shows OBMC being applied to a sub-block based on MVs of adjacent or neighboring subblocks. As illustrated, a subblock 1050 is a subblock that may be interior to the current block 1000 (so that the subblock 1050 may or may not be a boundary subblock) . OBMC is applied to the sub-block 1050 based on MVs of adjacent subblocks 1052, 1054, 1056, and 1058. These adjacent subblocks 1052, 1054, 1056, and 1058 may be other subblocks of the current block 1000 and have their own motion information under ATMVP mode.

[0096] These multiple prediction blocks based on multiple motion vectors are combined to generate a final prediction signal of the current sub-block. Let the prediction block based on motion vectors of a neighboring sub-block be denoted as PN, with N indicating an index for the neighboring above, below, left and right sub-blocks. Let the prediction block based on motion vectors of the current sub-block be denoted as PC. In some embodiments, when PN is based on the motion information of a neighboring sub-block that contains the same motion information as the current sub-block, the OBMC is not performed from PN. Otherwise, every sample of PN is added to the same sample in PC, e.g., four rows / columns of PN are added to PC. The weighting factors {1 / 4, 1 / 8, 1 / 16, 1 / 32} are used for PN and the weighting factors {3 / 4, 7 / 8, 15 / 16, 31 / 32} are used for PC. The exception are small MC blocks, (i.e., when height or width of the coding block is equal to 4 or a CU is coded with sub-CU mode) , for which only two rows / columns of PN are added to PC. In this case weighting factors {1 / 4, 1 / 8} are used for PN and weighting factors {3 / 4, 7 / 8} are used for PC. For PN generated based on motion vectors of vertically (horizontally) neighboring sub-block, samples in the same row (column) of PN are added to PC with a same weighting factor.

[0097] D. OBMC with reduced memory usage

[0098] For the example of FIG. 6, To reduce the memory bandwidth of OBMC, in some embodiments, OBMC is performed based on the above 4 rows of motion compensation (MC) and left 4 columns of MC with the neighboring blocks. When performing MC of the above block, 4 additional rows are fetched to generate a block of (above block + OBMC block A) . The predictors of OBMC block A are stored in a buffer for coding the current block. When performing MC of the left block, 4 additional columns are fetched to generate a block of (left block + OBMC block L) . The predictors of OBMC block L are stored in a buffer for coding the current block.

[0099] For the example of FIG. 7, As illustrated, four additional rows and four additional columns of reference pixels are fetched to generate the following OBMC predictors: the OBMC block-B, and the OBMC block-R. In some embodiment, OBMC block-BR are also generated. The OBMC block-B and the OBMC block-R (and OBMC block-BR) are stored in buffers for the OBMC process of the bottom neighboring blocks and the right neighboring blocks.

[0100] For an MxN block, if the MV is not integer, an 8-tap interpolation filter is applied, a reference block with size of (M+7) × (N+7) is used for motion compensation. However, if the BIO and OBMC is applied, additional reference pixels are required, which increases the worst-case memory bandwidth.

[0101] There are two different schemes to implement OBMC: In a first scheme, OBMC blocks are pre-generated when performing each block’s motion compensation. These OBMC blocks will be stored in a local buffer for neighboring blocks. In a second scheme, the OBMC blocks are generated before the blending process of the current block when performing OBMC. For either scheme, some embodiments of the disclosure provide methods to reduce the computation complexity, especially for the interpolation filtering, and additional bandwidth requirement of OBMC.

[0102] E. OBMC based on Template Matching Costs

[0103] In some embodiments, a template matching-based (TM-based) OBMC scheme is used. FIG. 11 illustrates template matching based OBMC. As illustrated, for each top block with a size of 4×4 at the top CU boundary, the above template size equals to 4×1. If N adjacent blocks have the same motion information, then the above template size is enlarged to 4N×1 since the MC operation can be processed at one time. For each left block with a size of 4×4 at the left CU boundary, the left template size equals to 1×4 or 1×4N.

[0104] For each 4×4 top block (or N 4×4 blocks group) , the prediction value of boundary samples is derived following the below steps: (using block “A” of FIG. 11 as example, the current block and its above neighboring block AboveNeighbor_A. The operation for left blocks is conducted in the same manner. )

[0105] First, three template matching costs (Cost1, Cost2, Cost3) are measured by SAD between the reconstructed samples of a template and its corresponding reference samples derived by MC process according to the following three types of motion information: Cost1 is calculated according to A’s motion information. Cost2 is calculated according to AboveNeighbor_A’s motion information. Cost3 is calculated according to weighted prediction of A’s and AboveNeighbor_A’s motion  information with weighting factors as 3 / 4 and 1 / 4 respectively.

[0106] Second, choose one approach to calculate the final prediction results of boundary samples by comparing Cost1, Cost2 and Cost 3. The original MC result using current block’s motion information is denoted as Pixel1, and the MC result using neighboring block’s motion information is denoted as Pixel2. The final prediction result is denoted as NewPixel. If Cost1 is minimum, then NewPixel (i, j) = Pixel1 (i, j) . If (Cost2 + (Cost2 >> 2) + (Cost2 >> 3) ) <= Cost1, then blending mode 1 is used. For luma blocks, the number of blending pixel rows is 4. NewPixel (i, 0) = (26×Pixel1 (i, 0) + 6×Pixel2 (i, 0) + 16) >> 5 NewPixel (i, 1) = (7×Pixel1 (i, 1) + Pixel2 (i, 1) + 4) >> 3 NewPixel (i, 2) = (15×Pixel1 (i, 2) + Pixel2 (i, 2) + 8) >> 4 NewPixel (i, 3) = (31×Pixel1 (i, 3) + Pixel2 (i, 3) + 16) >> 5 For chroma blocks, the number of blending pixel rows is 1. NewPixel (i, 0) = (26×Pixel1 (i, 0) + 6×Pixel2 (i, 0) + 16) >> 5 If Cost1 <= Cost2, then blending mode 2 is used. For luma blocks, the number of blending pixel rows is 2. NewPixel (i, 0) = (15×Pixel1 (i, 0) + Pixel2 (i, 0) + 8) >> 4 NewPixel (i, 1) = (31×Pixel1 (i, 1) + Pixel2 (i, 1) + 16) >> 5 For chroma blocks, the number of blending pixel rows / columns is 1. NewPixel (i, 0) = (15×Pixel1 (i, 0) + Pixel2 (i, 0) + 8) >> 4 Otherwise, blending mode 3 is used. For luma blocks, the number of blending pixel rows is 4. NewPixel (i, 1) = (7×Pixel1 (i, 1) + Pixel2 (i, 1) + 4) >> 3 NewPixel (i, 2) = (15×Pixel1 (i, 2) + Pixel2 (i, 2) + 8) >> 4 NewPixel (i, 3) = (31×Pixel1 (i, 3) + Pixel2 (i, 3) + 16) >> 5 For chroma blocks, the number of blending pixel rows is 1. NewPixel (i, 0) = (7×Pixel1 (i, 0) + Pixel2 (i, 0) + 4) >> 3

[0107] In some embodiments, when one or more neighboring blocks are intra-coded blocks, in order to determine blending lines and blending weightings in TM-based OBMC, different rule is applied when there is no available neighboring motion. For example, when difference between current template predictor and reconstruction samples is smaller than a ratio multiplied with current template predictor, smaller weightings and fewer blending lines may be considered.

[0108] F. OBMC applied to block with Local Illumination Compensation (LIC)

[0109] Local illumination compensation (LIC) is one inter coding technique that aims at addressing the illumination variations between one block and its prediction block. The LIC is based on one linear model where a scale α and an offset β are derived from the template samples neighboring to the current block and their corresponding prediction samples. The derived LIC parameters are then applied to adjust the prediction samples of the block as P′ [x, y] = α·P [x, y] + β.

[0110] In some embodiments, LIC is only applicable to uni-predictive inter CUs which contains no less than 32 luma samples. As described above in Section I, OBMC is an inter tool that alleviates the discontinuities among the prediction samples of inter blocks by adjusting the boundary prediction samples of one inter block / sub-block using its neighboring block’s MV. In some embodiments, when the LIC is applied to one inter block, the OBMC is always disabled. Additionally, when one neighboring block of the current CU applies the LIC, only its MVs are used to produce the corresponding prediction samples used for the OBMC process of the current CU.

[0111] In some embodiments, LIC may be applied to bi-predicted CUs. Specifically, when applying LIC to one bi-prediction block, two different linear models are derived to compensate the illumination changes that exist between the current block and its two prediction blocks. Then, the final bi-prediction of the current block is calculated as the combination of two uni-prediction blocks after the LIC adjustment, i.e., P′ [x, y] = (1–ω) ·p′0 [x, y] + ω ·p′1 [x, y] and p0 [x, y] = α0 ·P 0 [x, y] + β0 p′1 [x, y] = α1 ·P 1 [x, y] + β1

[0112] where α0 and β0, and α1 and β1 indicate the scales and the offsets in L0 and L1, respectively; ωindicates the weight (as indicated by the CU-level BCW index) that is applied when combining the two uni-prediction blocks. In some embodiments, one control flag is signaled for AMVP bi-predicted CUs to indicate the enabling / disabling of the LIC while the flag is inherited from one neighboring block for merge inter CUs (including AMVP-Merge mode) . Additionally, LIC is disabled when decoder-side motion vector refinement (DMVR) (including multi-pass DMVR, adaptive DMVR and affine DMVR) and bi-directional optical flow (BDOF) is applied.

[0113] To reuse the linear model derivation of the existing LIC, one iterative approach is applied to alternately derive the L0 and L1 linear models. Specifically, given the two MVs of the current block, it assumes T0 and T1 are the two predictions of the current block’s template T. The method firstly derives the L0 linear model (α0 and β0) that result in the minimum difference between T0 and T1. Then, the L1 linear model (α1 and β1) can be calculated that minimizes the difference between T1 and the updated template. Finally, the L0 linear model is refined again in the same way.

[0114] In some embodiments, OBMC is applied to the inter blocks where the LIC is applied. In some embodiments, to achieve a better complexity / performance trade-off, OBMC is only applied for refining the prediction samples on the top and left boundaries of one LIC CU while the OBMC on the internal sub-block boundaries are always disabled. In some embodiments, Besides the MVs, the LIC parameters of one neighboring block (when it is coded by the LIC) is taken into consideration when generating its corresponding prediction samples for the OBMC of the current CU.

[0115] In some embodiments, in OBMC boundary check, non-local LIC is considered during predictor generation for OBMC boundary check predictor comparison. In some embodiments, in OBMC boundary check, LIC or non-local LIC flag is considered during predictor generation. The LIC model or non-local LIC model will be re-derived using the subblock boundary reconstruction samples. In some embodiments, in OBMC boundary check, LIC or non-local LIC flag is considered during predictor generation. Only partial LIC model will be inherited and remaining LIC parameters will be re-derived. For example, offset of LIC model is inherited and LIC scale is re-derived using neighboring reconstruction samples or subblock boundary neighboring reconstruction samples. For another example, scale of LIC model is inherited and LIC offset is re-derived using neighboring reconstruction samples or subblock boundary neighboring reconstruction samples.

[0116] In some embodiments, for OBMC boundary check, to derive non-local LIC parameters or non-local LIC models, adjacent spatial neighbors and non-adjacent spatial neighbors are checked. Different spatial neighboring positions are checked, compared to original non-local LIC process.

[0117] In some embodiments, for adaptive OBMC control, LIC flag or non-local LIC flag is inherited from neighboring or current block.

[0118] In some embodiments, LIC slope adjustment is applied to OBMC process. Refined predictors using different LIC slopes are generated and the predictor with the smallest cost (SAD, SSD, SSE) between is selected and the corresponding LIC slope is signaled.

[0119] G. OBMC with Intra Prediction

[0120] In some embodiments, OBMC is used to enable a refinement of top and left boundary pixels adjacent to intra block, as shown in FIG. 12, which shows OBMC with intra prediction. As illustrated, top and left boundary pixels in subblocks (labeled “X” ) of a block 1200 are adjacent to intra blocks. These subblocks are blended with neighboring intra prediction subblocks that are generated by using intra prediction mode (s) derived by applying DIMD on the neighboring reconstructed samples. The blending weights are identical to those used when template matching-based OBMC is not applied. Furthermore, in some embodiments, the blending of top and left boundary pixels adjacent to intra blocks is performed only when the intra prediction mode derived from DIMD falls within the range defined according to the availability of neighboring reconstructed samples, as shown in FIG. 13, which shows the constraint on the range of intra prediction modes for blending boundary pixels. This condition limits the usage of padded reference samples for intra prediction.

[0121] In existing OBMC, if neighboring intra predictor is blended with current inter predictor, it is possible that there is boundary artifact inside current inter predictor, as shown in FIG. 14. It is because that overlapping intra region and overlapping inter region could create discontinuity inside current predictor which cannot be smoothed in later in-loop filtering stage (e.g., deblocking) . Furthermore, in prior-art, the overlapping region from neighboring intra predictor is generated from decoder-side derived method, such as DIMD mode. The decoder-side derived method could generate intra prediction mode that is quite different from neighboring intra predictor, for example, neighboring intra predictor utilizes intra prediction mode 48 and overlapping region utilizes intra prediction mode 60. Thus, it is possible that the overlapping region from neighboring intra predictor is different from neighboring intra predictor. Some embodiments of the disclosure provide methods regarding neighboring intra predictor blending in OBMC.

[0122] In some embodiment, to determine if there is true edge or discontinuity between the intra overlapping region and the inter overlapping region, subblock boundary check method is performed. To perform the boundary check, an absolute difference between samples of the intra overlapping region and the inter overlapping region is calculated. If the absolute difference is larger than or equal to a pre-defined threshold, then there is true edge between these two regions. The aforementioned inner subblock OBMC blending method or boundary smoothing method may be applied according to this subblock boundary check.

[0123] H. Boundary Pixels Refinement by OBMC

[0124] In some embodiments, top and left boundary pixels of the current block are only blended with inter prediction block generated using motion information of neighbouring block. However, top and left boundary pixels adjacent to intra block may remain unrefined due to the absence of motion information of neighboring intra block. Consequently, discontinuities at these boundary pixels may still be present, which can result in large residual signals at the boundary. Thus, in some embodiments, in addition to the existing OBMC process, the top and left boundary pixels adjacent to intra block are blended with intra prediction subblock generated using the intra prediction mode derived by applying DIMD on the neighbouring reconstructed samples.

[0125] FIG. 15 illustrates an example of the OBMC extension with intra prediction, showing how boundary pixels adjacent to intra blocks are processed. As illustrated, for the current block 1500, boundary subblocks 1510 and 1520 are inter coded by motion information. However, the boundary subblocks 1510 and 1520 are also adjacent to intra coded neighboring subblocks. The inter-prediction of the boundary subblocks 1510 and 1520 are then blended by applying DIMD on neighboring reconstructed samples.

[0126] Furthermore, the blending of top and left boundary pixels adjacent to intra blocks is performed only when the intra prediction mode derived from DIMD falls within the range defined according to the availability of neighboring reconstructed samples. This condition limits the usage of padded reference samples for intra prediction.

[0127] In some embodiments, OBMC is applied to perform the refinement of the top and left boundary pixels adjacent to intra block. These pixels are blended using an intra prediction block generated with the intra prediction mode derived by applying DIMD on the neighbouring reconstructed samples. In some embodiments, a 3x3 edge operator is modified to a 2x2 edge operator to derive the intra prediction mode in DIMD. The horizontal and vertical filters of the 2x2 edge operator are defined as follows:

[0128] In some embodiments, instead of deriving intra prediction mode with DIMD, intra prediction mode of the neighbouring block is used to generate the intra prediction block. In some embodiments, more neighboring blocks are checked for available motion information to generate inter subblock. The search positions for available motion information are expanded as follows: (1) For subblocks on the top boundary: In addition to the above block, the blocks to its left and right are also checked. (2) For subblocks on the left boundary: In addition to the left block, the blocks above and below are also checked. To reduce the complexity and enhance the robustness against noises, the subblock-based IPM derivation process may be executed combinedly when adjacent subblocks have same intra prediction mode.

[0129] In some embodiments, to addresses the discontinuities between two non-inter coded blocks, the intra OBMC is applied to top and left boundaries of the current block as follows: (1) For luma component, both the current block and the neighboring block are coded by BV modes, and the current block is coded by a BV mode and the neighboring block is coded by a non-BV intra mode. (2) For chroma components, the current block is coded by a CCP mode and the neighboring block is coded by a non-CCP and non-BV mode. The BV mode includes IBC mode and intra TMP mode for luma and DBV mode for chroma.

[0130] For 4: 2: 0 color format, the intra OBMC is performed on 4x4 sub-block level for luma and 2x2 sub-block level for chroma. If intra OBMC is applied, each sub-block on the top and left boundaries within the current block is blended with a predictor generated by the information of the neighboring block. If the neighboring block is coded by a BV mode, the BV information (includes BV, fusion parameters, LIC parameters etc. ) is used to generate the predictor. If the neighboring block is coded by a non-BV intra mode, an intra prediction mode derived by applying DIMD method on the adjacent reconstructed samples is used to generate the predictor. In some embodiments, the blending weights for intra OBMC are identical to those used in inter OBMC when template matching-based OBMC is not applied. In some embodiments, intra OBMC described herein is only applied to camera-captured sequences.

[0131] J. Inner Block Smoothing in OBMC

[0132] In some embodiments, inner subblock OBMC is performed between intra overlapping region and inter overlapping region to eliminate the discontinuity inside current block. For example, inner subblock OBMC blending in vertical lines is performed to reduce the boundary artifact in FIG. 14. The inner subblock OBMC blending method can be always applied or conditionally applied when there are intra overlapping region and inter overlapping region inside current block.

[0133] In some embodiments, boundary smoothing filter is performed between intra overlapping region and inter overlapping region. The boundary smoothing filter could be deblocking filter or SAO filter or bilateral matching filter. The boundary smoothing filter method can be always applied or conditionally applied when there are intra overlapping region and inter overlapping region inside current block.

[0134] K. Similarity Check between DIMD and neighboring intra mode

[0135] In some embodiments, when DIMD is utilized to generate overlapping region, similarity check is performed to ensure the similar intra prediction mode between overlapping region and neighboring intra predictor. For example, the mode difference between the decoder-side derived intra prediction mode and neighboring intra mode should be within a threshold, or the mode angle is within a threshold, or the mode is in the same dimension.

[0136] In some embodiments, boundary matching cost between overlapping region and neighboring intra predictor is calculated. If the boundary matching cost is larger than or equal to a threshold, overlapping region is determined to be dissimilar.

[0137] In some embodiments, when neighboring subblocks are consecutive intra-coded subblocks, one or more neighboring intra-coded subblocks can be combined to perform decoder-side derived intra prediction method to jointly determine one or multiple subblocks’ intra prediction mode.

[0138] In some embodiments, when neighboring subblocks are consecutive intra-coded subblocks, the neighboring intra-coded subblocks will determine each subblock’s intra prediction mode separately. That is, decoder-side intra prediction mode method is performed at each subblock separately.

[0139] In some embodiments, when neighboring subblocks are consecutive intra-coded subblocks, one or more neighboring intra-coded subblocks will determine intra prediction mode jointly according to some constraints, for example, same intra prediction mode type (intra prediction mode type being e.g., MIP, DIMD, TIMD) . III. Adaptive Process Order for OBMC

[0140] OBMC may be performed after the final predictor is formed by one or more prediction modes. For example, two GPM partitions may form a final predictor and OBMC is performed on the final predictor afterwards. For another example, for a bi-predicted block, two uni-predictors are generated and blended before OBMC is applied on the blended final predictor. However, this process order of (i) generating predictors, (ii) fusing predictors into a final predictor, and then (iii) applying OBMC on the final predictor may not be suitable for some video content. For instance, for a GPM predicted block, OBMC may be used to refine the CU boundary predictor but may destroy the partitioning angle near the CU boundary predictor. For another example, for a bi-predicted block, if BCW is enabled, the selected BCW index may be suitable for the current block’s content but can be sub-optimal if OBMC is applied afterwards. Thus, some embodiments of the disclosure provide video coding methods in which OBMC predictor blending process order may be adaptively changed according to some conditions, conditions such as prediction mode information, uni-prediction or bi-prediction, LIC, BCW, …, etc.

[0141] In some embodiments, OBMC is first carried out on block (CU) boundaries, and is then carried out on subblock boundaries. In some embodiments, this processing order is swapped such that OBMC is applied on the subblock boundaries (if they are present within the CU) , and then apply OBMC on CU boundaries. CU-boundary OBMC may be applied firstly to refine current predictor boundary before the subblock-boundary OBMC is subsequently applied to refine current predictor internal boundary if conditions are met. However, doing so may strongly smooth block boundary and to weakly smooth internal subblock boundary since reduced (refined) block boundary information is later used to refine internal subblocks. It could be sub-optimal to various video content or subblock mode since subblock boundary edge may still exist. Thus, in some embodiments, OBMC boundary processing order may be adaptively changed according to some conditions (e.g., prediction mode information, uni-prediction or bi-prediction, LIC, BCW, GPM, …etc. ) to determine e.g., whether OBMC should be applied on sub-block level before block level or vice versa.

[0142] When the current block is coded by inter prediction mode or IBC prediction mode or IntraTMP prediction mode, OBMC can be performed to refine block boundary and subblock block boundary of the current inter prediction or current IBC predictor or current IntraTMP predictor. In some embodiments, OBMC process order may be adaptively changed at predictor fusion according to some conditions.

[0143] In some embodiments, when the current block or current subblock is coded by inter prediction mode or neighboring block or neighboring subblock is coded by inter prediction mode, the order of OBMC and predictor blending may be pre-defined or adaptively changed according to some prediction modes, including but not limited to, combined inter-intra prediction (CIIP) , multi-hypothesis prediction (MHP) , GPM, bi-prediction, BCW, interCCP, interCCCM, affine mode, affine related mode, bi-predictive GPM. The affine related mode can include but not limit to, affine GPM, affine DMVR, affine MMVD.

[0144] For another example, when current block or current subblock is coded by IBC or IntraTMP prediction mode or neighboring block or neighboring subblock is coded by IBC or IntraTMP prediction mode, the order of OBMC and predictor blending can be pre-defined or adaptively changed according to some prediction modes, including but not limited to, IBC-GPM, IBC-GPM related modes, IBC-CIIP, bi-prediction IBC, IntraTMP fusion. IBC-GPM related modes can be GPM-like modes that use one or more block vector to get partitions and blend one or more partitions to form final predictor.

[0145] In some embodiments, some syntax or flags or index can be signaled to indicate the process order at predictor fusion, for example, flag at SPS-level or PPS-level or picture header level or slice header level or CTU level or block level.

[0146] In some embodiments, the order of OBMC and predictor blending can be adaptively changed according to some conditions, for example, prediction modes. The order can be fixed according to the pre-defined conditions or be determined according to signaled flag or syntax elements.

[0147] In some embodiments, OBMC can always be applied to each predictor accordingly before the final predictor is blended according to some conditions, e.g., prediction mode. In some embodiments, the final predictor can always be generated by fusing one or more inter predictor and then OBMC can be applied to final predictor for refinement according to some conditions, for example, prediction mode. In some embodiments, when OBMC is applied to one or more predictors, weightings or blending lines or blending rules or adaptive blending decision in OBMC process can be different in one or more predictors.

[0148] A. OBMC Processing Order for Combined Inter-Intra Prediction (CIIP)

[0149] In some embodiments, for combined inter-intra prediction (CIIP) , the order of OBMC and inter-intra combined fusion in CIIP can be adaptively changed. For example, in some embodiments, when current block is determined to perform CIIP, current inter predictor can be firstly combined with intra reconstruction samples and then OBMC can be applied to refine inter-intra combined predictor.

[0150] In some embodiments, when OBMC is applied to an inter-intra combined predictor, OBMC process can be performed in reshaped domain. In some embodiments, when OBMC is applied to inter-intra combined predictor, OBMC process can be performed in an original domain. In some embodiments, CIIP fusion and OBMC blending process can be all performed in a reshaped domain. In some embodiments, CIIP fusion and OBMC blending process can be all performed in original domain.

[0151] In some embodiments, the order of OBMC and CIIP process is determined according to predictor difference. A pseudo intra predictor can be generated using neighboring intra reconstruction samples. The predictor difference between the current inter predictor and the generated intra predictor can be calculated and if the difference is smaller than or equal to a threshold, CIIP process can perform firstly followed by OBMC process; otherwise, OBMC can be carried out firstly followed by CIIP process. For example, when OBMC is applied to inter-intra combined predictor, the blending weights of OBMC can be weaker compared to original OBMC weightings, as shown in following equations: Row0 = (29*CurrTop [i] + 3*NeighTop [i] + 16)  / 32 Row1 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32 Row2 = (31*CurrTop [i] + 1*NeighTop [i] + 16)  / 32

[0152] B. OBMC Processing Order for Multi-Hypothesis Prediction (MHP)

[0153] In some embodiments, the order of OBMC and hypothesis blending in MHP can be adaptively changed. For example, when current block is determined to perform MHP, one or more hypotheses can be firstly applied OBMC and then one or more hypotheses can be blended to generate final predictor.

[0154] In some embodiments, the order of OBMC and MHP process is determined according to predictor difference. For those one or more multi-hypotheses, one or more predictor difference between those one or more multi-hypotheses can be calculated and if any of the difference is smaller than or equal to a threshold, MHP process can perform firstly followed by OBMC process; otherwise, OBMC can be carried out firstly followed by MHP process. In some embodiments, when OBMC is applied to one or more multi-hypotheses in MHP, the blending weights of OBMC can be weaker compared to original OBMC weightings, as shown in following equations: Row0 = (29*CurrTop [i] + 3*NeighTop [i] + 16)  / 32 Row1 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32 Row2 = (31*CurrTop [i] + 1*NeighTop [i] + 16)  / 32

[0155] C. OBMC Processing Order for Bi-Prediction

[0156] In some embodiments, the order of OBMC and bi-prediction blending can be adaptively changed. For example, when current block is coded in bi-prediction, one or more uni-predictors can be firstly applied OBMC and then one or more uni-predictors can be blended to generate final predictor.

[0157] In some embodiments, the order of OBMC and bi-prediction blending process is determined according to predictor difference. For those one or more predictors for bi-prediction, one or more predictor difference between those one or more predictors for bi-prediction can be calculated and if any of the difference is smaller than or equal to a threshold, MHP process can perform firstly followed by OBMC process; otherwise, OBMC can be carried out firstly followed by bi-prediction blending process. In some embodiments, when OBMC is applied to one or more predictors in bi-prediction, the blending weights of OBMC can be weaker compared to original OBMC weightings, as shown in following equations: Row0 = (29*CurrTop [i] + 3*NeighTop [i] + 16)  / 32 Row1 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32 Row2 = (31*CurrTop [i] + 1*NeighTop [i] + 16)  / 32

[0158] D. OBMC Processing Order for BCW

[0159] In some embodiments, the order of OBMC and BCW blending can be adaptively changed. For example, when current block is coded by BCW index, one or more predictors can be firstly applied OBMC and then one or more predictors can be blended according to BCW index to generate final predictor.

[0160] In some embodiments, the order of OBMC and BCW blending process is determined according to predictor difference. For those one or more predictors in BCW process, one or more predictor difference between those one or more predictors can be calculated and if any of the difference is smaller than or equal to a threshold, predictors process can perform firstly followed by OBMC process; otherwise, OBMC can be carried out firstly followed by BCW process. For example, when OBMC is applied to one or more predictors in BCW, the blending weights of OBMC can be weaker compared to original OBMC weightings, as shown in following equations: Row0 = (29*CurrTop [i] + 3*NeighTop [i] + 16)  / 32 Row1 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32 Row2 = (31*CurrTop [i] + 1*NeighTop [i] + 16)  / 32

[0161] E. OBMC Processing Order for InterCCP

[0162] In some embodiments, the order of OBMC and interCCP blending is adaptively changed. In another example, when current block is coded by interCCP prediction mode, one or more interCCP predictors can be firstly applied OBMC and then one or more interCCP predictors can be blended to generate final predictor. In another example, when current block is coded by interCCP prediction mode, one or more interCCP predictors can be firstly blended to generate final predictor and then OBMC can be applied to refine the final predictor.

[0163] In some embodiments, the order of OBMC and interCCP blending process is determined according to predictor difference. For those one or more interCCP predictors, one or more predictor difference between those one or more predictors can be calculated and if any of the difference is smaller than or equal to a threshold, interCCP blending process can perform firstly followed by OBMC process; otherwise, OBMC can be carried out firstly followed by interCCP blending process. For example, when OBMC is applied to one or more predictors in interCCP, the blending weights of OBMC can be weaker compared to original OBMC weightings, as shown in following equations: Row0 = (29*CurrTop [i] + 3*NeighTop [i] + 16)  / 32 Row1 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32 Row2 = (31*CurrTop [i] + 1*NeighTop [i] + 16)  / 32

[0164] F. OBMC Processing Order for InterCCCM

[0165] In some embodiments, the order of OBMC and interCCCM blending can be adaptively changed. For example, when current block is coded by interCCCM prediction mode, one or more interCCCM predictors can be firstly applied OBMC and then one or more interCCCM predictors can be blended to generate final predictor. In another example, when current block is coded by interCCCM prediction mode, one or more interCCCM predictors can be firstly blended to generate final predictor and then OBMC can be applied to refine the final predictor.

[0166] In some embodiments, the order of OBMC and interCCCM blendingprocess is determined according to predictor difference. For those one or more predictors, one or more predictor difference between those one or more interCCCM predictors can be calculated and if any of the difference is smaller than or equal to a threshold, interCCCM blending process can perform firstly followed by OBMC process; otherwise, OBMC can be carried out firstly followed by interCCCM blending process.

[0167] In some embodiments, when OBMC is applied to one or more predictors in interCCCM, the blending weights of OBMC can be weaker compared to original OBMC weightings, as shown in following equations: Row0 = (29*CurrTop [i] + 3*NeighTop [i] + 16)  / 32 Row1 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32 Row2 = (31*CurrTop [i] + 1*NeighTop [i] + 16)  / 32

[0168] G. OBMC Processing Order for GPM related mode:

[0169] GPM related modes can be but not limited to, inter GPM mode, GPM-MMVD, GPM-TM, regression-based GPM, adaptive GPM blending bi-predictive GPM with DMVR enabled, GPM-affine, GPM affine with TM, affine GPM with DMVR enabled.

[0170] In some embodiments, when current block or neighboring block is coded by GPM related mode, GPM partition blending can perform in between OBMC process. For example, CU boundary OBMC can be carried out firstly at one or more GPM partitions. Then GPM partition blending can be carried out to form GPM blended predictor. After that, subblock boundary OBMC can perform at GPM blended predictor.

[0171] In some embodiments, when current block or neighbor block is coded by GPM related mode, OBMC can perform before GPM partition blending or after GPM partition blending and OBMC blending weightings or blending lines can be different when it is carried out before GPM partition blending or after GPM partition blending.

[0172] In some embodiments, OBMC process may be performed before GPM related mode partition blending. OBMC blending weightings and blending lines can further consider GPM blending weightings, blending lines, or blending positions or blending angle. For example, OBMC can use weaker weightings before GPM related mode partition blending.

[0173] In some embodiments, OBMC process may be performed after GPM related mode partition blending. OBMC blending weightings and blending lines can further consider GPM partition blending weightings, blending lines, or blending positions or blending angle. For example, OBMC can use weaker weightings after GPM related mode partition blending.

[0174] In some embodiments, the order of OBMC process and GPM related mode partition blending can be adaptively changed according to some conditions, for example, partition angle or MV difference between multiple partitions or MV difference between current predictor (predictor of the current block) and neighboring predictor or sample difference between multiple partitions or between current predictor and neighboring predictor.

[0175] In some embodiments, when the current block or a neighboring block is coded by GPM related mode, OBMC process can perform one or multiple times with different weightings or different blending lines. For example, subblock boundary OBMC can perform at one or more GPM partitions firstly before GPM partition blending. After GPM partition blending, subblock boundary OBMC can perform again to refine blended GPM predictor.

[0176] In some embodiments, when current block or neighbor block is coded by GPM related mode, DMVR mode can be performed firstly but OBMC can perform using unrefined MV or intermediate refined MV or refined MV at one or more GPM partitions or blended GPM predictor. In some embodiments, when current block or neighbor block is coded by GPM related mode, OBMC can perform before GPM partition blending or after GPM partition blending using unrefined MV or intermediate refined MV or refined MV at one or more GPM partitions or blended GPM predictor.

[0177] In some embodiments, when current block or neighboring block is coded by affine GPM mode, affine GPM partition blending can be carried out firstly and then OBMC can perform afterwards.

[0178] In some embodiments, when adaptive GPM blending isapplied to current block or neighboring block, OBMC blending weightings or blending lines can be adjusted accordingly. For example, when adaptive GPM blending uses stronger weightings, OBMC blending weightings can be weaker or blending lines can be fewer. In some embodiments, when adaptive GPM blending is applied to current block or neighboring block, OBMC can be disabled accordingly.

[0179] In some embodiments, when adaptive GPM blending is applied to current block or neighboring block, OBMC may be performed before GPM partition blending accordingly. In some embodiments, when adaptive GPM blending is applied to current block or neighboring block, OBMC can perform after GPM partition blending accordingly.

[0180] In some embodiments, when OBMC is performed at GPM related mode coded block, the blending weightings or the blending lines of OBMC process can be changed or different from original blending weightings or blending lines. When OBMC is performed on the current subblock, it is possible that there is GPM partition line lying inside current subblock. In this case, OBMC blending lines or blending weightings can be fewer or weaker since there is GPM partition line.

[0181] In some embodiments, when OBMC process is performed at GPM related mode coded block, one or more stored inter prediction information at current block can be used. For example, when current block is coded by GPM related mode, either inter prediction mode from partition 0 or inter prediction mode from partition 1 will be stored for the current block, but in OBMC process, either one of inter prediction mode information from partition 0 and 1 or both of them can be used in OBMC process.

[0182] For example, in some embodiments, the order between the OBMC process and the GPM related mode blending process is determined according to predictor difference. For those one or more GPM partitions, partition difference is calculated and if partition difference is smaller than or equal to a threshold, GPM related mode blending process may performed first and then followed by OBMC process; otherwise, OBMC process can be carried out firstly followed by GPM related mode blending process.

[0183] For example, when OBMC is applied to generated final predictor of GPM related prediction mode, the blending weights of OBMC can be stronger or more blending lines compared to original OBMC weightings, as shown in following equations: Row0 = (24*CurrTop [i] + 8*NeighTop [i] + 16)  / 32 Row1 = (26*CurrTop [i] + 6*NeighTop [i] + 16)  / 32 Row2 = (28*CurrTop [i] + 4*NeighTop [i] + 16)  / 32 Row3 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32 Row4 = (31*CurrTop [i] + 1*NeighTop [i] + 16)  / 32

[0184] For example, when OBMC is applied to generated final predictor of GPM related prediction mode, the blending weights of OBMC can be stronger compared to original OBMC weightings, as shown in following equations: Row0 = (24*CurrTop [i] + 8*NeighTop [i] + 16)  / 32 Row1 = (26*CurrTop [i] + 6*NeighTop [i] + 16)  / 32 Row2 = (28*CurrTop [i] + 4*NeighTop [i] + 16)  / 32 Row3 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32

[0185] In some embodiments, when the two GPM partitions are coded with non-affine inter, the GPM blending is carried out first, and then OBMC is applied on top of blended GPM samples. In some embodiments, OBMC is applied separately on top of each GPM partition, and blending is then applied on top of OBMC modified samples of the two partitions. Furthermore, if the corresponding partition contains subblock motion, OBMC is applied on those subblock boundaries as well.

[0186] H. OBMC Processing Order for affine DMVR

[0187] In one embodiment, when current block or neighboring block is coded by affine DMVR mode, unrefined subblock MV before DMVR refinement can be used in OBMC process.

[0188] In some embodiments, when current block or neighboring block is coded by affine DMVR mode, refined subblock MV after DMVR refinement can be used in OBMC process. In some embodiments, when current block or neighboring block is coded by affine DMVR mode, intermediate refined subblock MV after DMVR some refinement passes can be used in OBMC process. For example, in some embodiments, when neighboring block is coded by affine DMVR mode, unrefined subblock MV or intermediate refined subblock MV or refined subblock MV can be stored and later used in current block’s OBMC process. For another example, in some embodiments, when current block is coded by affine DMVR mode, unrefined subblock MV or intermediate refined subblock MV or refined subblock MV can be used in current block’s OBMC process.

[0189] In some embodiments, when the current block or its neighboring block is coded by affine DMVR mode, OBMC may be performed one or more times with different weightings or different blending lines. For example, the first time of OBMC process can be performed by using stronger weightings and unrefined subblock MV or intermediate refined subblock MV. Then the second time of OBMC process can be performed by using weaker weightings and intermediate refined subblock MV or refined subblock MV.

[0190] J. OBMC Processing Order for IBC or IntraTMP

[0191] In some embodiments, when the current block or neighboring block or neighboring subblock is coded by IBC or IntraTMP prediction mode, the final predictor can be generated by fusing one or more IBC or IntraTMP predictor and then OBMC can be applied to final predictor for refinement according to some conditions, for example, prediction mode.

[0192] IBC-GPM

[0193] In some embodiments, OBMC ordering is applied to blocks coded by IBC-GPM or GPM related mode in IBC blending process, e.g., a GPM coded block with one or more geometric partitions that is coded by a block vector of IBC or IntraTMP. FIG. 16 conceptually illustrates block vector of current block or subblock and neighboring subblock in IBC-GPM mode.

[0194] For IBC-GPM related modes, in some embodiments, the order of OBMC and IBC-GPM blending can be adaptively changed. For example, when current block is coded by IBC-GPM prediction mode, OBMC can be firstly performed at one or more IBC-GPM partitions and IBC-GPM blending can be performed to generate final predictor of IBC-GPM prediction mode. For another example, when current block is coded by IBC-GPM prediction mode, one or more IBC-GPM partitions can be firstly blended to generate final predictor of IBC-GPM prediction mode and then OBMC can be applied to refine final predictor.

[0195] In some embodiments, when current block or neighboring block is coded by IBC-GPM or GPM related mode in IBC mode, GPM partition blending may be performed in between OBMC processes. For example, CU boundary OBMC can be carried out firstly at one or more GPM partitions, then GPM partition blending can be carried out to form GPM blended predictor, after that, subblock boundary OBMC can be performed on the GPM blended predictor.

[0196] In some embodiments, when current block or neighbor block is coded by IBC-GPM or GPM related mode in IBC mode, OBMC can be performed before GPM partition blending or after GPM partition blending and OBMC blending weightings or blending lines can be different when it is carried out before GPM partition blending or after GPM partition blending.

[0197] In some embodiments, OBMC process may be performed before IBC-GPM or GPM related mode in IBC mode GPM partition blending. OBMC blending weightings and blending lines can further consider GPM blending weightings, blending lines, or blending positions or blending angle. For example, OBMC can use weaker weightings before GPM related mode partition blending.

[0198] In some embodiments, OBMC process may be performed after IBC-GPM or GPM related mode in IBC mode GPM partition blending. OBMC blending weightings and blending lines may further consider GPM partition blending weightings, blending lines, or blending positions or blending angle. For example, OBMC may use weaker weightings after IBC-GPM or GPM related mode in IBC GPM partition blending.

[0199] In some embodiments, the order of OBMC process and IBC-GPM or GPM related mode in IBC mode GPM partition blending may be adaptively changed according to some conditions, for example, partition angle or BV difference between multiple partitions or BV difference between current predictor and neighboring predictor or sample difference between multiple partitions or between current predictor and neighboring predictor.

[0200] In some embodiments, when current block or neighboring block is coded by IBC-GPM or GPM related mode in IBC mode, OBMC process can be performed one or multiple times with different weightings or different blending lines. For example, subblock boundary OBMC can be performed at one or more GPM partitions firstly before GPM partition blending. After GPM partition blending, subblock boundary OBMC can be performed again to refine blended GPM predictor.

[0201] In some embodiments, when current block or neighboring block is coded by IBC-GPM or GPM related mode in IBC mode, GPM partition blending can be carried out firstly and then OBMC can perform afterwards. In some embodiments, when OBMC is performed at IBC-GPM or GPM related mode in an IBC mode coded block, the blending weightings or the blending lines of OBMC process can be changed or different from original blending weightings or blending lines. For instance, as shown in FIG. 16, when OBMC is performed at a current subblock, it is possible that there is GPM partition line lying inside current subblock. In this case, OBMC blending lines or blending weightings can be fewer or weaker since there is GPM partition line.

[0202] In some embodiments, when OBMC process performs at IBC-GPM or GPM related mode in IBC mode coded block, one or more stored IBC prediction information at current block can be used. For example, when current block is coded by IBC-GPM or GPM related mode in IBC mode, either prediction mode from partition 0 or prediction mode from partition 1 will be stored at current block, but in OBMC process, either one of prediction mode information from partition 0 and 1 or both of them can be used in OBMC process.

[0203] For example, the order of OBMC process and IBC-GPM or GPM related mode in IBC blending process is determined according to predictor difference. For those one or more GPM partitions, partition difference is calculated and if partition difference is smaller than or equal to a threshold, GPM related mode blending process can perform firstly followed by OBMC process; otherwise, OBMC process can be carried out firstly followed by GPM related mode blending process. For example, in some embodiments, when OBMC is applied to generated final predictor of IBC-GPM or GPM related mode in IBC prediction mode, the blending weights of OBMC can be stronger or more blending lines compared to original OBMC weightings, as shown in following equations: Row0 = (24*CurrTop [i] + 8*NeighTop [i] + 16)  / 32 Row1 = (26*CurrTop [i] + 6*NeighTop [i] + 16)  / 32 Row2 = (28*CurrTop [i] + 4*NeighTop [i] + 16)  / 32 Row3 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32 Row4 = (31*CurrTop [i] + 1*NeighTop [i] + 16)  / 32

[0204] For example, when OBMC is applied to generated final predictor of IBC-GPM or GPM related mode in IBC prediction mode prediction mode, the blending weights of OBMC can be stronger compared to original OBMC weightings, as shown in following equations: Row0 = (24*CurrTop [i] + 8*NeighTop [i] + 16)  / 32 Row1 = (26*CurrTop [i] + 6*NeighTop [i] + 16)  / 32 Row2 = (28*CurrTop [i] + 4*NeighTop [i] + 16)  / 32 Row3 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32

[0205] IBC-CIIP

[0206] In some embodiments, OBMC may be applied to blocks that are coded by CIIP with an intra-coded partition being based on IBC or IntraTMP (IBC-intra) . In some embodiments, the order of OBMC and IBC-intra combined fusion in IBC-CIIP can be adaptively changed. For example, when current block is determined to perform IBC-CIIP, current IBC predictor can be firstly combined with intra reconstruction samples and then OBMC can be applied to refine IBC-intra combined predictor. In another example, current IBC predictor can be firstly refined by OBMC process and then refined IBC predictor can be combined with intra reconstruction samples. For another example, the BV difference between current predictor and neighboring predictor or sample difference between multiple partitions or between current predictor and neighboring predictor can be used to adaptively determine the order of OBMC process and IBC-CIIP blending.

[0207] In some embodiments, when OBMC is applied to IBC-intra combined predictor, OBMC process can be performed in reshaped domain. In some embodiments, when OBMC is applied to IBC-intra combined predictor, OBMC process can be performed in original domain. In some embodiments, IBC-CIIP fusion and OBMC blending process can be all performed in reshaped domain. In some embodiments, IBC-CIIP fusion and OBMC blending process can be all performed in original domain. In some embodiments, when OBMC is applied to IBC-intra combined predictor, domain selection can depend on slice type or signaling.

[0208] In some embodiments, when the current block or a neighboring block is coded by IBC-CIIP in IBC mode, CIIP blending can perform in between OBMC process. For example, CU boundary OBMC can be carried out firstly at IBC predictors. Then CIIP blending can be carried out to form IBC-CIIP blended predictor. After that, subblock boundary OBMC can be performed at IBC-CIIP predictor.

[0209] In some embodiments, when current block or neighbor block is coded by IBC-CIIP in IBC mode, OBMC may be performed before CIIP blending or after CIIP blending and OBMC blending weightings or blending lines can be different when it is carried out before CIIP blending or after CIIP blending. In some embodiments, OBMC process may be performed before IBC-CIIP blending.

[0210] In some embodiments, OBMC blending weightings and blending lines may further consider CIIP blending weightings, blending lines, or blending positions or blending angle. For example, OBMC may use weaker weightings before IBC-CIIP blending. In some embodiments, when OBMC is applied to generated final predictor of IBC-CIIP mode, the blending weights of OBMC can be stronger or more blending lines compared to original OBMC weightings, as shown in following equations: Row0 = (24*CurrTop [i] + 8*NeighTop [i] + 16)  / 32 Row1 = (26*CurrTop [i] + 6*NeighTop [i] + 16)  / 32 Row2 = (28*CurrTop [i] + 4*NeighTop [i] + 16)  / 32 Row3 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32 Row4 = (31*CurrTop [i] + 1*NeighTop [i] + 16)  / 32

[0211] Bi-prediction IBC:

[0212] In some embodiments, the order of OBMC and bi-prediction IBC fusion can be adaptively changed. For example, when the current block is coded by bi-prediction IBC mode, OBMC can be firstly performed at one or more IBC predictors and one or more IBC predictors blending can be performed to generate final predictor of bi-prediction IBC mode. For another example, when current block is coded by bi-prediction IBC mode, one or more IBC predictors can be firstly blended to generate final predictor of bi-prediction IBC mode and then OBMC can be applied to refine final predictor.

[0213] In some embodiments, when current block or neighboring block is coded by bi-prediction IBC mode, bi-predictor blending can be performed in between OBMC process. For example, CU boundary OBMC can be carried out firstly at IBC predictors, then bi-predictor blending can be carried out to form bi-prediction IBC blended predictor. After that, subblock boundary OBMC can be performed at bi-prediction IBC predictor

[0214] In some embodiments, when the current block or a neighbor block is coded by bi-prediction IBC in IBC mode, OBMC can perform before bi-prediction blending or after bi-prediction blending and OBMC blending weightings or blending lines can be different when it is carried out before bi-prediction blending or after bi-prediction blending. In some embodiments, OBMC process can always be performed before bi-prediction IBC blending. OBMC blending weightings and blending lines may further consider bi-prediction IBC blending weightings, blending lines, or blending positions or blending angle. For example, OBMC may use weaker weightings before bi-prediction IBC blending.

[0215] In some embodiments, the order of OBMC process and bi-prediction IBC blending can be adaptively changed according to some conditions, for example, BV difference between current predictor and neighboring predictor or sample difference between multiple partitions or between current predictor and neighboring predictor. In some embodiments, when OBMC is applied to the generated final predictor of bi-prediction IBC mode, the blending weights of OBMC may be stronger or more blending lines compared to original OBMC weightings, as shown in following equations: Row0 = (24*CurrTop [i] + 8*NeighTop [i] + 16)  / 32 Row1 = (26*CurrTop [i] + 6*NeighTop [i] + 16)  / 32 Row2 = (28*CurrTop [i] + 4*NeighTop [i] + 16)  / 32 Row3 = (30*CurrTop [i] + 2*NeighTop [i] + 16)  / 32 Row4 = (31*CurrTop [i] + 1*NeighTop [i] + 16)  / 32

[0216] IntraTMP fusion:

[0217] The IntraTMP fusion can be template predictor fusion or BV candidate fusion. In one example, the order of OBMC and IntraTMP fusion can be adaptively changed. In another example, when current block is coded by IntraTMP fusion mode, OBMC can be firstly performed at one or more IntraTMP predictor or BV candidates and IntraTMP fusion can be performed to generate final predictor of IntraTMP fusion mode. For another example, when current block is coded by IntraTMP fusion mode, one or more IntraTMP predictors or BV candidates can be firstly blended to generate final predictor of IntraTMP fusion mode and then OBMC can be applied to refine final predictor.

[0218] In some embodiments, when the current block or a neighboring block is coded by IntraTMP fusion mode, IntraTMP fusion can perform in between OBMC process. For example, CU boundary OBMC can be carried out firstly at IntraTMP predictors. Then IntraTMP fusion can be carried out to form IntraTMP fused predictor. After that, subblock boundary OBMC can be performed at IntraTMP fusion predictor.

[0219] In some embodiments, when the current block or a neighbor block is coded by IntraTMP fusion mode, OBMC can be performed before IntraTMP fusion or after IntraTMP fusion and OBMC blending weightings or blending lines can be different when it is carried out before IntraTMP fusion or after IntraTMP fusion. In some embodiments, OBMC process can always perform before IntraTMP fusion. OBMC blending weightings and blending lines may further consider IntraTMP fusion weightings, blending lines, or blending positions or blending angle. For example, OBMC can use weaker weightings before IntraTMP fusion.

[0220] In some embodiments, the order of OBMC process and IntraTMP fusion can be adaptively changed according to some conditions, for example, BV difference between current predictor and neighboring predictor or sample difference between multiple partitions or between current predictor and neighboring predictor.

[0221] K. Adaptive Boundary Processing Order in OBMC

[0222] In one embodiment, OBMC boundary process order can be adaptively changed according to some conditions, for example, MV difference or BV difference or subblock MV difference or subblock BV difference or prediction mode or signaled flag or predictor difference between current predictor and neighboring predictor or motion information.

[0223] When the current block is coded by inter prediction mode or IBC prediction mode or IntraTMP prediction mode, OBMC can be performed to refine block boundary and subblock block boundary of current inter prediction or current IBC predictor or current IntraTMP predictor. In some embodiments, OBMC boundary process order at predictor fusion may be adaptively changed according to some conditions, e.g., MV difference, BV difference, subblock MV difference, subblock BV difference, prediction mode, signaled flag, predictor difference between current predictor and neighboring predictor or motion information, or some other conditions. In some embodiments, some syntax or flags or index may be signaled to indicate the boundary process order, for example, flag at SPS-level or PPS-level or picture header level or slice header level or CTU level or block level.

[0224] In some embodiments, when the current block is coded in subblock mode (affine, DMVR, …) , OBMC boundary process order can be always subblock boundary firstly and then CU-boundary secondly. In some embodiments, CU boundary OBMC and subblock boundary OBMC can be enabled or disabled separately. That is, each boundary may decide to enable OBMC or not according to some conditions, for example, MV difference or BV difference or subblock MV difference or subblock BV difference or prediction mode or signaled flag or predictor difference between current predictor and neighboring predictor or motion information.

[0225] In some embodiments, when the current block is coded in subblock mode (affine, DMVR, …) , OBMC boundary process order may be adaptively changed according to some conditions, e.g., MV difference, BV difference, subblock MV difference, subblock BV difference, prediction mode, signaled flag, predictor difference between current predictor and neighboring predictor or motion information, or some other conditions.

[0226] L. MV Usage in GPM and OBMC

[0227] The video coder may use either MV from either partition 0 or partition 1 in OBMC process in GPM prediction mode. However, doing so is not optimal and because it lacks half of motion information during OBMC process. In some embodiments, more motion information or block vector information are considered during OBMC process for GPM prediction mode.

[0228] In some embodiments, when the current block or a neighboring block is coded by GPM prediction or GPM related prediction mode, including inter GPM, bi-predictive GPM, affine GPM, IBC-GPM, more than one motion information or block vector information can be used in OBMC process. For example, in some embodiments, for inter GPM, both MVs from partition 0 and partition 1 can be used in OBMC process. For another example, in some embodiments, when the current block is coded by bi-predictive GPM mode, both bi-prediction MVs from partition 0 and partition 1 can be used in OBMC process.

[0229] Any of the foregoing proposed methods can be implemented in encoders and / or decoders. For example, any of the proposed methods can be implemented in predictor derivation module of an encoder, and / or a predictor derivation module of a decoder. Alternatively, any of the proposed methods can be implemented as a circuit coupled to the predictor derivation module of the encoder and / or the predictor derivation module of the decoder, so as to provide the information needed by the predictor derivation module. IV. Example Video Encoder

[0230] FIG. 17 illustrates an example video encoder 1700 that may use OBMC to encode pixel blocks. As illustrated, the video encoder 1700 receives input video signal from a video source 1705 and encodes the signal into bitstream 1795. The video encoder 1700 has several components or modules for encoding the signal from the video source 1705, at least including some components selected from a transform module 1710, a quantization module 1711, an inverse quantization module 1714, an inverse transform module 1715, an intra-picture estimation module 1724, an intra-prediction module 1725, a motion compensation module 1730, a motion estimation module 1735, an in-loop filter 1745, a reconstructed picture buffer 1750, a MV buffer 1765, and a MV prediction module 1775, and an entropy encoder 1790. The motion compensation module 1730 and the motion estimation module 1735 are part of an inter-prediction module 1740. The intra-prediction module 1725 and the intra-prediction estimation module 1724 are part of a current picture prediction module 1720, which uses current picture reconstructed samples as reference samples for prediction of the current block.

[0231] In some embodiments, the modules 1710 –1790 are modules of software instructions being executed by one or more processing units (e.g., a processor) of a computing device or electronic apparatus. In some embodiments, the modules 1710 –1790 are modules of hardware circuits implemented by one or more integrated circuits (ICs) of an electronic apparatus. Though the modules 1710 –1790 are illustrated as being separate modules, some of the modules can be combined into a single module.

[0232] The video source 1705 provides a raw video signal that presents pixel data of each video frame without compression. A subtractor 1708 computes the difference between the raw video pixel data of the video source 1705 and the predicted pixel data 1713 from the motion compensation module 1730 or intra-prediction module 1725 as prediction residual 1709. The transform module 1710 converts the difference (or the residual pixel data or residual signal 1708) into transform coefficients (e.g., by performing Discrete Cosine Transform, or DCT) . The quantization module 1711 quantizes the transform coefficients into quantized data (or quantized coefficients) 1712, which is encoded into the bitstream 1795 by the entropy encoder 1790.

[0233] The inverse quantization module 1714 de-quantizes the quantized data (or quantized coefficients) 1712 to obtain transform coefficients 1718, and the inverse transform module 1715 performs inverse transform on the transform coefficients 1718 to produce reconstructed residual 1719. The reconstructed residual 1719 is added with the predicted pixel data 1713 to produce reconstructed pixel data 1717. In some embodiments, the reconstructed pixel data 1717 is temporarily stored in a line buffer 1727 (or intra prediction buffer) for intra-picture prediction and spatial MV prediction. The reconstructed pixels are filtered by the in-loop filter 1745 and stored in the reconstructed picture buffer 1750. In some embodiments, the reconstructed picture buffer 1750 is a storage external to the video encoder 1700. In some embodiments, the reconstructed picture buffer 1750 is a storage internal to the video encoder 1700.

[0234] The intra-picture estimation module 1724 performs intra-prediction based on the reconstructed pixel data 1717 to produce intra prediction data. The intra-prediction data is provided to the entropy encoder 1790 to be encoded into bitstream 1795. The intra-prediction data is also used by the intra-prediction module 1725 to produce the predicted pixel data 1713.

[0235] The motion estimation module 1735 performs inter-prediction by producing MVs to reference pixel data of previously decoded frames stored in the reconstructed picture buffer 1750. These MVs are provided to the motion compensation module 1730 to produce predicted pixel data.

[0236] Instead of encoding the complete actual MVs in the bitstream, the video encoder 1700 uses MV prediction to generate predicted MVs, and the difference between the MVs used for motion compensation and the predicted MVs is encoded as residual motion data and stored in the bitstream 1795.

[0237] The MV prediction module 1775 generates the predicted MVs based on reference MVs that were generated for encoding previously video frames, i.e., the motion compensation MVs that were used to perform motion compensation. The MV prediction module 1775 retrieves reference MVs from previous video frames from the MV buffer 1765. The video encoder 1700 stores the MVs generated for the current video frame in the MV buffer 1765 as reference MVs for generating predicted MVs.

[0238] The MV prediction module 1775 uses the reference MVs to create the predicted MVs. The predicted MVs can be computed by spatial MV prediction or temporal MV prediction. The difference between the predicted MVs and the motion compensation MVs (MC MVs) of the current frame (residual motion data) are encoded into the bitstream 1795 by the entropy encoder 1790.

[0239] The entropy encoder 1790 encodes various parameters and data into the bitstream 1795 by using entropy-coding techniques such as context-adaptive binary arithmetic coding (CABAC) or Huffman encoding. The entropy encoder 1790 encodes various header elements, flags, along with the quantized transform coefficients 1712, and the residual motion data as syntax elements into the bitstream 1795. The bitstream 1795 is in turn stored in a storage device or transmitted to a decoder over a communications medium such as a network.

[0240] The in-loop filter 1745 performs filtering or smoothing operations on the reconstructed pixel data 1717 to reduce the artifacts of coding, particularly at boundaries of pixel blocks. In some embodiments, the filtering or smoothing operations performed by the in-loop filter 1745 include deblock filter (DBF) , sample adaptive offset (SAO) , and / or adaptive loop filter (ALF) . In some embodiments, luma mapping chroma scaling (LMCS) is performed before the loop filters.

[0241] FIG. 18 illustrates portions of the video encoder 1700 that implement OBMC with adaptive processing order. Specifically, the figure illustrates the components of the video encoder 1700 involved in generating the predicted pixel data 1713 using OBMC. As illustrated, prediction modules 1810 (including the inter-prediction module 1740, the intra-prediction module 1720, and a BV prediction module) retrieve reference samples from the reconstructed picture buffer 1750 and motion information from the MV buffer 1765 to generate one or more predictors 1812 (predictors 1 through N) for the current block. A blending module 1820 combines / fuses / blends the multiple predictors 1812 into a final predictor 1813 for the current block.

[0242] The predictors 1812 are generated according to one or more coding tools (e.g., bi-prediction, GPM, CIIP, IBC, intra prediction, DIMD, etc. ) that is / are specified by the entropy encoder 1790. The prediction modules 1810 may generate the multiple predictors 1812 for the current block by inter prediction, intra prediction, or current picture prediction (e.g., IBC, intraTMP) . Each of the multiple predictors 1812 may correspond to a portion of the current block (e.g., a subblock, a partition) or the entirety of the current block.

[0243] The multiple predictors 1812 may be refined by a first OBMC process 1815 ( “OBMC1” ) . For each predictor, the OBMC process 1815 provides overlap samples based on neighboring predictive information (e.g., motion information, intra prediction mode, block vector of a block or subblock neighboring the portion corresponding to the predictor) . The overlap samples are then blended with boundary samples of the multiple predictors. When the first OBMC process 1815 is enabled, the refined predictors are used by the blending module 1820 to generate the final predictor 1813, otherwise the multiple predictors 1812 are used to generate the final predictor 1813 without OBMC refinement.

[0244] The final predictor 1813 may also be refined by a second OBMC process 1825 ( “OBMC2” ) . The second OBMC process 1825 provides overlap samples based on predictive information (e.g., motion information, intra prediction mode, block vector) of neighboring blocks of the current block. The overlap samples are then blended with boundary samples of the final predictors 1813 to refine the final predictor. When the second OBMC process 1825 is enabled, the refined final predictor is used as the predicted pixel data 1713, otherwise the final predictor 1813 is used as the predicted pixel data 1713.

[0245] Whether the first OBMC process 1815 and / or the second OBMC process 1825 are performed is determined by the entropy encoder 1790 based on certain conditions, such as which coding tools are used to code the current block, or by explicit signaling in the bitstream 1795. Thus, the processing order of OBMC relative to the prediction operations may be adaptively controlled.

[0246] FIG. 19 conceptually illustrates a process 1900 for encoding a block of pixels using OBMC with adaptive processing order. In some embodiments, one or more processing units (e.g., a processor) of a computing device implementing the encoder 1700 performs the process 1900 by executing instructions stored in a computer readable medium. In some embodiments, an electronic apparatus implementing the encoder 1700 performs the process 1900.

[0247] The encoder receives (at block 1910) data to be encoded as a current block of pixels in a current picture. The encoder generates (at block 1920) a first predictor for a first portion or entirety of the current block. The encoder generates (at block 1930) a second predictor for a second portion or entirety of the current block. The first and second portions may be geometric partitions, or subblocks, or another type of partitions of the current block. The first and second portions may also be the entirety of the current block.

[0248] In some embodiments, the first and second predictors may be generated using first and second motion information associated with the first and second portions of the current block, respectively. For example, the first and second predictors may be two predictors of the current block generated using two motion vectors of bi-prediction. The first predictor (or the second predictor) may also be generated by a block vector referencing samples of the current picture.

[0249] The encoder determines (at block 1935) whether to perform OBMC on the first and second predictors, based on certain first conditions. If OBMC is not to be performed, the process proceeds to block 1940 without performing OBMC on the first and second predictors. If OBMC is to be performed, the process performs (at block 1938) OBMC on the first and second predictors before proceeding to block 1940, specifically by refining the first and second predictors along their respective boundaries using overlap samples derived from predictive information neighboring the first and second portions or entireties. The predictive information neighboring the first (or second) portion or entirety may include motion information associated with a block or subblock that is adjacent to (or neighboring) the first (or second) portion or entirety. The video encoder may refine the first (or second) predictor by weighted blending along boundaries of the first portion with an inter-predictor of a block neighboring the first portion, or with an intra predictor that is generated based on neighboring reconstructed samples by using DIMD process to identify an intra prediction mode or direction, or with a current picture predictor that is generated based on a block vector of a neighboring block.

[0250] The encoder generates (at block 1940) a final predictor of the current block based on the first and second predictors. The encoder determines (at block 1945) whether to perform OBMC on the final predictor based on certain second conditions. If no, the process proceeds to block 1950. If yes, the process performs (at block 1948) OBMC on the final predictor before proceeding to block 1950, specifically by refining the final predictor along boundaries of the current block using overlap samples derived from predictive information neighboring the current block.

[0251] The first and second conditions used by the encoder to determine whether to perform OBMC at blocks 1935 and 1945 may be set based on a prediction mode or coding tool of the current block (e.g., bi-prediction, GPM, CIIP, IBC, intra prediction, DIMD, etc. ) The first and second conditions may also be set based on syntax elements explicitly signaled in a coded video, at e.g., SPS level, PPS level, picture header, slice header, CTU, block. Thus, for some embodiments, the settings of the first and second conditions effectively determine when and where to perform OBMC in the generation of the various predictors, thereby establishing the processing order adaptively.

[0252] The encoder encodes (at block 1950) the current block by using the final predictor. V. Example Video Decoder

[0253] In some embodiments, an encoder may signal (or generate) one or more syntax element in a bitstream, such that a decoder may parse said one or more syntax element from the bitstream.

[0254] FIG. 20 illustrates an example video decoder 2000 that may use OBMC to decode pixel blocks. As illustrated, the video decoder 2000 is an image-decoding or video-decoding circuit that receives a bitstream 2095 and decodes the content of the bitstream into pixel data of video frames for display. The video decoder 2000 has several components or modules for decoding the bitstream 2095, including some components selected from an inverse quantization module 2014, an inverse transform module 2015, an intra-prediction module 2025, a motion compensation module 2030, an in-loop filter 2045, a decoded picture buffer 2050, a MV buffer 2065, a MV prediction module 2075, and a parser 2090. The motion compensation module 2030 is part of an inter-prediction module 2040. The intra-prediction module 2025 is part of a current picture prediction module 2020, which uses current picture reconstructed samples as reference samples for prediction of the current block.

[0255] In some embodiments, the modules 2014 –2090 are modules of software instructions being executed by one or more processing units (e.g., a processor) of a computing device. In some embodiments, the modules 2014 –2090 are modules of hardware circuits implemented by one or more ICs of an electronic apparatus. Though the modules 2014 –2090 are illustrated as being separate modules, some of the modules can be combined into a single module.

[0256] The parser 2090 (or entropy decoder) receives the bitstream 2095 and performs initial parsing according to the syntax defined by a video-coding or image-coding standard. The parsed syntax element includes various header elements, flags, as well as quantized data (or quantized coefficients) 2012. The parser 2090 parses out the various syntax elements by using entropy-coding techniques such as context-adaptive binary arithmetic coding (CABAC) or Huffman encoding.

[0257] The inverse quantization module 2014 de-quantizes the quantized data (or quantized coefficients) 2012 to obtain transform coefficients, and the inverse transform module 2015 performs inverse transform on the transform coefficients 2018 to produce reconstructed residual signal 2019. The reconstructed residual signal 2019 is added with predicted pixel data 2013 from the intra-prediction module 2025 or the motion compensation module 2030 to produce decoded pixel data 2017. The decoded pixels data are filtered by the in-loop filter 2045 and stored in the decoded picture buffer 2050. In some embodiments, the decoded picture buffer 2050 is a storage external to the video decoder 2000. In some embodiments, the decoded picture buffer 2050 is a storage internal to the video decoder 2000.

[0258] The intra-prediction module 2025 receives intra-prediction data from bitstream 2095 and according to which, produces the predicted pixel data 2013 from the decoded pixel data 2017 stored in the decoded picture buffer 2050. In some embodiments, the decoded pixel data 2017 is also stored in a line buffer 2027 (or intra prediction buffer) for intra-picture prediction and spatial MV prediction.

[0259] In some embodiments, the content of the decoded picture buffer 2050 is used for display. A display device 2005 either retrieves the content of the decoded picture buffer 2050 for display directly, or retrieves the content of the decoded picture buffer to a display buffer. In some embodiments, the display device receives pixel values from the decoded picture buffer 2050 through a pixel transport.

[0260] The motion compensation module 2030 produces predicted pixel data 2013 from the decoded pixel data 2017 stored in the decoded picture buffer 2050 according to motion compensation MVs (MC MVs) . These motion compensation MVs are decoded by adding the residual motion data received from the bitstream 2095 with predicted MVs received from the MV prediction module 2075.

[0261] The MV prediction module 2075 generates the predicted MVs based on reference MVs that were generated for decoding previous video frames, e.g., the motion compensation MVs that were used to perform motion compensation. The MV prediction module 2075 retrieves the reference MVs of previous video frames from the MV buffer 2065. The video decoder 2000 stores the motion compensation MVs generated for decoding the current video frame in the MV buffer 2065 as reference MVs for producing predicted MVs.

[0262] The in-loop filter 2045 performs filtering or smoothing operations on the decoded pixel data 2017 to reduce the artifacts of coding, particularly at boundaries of pixel blocks. In some embodiments, the filtering or smoothing operations performed by the in-loop filter 2045 include deblock filter (DBF) , sample adaptive offset (SAO) , and / or adaptive loop filter (ALF) . In some embodiments, luma mapping chroma scaling (LMCS) is performed before the loop filters.

[0263] FIG. 21 illustrates portions of the video decoder 2000 that implement OBMC with adaptive processing order. Specifically, the figure illustrates the components of the video decoder 2000 involved in generating the predicted pixel data 2013 using OBMC. As illustrated, prediction modules 2110 (including the inter-prediction module 2040, the intra-prediction module 2020, and a BV prediction module) retrieve reference samples from the decoded picture buffer 2050 and motion information from the MV buffer 2065 to generate one or more predictors 2112 (predictors 1 through N) for the current block. A blending module 2120 combines / fuses / blends the multiple predictors 2112 into a final predictor 2113 for the current block.

[0264] The predictors 2112 are generated according to one or more coding tools (e.g., bi-prediction, GPM, CIIP, IBC, intra prediction, DIMD, etc. ) that is / are provided by the entropy decoder 2090. The prediction modules 2110 may generate the multiple predictors 2112 for the current block by inter prediction, intra prediction, or current picture prediction (e.g., IBC, intraTMP) . Each of the multiple predictors 2112 may correspond to a portion of the current block (e.g., a subblock, a partition) or the entirety of the current block.

[0265] The multiple predictors 2112 may be refined by a first OBMC process 2115 ( “OBMC1” ) . For each predictor, the OBMC process 2115 provides overlap samples based on neighboring predictive information (e.g., motion information, intra prediction mode, block vector of a block or subblock neighboring the portion corresponding to the predictor) . The overlap samples are then blended with boundary samples of the multiple predictors. When the first OBMC process 2115 is enabled, the refined predictors are used by the blending module 2120 to generate the final predictor 2113, otherwise the multiple predictors 2112 are used to generate the final predictor 2113 without OBMC refinement.

[0266] The final predictor 2113 may also be refined by a second OBMC process 2125 ( “OBMC2” ) . The second OBMC process 2125 provides overlap samples based on predictive information (e.g., motion information, intra prediction mode, block vector) of neighboring blocks of the current block. The overlap samples are then blended with boundary samples of the final predictors 2113 to refine the final predictor. When the second OBMC process 2125 is enabled, the refined final predictor is used as the predicted pixel data 2013, otherwise the final predictor 2113 is used as the predicted pixel data 2013.

[0267] Whether the first OBMC process 2115 and / or the second OBMC process 2125 are performed is determined by the entropy decoder 2090 based on certain conditions, such as which coding tools are used to code the current block, or by explicit signaling of syntax elements in the bitstream 2095. Thus, the processing order of OBMC relative to the prediction operations may be adaptively controlled.

[0268] FIG. 22 conceptually illustrates a process 2200 for decoding a block of pixels using OBMC with adaptive processing order. In some embodiments, one or more processing units (e.g., a processor) of a computing device implementing the decoder 2000 performs the process 2200 by executing instructions stored in a computer readable medium. In some embodiments, an electronic apparatus implementing the decoder 2000 performs the process 2200.

[0269] The decoder receives (at block 2210) data to be decoded as a current block of pixels in a current picture.

[0270] The decoder generates (at block 2220) a first predictor for a first portion or entirety of the current block. The decoder generates (at block 2230) a second predictor for a second portion or entirety of the current block. The first and second portions may be geometric partitions, or subblocks, or another type of partitions of the current block. The first and second portions may also be the entirety of the current block.

[0271] In some embodiments, the first and second predictors may be generated using first and second motion information associated with the first and second portions of the current block, respectively. For example, the first and second predictors may be two predictors of the current block generated using two motion vectors of bi-prediction. The first predictor (or the second predictor) may also be generated by a block vector referencing samples of the current picture.

[0272] The decoder determines (at block 2235) whether to perform OBMC on the first and second predictors, based on certain first conditions. If OBMC is not to be performed, the process proceeds to block 2240 without performing OBMC on the first and second predictors. If OBMC is to be performed, the process performs (at block 2238) OBMC on the first and second predictors before proceeding to block 2240, specifically by refining the first and second predictors along their respective boundaries using overlap samples derived from predictive information neighboring the first and second portions or entireties. The predictive information neighboring the first (or second) portion or entirety may include motion information associated with a block or subblock that is adjacent to (or neighboring) the first (or second) portion or entirety. The video decoder may refine the first (or second) predictor by weighted blending along boundaries of the first portion with an inter-predictor of a block neighboring the first portion, or with an intra predictor that is generated based on neighboring reconstructed samples by using DIMD process to identify an intra prediction mode or direction, or with a current picture predictor that is generated based on a block vector of a neighboring block.

[0273] The decoder generates (at block 2240) a final predictor of the current block based on the first and second predictors. The decoder determines (at block 2245) whether to perform OBMC on the final predictor based on certain second conditions. If no, the process proceeds to block 2250. If yes, the process performs (at block 2248) OBMC on the final predictor before proceeding to block 2250, specifically by refining the final predictor along boundaries of the current block using overlap samples derived from predictive information neighboring the current block.

[0274] The first and second conditions used by the decoder to determine whether to perform OBMC at blocks 2235 and 2245 may be set based on a prediction mode or coding tool of the current block (e.g., bi-prediction, GPM, CIIP, IBC, intra prediction, DIMD, etc. ) The first and second conditions may also be set based on syntax elements explicitly signaled in a coded video, at e.g., SPS level, PPS level, picture header, slice header, CTU, block. Thus, for some embodiments, the settings of the first and second conditions effectively determine when and where to perform OBMC in the generation of the various predictors, thereby establishing the processing order adaptively.

[0275] The decoder reconstructs (at block 2250) the current block by using the final predictor. The decoder may then provide the reconstructed current block for display as part of the reconstructed current picture. VI. Example Electronic System

[0276] Many of the above-described features and applications are implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium) . When these instructions are executed by one or more computational or processing unit (s) (e.g., one or more processors, cores of processors, or other processing units) , they cause the processing unit (s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, random-access memory (RAM) chips, hard drives, erasable programmable read only memories (EPROMs) , electrically erasable programmable read-only memories (EEPROMs) , etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.

[0277] In this specification, the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage which can be read into memory for processing by a processor. Also, in some embodiments, multiple software inventions can be implemented as sub-parts of a larger program while remaining distinct software inventions. In some embodiments, multiple software inventions can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software invention described here is within the scope of the present disclosure. In some embodiments, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs.

[0278] FIG. 23 conceptually illustrates an electronic system 2300 with which some embodiments of the present disclosure are implemented. The electronic system 2300 may be a computer (e.g., a desktop computer, personal computer, tablet computer, etc. ) , TV, phone, PDA, or any other sort of electronic device. Such an electronic system includes various types of computer readable media and interfaces for various other types of computer readable media. Electronic system 2300 includes a bus 2305, processing unit (s) 2310, a graphics-processing unit (GPU) 2315, a system memory 2320, a network 2325, a read-only memory 2330, a permanent storage device 2335, input devices 2340, and output devices 2345.

[0279] The bus 2305 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system 2300. For instance, the bus 2305 communicatively connects the processing unit (s) 2310 with the GPU 2315, the read-only memory 2330, the system memory 2320, and the permanent storage device 2335.

[0280] From these various memory units, the processing unit (s) 2310 retrieves instructions to execute and data to process in order to execute the processes of the present disclosure. The processing unit (s) may be a single processor or a multi-core processor in different embodiments. Some instructions are passed to and executed by the GPU 2315. The GPU 2315 can offload various computations or complement the image processing provided by the processing unit (s) 2310.

[0281] The read-only-memory (ROM) 2330 stores static data and instructions that are used by the processing unit (s) 2310 and other modules of the electronic system. The permanent storage device 2335, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the electronic system 2300 is off. Some embodiments of the present disclosure use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 2335.

[0282] Other embodiments use a removable storage device (such as a floppy disk, flash memory device, etc., and its corresponding disk drive) as the permanent storage device. Like the permanent storage device 2335, the system memory 2320 is a read-and-write memory device. However, unlike storage device 2335, the system memory 2320 is a volatile read-and-write memory, such a random access memory. The system memory 2320 stores some of the instructions and data that the processor uses at runtime. In some embodiments, processes in accordance with the present disclosure are stored in the system memory 2320, the permanent storage device 2335, and / or the read-only memory 2330. For example, the various memory units include instructions for processing multimedia clips in accordance with some embodiments. From these various memory units, the processing unit (s) 2310 retrieves instructions to execute and data to process in order to execute the processes of some embodiments.

[0283] The bus 2305 also connects to the input and output devices 2340 and 2345. The input devices 2340 enable the user to communicate information and select commands to the electronic system. The input devices 2340 include alphanumeric keyboards and pointing devices (also called “cursor control devices” ) , cameras (e.g., webcams) , microphones or similar devices for receiving voice commands, etc. The output devices 2345 display images generated by the electronic system or otherwise output data. The output devices 2345 include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD) , as well as speakers or similar audio output devices. Some embodiments include devices such as a touchscreen that function as both input and output devices.

[0284] Finally, as shown in FIG. 23, bus 2305 also couples electronic system 2300 to a network 2325 through a network adapter (not shown) . In this manner, the computer can be a part of a network of computers (such as a local area network ( “LAN” ) , a wide area network ( “WAN” ) , or an Intranet, or a network of networks, such as the Internet. Any or all components of electronic system 2300 may be used in conjunction with the present disclosure.

[0285] Some embodiments include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media) . Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM) , recordable compact discs (CD-R) , rewritable compact discs (CD-RW) , read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM) , a variety of recordable / rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc. ) , flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc. ) , magnetic and / or solid state hard drives, read-only and recordable  discs, ultra-density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media may store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.

[0286] While the above discussion primarily refers to microprocessor or multi-core processors that execute software, many of the above-described features and applications are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) . In some embodiments, such integrated circuits execute instructions that are stored on the circuit itself. In addition, some embodiments execute software stored in programmable logic devices (PLDs) , ROM, or RAM devices.

[0287] As used in this specification and any claims of this application, the terms “computer” , “server” , “processor” , and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification and any claims of this application, the terms “computer readable medium, ” “computer readable media, ” and “machine readable medium” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals.

[0288] While the present disclosure has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the present disclosure can be embodied in other specific forms without departing from the spirit of the present disclosure. In addition, a number of the figures (including FIG. 19 and FIG. 22) conceptually illustrate processes. The specific operations of these processes may not be performed in the exact order shown and described. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, the process could be implemented using several sub-processes, or as part of a larger macro process. Thus, one of ordinary skill in the art would understand that the present disclosure is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims. Additional Notes

[0289] The herein-described subject matter sometimes illustrates different components contained within, or connected with, different other components. It is to be understood that such depicted architectures are merely examples, and that in fact many other architectures can be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively "associated" such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as "associated with" each other such that the desired functionality is achieved, irrespective of architectures or intermediate components. Likewise, any two components so associated can also be viewed as being "operably connected" , or "operably coupled" , to each other to achieve the desired functionality, and any two components capable of being so associated can also be viewed as being "operably couplable" , to each other to achieve the desired functionality. Specific examples of operably couplable include but are not limited to physically mateable and / or physically interacting components and / or wirelessly interactable and / or wirelessly interacting components and / or logically interacting and / or logically interactable components.

[0290] Further, with respect to the use of substantially any plural and / or singular terms herein, those having skill in the art can translate from the plural to the singular and / or from the singular to the plural as is appropriate to the context and / or application. The various singular / plural permutations may be expressly set forth herein for sake of clarity.

[0291] Moreover, it will be understood by those skilled in the art that, in general, terms used herein, and especially in the appended claims, e.g., bodies of the appended claims, are generally intended as “open” terms, e.g., the term “including” should be interpreted as “including but not limited to, ” the term “having” should be interpreted as “having at least, ” the term “includes” should be interpreted as “includes but is not limited to, ” etc. It will be further understood by those within the art that if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases "at least one" and "one or more" to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles "a" or "an" limits any particular claim containing such introduced claim recitation to implementations containing only one such recitation, even when the same claim includes the introductory phrases "one or more" or "at least one" and indefinite articles such as "a" or "an, " e.g., “a” and / or “an” should be interpreted to mean “at least one” or “one or more; ” the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, those skilled in the art will recognize that such recitation should be interpreted to mean at least the recited number, e.g., the bare recitation of "two recitations, " without other modifiers, means at least two recitations, or two or more recitations. Furthermore, in those instances where a convention analogous to “at least one of A, B, and C, etc. ” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention, e.g., “asystem having at least one of A, B, and C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and / or A, B, and C together, etc. In those instances where a convention analogous to “at least one of A, B, or C, etc. ” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention, e.g., “a system having at least one of A, B, or C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and / or A, B, and C together, etc. It will be further understood by those within the art that virtually any disjunctive word and / or phrase presenting two or more alternative terms, whether in the description, claims, or drawings, should be understood to contemplate the possibilities of including one of the terms, either of the terms, or both terms. For example, the phrase “A or B” will be understood to include the possibilities of “A” or “B” or “A and B. ”

[0292] From the foregoing, it will be appreciated that various implementations of the present disclosure have been described herein for purposes of illustration, and that various modifications may be made without departing from the scope and spirit of the present disclosure. Accordingly, the various implementations disclosed herein are not intended to be limiting, with the true scope and spirit being indicated by the following claims.

Claims

A video coding method comprising:receiving data to be encoded or decoded as a current block of pixels of a current picture of a video;generating a first predictor for a first portion or entirety of the current block;generating a second predictor for a second portion or entirety of the current block;generating a final predictor of the current block based on the first and second predictors; andencoding or decoding the current block by using the final predictor,wherein when a first condition is true, the first and second predictors are refined along their respective boundaries using predictive information neighboring the first and second portions or entireties and the final predictor is generated using the refined first and second predictors,wherein when a second condition is true, the final predictor is refined along boundaries of the current block using predictive information neighboring the current block and the current block is encoded or decoded by using the refined final predictor.The video coding method of claim 1, wherein the first and second predictors are generated using first and second motion information associated with the first and second portions of the current block, respectively.The video coding method of claim 1, wherein the first and second predictors are two predictors of the current block generated using two motion vectors of bi-prediction.The video coding method of claim 1, wherein the first predictor is generated by a block vector referencing samples of the current picture.The video coding method of claim 1, wherein the first and second portions are two geometric partitions of the current block.The video coding method of claim 1, wherein the first and second portions are subblocks of the current block.The video coding method of claim 1, wherein the predictive information neighboring the first portion or entirety of the current block comprises a motion information associated with a block that is adjacent to the first portion or entirety.The video coding method of claim 7, wherein refining the first predictor comprises weighted blending along boundaries of the first portion or entirety with an inter-predictor of a block neighboring the first portion or entirety.The video coding method of claim 1, wherein refining the first predictor comprises weighted blending along boundaries of the first portion or entirety with an intra predictor that is generated based on neighbouring reconstructed samples.The video coding method of claim 1, wherein refining the first predictor comprises weighted blending along boundaries of the first portion or entirety with a predictor that is generated based on a block vector of a neighboring block.The video coding method of claim 1, wherein the first and second conditions are adaptively determined based on a prediction mode of the current block.The video coding method of claim 1, wherein the first and second conditions are determined based on syntax elements signaled in a bitstream of coded video.An electronic apparatus comprising:a video coder circuit configured to perform operations comprising:receiving data to be encoded or decoded as a current block of pixels of a current picture of a video;generating a first predictor for a first portion or entirety of the current block;generating a second predictor for a second portion or entirety of the current block;generating a final predictor of the current block based on the first and second predictors; andencoding or decoding the current block by using the final predictor,wherein when a first condition is true, the first and second predictors are refined along their respective boundaries using predictive information neighboring the first and second portions or entireties and the final predictor is generated using the refined first and second predictors,wherein when a second condition is true, the final predictor is refined along boundaries of the current block using predictive information neighboring the current block and the current block is encoded or decoded by using the refined final predictor.A video decoding method comprising:receiving data to be decoded as a current block of pixels of a current picture of a video;generating a first predictor for a first portion or entirety of the current block;generating a second predictor for a second portion or entirety of the current block;generating a final predictor of the current block based on the first and second predictors; andreconstructing the current block by using the final predictor,wherein when a first condition is true, the first and second predictors are refined along their respective boundaries using predictive information neighboring the first and second portions or entireties and the final predictor is generated using the refined first and second predictors,wherein when a second condition is true, the final predictor is refined along boundaries of the current block using predictive information neighboring the current block and the current block is encoded or decoded by using the refined final predictor.A video encoding method comprising:receiving data to be encoded as a current block of pixels of a current picture of a video;generating a first predictor for a first portion or entirety of the current block;generating a second predictor for a second portion or entirety of the current block;generating a final predictor of the current block based on the first and second predictors; andencoding the current block by using the final predictor,wherein when a first condition is true, the first and second predictors are refined along their respective boundaries using predictive information neighboring the first and second portions or entireties and the final predictor is generated using the refined first and second predictors,wherein when a second condition is true, the final predictor is refined along boundaries of the current block using predictive information neighboring the current block and the current block is encoded or decoded by using the refined final predictor.

Citation Information

Patent Citations

  • Video decoding method and apparatus for affine stream prediction value refinement

    CN111885387A

  • Method, apparatus, and medium for video processing

    WO2023051652A1

  • Motion compensation considering out-of-boundary conditions in video coding

    WO2023076700A1

  • Overlapped block motion compensation (OBMC) blending selection in video coding

    WO2023168251A1

  • Bilateral template with multipass decoder side motion vector refinement

    WO2023186040A1