Intra prediction mode in the plane
The planar intra prediction mode in VVC addresses limitations of existing modes by using enhanced prediction and transform techniques, achieving improved compression efficiency and coding performance.
Patent Information
- Application Number
- JP2024577160
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-06-30
- Filing Date
- 2023-07-04
- Publication Date
- 2025-07-10
AI Technical Summary
The Versatile Video Coding (VVC) standard aims to double the compression efficiency of its predecessor, HEVC/H.265, but existing intra prediction modes in video coding systems like HEVC are limited, particularly in handling various edge directions and textures, leading to inefficiencies in video compression.
Implementing a planar intra prediction mode that includes planar horizontal, vertical, and average modes, along with enhanced mechanisms like Multiple Reference Line (MRL), Intra Sub-Partition (ISP), Template-based Intra Mode Derivation (TIMD), and Multiple Transform Selection (MTS) to improve prediction accuracy and compression efficiency.
The planar intra prediction mode enhances video compression efficiency by accurately predicting block values using multiple reference samples, reducing latency, and optimizing transform kernels, thereby improving the overall coding performance of VVC.
Smart Images

Figure 2025521806000001_ABST
Abstract
Description
Technical Field
[0001] Cross - reference to Related Patent Applications This application claims the benefit of U.S. Provisional Patent Application No. 63 / 358,208, filed on July 4, 2022, entitled "On Planar Intra Prediction Mode", and claims the benefit of U.S. Patent Application No. 18 / 217,429, filed on June 30, 2023, entitled "On Planar Intra Prediction Mode". All of the above applications are hereby expressly incorporated by reference in their entirety.
[0002] The present disclosure generally relates to video processing, and more specifically, to methods and systems for implementing a planar intra prediction mode.
Background Art
[0003] The Joint Video Experts Team (JVET) of the ITU - T Video Coding Expert Group (ITU - T VCEG) and the ISO / IEC Moving Picture Expert Group (ISO / IEC MPEG) has developed the Versatile Video Coding (VVC / H.266) standard. Such a VVC standard aims to double the compression efficiency of its predecessor, namely the High Efficiency Video Coding (HEVC / H.265) standard. In other words, one of the goals of VVC is to achieve the same or substantially the same subjective quality as HEVC / H.265 using half the bandwidth.
[0004] To achieve this goal, since 2015, JVET has been developing technologies beyond HEVC using the Joint Exploration Model (JEM) reference software. Since JEM incorporates coding technologies, JEM can achieve coding performance substantially higher than that of HEVC. In October 2017, a Call for Proposal (CfP) was issued by VCEG and MPEG to formally start the development of the next-generation video compression standard beyond HEVC. The responses to the CfP were evaluated at the JVET meeting in San Diego in April 2018, and the formal development process of the VVC standard started in April 2018.
Summary of the Invention
Means for Solving the Problems
[0005] Embodiments of the present disclosure are directed to implementing a planar intra prediction mode.
[0006] In a first aspect, embodiments of the present disclosure provide a method including predicting a current block using a planar mode, the planar mode including a planar horizontal mode, a planar vertical mode, or a planar average mode.
[0007] In a second aspect, embodiments of the present disclosure, when executed by one or more processors, cause the one or more processors to predict a current block using a planar mode and provide one or more computer-readable media storing executable instructions for performing the operations, the planar mode including a planar horizontal mode, a planar vertical mode, or a planar average mode.
[0008] In a third aspect, embodiments of the present disclosure include one or more processors and when executed by the one or more processors, cause the one or more processors to Predicting the current block using a planar mode, the planar mode including a planar horizontal mode, a planar vertical mode, or a planar average mode A memory storing executable instructions for causing an operation including To provide a system including
[0009] In a fourth aspect, an embodiment of the present disclosure provides a computer program product including computer program instructions that enable a computer to execute the method according to the first aspect.
[0010] In a fifth aspect, an embodiment of the present disclosure provides a computer program that enables a computer to execute the method according to the first aspect.
[0011] The detailed description is set forth with reference to the accompanying drawings. In the drawings, the leftmost digit of a reference number identifies the figure in which the reference number first appears. Specifications of the same reference number in different figures indicate similar or identical items.
Brief Description of the Drawings
[0012]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Best Mode for Carrying Out the Invention
[0013] The VVC standard has been officially developed since April 2018 and continues to include more coding techniques that can provide better compression performance. In an exemplary implementation form, VVC can be constructed based on the same hybrid video coding system used in other up-to-date video compression standards such as HEVC, H.264 / AVC, MPEG2, H.263. FIG. 1 shows an encoder block diagram of an exemplary hybrid video coding system 100. The input video 102 can be processed block by block. In an exemplary implementation form, the hybrid video coding system 100 can divide a picture or image of the input video 102 into macroblocks (referred to as "MBs"), each having a predefined dimension (such as N×N pixels, where N is a positive integer), and each macroblock can be divided or partitioned into a plurality of partitions.
[0014] As an example, and not by way of limitation, the hybrid video coding system 100 may divide a picture or image of the input video 102 into coding tree units (CTUs). A coding tree unit (CTU) may be defined as the largest block unit in VVC and may be as large as 128×128 luma samples (and corresponding chroma samples depending on the chroma format used). In an exemplary embodiment, a CTU may be further divided into coding units (CUs) using a quadtree, a binary tree, or a ternary tree. In an alternative implementation, the hybrid video coding system 100 may divide a picture into units of N×N pixels, and then the N×N pixels may be further subdivided into sub-units. Each of these largest subdivided units of a picture may generally be referred to as a “block” for the purposes of the present disclosure. In an exemplary implementation, a CU is coded using one block of luma samples and two corresponding blocks of chroma samples, and the picture is coded using one coding tree and is not monochrome.
[0015] In an exemplary implementation, in a leaf node of such a partitioning structure, coding information such as a coding mode (e.g., an intra mode or an inter mode), motion information (a reference index, a motion vector, etc.) when inter-coded, and quantized residual coefficients can be stored and / or transmitted. In an exemplary implementation, when intra prediction 104 (sometimes called spatial prediction) is used, spatial adjacent samples can be used to predict the current block to be coded. In an exemplary implementation, when inter prediction 106 (sometimes called temporal prediction or motion compensation prediction) is used, samples from a previously coded picture (i.e., a reference picture) can be used to predict the current block. In an exemplary implementation, without limitation, various prediction methods including uni-prediction, bi-prediction, etc. can be used for inter prediction. In an exemplary implementation, when uni-prediction is used, only one motion vector pointing to one reference picture is used to generate a predictor for the current block. In an exemplary implementation, when bi-directional is used, two motion vectors each pointing to its corresponding reference picture are used to generate a predictor for the current block. In an exemplary implementation, the motion vector and the reference index can be transmitted to the decoder to identify where the predictor of the current block comes from.
[0016] After intra prediction or inter prediction is performed, a mode decision and encoder control block can select or determine a prediction mode (such as the best prediction mode) for the identification of the current block based on, for example, a rate-distortion optimization method or other mode selection methods. In an exemplary implementation, after the best prediction mode is selected, a prediction block 110 can be generated based on the best prediction mode and subtracted from the input video block.
[0017] In an exemplary implementation, the prediction residual 112, i.e., the difference between the input video block and the predicted block, can be sent to the transform module 114 and the quantization module 116 to generate the quantized residual coefficients 118. In an exemplary implementation, based on the prediction residual, the transform module 114 can perform a transform operation in matrix arithmetic to derive an array of coefficients (sometimes referred to as "residual coefficients", "transformation coefficients", etc.), thereby encoding the current block as a transformed block ("TB"). In an exemplary implementation, the transform coefficients may refer to coefficients representing one of several spatial transforms such as a diagonal flip, a vertical flip, or a rotation that can be applied to sub-blocks. In an exemplary implementation, the quantization module 116 can perform a quantization operation on the residual coefficients by matrix arithmetic based on the quantization matrix and the assigned quantization parameter (QP). Residual coefficients within the interval are retained, and residual coefficients outside the interval step are discarded.
[0018] In an exemplary implementation, the quantized residual coefficients can then be inverse quantized (120) and inverse transformed (122) to obtain the reconstructed residual. For example, the inverse quantization operation and the inverse transform operation can be performed on the quantized residual coefficients by matrix arithmetic operations that are the inverses of the quantization operation and the transform operation described above. The inverse quantization operation and the inverse transform operation result in a reconstructed residual. For example, the prediction block and the reconstructed residual can be added together to form a reconstructed block 124 before loop filtering, and the reconstructed block 124 can be used to provide reference samples for intra prediction. After loop filtering, loop filtering 126 such as deblocking, sample adaptive offset (SAO), and adaptive loop filter (ALF) can be applied to the reconstructed block to form a new reconstructed block 128, and the new reconstructed block 128 can then be stored in the decoded picture buffer 130 and used to provide reference samples for inter prediction. In an exemplary implementation, coding information 132 such as coding mode (e.g., intra prediction or inter prediction), intra prediction mode, motion information, quantized residual coefficients, etc., can be sent to an entropy coding module 134 to further reduce the bitrate before packing into the output video bitstream.
[0019] FIG. 2 shows a decoder block diagram of an exemplary hybrid video coding system 200. In an exemplary implementation, a video bit stream or input video 202 can be unpacked and entropy decoded by an entropy decoding module 204. For example, the entropy decoding module 204 can perform entropy decoding and output quantized residual coefficients, where the bins are decoded by reversing the mapping from symbols to bins according to CABAC, thereby restoring the entropy-coded quantized residual coefficients. In an exemplary implementation, coding information 206 (such as coding mode, prediction information, motion information if motion prediction is used for coding, etc.) can be obtained after unpacking and decoding by the entropy coding module 204. In an exemplary implementation, the coding mode can be used to select which of a spatial prediction module 208 (or also called an intra prediction module) or a temporal prediction module 210 (or also called a motion compensation prediction module) should be activated or called. In an exemplary implementation, the prediction information obtained after unpacking and decoding can then be sent to an appropriate prediction module (i.e., for example, the spatial prediction module 208 or the temporal prediction module 210) to generate a predictor 212 (or the prediction block in the figure). In an exemplary implementation, the quantized residual coefficients 214 obtained after unpacking and decoding can be sent to an inverse quantization module 216 and an inverse transform module 218 to obtain a reconstructed residual 220. By way of example, and not limitation, the inverse quantization module 216 and the inverse transform module 218 can perform inverse quantization and inverse transform operations, respectively and sequentially, on the decoded quantized residual coefficients by matrix arithmetic operations that are the inverse of the quantization and transform operations described above.
[0020] In an exemplary implementation, the inverse quantization operation and the inverse transform operation may result in a reconstructed residual. For example, the predictor 212 and the reconstructed residual 220 may be added together to form a reconstructed block 222 before loop filtering. After loop filtering, a loop filter 224 such as deblocking, SAO, and / or ALF may be applied to form a new reconstructed block 226, and the new reconstructed block 226 may then be stored in a decoded picture buffer (DPB) 228 for prediction of future pictures or subsequent pictures. The reconstructed pictures stored in the DPB may also be transmitted to a display such as a TV, a PC, a smartphone, or a tablet for presentation to an end user.
[0021] In an exemplary implementation, multiple intra prediction modes may be provided in VVC.
[0022] In an exemplary implementation as shown in FIG. 3, the number of angular intra prediction modes in VVC may be extended to a predetermined number according to the requirements specified in the VVC standard in order to capture any edge direction presented in natural video. As an example, and not by way of limitation, the number of angular intra prediction modes in VVC may be extended from 33 used in HEVC to a larger number (such as 65 illustrated in FIG. 3), where the angular modes not present in HEVC are depicted as dotted arrows. In this example, the 65 angular intra prediction modes from bottom left to top right may be represented using indices 2 to 66.
[0023] In an exemplary implementation, for a block having a square shape, the same number of angular modes can be assigned to the upper side and the left side of the block as shown in FIG. 3. On the other hand, although not present in HEVC, for a rectangular intra block which is the central part of the partitioning method of VVC, more intra prediction directions can be assigned to the long side of the block. The additional modes assigned along the long side may be called Wide-Angle Intra Prediction (WAIP) modes because these additional modes correspond to prediction directions having an angle greater than 45 degrees with respect to the horizontal mode or the vertical mode. For a given rectangular block, the aspect ratio, i.e., the ratio of the width to the height, can be used to determine which angular modes are replaced by the corresponding WAIP modes. These WAIP modes can be represented, for example, using indices such as -14 to -1 and 67 to 80.
[0024] In an exemplary implementation, the VVC standard may also implement one or more non-angular intra prediction modes, which may include, but are not limited to, the DC mode and the planar mode (as in HEVC).
[0025] In an exemplary implementation, in the DC intra prediction mode (or simply called the DC mode), the average sample value of the reference samples for the current block to be coded can be used for prediction generation. In an exemplary implementation, in VVC, only the reference samples along the long side of the rectangular block can be used to calculate the average value, but the reference samples from both the left side and the upper (or top) side of the square block can be used to calculate the average value.
[0026] In the planar intra prediction mode (or simply referred to as the planar mode), the predicted value of the current sample can be obtained from the reconstructed values of a predefined number of reference samples (e.g., 4 reference samples). For example, if 4 reference samples are used to determine the predicted value of the current sample, these 4 reference samples can include the left reference sample in the same row as the current sample, the upper (top) reference sample in the same column as the current sample, the reference sample at the lower left position adjacent to the current block, and the reference sample at the upper right position adjacent to the current block. According to the above example, if preb(x, y) is used to represent the predicted value of the current sample, H is used to represent the height of the current block, and W is used to represent the width of the current block, the reconstructed values of these 4 reference samples used in the planar mode in this example can be represented as rec(-1, y), rec(x, -1), rec(-1, H), and rec(W, -1) shown in FIG. 4, respectively, where (x, y) represents the coordinate information of the current sample with respect to the upper left position within the current block.
[0027] Continuing with the above example of using 4 reference samples, in an exemplary implementation, the planar mode can generate the predicted value of the current sample according to the following three equations, namely equations (1) to (3). In an exemplary implementation, the intermediate value predV(x, y) can be obtained from rec(x, -1) and rec(-1, H) according to equation (1), and another intermediate value predH(x, y) can be obtained from rec(-1, y) and rec(W, -1) based on equation (2). Based on these two intermediate values, the predicted value of the current sample can be generated according to equation (3).
[0028] predV(x,y)=((H - 1 - y)*rec(x, -1)+(y + 1)*rec(-1, H))<<log2W (1)
[0029] predH(x,y)=((W - 1 - x)*rec(-1, y)+(x + 1)*rec(W, -1))<<log2H (2)
[0030] (predV(x,y)+predH(x,y)+W*H)>>(log2W+log2H+1) (3)
[0031] In an exemplary implementation, the prediction process in the planar mode includes the following process, that is, setting the values of all reference samples in the right column to be the same as the reconstructed value of the reference sample at the upper right position adjacent to the current block, i.e., rec(W, -1), setting the values of all reference samples in the lower row to be the same as the value of the reference sample at the lower left position adjacent to the current block, i.e., rec(-1, H), generating a vertical predictor by linearly interpolating the reconstructed values of the reference samples above and below the current sample, i.e., rec(x, -1) and rec(-1, H), generating a horizontal predictor by linearly interpolating the reconstructed values of the reference samples to the left and right of the current sample, i.e., rec(-1, y) and rec(W, -1), and may include performing a weighted average on the horizontal predictor and the vertical predictor to obtain the predicted value of the current sample.
[0032] In an exemplary implementation, the reference samples used for intra prediction can be obtained from the reconstructed values of the neighboring samples of the current block. In some scenarios (such as when the current sample is located at the edge or corner of the current block), not all reference samples may be available, that is, they may not necessarily be located at the already reconstructed sample positions. In this case, the unavailable reference samples can be generated by a padding mechanism. In an exemplary implementation, determining the availability of reference samples can be performed at least partially based on an n×n unit or an n×n window of neighboring reconstructed samples, where n can be any predefined integer such as 2, 4, 6, etc., depending on the availability of neighboring reconstructed samples, the computing or graphic processing capabilities of the processor executing this determination, etc. In an exemplary implementation, the set of available units can form a continuous interval of a subset of reference samples, and the outermost reconstructed samples of this interval can be used as the values of the corresponding unavailable parts of the reference samples.
[0033] In an exemplary implementation, the reference samples obtained from the reconstructed values of adjacent samples can be filtered to generate the final reference samples that can be used for intra prediction. In an exemplary implementation, various filtering mechanisms can be applied to the reference samples. In an exemplary implementation, the various filtering mechanisms can include, but are not limited to, reference sample smoothing and interpolation filtering. In an exemplary implementation, to avoid the increase in latency caused by the consecutive application of two filtering operations, one (or only one) of these two mechanisms can be applied to a given block. In an exemplary implementation, if a faster processor or a high-speed dedicated graphics processor is employed, more than two filtering mechanisms can be applied. For the planar mode, if the number of samples within the current block exceeds a predefined number such as 32, reference sample smoothing can be performed, or no filtering is performed at all. In reference sample smoothing, the reference samples can be filtered using a preset filter. In an exemplary implementation, the preset filter can include, but is not limited to, a finite impulse response filter such as {1,2,1} / 4.
[0034] In an exemplary implementation, the VVC standard can implement a direct mode (DM) for chroma intra prediction, and the intra prediction mode of the corresponding luma block can determine the chroma intra mode.
[0035] In an exemplary implementation, a most probable mode list (MPM) may be further implemented for VVC. Continuing with the above example of 67 intra prediction modes in VVC as shown in FIG. 3, if the prediction mode of each block is signaled individually, 7 bits may be required. In an exemplary implementation, a method of constructing an MPM list may be adopted in VVC. In image coding and video coding, adjacent blocks usually have a strong correlation, so there may be a relatively high possibility that the intra prediction modes of adjacent blocks are the same or similar. In an exemplary implementation, the MPM list may be constructed based on the intra prediction modes of the left adjacent block and the upper (or top) adjacent block. Using the above example, in VCC, the length of the MPM list may be 6. In an exemplary implementation, in order to maintain a low complexity of MPM list generation, an intra prediction mode coding method using some MPMs (e.g., 6 MPMs in this example) derived from two available adjacent intra prediction modes may be used.
[0036] In an exemplary implementation, regardless of whether MRL (Multiple Reference Line) and ISP (Intra Sub-Partition) coding tools are applicable, an integrated k-MPM list, also called primary MPM (PMPM) (integrated 6-MPM list in this example), may be used for an intra block. In an exemplary implementation, the MPM list may be constructed based on the intra prediction modes of the left adjacent block and the upper adjacent block. In an exemplary implementation, the intra prediction mode of the left block is called "Left", and the intra prediction mode of the upper block is called "Above". In an exemplary implementation, if no adjacent blocks are available, the intra prediction mode of that block may be set to the planar mode by default, and then the MPM list (such as the integrated 6-MPM list in this example) may be constructed as follows.
[0037] In an exemplary implementation, when both the mode Left and the mode Above are non-angle modes, the MPM list is set as {Planar, DC, V, H, V - 4, V + 4}, where V refers to the index of the vertical mode and H refers to the index of the horizontal mode. When one of Left and Above is in the angle mode and the other is non-angle, the mode Max can be set as the mode with the larger index in Left and Above, and the MPM list can be set as {Planar, Max, Max - 1, Max + 1, Max - 2, Max + 2}. When Left and Above are both angles and different, the mode Max can be the mode with the larger index in Left and Above, and the mode Min can be set as the mode with the smaller index in Left and Above. When Max - Min is equal to 1, the MPM list is set as {Planar, Left, Above, Min - 1, Max + 1, Min - 2}. Otherwise, when Max - Min is greater than or equal to a predefined number (such as 62 in this example), the MPM list can be set to {Planar, Left, Above, Min + 1, Max - 1, Min + 2}. When Max - Min is equal to 2, the MPM list can be set as {Planar, Left, Above, Min + 1, Min - 1, Max + 1}. Otherwise, the MPM list can be set as {Planar, Left, Above, Min - 1, Min + 1, Max - 1}. When Left and Above are both angles and the same, the MPM list can be set to {Planar, Left, Left - 1, Left + 1, Left - 2, Left + 2}.
[0038] In an exemplary implementation, context-based coding may be used to contextually code the first bin of the MPM index codeword. Examples of context-based coding may include, but are not limited to, CABAC (Context-based Adaptive Binary Arithmetic Coding), CAVLC (Context-based Variable-Length Coding), and the like. In an exemplary implementation, a predefined number of contexts may be used. For example, continuing with the above example, three contexts corresponding to whether the current intra block is MRL compliant, ISP capable, or a normal intra block may be used. In an exemplary implementation, TBC (Truncated Binary Code) may be used for entropy coding of non-MPM modes (such as 61 non-MPM modes in the above example).
[0039] In an exemplary implementation, the secondary MPM method can be used in the ECM. In an exemplary implementation, the primary MPM (PMPM) list may include a first predefined number of entries (such as 6 entries in this example), and the secondary MPM (SMPM) list may include a second predefined number of entries (such as 16 entries in this example). In an exemplary implementation, a third predetermined number of entries (i.e., the sum of the first and second predefined numbers of entries, for example, 22 entries in this example) may be constructed first, and the first several entries (for example, the first predetermined number of entries) of them may be included in the PMPM list, and the remaining entries may form the SMPM list. In an exemplary implementation, the first entry in the general MPM list may be in the planar mode. In an exemplary implementation, then, the intra prediction mode of the adjacent block may be added to the general MPM list. FIG. 5 shows exemplary adjacent blocks used in the derivation of the general MPM list according to an exemplary implementation of the present disclosure. As shown in FIG. 5, the left (L) adjacent block, the bottom left (BL) adjacent block, the top right (AR) adjacent block, and the top left (AL) adjacent block may be used. In this example, when the block is vertically oriented, the order of the adjacent blocks may be A, L, BL, AR, AL. Otherwise, when the block is horizontally oriented, the order of the adjacent blocks may be L, A, BL, AR, AL. In an exemplary implementation, two decoder-side intra prediction modes may be added to the general MPM list. In an exemplary implementation, the derived angular modes obtained by adding an offset from the first two available angular modes of the general MPM list may be added to the general MPM list. In an exemplary implementation, if the general MPM list is not complete, the default mode may be added until the general MPM list is complete, i.e., until it reaches the third predetermined number of entries (22 entries in this example).Continuing with the above example, according to an exemplary implementation of the present disclosure, the default mode list may be defined as {DC, V, H, V-4, V+4, 14, 22, 42, 58, 10, 26, 38, 62, 6, 30, 34, 66, 2, 48, 52, 16}.
[0040] In an exemplary implementation, the PMPM flag may be parsed first. In an exemplary implementation, if the PMPM flag is equal to a predefined value (e.g., 1), the PMPM index may be parsed to determine which entry in the PMPM list is selected. Otherwise, the SPMPM flag is parsed to determine whether to parse the SMPM index or the remaining modes.
[0041] In an exemplary implementation, in VVC, the result of intra prediction can be further modified or improved. As an example, without limitation, a method such as position dependent intra prediction combination (PDPC) may be used to modify or improve the result of intra prediction. In an exemplary implementation, PDPC may be applied without signaling to the following inter prediction modes, namely, the intra angle modes having an index below the index of the plane mode, the DC mode, the horizontal mode, and the intra angle modes having an index above the index of the vertical mode.
[0042] In an exemplary implementation, for the plane mode, the predicted value of the current sample can be further modified using the following equation (4).
[0043] pred'(x,y)
[0044] =clip(wT*rec(x,-1)+wL*rec(-1,y)+(64-wT-wL)*pred(x,y)+32)>>6 (4)
[0045] Here, pred(x,y) represents the predicted value of the current sample obtained by the plane prediction process, rec(x, -1) represents the value of the adjacent sample within the same column of the current sample, rec(-1, y) represents the value of the adjacent sample within the same row of the current sample, pred'(x,y) represents the corrected predicted value of the current sample obtained by the PDPC method, clipped to the range from 0 to 1<<bitDepth, wT and wL are two weights that can be calculated using the following equations (5) and (6) respectively,
[0046] wT = 32 >> ((y << 1) >> nScale) (5)
[0047] wL = 32 >> ((x << 1) >> nScale) (6)
[0048] Here, nScale is related to the width W and height H of the current block and is calculated based on the following equation (7).
[0049] nScale = (log2W + log2H - 2) >> 2 (7)
[0050] In an exemplary implementation, the decoder-side intra mode derivation method can be used in the ECM. As an example, without limitation, the decoder-side intra mode derivation method can include, without limitation, a template-based intra mode derivation (TIMD) method. In an exemplary implementation, instead of being signaled, the intra prediction mode of a block can be derived using a template-based method on both the encoder side and the decoder side. In an exemplary implementation, candidates can be constructed from the MPM list, and the candidate modes can be a predetermined number of intra prediction modes (e.g., 67 intra prediction modes in VVC, etc.) or an extended number of intra prediction modes (e.g., 131 intra prediction modes, etc.). In an exemplary implementation, as shown in FIG. 6, prediction samples of the template are generated using the reference samples of the template for each candidate mode. In an exemplary implementation, the cost can be calculated as the SATD (sum of absolute transformed differences) between the prediction samples of the template and the reconstructed samples of the template. In an exemplary implementation, the intra prediction mode with the minimum cost can be selected as the TIMD mode and used for the intra prediction of the current CU.
[0051] In an exemplary implementation, the TIMD mode can be used as an additional intra prediction mode for the CU. To enable / disable TIMD, a flag can be signaled in the sequence parameter set (SPS). If the flag is true, a CU-level flag can be signaled to indicate whether TIMD is being used. In an exemplary implementation, the TIMD flag can be signaled immediately after the MIP flag. If the TIMD flag is equal to true, all the remaining syntax elements related to the luminance intra prediction mode, including the normal analysis stage for the MRL, ISP, and the luminance intra prediction mode, can be skipped.
[0052] In an exemplary implementation, when the number of intra prediction modes in TIMD is extended to an extended number (e.g., extended to 131, etc.), if the intra prediction modes are memorized for the current block, a pre-defined data structure (such as a table, a pointer list, etc.) can be used to map these extended number of modes to the original number (such as 67, etc.) of intra prediction modes in VVC, for example.
[0053] In an exemplary implementation, a fusion or combination of two intra prediction modes derived from the TIMD method can be used, which may be referred to as the TIMD fusion method. In an exemplary implementation, instead of selecting only one mode with the minimum SATD cost, two modes with the first two minimum SATD costs obtained by the TIMD method can be selected, and then, to generate the final predictor for the current block, the predictors of these two modes can be mixed. The corresponding weights of these two modes can be set to be inversely proportional to their SATD costs.
[0054] In an exemplary implementation, another decoder-side intra mode derivation (DIMD) method can be used in ECM. In an exemplary implementation, to construct the DIMD histogram of a block, the encoder and the decoder can perform gradient analysis on the samples of an L-shaped template of a second adjacent line of samples adjacent to the upper end and the left end of the block. Then, the DIMD mode can be derived from the histogram.
[0055] In an exemplary implementation, in addition to DCT-2 adopted in HEVC, a Multiple Transform Selection (MTS) method may be used for residual coding of both inter-coded blocks and intra-coded blocks in VVC. In an exemplary implementation, newly added transform kernels may include, for example, DCT-8 and DST-7. In an exemplary implementation, additional transform kernels including, for example, DCT-5, DST04, DST-1, and an identity transform (IDT) may also be adopted. Further, the MTS transform kernels may be made to depend on the TU size and the intra prediction mode. In an exemplary implementation, a predefined number (e.g., 16, etc.) of different TU sizes may be considered. For each TU size, a predefined number (e.g., 3, 4, 5, etc.) of different classes may be considered according to the intra prediction mode. For each class, different transform kernel pairs (such as 1 pair, 4 pairs, or 6 pairs, etc.) are considered, and each pair includes horizontal and vertical transform kernels respectively. In an exemplary implementation, several intra MTS candidates (such as 1, 4, and 6 MTS candidates, etc.) may be adaptively selected according to the sum of the absolute values of the transform coefficients.
[0056] In an exemplary implementation, a low-frequency non-separable transform (LFNST) can be applied between forward primary conversion (on the encoder side) and quantization, and between de-quantization and inverse primary conversion (on the decoder side). In an exemplary implementation, depending on the block size, a low-frequency non-separable transform of a pre-defined size (such as 4×4 or 8×8) can be applied. As an example, without limitation, an LFNST of size 4×4 can be applied to small blocks (e.g., blocks having a size less than the pre-defined size), and an LFNST of size 8×8 can be applied to larger blocks (e.g., blocks having a size greater than or equal to the pre-defined size). In an exemplary implementation, in the LFNST in VVC, a first number (e.g., 4, etc.) of transform kernel sets and a second number (e.g., 2, etc.) of non-separable transform kernels can be used for each transform set. The transform set used can be determined by the intra prediction mode of the current block. In an exemplary implementation, the number of transform kernel sets supported by the LFNST can be extended to a preset value (e.g., 35).
[0057] In an exemplary implementation, as a prediction process for the planar mode, since the horizontal interpolation result and the vertical interpolation result are always weighted-averaged to generate the predicted value of the current sample, this process may not be suitable for some textures.
[0058] In an exemplary implementation, multiple planar modes can be provided. By way of example, and not limitation, three different planar modes can be provided herein for purposes of illustration. In an exemplary implementation, the first planar mode can use or perform only horizontal linear interpolation to predict the current sample, as shown in Equation (8), which may be referred to herein as the planar horizontal mode. In an exemplary implementation, the predicted value of the current sample can be obtained from the left reference sample rec(-1, y) in the same row as the current sample and the reference sample rec(W, -1) at the upper right position adjacent to the current block containing the current sample. In an exemplary implementation, the second planar mode can use or perform only vertical linear interpolation to predict the current sample, as shown in Equation (9), which may be referred to herein as the planar vertical mode. In an exemplary implementation, the predicted value of the current sample can be obtained from the upper (or top) reference sample rec(x, -1) in the same column as the current sample and the reference sample rec(-1, H) at the lower left position adjacent to the current block containing the current sample. In an exemplary implementation, the third planar mode can be the current planar mode used in VVC that uses both horizontal linear interpolation and vertical linear interpolation to predict the current sample, as shown in Equations (1)-(3), which may be referred to herein as the planar average mode. In an exemplary implementation, all of the above four reference samples can be involved in the prediction of the current sample.
[0059] pred(x,y)=((W-1-x)*rec(-1,y)+(x+1)*rec(W,-1)+(W>>1))>>log2W (8)
[0060] pred(x,y)=((H-1-y)*rec(x,-1)+(y+1)*rec(-1,H)+(H>>1))>>log2H (9)
[0061] In an exemplary implementation, W>>1 and H>>1 are two offsets used for rounding, and may be represented as 1<<(log2W - 1) and 1<<(log2H - 1), respectively.
[0062] In an exemplary implementation, the planar horizontal mode and the planar vertical mode can be applied only to luminance blocks when MRL (multiple reference lines), ISP (intra sub - partition), and TIMD are disabled.
[0063] In an exemplary implementation, the horizontal interpolation result and the vertical interpolation result may have different weights when weighting for planar prediction as in Equation (10).
[0064] pred(x,y)=(wV*predV(x,y)+wH*predH(x,y)+(W*H*(wV+wH))>>1)>>(log2W+log2H+log2(wV+wH)) (10)
[0065] Here, the two intermediate values predV(x,y) and predH(x,y) are related to the horizontal interpolation result and the vertical interpolation result, and can be obtained by Equation (1) and Equation (2), respectively. In an exemplary implementation, the values of the two weights wV and wH can be any non - negative integers, and the sum of these two values can be a power of 2. In an exemplary implementation, (W*H*(wV+wH))>>1 are two offsets used for rounding, and may be represented as 1<<(log2W+log2H+log2(wV+wH)-1).
[0066] In an exemplary implementation, different wV and wH can represent different planar modes. For example, when wV = wH, Equation (10) is the same as Equation (3) and can represent the planar average mode. When wV = 0, Equation (10) is the same as Equation (8) and can represent the planar horizontal mode. When wH = 0, Equation (10) is the same as Equation (9) and can represent the planar vertical mode.
[0067] In an exemplary implementation, different planar modes can be supported and can be represented by Equation (10) using different values of wV and / or wH. By way of example, and not limitation, three planar modes can be supported, including a planar mode (planar average mode) having wV = 2 and wH = 2, a planar mode having wV = 1 and wH = 3, and a planar mode having wV = 3 and wH = 1. As another example, five planar modes can be supported, including a planar mode (planar average mode) having wV = 2 and wH = 2, a planar mode (planar horizontal mode) having wV = 0 and wH = 4, a planar mode (planar vertical mode) having wV = 4 and wH = 0, a planar mode having wV = 1 and wH = 3, and a planar mode having wV = 3 and wH = 1.
[0068] In an exemplary implementation, when multiple planar modes are supported, a flag can be signaled to indicate whether a planar mode is used to predict samples within a block. If the flag indicates that the block uses a planar mode, a syntax element can be further signaled to indicate which of the supported planar modes is being used. In an exemplary implementation, the syntax element can be coded by a TUC (Truncated Unary Code) or a fixed-length code.
[0069] For example, if three planar modes (such as a planar average mode, a planar horizontal mode, and a planar vertical mode) are supported, a flag can be signaled to indicate which planar mode is being used for the current block. If the flag is true (or indicates that a planar mode is being used), a syntax element can be further signaled and coded by a TUC (Truncated Unary Code) as shown in Table 1 below to indicate which mode is being used.
[0070] [Table 1]
[0071] Additionally or alternatively, in an exemplary implementation, if multiple planar modes are supported, all planar modes may be signaled based on the MPM list. For example, a planar average mode, a planar horizontal mode, and a planar vertical mode are supported. In this case, the number of non-angle intra prediction modes may be extended from a first number (such as 2 in this example) to a second number (such as 4 in this example), and the third number (such as 65 in this example) of angle intra prediction modes and the fourth number (i.e., the sum of the first number and the second number, e.g., 69 in this example) of intra prediction modes are supported and signaled based on the MPM list.
[0072] In an exemplary implementation, an integrated k-MPM list (i.e., an MPM list having k entries) may be constructed with modifications, where k is a positive integer. For example, an integrated 6-MPM list is constructed with the following modifications, i.e., when both the Left and Above modes are non-angle modes, the MPM list is set as {planar average, planar horizontal, planar vertical, DC, V, H} or any permutation of these six modes.
[0073] In an exemplary implementation, a general MPM list having PMPM and SMPM as described above may be used or constructed with modifications. For example, a general MPM list having 22 entries may be used or constructed with the following modifications, i.e., the planar average mode is always the first entry of the MPM list, and the planar horizontal mode and the planar vertical mode are within the default mode list.
[0074] Additionally or alternatively, in an exemplary implementation, if multiple planar modes are supported, an implicit method may be used to determine or decide which planar mode is used for the current block, and no syntax element indicating which planar mode is used is signaled.
[0075] In an exemplary implementation, to determine or decide which planar mode is implicitly used, the gradients of the reconstructed values of the samples in the current adjacent rows and columns can be used. As an example, without limitation, if planar average mode, planar horizontal mode, and planar vertical mode are supported, a flag can be signaled to indicate whether one of the three planar modes is being used for the current block. In an exemplary implementation, if the flag is true, the horizontal and vertical gradients of the reconstructed values of each sample in the adjacent rows and columns of the current block can be calculated. In an exemplary implementation, if the sum of the absolute values of the horizontal gradients is greater than (or equal to) the sum of the absolute values of the vertical gradients multiplied by a first predefined threshold, it can be determined that the planar horizontal mode is being used. In an exemplary implementation, if the sum of the absolute values of the vertical gradients is greater than (or equal to) the sum of the absolute values of the horizontal gradients multiplied by a second predefined threshold, it can be determined that the planar vertical mode is being used. Otherwise, this means that the values of these two sums are close, and it can be determined that the planar average mode is being used.
[0076] Additionally or alternatively, in an exemplary implementation, a template-based method can be used to implicitly determine or decide the planar mode. As an example, without limitation, if planar average mode, planar horizontal mode, and planar vertical mode are supported, a flag can be signaled to indicate whether one of the three planar modes is being used for the current block. In an exemplary implementation, if the flag is true, the "L"-shaped template adjacent samples of the current block are predicted by these three planar modes respectively. Then, the SATD value between the predicted values and the reconstructed values of those samples can be calculated. The planar mode with the smallest SATD value can be selected and used for the current block.
[0077] Additionally or alternatively, in an exemplary implementation, when multiple planar modes are supported, an explicit method and an implicit method may be used together to determine or ascertain which planar mode is being used for the current block.
[0078] In an example, a planar average mode, a planar horizontal mode, and a planar vertical mode may be supported. To indicate whether one of these three planar modes is being used for the current block, a first flag may be signaled. If the first flag is true, to indicate whether the planar average mode is being used or whether one of the planar horizontal mode and the planar vertical mode is being used, a second flag may be signaled. If the second flag indicates that one of the planar horizontal mode and the planar vertical mode is being used, a horizontal gradient and a vertical gradient of the reconstruction values for each sample in the adjacent rows and columns of the current block may be calculated. If the sum of the absolute values of the horizontal gradient is greater than (or equal to) the product of the sum of the absolute values of the vertical gradient and a threshold, the planar horizontal mode may be being used. Otherwise, the planar vertical mode may be being used.
[0079] In an exemplary implementation, when a block is predicted by a planar horizontal mode or a planar vertical mode, the propagation mode of this block can be stored as another intra prediction mode. In an exemplary implementation, the propagation mode of a coded block in a planar horizontal mode or a planar vertical mode can be stored as a planar average mode. In an exemplary implementation, the propagation mode of a coded block in a planar horizontal mode or a planar vertical mode can be stored as a DIMD mode or a TIMD mode. In an exemplary implementation, the propagation mode of a coded block in a planar horizontal mode can be stored as a horizontal mode. In an exemplary implementation, the propagation mode of a coded block in a planar vertical mode can be stored as a vertical mode. In an exemplary implementation, the propagation mode of a coded block in a planar horizontal mode can be stored as a vertical mode. In an exemplary implementation, the propagation mode of a coded block in a planar vertical mode can be stored as a horizontal mode. In an exemplary implementation, the propagation intra prediction mode can be used for DM mode derivation, MTS transform kernel determination, LFNST transform kernel determination, and / or MPM list construction regarding adjacent blocks. For example, for a coded block in a planar horizontal mode, a vertical mode can be used for MTS transform kernel determination and LFNST transform kernel determination, and a planar average mode (the original planar mode) can be used for DM mode derivation regarding adjacent blocks and MPM list construction. For a coded block in a planar vertical mode, a horizontal mode can be used for MTS transform kernel determination and LFNST transform kernel determination, and a planar average mode (the original planar mode) can be used for DM mode derivation regarding adjacent blocks and MPM list construction.
[0080] In an exemplary implementation, the predicted values of the planar horizontal mode and the planar vertical mode can be further corrected by the PDPC method.
[0081] In an exemplary implementation, for both the planar horizontal mode and the planar vertical mode, the PD method of the planar average mode can be used. In an exemplary implementation, to modify the predicted value pred(x,y) of the current sample according to Equation (4), the value rec(x, -1) of the upper (or top) reference sample and the value rec(-1, y) of the left reference sample can be used.
[0082] In an exemplary implementation, for the planar horizontal mode, to modify the predicted value pred(x,y) of the current sample according to Equation (11), only the value rec(-1, y) of the left reference sample can be used. In an exemplary implementation, for the planar vertical mode, to modify the predicted value pred(x,y) of the current sample according to Equation (12), only the value rec(x, -1) of the upper (or top) reference sample can be used.
[0083] pred'(x,y)=clip(wL*rec(-1,y)+(64 - wL)*pred(x,y)+32)>>6 (11)
[0084] pred'(x,y)=clip(wT*rec(x,-1)+(64 - wT)*pred(x,y)+32)>>6 (12)
[0085] In an exemplary implementation, for the planar horizontal mode, to modify the predicted value pred(x,y) of the current sample according to Equation (12), only the value rec(x, -1) of the upper (or top) reference sample can be used. In an exemplary implementation, for the planar vertical mode, to modify the predicted value pred(x,y) of the current sample according to Equation (11), only the value rec(-1, y) of the left reference sample can be used.
[0086] In an exemplary implementation, the planar horizontal mode and the planar vertical mode can be applied to the chroma block. For example, if the DM mode is used for the current chroma block and the intra prediction mode of the coexisting luminance block is the planar horizontal mode or the planar vertical mode, such a mode can also be used for the chroma block.
[0087] In an exemplary implementation, the planar horizontal mode and the planar vertical mode cannot be applied to the chroma block. In this case, the DM mode is used for the current side block, and when the intra prediction mode of the coexisting luminance block is the planar horizontal mode or the planar vertical mode, the planar average mode can be used for the chroma block.
[0088] In an exemplary implementation, the planar horizontal mode and the planar vertical mode can be included in the TIMD mode list. For example, these two modes can always be within the TIMD mode list.
[0089] In an exemplary implementation, the planar horizontal mode and the planar vertical mode can be applied when the ISP is enabled for the current block.
[0090] The above-described embodiments can be freely combined.
[0091] For example, an input video or video stream can be acquired or received. The input video or video stream can include a plurality of video frames, and each frame can be divided into a plurality of blocks. In an exemplary implementation, the current block can be predicted using a planar mode. In an exemplary implementation, the planar mode is determined from among a plurality of planar modes, and the plurality of planar modes can include, but are not limited to, the planar horizontal mode, the planar vertical mode, and the planar average mode, etc.
[0092] In an exemplary implementation, different reference samples may be used to predict the current sample within the current block depending on which planar mode is used. For example, when predicting the current sample within the current block using the planar horizontal mode, only the left reference sample and the upper right reference sample are used. When predicting the current sample using the planar vertical mode, only the upper reference sample and the lower left reference sample are used. When predicting the current sample using the planar average mode, the left reference sample, the upper right reference sample, the upper reference sample, and the lower left reference sample may be used.
[0093] Additionally or alternatively, when predicting the current sample within the current block using the planar horizontal mode, only horizontal linear interpolation may be used. In an exemplary implementation, when predicting the current sample using the planar vertical mode, only vertical linear interpolation may be used. In an exemplary implementation, when predicting the current sample using the planar average mode, horizontal linear interpolation and vertical linear interpolation may be used. In an exemplary implementation, when weighting is applied to planar prediction, different weights are associated with the horizontal interpolation result and the vertical interpolation result.
[0094] In an exemplary implementation, the planar horizontal mode and the planar vertical mode may be applicable only to luminance blocks when one or more of multiple reference lines (MRL), intra-subpartition (ISP), and template-based intra-mode derivation (TIMD) are disabled.
[0095] In an exemplary implementation, the encoder may encode flags and syntax elements in the input video or video bitstream during the encoding process. In an exemplary implementation, if multiple plane modes are supported, a flag may be used to indicate whether to use a plane mode to predict samples within the current block of the input video or video bitstream. In an exemplary implementation, if the flag indicates that a plane mode is being used for the current block in the input video or video bitstream, a syntax element may be used to indicate which of the multiple plane modes is being used. In an exemplary implementation, in response to receiving the input video or video bitstream, the decoder may decode flags and syntax elements during the decoding process. In an exemplary implementation, the syntax elements may be coded by a truncated unary code or a fixed length code.
[0096] Additionally or alternatively, in an exemplary implementation, the encoder may encode a flag in the input video or video bitstream and, if multiple plane modes are supported, use the flag to indicate which of the multiple plane modes, at least in part based on MPM. In an exemplary implementation, the decoder may decode the flag in the input video or video bitstream to determine which of the multiple plane modes is being used for the current block. Additionally or alternatively, in an exemplary implementation, the decoder may use an implicit method to determine which of the multiple plane modes is being used for the current block if multiple plane modes are supported.
[0097] Those skilled in the art will understand that all of the above aspects of the present disclosure may be implemented simultaneously in all of their combinations, and that all aspects of the present disclosure may be implemented in combination as yet another embodiment of the present disclosure.
[0098] FIG. 7 shows an exemplary system 700 for implementing the processes and methods described above for implementing a planar intra prediction mode.
[0099] The techniques and mechanisms described herein may be implemented by multiple instances of system 700, as well as by any other computing device, system, and / or environment. The system 700 shown in FIG. 7 is merely an example of a system and is not intended to suggest any limitation as to the use or functionality of any computing device utilized to execute the processes and / or procedures described above. Other well-known computing devices, systems, environments, and / or configurations that may be suitable for use with embodiments include, but are not limited to, personal computers, server computers, handheld devices or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, game consoles, programmable consumer electronics, network PCs, microcomputers, mainframe computers, distributed computing environments including any of the above systems or devices, implementations using field programmable gate arrays (“FPGAs”) and application specific integrated circuits (“ASICs”), and the like.
[0100] System 700 may include one or more processors 702 and a system memory 704 communicatively coupled to the processor 702. The processor 702 may execute one or more modules and / or processes to cause the processor 702 to perform various functions. In some embodiments, the processor 702 may include a central processing unit (“CPU”), a graphics processing unit (“GPU”), both a CPU and a GPU, or other processing units or components known in the art. Additionally, each of the processors 702 may have its own local memory that may also include program modules, program data, and / or one or more operating systems.
[0101] Depending on the exact configuration and type of system 700, system memory 704 can be volatile, such as RAM, non-volatile, such as ROM, flash memory, a small hard drive, a memory card, or some combination thereof. System memory 704 can include one or more computer-executable modules 706 that are executed by processor 702.
[0102] Module 706 can include, without limitation, an encoder module 708 and a decoder module 710.
[0103] Encoder module 708 can be configured to perform predictive coding on frames from a video source and signal a flag in the bitstream by any of the methods described above.
[0104] Decoder module 710 can be configured to perform predictive coding on frames from a video source and derive a prediction mode (such as an inter prediction mode, an intra prediction mode, etc.) by any of the methods described above.
[0105] System 700 can additionally include an input / output (I / O) interface 712 for receiving video source data and bitstream data and outputting the decoded frames to a reference frame buffer and / or a display buffer. System 700 can also include a communication module 714 that enables system 700 to communicate with other devices (not shown) via a network (not shown). The network can include a wired medium, such as the Internet, a wired network, or a direct wired connection, and a wireless medium, such as acoustic, radio frequency ("RF"), infrared, and other wireless media.
[0106] Some or all of the methods described above can be executed by the execution of computer-readable instructions stored on a computer-readable storage medium, as defined below. The term "computer-readable instructions" as used in the description and claims includes routines, applications, application modules, program modules, programs, components, data structures, algorithms, etc. The computer-readable instructions can be implemented in various system configurations including single-processor systems or multi-processor systems, microcomputers, mainframe computers, personal computers, handheld computing devices, microprocessor-based programmable household appliances, combinations thereof, and the like.
[0107] The computer-readable storage medium can include volatile memory (such as random access memory ("RAM")) and / or non-volatile memory (such as read-only memory ("ROM"), flash memory, etc.). The computer-readable storage medium can also include additional removable storage and / or non-removable storage including, but not limited to, flash memory, magnetic storage, optical storage, and / or tape storage that can provide non-volatile storage of computer-readable instructions, data structures, program modules, etc.
[0108] A non-transitory computer-readable storage medium is an example of a computer-readable medium. Computer-readable media includes at least two types of computer-readable media, namely computer-readable storage media and communication media. Computer-readable storage media includes volatile and non-volatile removable and non-removable media implemented in any process or technology for the storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer-readable storage media includes, but is not limited to, phase change memory (“PRAM”), static random access memory (“SRAM”), dynamic random access memory (“DRAM”), other types of random access memory (“RAM”), read-only memory (“ROM”), electrically erasable programmable read-only memory (“EEPROM”), flash memory or other memory technologies, compact disc read-only memory (“CD-ROM”), digital versatile disc (“DVD”) or other optical storage, magnetic cassettes, magnetic tape, magnetic disks or other magnetic storage devices, or any other non-transmission media that can be used to store information for access by a computing device. In contrast, communication media can embody computer-readable instructions, data structures, program modules, or other data within a modulated data signal such as a carrier wave or other transmission mechanism. The computer-readable storage media employed herein should not be construed as being a transient signal per se, such as radio frequency or other free-propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (such as optical pulses through an optical fiber cable), or electrical signals propagating through a wire.
[0109] Computer-readable instructions stored on one or more non-transitory computer-readable storage media, when executed by one or more processors, can perform the operations described above with reference to FIGS. 1A-6. Generally, computer-readable instructions include routines, programs, objects, components, data structures, etc. that perform a particular function or implement a particular abstract data type. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be combined in any order and / or in parallel to implement the process.
[0110] Although the subject matter has been described in language specific to structural features and / or methodological acts, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claims.
[0111] The present disclosure can be further understood using the following clauses.
[0112] Clause 1: A method comprising predicting a current block using a plane mode, the plane mode including a plane horizontal mode, a plane vertical mode, or a plane average mode.
[0113] Clause 2: The method of clause 1, further comprising determining a plane mode from among a plurality of plane modes, the plurality of plane modes including at least a plane horizontal mode, a plane vertical mode, and a plane average mode.
[0114] Item 3: The method of Item 1, further comprising: when predicting the current sample in the current block using the planar horizontal mode, using only the left reference sample and the upper right reference sample; when predicting the current sample using the planar vertical mode, using only the upper reference sample and the lower left reference sample; and when predicting the current sample using the planar average mode, using the left reference sample, the upper right reference sample, the upper reference sample, and the lower left reference sample.
[0115] Item 4: The method of Item 1, further comprising: when predicting the current sample in the current block using the planar horizontal mode, using only horizontal linear interpolation; when predicting the current sample using the planar vertical mode, using only vertical linear interpolation; and when predicting the current sample using the planar average mode, using both horizontal linear interpolation and vertical linear interpolation.
[0116] Item 5: The method of Item 1, wherein when one or more of multiple reference lines (MRL), intra-subpartition (ISP), and template-based intra-mode derivation (TIMD) are disabled, the planar horizontal mode and the planar vertical mode are applicable only to luminance blocks.
[0117] Item 6: The method of Item 1, wherein when weighting is applied to planar prediction, the horizontal interpolation result and the vertical interpolation result are associated with different weights.
[0118] Item 7: When multiple plane modes are supported, a step of encoding or decoding a flag in a bitstream to indicate whether to use a plane mode to predict samples within a current block, where the multiple plane modes include at least a plane horizontal mode, a plane vertical mode, and a plane average mode; and when the flag indicates that a plane mode is being used for the current block, a step of encoding or decoding a syntax element in the bitstream to indicate which one of the multiple plane modes is being used, where the syntax element is coded by a truncated unary code or a fixed-length code. The method of Item 1 further includes these steps.
[0119] Item 8: When multiple plane modes are supported, a step of using a flag indicating which plane mode among the multiple plane modes, at least partially based on an MPM list; or when multiple plane modes are supported, a step of using an implicit method to determine which plane mode is being used for the current block. The method of Item 1 further includes these steps.
[0120] Item 9: One or more computer-readable media storing executable instructions that, when executed by one or more processors, cause the one or more processors to perform an operation including predicting a current block using a plane mode, where the plane mode includes a plane horizontal mode, a plane vertical mode, or a plane average mode.
[0121] Item 10: The one or more computer-readable media of Item 9, where the operation further includes determining a plane mode from among multiple plane modes, and the multiple plane modes include at least a plane horizontal mode, a plane vertical mode, and a plane average mode.
[0122] Item 11: One or more computer-readable media of item 9, further comprising: when the operation predicts the current sample in the current block using the plane horizontal mode, only using the left reference sample and the upper right reference sample; when the operation predicts the current sample using the plane vertical mode, only using the upper reference sample and the lower left reference sample; and when the operation predicts the current sample using the plane average mode, using the left reference sample, the upper right reference sample, the upper reference sample, and the lower left reference sample.
[0123] Item 12: One or more computer-readable media of item 9, further comprising: when the operation predicts the current sample in the current block using the plane horizontal mode, only using horizontal linear interpolation; when the operation predicts the current sample using the plane vertical mode, only using vertical linear interpolation; and when the operation predicts the current sample using the plane average mode, using horizontal linear interpolation and vertical linear interpolation.
[0124] Item 13: One or more computer-readable media of item 9, wherein when one or more of the multiple reference lines (MRL), the intra-subpartition (ISP), and the template-based intra-mode derivation (TIMD) are disabled, the plane horizontal mode and the plane vertical mode are applicable only to luminance blocks.
[0125] Item 14: One or more computer-readable media of item 9, wherein when weighting is applied to the plane prediction, the horizontal interpolation result and the vertical interpolation result are associated with different weights.
[0126] Item 15: When multiple plane modes are supported, encoding or decoding a flag in a bitstream to indicate whether to use a plane mode to predict samples within the current block, where the multiple plane modes include at least a plane horizontal mode, a plane vertical mode, and a plane average mode; and when the flag indicates that a plane mode is being used for the current block, encoding or decoding a syntax element in the bitstream to indicate which one of the multiple plane modes is being used, where the syntax element is coded by a truncated unary code or a fixed-length code; further comprising one or more computer-readable media of item 9.
[0127] Item 16: When multiple plane modes are supported, using a flag indicating which plane mode among the multiple plane modes, at least partially based on an MPM list; or when multiple plane modes are supported, using an implicit method to determine which plane mode is being used for the current block; further comprising one or more computer-readable media of item 9.
[0128] Item 17: A system comprising one or more processors and a memory storing executable instructions that, when executed by the one or more processors, cause the one or more processors to perform an operation including predicting the current block using a plane mode, where the plane mode includes a plane horizontal mode, a plane vertical mode, or a plane average mode.
[0129] Item 18: The system of Item 17, further including that when the operation predicts the current sample within the current block using the planar horizontal mode, only the left reference sample and the upper right reference sample are used; when predicting the current sample using the planar vertical mode, only the upper reference sample and the lower left reference sample are used; and when predicting the current sample using the planar average mode, the left reference sample, the upper right reference sample, the upper reference sample, and the lower left reference sample are used.
[0130] Item 19: The system of Item 17, further including that when the operation predicts the current sample within the current block using the planar horizontal mode, only horizontal linear interpolation is used; when predicting the current sample using the planar vertical mode, only vertical linear interpolation is used; and when predicting the current sample using the planar average mode, both horizontal linear interpolation and vertical linear interpolation are used.
[0131] Item 20: The system of Item 17, further including encoding or decoding a flag in the bitstream to indicate whether to use a planar mode to predict a sample within the current block when multiple planar modes are supported, where the multiple planar modes include at least the planar horizontal mode, the planar vertical mode, and the planar average mode; and when the flag indicates that a planar mode is used for the current block, encoding or decoding a syntax element in the bitstream to indicate which one of the multiple planar modes is used, where the syntax element is coded by a truncated monadic code or a fixed-length code.
[0132] Item 21: A computer program product including computer program instructions that enable a computer to execute the method according to Item 1.
[0133] Item 22: A computer program, the computer program enabling a computer to execute the method according to item 1.
Explanation of Signs
[0134] 100 Hybrid video coding system 102 Input video 104 Intra prediction 106 Inter prediction 110 Prediction block 112 Prediction residue 114 Transformation module 116 Quantization module 118 Quantized residue coefficients 120 Inverse quantization 122 Inverse transformation 124 Reconstructed block 126 Loop filtering 128 New reconstructed block 130 Decoded picture buffer 132 Coding information 134 Entropy coding module 200 Hybrid video coding system 202 Video stream or input video 204 Entropy decoding module 206 Coding information 208 Spatial prediction module 210 Temporal prediction module 212 Predictor 214 Quantized residue coefficients 216 Inverse quantization module 218 Inverse transformation module 220 Reconstructed residue 222 Reconstructed block 224 Loop filter 226 New reconstructed block 228 Decoded picture buffer (DPB) 700 System 702 Processor 704 System Memory 706 Computer-Executable Modules, Modules 708 Encoder Module 710 Decoder Module 712 Input / Output (I / O) Interface 714 Communication Module
Claims
1. A method comprising the step of predicting a current block using a plane mode, wherein the plane mode includes a plane horizontal mode, a plane vertical mode, or a plane average mode.
2. The method according to claim 1, further comprising the step of determining the plane mode from among a plurality of plane modes, the plurality of plane modes including at least the plane horizontal mode, the plane vertical mode, and the plane average mode.
3. When predicting a current sample within the current block using the plane horizontal mode, the step of using only a left reference sample and an upper right reference sample; When predicting the current sample using the plane vertical mode, the step of using only an upper reference sample and a lower left reference sample; When predicting a current sample using the plane average mode, the step of using the left reference sample, the upper right reference sample, the upper reference sample, and the lower left reference sample The method according to claim 1, further comprising.
4. When predicting a current sample within the current block using the plane horizontal mode, the step of using only horizontal linear interpolation; When predicting the current sample using the plane vertical mode, the step of using only vertical linear interpolation; When predicting the current sample using the plane average mode, the step of using the horizontal linear interpolation and the vertical linear interpolation The method according to claim 1, further comprising.
5. When one or more of a multiple reference line (MRL), an intra-subpartition (ISP), and a template-based intra-mode derivation (TIMD) are disabled, the plane horizontal mode and the plane vertical mode are applicable only to luminance blocks. The method according to any one of claims 1 to 4.
6. The method according to any one of claims 1 to 5, wherein when weighting is applied to plane prediction, a horizontal interpolation result and a vertical interpolation result are associated with different weights.
7. When multiple plane modes are supported, in order to indicate whether to use the plane mode to predict samples within the current block, encoding or decoding a flag in a bitstream, where the multiple plane modes include at least the plane horizontal mode, the plane vertical mode, and the plane average mode, and when the flag indicates that the plane mode is being used for the current block, encoding or decoding a syntax element in the bitstream to indicate which one of the multiple plane modes is being used, where the syntax element is coded by a truncated unary code or a fixed-length code, and The method according to claim 1, further comprising.
8. When multiple plane modes are supported, using a flag indicating which plane mode among the multiple plane modes, at least partially based on the MPM list, or when multiple plane modes are supported, using an implicit method to determine which plane mode is being used for the current block The method according to claim 1, further comprising.
9. When executed by one or more processors, causing the one or more processors to predict the current block using a plane mode, where the plane mode includes a plane horizontal mode, a plane vertical mode, or a plane average mode, and One or more computer-readable media storing executable instructions that cause an operation to be performed, the operation including.
10. The operation includes determining the plane mode from among multiple plane modes The one or more computer-readable media according to claim 9, where the multiple plane modes include at least the plane horizontal mode, the plane vertical mode, and the plane average mode, and further comprising.
11. The operation includes when predicting the current sample within the current block using the plane horizontal mode, using only a left reference sample and an upper right reference sample; and when predicting the current sample using the plane vertical mode, using only an upper reference sample and a lower left reference sample; and When predicting a current sample using the planar average mode, using the left reference sample, the upper right reference sample, the upper reference sample, and the lower left reference sample One or more computer-readable media according to claim 9, further comprising.
12. The operation is When predicting a current sample within the current block using the planar horizontal mode, using only horizontal linear interpolation; When predicting the current sample using the planar vertical mode, using only vertical linear interpolation; When predicting the current sample using the planar average mode, using the horizontal linear interpolation and the vertical linear interpolation One or more computer-readable media according to claim 9, further comprising.
13. When one or more of multiple reference lines (MRL), intra-subpartition (ISP), and template-based intra-mode derivation (TIMD) are disabled, the planar horizontal mode and the planar vertical mode are applicable only to luminance blocks. One or more computer-readable media according to any one of claims 9 to 12.
14. One or more computer-readable media according to any one of claims 9 to 13, wherein when weighting is applied to planar prediction, horizontal interpolation results and vertical interpolation results are associated with different weights.
15. The operation is When multiple planar modes are supported, encoding or decoding a flag in a bitstream to indicate whether to use the planar mode to predict samples within the current block, wherein the multiple planar modes include at least the planar horizontal mode, the planar vertical mode, and the planar average mode; When the flag indicates that the planar mode is being used for the current block, encoding or decoding a syntax element in the bitstream to indicate which one of the multiple planar modes is being used, wherein the syntax element is coded by a truncated unary code or a fixed-length code One or more computer-readable media according to claim 9, further comprising.
16. The operation is When multiple plane modes are supported, use a flag indicating which plane mode among the multiple plane modes, at least partially based on the MPM list, or When multiple plane modes are supported, use an implicit method to determine which plane mode is being used for the current block The one or more computer-readable media of claim 9, further comprising. **Claim 17** One or more processors, and When executed by the one or more processors, cause the one or more processors to Predict the current block using a plane mode, the plane mode including a plane horizontal mode, a plane vertical mode, or a plane average mode A memory storing executable instructions that cause an operation including A system comprising. **Claim 18** The operation is When predicting the current sample in the current block using the plane horizontal mode, use only the left reference sample and the upper right reference sample; and When predicting the current sample using the plane vertical mode, use only the upper reference sample and the lower left reference sample; and When predicting the current sample using the plane average mode, use the left reference sample, the upper right reference sample, the upper reference sample, and the lower left reference sample The system of claim 17, further comprising. **Claim 19** The operation is When predicting the current sample in the current block using the plane horizontal mode, use only horizontal linear interpolation; and When predicting the current sample using the plane vertical mode, use only vertical linear interpolation; and When predicting the current sample using the plane average mode, use the horizontal linear interpolation and the vertical linear interpolation The system of claim 17, further comprising. **Claim 20** The operation is When multiple plane modes are supported, encode or decode a flag in a bitstream to indicate whether to use the plane mode to predict a sample in the current block, the multiple plane modes including at least the plane horizontal mode, the plane vertical mode, and the plane average mode When the flag indicates that the planar mode is being used for the current block, encoding or decoding a syntax element in the bitstream to indicate which one of the plurality of planar modes is being used, the syntax element being coded by a truncated unary code or a fixed length code, and The system according to claim 17, further comprising. **Claim 21** A computer program product comprising computer program instructions that enable a computer to execute the method according to any one of claims 1 to 8. **Claim 22** A computer program that enables a computer to execute the method according to any one of claims 1 to 8.