System and method for intra-template matching prediction

The IntraTMP method addresses inefficiencies in video compression by expanding the search area for intra-prediction, enhancing template matching and reducing processing time, thereby improving encoding/decoding results and video quality.

JP2026504998APending Publication Date: 2026-02-10GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025543123
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-01-27
Filing Date
2024-01-26
Publication Date
2026-02-10

AI Technical Summary

Technical Problem

Existing video compression methods, such as HEVC and VVC, face inefficiencies in determining reconstructed samples for intra-prediction, leading to suboptimal processing times and encoding/decoding results.

Method used

An improved intra-template matching prediction (IntraTMP) method that enhances the search area for intra-prediction by including 'top right' and 'bottom left' neighboring regions within the current coding tree unit (CTU), allowing for more effective template matching using methods like sum of absolute difference (SAD) or sum of absolute transformed difference (SATD), and enabling encoder and decoder synchronization without additional signaling.

Benefits of technology

The IntraTMP method reduces processing time and improves encoding/decoding results by expanding the search area for intra-prediction, resulting in better video quality and efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026504998000001_ABST
    Figure 2026504998000001_ABST
Patent Text Reader

Abstract

A method and system for video processing are provided. In some embodiments, the method includes: (i) determining whether a current block employs an IntraTMP mode; and (ii) analyzing and identifying an IntraTMP flag in response to the current block determining that it employs the IntraTMP mode. If the current block employs the IntraTMP mode, the method further includes analyzing and identifying an IntraTMP fusion flag in response to the current block determining that it employs the IntraTMP fusion mode. If the current block employs the IntraTMP fusion mode, the method further includes generating a fused IntraTMP predictor in response to the current block determining that it uses the IntraTMP fusion method.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to image and video encoding and decoding technologies. Specifically, the present disclosure discloses a video encoding and decoding method including an intra template matching prediction (IntraTMP) method. [Background technology]

[0002] Existing video compression methods, such as High Efficiency Video Coding (HEVC) and Versatile Video Coding (VVC), perform block division and quantization processes during encoding. The HEVC and VVC standards define a block-based, spatial and temporal hybrid predictive coding scheme. During encoding, each image is first divided into multiple square blocks called coding tree units (CTUs). Each CTU in an image can be divided into one or more coding units (CUs), which are used for prediction and transformation. Various prediction tools can be used, including inter-prediction tools and intra-prediction tools. Inter-prediction tools can use any information from images previously coded into a bitstream. On the other hand, intra-prediction tools can only use reconstructed samples from the same image. Therefore, it is important to effectively determine which reconstructed samples to use. Therefore, it would be advantageous to have an improved system and method for addressing the aforementioned needs. Summary of the Invention

[0003] The present disclosure relates to a system and method for improving video quality by using an improved intra-template matching prediction (IntraTMP) method. The present disclosure further relates to a system and method for illustrating the IntraTMP method. Intra-template matching prediction predicts a current coding unit (CU) by a sample block from a current image. In some embodiments, IntraTMP is selected as the prediction mode for CUs of size 64x64 or smaller.

[0004] The present system provides various syntax formats / configurations for indicating and / or signaling whether IntraTMP and other suitable methods are used. Examples of the aforementioned syntax formats / configurations are described in detail with reference to Figures 2C-2E.

[0005] During the encoding / decoding process, the encoding / decoding device (e.g., encoder or decoder) compares a predetermined "L-shaped" or other shaped template of reconstructed samples adjacent to the current CU with templates of the same shape of candidate predictors within a predetermined search area to determine an IntraTMP prediction block. If the template is "L-shaped," both the neighboring samples to the left and above the current CU are used as the template for the current CU. Similarly, the neighboring samples to the left and above the candidate predictors are used as candidate templates for each candidate predictor. The IntraTMP prediction block is determined by finding the best candidate template that matches the template for the current CU. An example of an "L-shaped" template is described in detail with reference to FIG. 2A. In some embodiments, a different template shape can be used, in which case the different template shape is used as the candidate template for each candidate predictor.

[0006] The present system provides an improved method for determining a predetermined search region. This improved method is particularly useful for efficient search, as certain conventional methods do not efficiently search available reconstructed samples. The present system enables the IntraTMP process to search any region within the current coding tree unit (CTU) available for intra prediction. Specifically, the present system enables searching in the "upper right" and / or "lower left" neighboring regions of the current CU.

[0007] The "top right" and "bottom left" neighboring regions are within the current CTU. The "top right" neighboring region is adjacent to the current CU and extends in the "top right" direction from the "top right" point of the current CU. The "bottom left" neighboring region is adjacent to the current CU and extends in the "bottom left" direction from the "bottom left" point of the current CU. In some embodiments, the "top right" and "bottom left" neighboring regions have the same shape but different orientations (e.g., the "top right" neighboring region is vertical and the "bottom left" neighboring region is horizontal). With reference to Figures 2B and 3-5C, an embodiment of an improved search region including the "top right" and "bottom left" neighboring regions will be described in detail.

[0008] The present system and method allows the IntraTMP search area to include any CU preceding the current CU in the current CTU. The IntraTMP search area can be scanned according to a scan order. An example of a scan order is described in detail with reference to FIG. 4A. Compared to conventional methods, the present system and method enhances the template search by adding neighboring regions to the current CU (e.g., the "bottom left" and "top right" regions within the current CTU). The enhanced search area provided by the present system makes the IntraTMP process more effective, thereby reducing processing time and providing better encoding and decoding results.

[0009] In some embodiments, the best candidate template can be determined by finding the template that minimizes the sum of absolute difference (SAD) or the sum of absolute transformed difference (SATD), or by comparing hashes between templates. In some embodiments, several search algorithms can be used. In some embodiments, the search algorithm can be exhaustive within a given search area (e.g., by scanning templates across the search area with sample resolution shifts) or fast (e.g., by first performing a coarse search and then performing a local refinement search around the best match of the coarse search). Because the encoder and decoder can perform the search algorithm in the same manner, the IntraTMP predictor is implicitly known by the encoder and decoder without requiring signaling in the bitstream.

[0010] Although the following systems and methods are described with respect to video processing, in some embodiments, the systems and methods may be used in other image processing systems and methods. The present disclosure further provides a framework / network that can be trained by deep learning and / or artificial intelligence schemes.

[0011] In some examples, the methods discussed herein relating to an "image" or "frame" may be applied to a portion or region of an "image" or "frame." For example, the methods disclosed herein may be applied to a sub-image, a region of an image (e.g., showing an object of interest), etc.

[0012] In some embodiments, the method may be implemented by a tangible, non-transitory computer-readable medium having stored thereon processor instructions that, when executed by one or more processors, cause the one or more processors to perform one or more aspects / features of the methods described herein. In other embodiments, the method may be implemented by a system including a computer processor and a non-transitory computer-readable storage medium having stored thereon instructions that, when executed by the computer processor, cause the computer processor to perform one or more operations of the methods described herein. [Brief explanation of the drawings]

[0013] [Figure 1A] FIG. 1 is a schematic diagram illustrating a system including an IntraTMP module according to one or more embodiments of the present disclosure. [Figure 1B] 1 is a schematic diagram illustrating a decoding system including an IntraTMP module according to one or more embodiments of the present disclosure. [Figure 2A] FIG. 1 is a schematic diagram illustrating an IntraTMP process according to one or more embodiments of the present disclosure. [Figure 2B] FIG. 1 is a schematic diagram illustrating an IntraTMP process according to one or more embodiments of the present disclosure. [Figure 2C] FIG. 10 is a schematic diagram illustrating an example syntax for an IntraTMP flag, according to one or more embodiments of the present disclosure. [Figure 2D] FIG. 10 is a schematic diagram illustrating an example syntax for an IntraTMP flag, according to one or more embodiments of the present disclosure. [Figure 2E] FIG. 10 is a schematic diagram illustrating an example syntax for an IntraTMP flag, according to one or more embodiments of the present disclosure. [Figure 3] FIG. 1 is a schematic diagram illustrating an intra-prediction process, according to one or more embodiments of the present disclosure. [Figure 4A]FIG. 1 is a schematic diagram illustrating a search sequence of an IntraTMP process within a search space, according to one or more embodiments of the present disclosure. [Figure 4B] FIG. 1 is a schematic diagram illustrating an example of splitting one CTU into multiple CUs, according to one or more embodiments of the present disclosure. [Figure 4C] FIG. 1 is a schematic diagram illustrating slice division according to one or more embodiments of the present disclosure. [Figure 4D] FIG. 1 is a schematic diagram illustrating tile division according to one or more embodiments of the present disclosure. [Figure 4E] FIG. 1 is a schematic diagram illustrating the division of an image into multiple wavefronts, according to one or more embodiments of the present disclosure. [Figure 5A] FIG. 1 is a schematic diagram illustrating a search space for an IntraTMP process, according to one or more embodiments of the present disclosure. [Figure 5B] FIG. 1 is a schematic diagram illustrating a search space for an IntraTMP process, according to one or more embodiments of the present disclosure. [Figure 5C] FIG. 1 is a schematic diagram illustrating a search space for an IntraTMP process, according to one or more embodiments of the present disclosure. [Figure 6] 1 is a schematic diagram of a wireless communication system according to one or more embodiments of the present disclosure. [Figure 7] FIG. 2 is an example block diagram of a terminal device according to one or more embodiments of the present disclosure. [Figure 8] FIG. 1 is an exemplary block diagram of an electronic device in accordance with one or more embodiments of the present disclosure. [Figure 9] 1 is a flowchart of a method according to one or more embodiments of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0014] In order to more clearly describe the technical solutions in the embodiments of the present disclosure, the drawings are briefly described above. The drawings merely illustrate some aspects or embodiments of the present disclosure, and those skilled in the art can derive other drawings from these drawings without creative efforts.

[0015] 1A is a schematic diagram illustrating a system 100A including an IntraTMP module 101 (within an intra-prediction module 102) according to one or more embodiments of the present disclosure. The IntraTMP module 101 is configured to perform a template search process in an improved search space (e.g., FIG. 2B). In some implementations, in addition to the IntraTMP module 101, the intra-prediction module 102 may further include other intra-prediction modules / tools, such as Intra Block Copy (IBC), Spatial Geometric Partitioning Mode (SGPM), Matrix-based Intra Prediction (MIP), traditional angular intra-prediction tools, etc.

[0016] System 100A includes a video sequence 10 that is input to an intra-prediction module 102 and / or an inter-prediction module 103. The output of intra-prediction module 102 and / or inter-prediction module 103 may be subtracted from a current CU of video sequence 10 to generate a residual R. The residual R may then be directed to a transform module 104. The output of transform module 104 may be quantized by quantization module 105. The output of quantization module 105 may then be directed to an inverse quantization module 106 and an inverse transform module 107.

[0017] As shown in FIG. 1A , the output of the intra prediction module 102 and / or the inter prediction module 103 may be summed with the output of the inverse transform module 107 at summer 108. The summed result may then be directed to an in-loop filter module 109. The output of the in-loop filter module 109 may then be directed to a decoded image buffer 110 for further processing by the inter prediction module 103. The system 100A may use in-loop filter modules to suppress compression artifacts and reduce distortion. These in-loop filter modules include a deblocking filter (DBF), a sample self-adaptive offset (SAO) filter, and an adaptive loop filter module (ALF). In some embodiments, the in-loop filter module 109 need not include all of the above filters. In some embodiments, the DBF and SAO filters are two filters designed to reduce artifacts caused by the encoding process. The DBF focuses on visual artifacts at block boundaries. The SAO filter complementarily reduces artifacts that may result from quantization of transform coefficients within a block. The ALF enhances the adaptive filter of the reconstructed signal and may reduce the mean square error (MSE) between the original and reconstructed samples by using a Wiener-based adaptive filter. The system 100A further includes an entropy encoding module 111 configured to perform data compression before generating the bitstream 11.

[0018] 1B is a schematic diagram illustrating a decoding system 100B including an IntraTMP module (e.g., the IntraTMP module 101 discussed in FIG. 1A ) according to one or more embodiments of the present disclosure. The system 100B includes an entropy decoding module 121, an inverse quantization module 122, and an inverse transform module 123 configured to process a bitstream 12. The decoding system 100B further includes an inter-prediction module 124 and an intra-prediction module 125 (e.g., corresponding to the intra-prediction module 102 on the encoding side). The inter-prediction module 124 and the intra-prediction module 125 are configured to process the bitstream 12 and generate a decoded video 13. As shown in FIG. 1B , the decoding system 100B further includes an image buffer 126 and an in-loop filter module 127 to facilitate the above-mentioned decoding tasks.

[0019] 1B , the output of intra prediction module 125 and / or inter prediction module 124 may be summed with the output of inverse transform module 123 at summer 128. The summed result is then directed to in-loop filter module 127 to facilitate generating decoded video 13.

[0020] FIG. 2A is a schematic diagram illustrating a candidate predictor 201 of a coding unit (CU) for an IntraTMP process, according to one or more embodiments of the present disclosure. As shown in FIG. 2A, the candidate predictor 201 includes a first region 203 located above the CU and a second region 205 located to the left of the CU. The first region 203 and the second region 205 form an "L-shape." In some implementations, the candidate predictor 201 may have other shapes (e.g., a shape that includes either the first region 203 or the second region 205). The candidate predictor 201 is configured to be used to search for a matching candidate MC from multiple candidates (e.g., candidates A, B, and C shown in FIG. 2B) in a search region (e.g., a current CTU, a reconstruction region, etc.). In the implementation shown, candidate B is selected as the matching candidate BC. The IntraTMP process then uses the data (e.g., pixels) surrounded by the candidate predictor 201 as reference data for the CU.

[0021] In some embodiments, the best candidate template can be determined by finding the template that minimizes the sum of absolute errors (SAD) or the sum of absolute transformed errors (SATD), or by comparing hashes between templates. In some embodiments, several search algorithms can be used. In some embodiments, the search algorithm can be exhaustive within a given search region (e.g., by scanning templates across the search region with sample resolution shifts) or fast (e.g., by first performing a coarse search and then performing a local refinement search around the best match of the coarse search). Because the encoder and decoder can perform the search algorithm in the same manner, the IntraTMP predictor is implicitly known by the encoder and decoder without requiring signaling in the bitstream.

[0022] FIG. 2B is a schematic diagram illustrating a current IntraTMP search area 207 for an IntraTMP process according to one or more embodiments of the present disclosure. As shown in FIG. 2B, the search area 207 is used to perform a candidate search for a CU (e.g., as described above with reference to FIG. 2A). The search area 207 includes multiple regions, including CTU regions 21-24, sub-CTU regions 25-26, an "upper right" neighboring region 28, and a "lower left" neighboring region 29. The "upper right" neighboring region 28 is located in the upper right corner of the current CU within the same CTU 30 and has already been reconstructed. The "lower left" neighboring region 29 is located in the lower left corner of the current CU within the same CTU 30 and has already been reconstructed. This arrangement enables the system to enable the IntraTMP process to search for candidates within an improved search area (i.e., the current IntraTMP search area 207), which is larger than conventional methods.

[0023] 2C-2E are schematic diagrams illustrating example syntax for IntraTMP flags, according to one or more embodiments of the present disclosure.

[0024] In Example 1, In FIG. 2C, syntax 209 provides an example showing how to write a flag for IntraTMP ("intraTMP_flag"). If the current block is an IntraTMP block (e.g., using an IntraTMP process), a flag "intraTMP_flag" can first be written to indicate that the current block is using IntraTMP. The flag "intraTMP_fusion_flag" can be used to write and indicate that the current block uses the IntraTMP fusion method to generate a prediction by weightedly fusing multiple IntraTMP matching blocks.

[0025] If the IntraTMP fusion method is used, a fused IntraTMP predictor may be generated. If the IntraTMP fusion method is not used, another flag "intraTMP_filtered_flag" may be written to indicate whether to use a filtered IntraTMP prediction block. In some embodiments, if the filtered IntraTMP method is used, the identified IntraTMP prediction block may be further filtered according to the derived filter. Additionally, an index "intraTMP_idx" may be written to indicate which IntraTMP block in the IntraTMP candidate list is used.

[0026] Additionally, another flag "intraTMP_fractional_pel_flag" may be written to indicate whether fractional-pel precision prediction blocks (e.g., half-pel, quarter-pel, or other suitable precision) are used. If fractional-pel precision is used, a fractional-pel index "intraTMP_fractional_pel_idx" may be written to indicate the location of the fractional pel.

[0027] In Example 2 In FIG. 2D , syntax 211 provides an example showing how to write a flag ("spatial_CIIP_flag") for combined inter-intra prediction (CIIP). As shown in the drawing, syntax 211 includes a flag "spatial_CIIP_flag" that indicates the presence of a special fusion of IntraTMP with other appropriate inter / intra prediction methods. For example, in some implementations, one IntraTMP matching block may be fused with another prediction derived using a decoder-side intra mode derivation (DIMD) method, template-based intra mode derivation (TIMD), planar mode, and a weight calculation method that follows an appropriate rule (e.g., ECM-7.0 CIIP weight calculation), etc.

[0028] As shown in the drawing, first, a flag "spatial_CIIP_flag" may be written to indicate whether the current block is coded using spatial CIIP. If no, a flag "intraTMP_flag" may be written to indicate whether the current block uses IntraTMP. In some embodiments, if IntraTMP mode is used, a flag "intraTMP_fusion_flag" may be written to indicate whether the current block uses the IntraTMP fusion method to generate a prediction by weightedly fusing multiple IntraTMP matching blocks.

[0029] If the IntraTMP fusion method is used, a fused IntraTMP predictor is generated. If the IntraTMP fusion method is not used, another flag "intraTMP_filtered_flag" may be written to indicate whether a filtered IntraTMP prediction block is being used. In some embodiments, if the filtered IntraTMP method is used, the identified IntraTMP prediction block may be further filtered according to the derived filter. An index "intraTMP_idx" may be written to indicate which IntraTMP block in the IntraTMP candidate list to use.

[0030] In some embodiments, another flag "intraTMP_fractional_pel_flag" may be written to indicate whether fractional-pel precision prediction blocks (e.g., half-pel, quarter-pel, or other suitable precision) are used. If fractional-pel precision is used, a fractional-pel index "intraTMP_fractional_pel_idx" may be written to indicate the location of the fractional pel.

[0031] In Example 3 In Figure 2E, syntax 213 provides an example showing how to write a flag for IntraTMP ("intraTMP_flag"): As shown in the figure, first, a flag "intraTMP_flag" can be written to indicate whether the current block is using IntraTMP or not.

[0032] If IntraTMP mode is present, a flag "intraTMP_fusion_flag" can be written to indicate whether the current block uses the IntraTMP fusion method to generate a prediction by weighted fusion of multiple IntraTMP matching blocks.

[0033] If the IntraTMP fusion method is used, a fused IntraTMP predictor may be generated. If IntraTMP fusion is not used, another flag "intraTMP_filtered_flag" may be written to indicate whether a filtered IntraTMP prediction block is being used. In some embodiments, if a filtered IntraTMP method is used, the identified IntraTMP prediction block may be further filtered according to the derived filter. An index "intraTMP_idx" is written to indicate which IntraTMP block in the IntraTMP candidate list to use.

[0034] In some embodiments, if an "L-shaped template" is used, a flag "intraTMP_is_L_Shape_flag" can be written. If an "L-shaped" template is not used, another flag "intraTMP_is_left_or_above_template_flag" can be used to indicate whether only the left template or only the above template is used. An example of an "L-shaped" template has already been described with reference to FIG. 2A.

[0035] Another flag, "intraTMP_fractional_pel_flag," can be written to indicate whether fractional-pel precision prediction blocks (e.g., half-pel, quarter-pel, or other suitable precision) are used. If fractional-pel precision is used, a fractional-pel index, "intraTMP_fractional_pel_idx," can be written to indicate the location of the fractional pel.

[0036] FIG. 3 is a schematic diagram illustrating an intra prediction process according to one or more embodiments of the present disclosure. In the example, an example search area for an intra block copy (IBC) tool is shown. As shown in the drawing, in the example of FIG. 3, the intra block copy process may search a decoded current CTU row 307 and an upper CTU row 305. In the example shown, for example, a prediction block 309 is shown within the upper CTU row 305. The prediction block 309 may be indicated by a block vector 311, which points from the upper left corner of the current CU 301 to the upper left corner of the prediction block 309. If some block vectors point to unavailable areas, e.g., areas that have not yet been decoded, these block vectors are not "legal." For example, the incorrect block vector 313 shown in FIG. 3 points to an area after the current CU 301 in decoding order.

[0037] In some embodiments, a block vector 311 can be written to indicate which block in the same image is copied as a predictor of the current block. Writing the block vector 311 can be performed by writing a block vector difference (BVD) to the bitstream, thereby allowing the block vector 311 to be determined by adding the BVD to the block vector predictor. In some embodiments, a block vector can be written with a merge flag if the block vector from the previous CU perfectly matches the current block vector.

[0038] As shown in the drawing, the block vector 311 points to a location within the same image and indicates a sample block of the same size as the current CU 301, which is used as the prediction block 309 for the current CU 301. In some embodiments, some restrictions may apply to the block vector 311. For example, the block vector 311 must point to a sample block in the current image that is available for intra prediction. As another example, the block vector may be limited to a search area defined by a search tool (e.g., an intra block copy (IBC) tool), which may be smaller than the current image. For example, in VVC, the IBC search area is the current CTU and the previous CTU. In some embodiments, if the size of the CTU is 256x256, the IBC search area may be the current CTU row and the CTU row above, or if the size of the CTU is 128x128 or smaller, the IBC search area may be the current CTU row and the two CTU rows above. In some embodiments, the system performs an IntraTMP process and can match buffering requirements by limiting the IntraTMP search space to that of an existing tool (such as an IBC tool). Figures 4A-5D illustrate several examples of search spaces for the IntraTMP process.

[0039] FIG. 4A is a schematic diagram illustrating a search sequence of an IntraTMP process within a search region 400, according to one or more embodiments of the present disclosure. The search region 400 is determined by imposing a maximum length on the IntraTMP block vector, which, as shown in FIG. 4A, is a vector pointing from the top-left corner of the current CU to the top-left corner of the IntraTMP predictor. The maximum length of the IntraTMP block vector is (searchRangeWidth, searchRangeHeight), with a maximum of searchRangeWidth (search range width) horizontally and searchRangeHeight (search range height) vertically. The values ​​of searchRangeWidth and searchRangeHeight are determined as a function of the width and height of the current CU, BlkW and BlkH. For example, in one embodiment, these may be determined by the following equations (A) and (B):

[0040] searchRangeWidth=max(a*BlkW,minSearchRange) (A) searchRangeHeight=max(a*BlkH,minSearchRange) (B) In expressions (A) and (B), "max(x,y)" returns the maximum value of "x" and "y".

[0041] In some embodiments, "a" may be set to "5" and "minSearchRange" may be set to "128" in expressions A and B. In other embodiments, different values ​​for "a" and "minSearchRange" may be used.

[0042] Let the top-left corner of the current CU be represented by the coordinate position (currCuX, currCuY) in the coordinate system, where (0,0) refers to the top-left corner of the image, and increasing coordinate positions in the horizontal and vertical directions refer to the rightward and downward directions, respectively. The parameter "currCuX" refers to the horizontal position, and currCuY refers to the vertical position. In this coordinate system, the top-left corner of the search region 400 is located at (currCuX - searchRangeWidth, currCuY - searchRangeHeight). The top-right corner of the search region 400 is located at (currCuX + BlkW-1 + searchRangeWidth, currCuY - searchRangeHeight). The bottom-left corner of the search region 400 may conceptually be located at (currCuX - searchRangeWidth, currCuY + BlkH-1 + searchRangeHeight).

[0043] In the example of Figure 4A, the lower left corner is bounded by the bottom boundary of the left CTU. The lower right corner of the search area 400 can conceptually be located at (currCuX+BlkW-1+searchRangeWidth, currCuY+BlkH-1+searchRangeHeight). IntraTMP block vectors pointing both to the right and downward are not possible because they point to image regions after the current CU in coding order. Therefore, the lower right boundary of the search area 400 is complex because it depends on sample availability. The shape of the search area under different conditions is described in more detail below with reference to Figures 4A and 5A-5C.

[0044] Before being limited by sample availability, the above search area 400 is conceptually rectangular. In this disclosure, the search area 400 is defined such that the sample block corresponding to any IntraTMP predictor must be completely contained within the search area 400. It will be appreciated that equivalent search areas can be defined depending on the nature of the object(s) appropriate within the search area. For example, if the coordinates pointed to by the IntraTMP block vector must be completely contained within the search area, define a smaller but equivalent search area where the top-left, top-right, bottom-left, and bottom-right corners of the search area are located at (currCuX-SearchRangeWidth,currCuY-SearchRangeHeight), (currCuX+searchRangeWidth,currCuY-SearchRangeHeight), (currCuX-searchRangeWidth,currCuY+searchRangeHeight), and (currCuX+searchRangeWidth,currCuY+searchRangeHeight), respectively.

[0045] In another example, if the sample block corresponding to any IntraTMP predictor and its template must be completely contained within the search area, define a larger but equivalent search area, where the upper-left, upper-right, lower-left, and lower-right corners of the search area are located at (currCuX-SearchRangeWidth-TemplateWidth, currCuY-SearchRangeHeight-TemplateHeight), (currCuX+BlkW-1+searchRangeWidth, currCuY-searchRangeHeight-templateHeight), (currCuX-searchRangeWidth-templateWidth, currCuY+BlkH-1+searchRangeHeight), and (currCuX+BlkW-1+searchRangeWidth, currCuY+BlkH-1+searchRangeHeight), respectively, where templateHeight and templateHeight refer to the dimensions of the template shape. As can be appreciated, changing the search area constraints does not affect the operation of the IntraTMP search algorithm described in this disclosure.

[0046] The search space 400 is further restricted from the conceptual rectangle above by sample availability, which depends on two factors: first, whether the sample has already been reconstructed, and second, whether the sample belongs to a logical unit that the CU is currently authorized to use.

[0047] To determine whether a sample is already reconstructed, the VVC partitioning structure is considered. Each image is divided into a tiling of square CTUs, and these CTUs are processed in raster scan order. When an intra prediction method is performed on a current CU in a current CTU, samples belonging to other CTUs preceding the current CTU in raster scan order can be reconstructed and are available for prediction. Samples belonging to CTUs following the current CTU in raster scan order are not reconstructed and therefore are unavailable.

[0048] Each CTU is itself divided into multiple CUs by a hierarchical structure consisting of quad-trees, di-trees, and ternary trees, examples of such divisions are shown in Figure 4B. Figure 4B is a schematic diagram illustrating an example of dividing a CTU into multiple CUs according to one or more embodiments of the present disclosure. The scanning order of CUs within a CTU is determined by the partitioning structure. In single-level partitioning, partitions are scanned in the following order:

[0049] (1) For horizontal bisection or horizontal trisection, from left to right. (2) In the case of vertical bisection or vertical trisection, from top to bottom. (3) In the case of four-tree division, top left, top right, bottom left, bottom right.

[0050] If a partition includes further hierarchical divisions, all CUs in that partition are scanned before proceeding to the CUs of the next partition. Figure 4B shows an example of dividing one CTU into 15 CUs, numbered 1 to 15 to indicate their scan order. When an intra prediction method is performed on a current CU in a current CTU, samples belonging to other CUs in the current CTU that precede the current CU in the partition scan order of the current CTU can be reconstructed and are available for prediction. Samples belonging to the current CU or CUs after the current CU in the partition scan order of the current CTU are not reconstructed and therefore are unavailable.

[0051] Samples belonging to a CTU preceding the current CTU in raster scan order are considered reconstructed by the above definition. However, these samples are not necessarily available for intra prediction. To be considered available for prediction, these samples must also belong to a logical unit that the current CU is allowed to use. An image may be divided into multiple sub-image partitions, each containing an integer number of CTUs. Figure 4C shows an example in which an image is divided into multiple slices. Samples belonging to slices other than the slice containing the current CU are not available for intra prediction. This restriction allows slices to be decoded independently.

[0052] 4D is a schematic diagram illustrating tile division according to one or more embodiments of the present disclosure. Figure 4D illustrates an example of dividing an image into multiple tiles. Samples belonging to tiles other than the tile containing the current CU are not available for intra prediction. This restriction allows tiles to be decoded independently.

[0053] Figure 4E shows an example of dividing an image into multiple wavefronts. Each wavefront corresponds to a row of CTUs, and the reduced dependency between CTU rows allows each wavefront to be decoded in parallel in a staggered manner. In the example of Figure 4E, a wavefront is processed with a delay of one CTU. CTU_(i,j) represents a CTU by its position in the grid, such that CTU_(i,j) indicates the CTU located in the ith CTU row and the jth CTU column. When wavefront parallelism is enabled by setting the SPS syntax element "sps_entropy_coding_sync_enabled_flag," if the CTU column position of CTU_(a,b) is greater than the current CTU column position of CTU_(i,j), i.e., if b>j, then CTU_(a,b) is unavailable.

[0054] It is up to the intra prediction method to decide how to handle the case where the reference samples needed for prediction are unavailable: the method may simply be disabled if such samples are unavailable, or some extrapolation of the unavailable samples may be performed, such as by boundary extension.

[0055] 4A , in the illustrated embodiment, the search area 400 is shaded and includes region R1 (e.g., the upper CTU row region), region R2 (e.g., the first left CTU region), region R3 (e.g., the second left CTU region), region R4 (e.g., the upper-left region of the current CTU), region R5 (e.g., the upper-right neighboring region, the upper-right region of the current CTU including the double-hatched region 405), and region R6 (e.g., the lower-left neighboring region 407, the lower-left region of the current CTU including the double-hatched region). The upper-right region 405 and the lower-left region 407 are described in detail below with reference to FIG. 4A . However, the specific regions within the upper-right region 405 and the lower-left region 407 included in the search area 400 depend on the CTU division of the current CTU 403.

[0056] In the example of FIG. 4A , a top-right region 405 extends from the top-right corner of the current CU 401 to the top-right boundary of the current CTU 403. Following the coordinate system introduced above with reference to “searchRangeWidth” and “searchRangeHeight,” the top-left corner of the current CTU 403 is denoted by the coordinate location (currCtuX, currCtuY), and the width and height of the CTU are denoted by CtuW and CtuH, respectively. In this coordinate system, the top-left corner of the top-right region 405 is located at (currCuX+BlkW, currCtuY). The top-right corner of the top-right region 405 is located at (currCtuX+CtuW-1, currCtuY). The bottom-left corner of the top-right region 405 is located at (currCuX+BlkW, currCuY-1). The bottom-right corner of the top-right region 405 is located at (currCuX+BlkW, currCuY-1).

[0057] Similarly, in the example of Figure 4A, the upper left corner of the lower left region 407 is located at (currCtuX, currCuY+BlkH). The upper right corner of the lower left region 407 is located at (currCuX-1, currCuY+BlkH). The lower left corner of the lower left region 407 is located at (currCtuX, currCtuY+CtuH-1). The lower right corner of the lower left region 407 is located at (currCuX-1, currCtuY+CtuH-1).

[0058] In some embodiments, the top right region 405 is included in the IntraTMP search area. Thus, the IntraTMP process searches for a best candidate template from multiple candidate templates, such that for one candidate template, the associated candidate predictor has a portion of that candidate template's sample block included in the top right region 405. Equivalently stated, the coordinate location of at least one sample from the associated candidate predictor is (x, y), where (x, y) is currently within the CTU, X is greater than or equal to currCuX+BlkW, and Y is less than or equal to currCuY-1.

[0059] In some embodiments, the bottom left region 407 is included in the IntraTMP search area. Thus, the IntraTMP process searches for a best candidate template from multiple candidate templates, such that for one candidate template, the associated candidate predictor has a portion of that candidate template's sample block included in the bottom left region 407. Equivalently stated, the coordinate location of at least one sample from the associated candidate predictor is (x, y), where (x, y) is currently within the CTU, X is less than or equal to currCuX-1, and Y is greater than or equal to currCuY+BlkH.

[0060] In the example of Figure 4A, the CTU boundaries are more restrictive than the restrictions imposed by "searchRangeWidth" and "searchRangeHeight," so the top-right region 405 and bottom-left region 407 now extend to the boundaries of CTU 403. Figures 5A and 5B show an example in which the restrictions imposed by "searchRangeWidth" and "searchRangeHeight" constrain the search region 400 even more than the CTU boundaries.

[0061] In some embodiments, the search order may be to first search region R4, then region R5, region R6, region R1, region R2, and region R3. In some embodiments, the search order may be R4, R6, R5, R1, R2, and then R3. In some embodiments, the search order may be any suitable combination of regions R1-R6.

[0062] In some embodiments, the boundaries of regions R1-R6 may be adjusted. For example, in some instances, regions R4 and R5 may be combined into one region. In some embodiments, regions R4 and R6 may be combined into one region. In some embodiments, region R4 may be expanded to include a left portion of region R5, and then region R5 may include only the upper right neighboring region 405 (double hatched region). In some embodiments, region R4 may be expanded to include an upper portion of region R6, and then region R6 may include only the lower left neighboring region 407 (double hatched region).

[0063] 5A-5C are schematic diagrams illustrating search regions for an IntraTMP process, according to one or more embodiments of the present disclosure. In FIG. 5A, an example search region 500A (for current CU 501) is configured so as not to exceed the maximum search range defined by "searchRangeWidth" and "searchRangeHeight" as shown. In some implementations, the maximum search range causes the upper boundary of search region 500A to be lower than the top boundary of current CTU 503. Equivalently, in the coordinate system introduced in this disclosure, if (currCuY-searchRangeHeight) is greater than currCuY, then the upper boundary of search region 500A is located at (currCuY-searchRangeHeight). Equivalently, the upper boundary of search region 500A is equal to max(currCuY, (currCuY-searchRangeHeight)).

[0064] 5A, in some embodiments, the maximum search range causes the left boundary of search region 500A to the right of the left boundary of current CTU 503. Equivalently, if (currCuX-searchRangeWidth) is greater than currCtuX, then the left boundary of search region 500A is located at (currCuX-searchRangeWidth). Equivalently, the left boundary of search region 500A is equal to max(currCtuX, (currCuX-searchRangeWidth)).

[0065] In FIG. 5B , an example search region 500B is configured so as not to exceed the maximum search range defined by “searchRangeWidth” and “searchRangeHeight” as shown. In some embodiments, the maximum search range causes the lower boundary of search region 500B to be located above the bottom boundary 505 of current CTU 503 and left CTU 504. Equivalently, if (currCuY+BlkH-1+searchRangeHeight) is less than (currCtuY+CtuH-1), then the lower boundary of search region 500B is located at (currCuY+BlkH-1+searchRangeHeight). Equivalently, the lower boundary of search region 500B is equal to min((currCtuY+CtuH-1),(currCuY+BlkH-1+searchRangeHeight)). In the above description, “min(x, y)” returns the minimum value of “x” and “y.”

[0066] 5B, the maximum search range causes the right boundary of search region 500B to be located to the left of the right boundary of current CTU 503. Equivalently, if (currCuX+BlkW-1+searchRangeWidth) is less than (currCtuX+CtuW-1), then the right boundary of search region 500B is located at (currCuX+BlkW-1+searchRangeWidth). Equivalently, the right boundary of search region 500B is equal to min((currCtuX+CtuW-1),(currCuX+BlkW-1+searchRangeWidth)).

[0067] 4A, 5A, and 5B are combined, in which case the top-right region 405 is restricted to sample blocks whose upper-left corner is located at (currCuX+BlkW,max(currCtuY,currCuY-searchRangeHeight)), whose upper-right corner is located at (min((currCtuX+CtuW-1),(currCuX+BlkW-1+searchRangeWidth),max(currCtuY,currCuY-searchRangeHeight)), whose lower-left corner is located at (currCuX+BlkW,currCuY-1), and whose lower-right corner is located at (min((currCtuX+CtuW-1),(currCuX+BlkW-1+searchRangeWidth)),currCuY-1). The bottom left region 407 is restricted to the sample blocks whose top left corner is located at (max(currCtuX,(currCuX-searchRangeWidth)),currCuY+BlkH), whose top right corner is located at (currCuX-1,currCuY+BlkH), whose bottom left corner is located at (max(currCtuX,(currCuX-searchRangeWidth)),min((currCtuY+CtuH-1),(currCuY+BlkH-1+searchRangeHeight))), and whose bottom right corner is located at (currCuX-1,min((currCtuY+CtuH-1),(currCuY+BlkH-1+searchRangeHeight))).

[0068] In FIG. 5C , the example search area 500C is further restricted to match the search area available in an intra-block copy (IBC) prediction tool. In some embodiments, if the top boundary of the IBC search area is lower than the lower limit of the maximum search range defined by “searchRangeHeight,” the top boundary of search area 500C is set to the top boundary of the IBC search area plus “templateHeight.” In some embodiments, the size of the current CTU is 256×256, and the IBC search area is restricted to the top boundary of the CTU row above it in the vertical direction. In some embodiments, the size of the current CTU is 128×128, and the IBC search area is restricted to the top boundaries of the two CTU rows above it in the vertical direction.

[0069] 6 is a schematic diagram of a wireless communication system 600 according to one or more embodiments of the present disclosure. The wireless communication system 600 may implement the framework discussed herein. As shown in FIG. 6, the wireless communication system 600 may include a network device (or base station) 601. Examples of the network device 601 include a base transceiver station (BTS), a node B (NB), an evolved node B (eNB or eNodeB), a next generation node B (gNB or gNodeB), a wireless fidelity (Wi-Fi) access point (AP), etc. In some embodiments, the network device 601 may include a relay station, an access point, an in-vehicle device, a wearable device, etc. The network equipment 601 may include wireless connectivity devices for communication networks such as a Global System for Mobile (GSM) network, a Code Division Multiple Access (CDMA) network, a Wideband CDMA (WCDMA) network, an LTE (LTE) network, a Cloud Radio Access Network (CRAN), an Institute of Electrical and Electronics Engineers (IEEE) 802.11-based network (e.g., a Wi-Fi network), an Internet of Things (IoT) network, a device-to-device (D2D) network, a next-generation network (e.g., a 5G network), a future-evolved Public Land Mobile Network (PLMN), etc. A 5G system or network is also referred to as a New Radio (NR) system or network.

[0070] 6, the wireless communication system 600 further includes a terminal equipment 603. The terminal equipment 603 may be end-user equipment configured to facilitate wireless communication. The terminal equipment 603 may be configured to wirelessly connect to the network equipment 601 (e.g., via a wireless channel 605) according to one or more corresponding communication protocols / standards. The terminal equipment 603 may be mobile or fixed. The terminal equipment 603 may be a user equipment (UE), access terminal, subscriber unit, subscriber station, mobile station, mobile station, remote station, remote terminal, mobile device, user terminal, terminal, wireless communication device, user agent, or user equipment. Examples of terminal equipment 603 include modems, mobile phones, smartphones, cordless phones, Session Initiation Protocol (SIP) phones, wireless local loop (WLL) stations, personal digital assistants (PDAs), handheld devices with wireless communication capabilities, computing devices or other processing devices connected to wireless modems, in-vehicle devices, wearable devices, Internet-of-Things (IoT) devices, devices used in 5G networks, devices used in public land mobile networks, etc.

[0071] 6 shows only one network device 601 and one terminal device 603 in the wireless communication system 600. However, in some instances, the wireless communication system 600 may include additional network devices 601 and / or terminal devices 603.

[0072] FIG. 7 is an exemplary block diagram of a terminal device 703 (e.g., capable of implementing the methods discussed herein) according to one or more embodiments of the present disclosure. As shown in the drawing, the terminal device 703 includes a processing unit 710 and a memory 720. The processing unit 710 may be configured to implement instructions corresponding to the methods discussed herein and / or other aspects of the above-described embodiments. It should be understood that the processor 710 in embodiments of the present technology may be an integrated circuit chip having signal processing capabilities. In the implementation process, steps in the above-described methods may be performed by integrated logic circuits in hardware form or instructions in software form in the processor 710. The processor 710 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, a discrete gate or transistor logic device, and a discrete hardware component. The methods, steps, and logical block diagrams disclosed in embodiments of the present technology may be performed or executed. The general-purpose processor 710 may be a microprocessor, or alternatively, the processor 710 may be any conventional processor. The steps in the methods disclosed in the embodiments of the present technology can be performed or completed directly by a decoding processor implemented as hardware, or can be performed or completed using a combination of hardware and software modules in the decoding processor. The software modules can be located in random access memory, flash memory, read-only memory, programmable read-only memory or electrically erasable programmable memory, registers, or other conventional storage media in the field. The storage medium is located in memory 720, and the processor 710 reads information in the memory 720 and completes the steps in the above methods in combination with the hardware.

[0073] It can be appreciated that memory 720 in embodiments of the present technology may be volatile or nonvolatile memory, or may include both volatile and nonvolatile memory. Nonvolatile memory may be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory may be random-access memory (RAM) used as an external cache. By way of example and not limitation, various forms of RAM may be used, such as static random-access memory (SRAM), dynamic random-access memory (DRAM), synchronous dynamic random-access memory (SDRAM), double data rate synchronous dynamic random-access memory (DDR SDRAM), enhanced synchronous dynamic random-access memory (ESDRAM), synchronous link dynamic random-access memory (SLDRAM), and direct Rambus random-access memory (DRRAM).It should be noted that memory in the systems and methods described herein is intended to comprise, without being limited to, these and any other suitable types of memory. In some examples, memory may be a non-transitory computer-readable storage medium that stores instructions executable by a processor.

[0074] 8 is an example block diagram of an electronic device 800 according to one or more embodiments of the present disclosure. The electronic device 800 may include one or more of a processing component 802, a memory 804, a power component 806, a multimedia component 808, an audio component 810, an input / output (I / O) interface 812, a sensor component 814, and a communication component 816, among others.

[0075] The processing component 802 generally controls the overall operation of the electronic device, such as operations related to the display, phone calls, data communications, camera operation, and recording operations. The processing component 802 may include one or more processors 820 to execute instructions to perform all or some of the steps in the above-described methods. Furthermore, the processing component 802 may include one or more modules to facilitate interaction between the processing component 802 and other components. For example, the processing component 802 may include a multimedia module to facilitate interaction between the multimedia component 808 and the processing component 802.

[0076] The memory 804 is configured to support the operation of the electronic device by storing various types of data. Examples of such data include instructions for any applications or methods operating on the electronic device, contact data, phone book data, messages, images, videos, etc. The memory 804 can be implemented by any type of volatile or non-volatile memory device or combination thereof, such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, and magnetic or optical disks.

[0077] The power component 806 provides power to the various components of the electronic device and may include a power management system, one or more power sources, and other components related to the generation, management, and distribution of power for the electronic device.

[0078] The multimedia component 808 may include a screen that provides an output interface between the electronic device and a user. In some embodiments, the screen may include a liquid crystal display (LCD) and a touch panel (TP). If the screen includes a TP, the screen may be implemented as a touchscreen for receiving input signals from a user. The TP may include one or more touch sensors for sensing touches, swipes, and gestures on the TP. The touch sensors may not only sense the boundaries of a touch or swipe motion, but may also detect the duration and pressure associated with the touch or swipe motion. In some embodiments, the multimedia component 808 may include a front camera and / or a rear camera. When the electronic device is in a photo mode or video mode of operation, the front camera and / or the rear camera can receive external multimedia data. Each front camera and rear camera may have a fixed optical lens system or may have focusing and optical zoom capabilities.

[0079] The audio component 810 is configured to output and / or input audio signals. For example, the audio component 810 may include a microphone (MIC) configured to receive external audio signals when the electronic device is in an operating mode such as a call mode, a recording mode, and a voice recognition mode. The received audio signals can be further stored in the memory 804 or transmitted via the communication component 816. In some embodiments, the audio component 810 may further include a speaker configured to output audio signals.

[0080] The I / O interface 812 provides an interface between the processing component 802 and a peripheral interface module, which may be a keyboard, a click wheel, buttons, etc. The buttons may include, but are not limited to, a home button, volume buttons, a start button, and a lock button.

[0081] The sensor component 814 may include one or more sensors configured to provide status assessments for various aspects of the electronic device. For example, the sensor component 814 may detect the on / off state of the electronic device and the relative position of components such as the display and miniature keyboard of the electronic device. Additionally, the sensor component 814 may detect changes in the position of the electronic device or components of the electronic device, the presence or absence of contact between a user and the electronic device, the orientation or acceleration / deceleration of the electronic device, and changes in the temperature of the electronic device. The sensor component 814 may include a proximity sensor configured to detect the presence of a nearby object without physical contact. The sensor component 814 may also include an optical sensor, such as a complementary metal oxide semiconductor (CMOS) or charge-coupled device (CCD) image sensor configured for use in imaging applications. In some embodiments, the sensor component 814 may also include an acceleration sensor, a gyroscope sensor, a magnetic sensor, a pressure sensor, or a temperature sensor.

[0082] The communication component 816 is configured to facilitate wired or wireless communication between the electronic device and other devices. The electronic device may access a communication standard-based wireless network, such as a WIFI network, a second-generation (2G) or 3G network, or a combination thereof. In an exemplary embodiment, the communication component 816 receives a broadcast signal or broadcast-related information from an external broadcast management system via a broadcast channel. In an exemplary embodiment, the communication component 816 may further include a near-field communication (NFC) module for facilitating short-range communication. For example, the NFC module may be implemented based on Radio Frequency Identification (RFID) technology, Infrared Data Association (IrDA) technology, Ultra-Wideband (UWB) technology, Bluetooth (BT) technology, and other technologies.

[0083] In an exemplary embodiment, the electronic device 800 may be implemented by one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), controllers, microcontrollers, microprocessors, or other electronic components and is configured to perform the above-described methods.

[0084] In an exemplary embodiment, a non-transitory computer-readable storage medium containing instructions is further provided, such as a memory 804 containing instructions, which can be executed by the processing component 802 of the electronic device 800 to perform the methods discussed herein. For example, the non-transitory computer-readable storage medium can be a ROM, a random access memory (RAM), a compact disc read-only memory (CD-ROM), a magnetic tape, a floppy disk, an optical data storage device, etc.

[0085] 9 is a flowchart of a method according to one or more embodiments of the present disclosure. Method 900 may be implemented by a system or device (such as a system or device with an IntraTMP module discussed herein). Method 900 is intended to illustrate intra-template matching prediction. Method 900 may include box 901, which determines whether a current block employs IntraTMP mode. Examples of IntraTMP modules are described in detail with reference to FIGS. 1A-5C.

[0086] At box 903, method 900 writes (or parses) and identifies an IntraTMP flag in response to determining that the current block employs IntraTMP mode. At box 903, method 900 continues by parsing and identifying the IntraTMP flag in response to determining that the current block employs IntraTMP mode. At box 905, method 900 continues by parsing and identifying an IntraTMP fusion flag in response to determining that the current block employs IntraTMP fusion mode, if the current block employs IntraTMP mode. In some embodiments (e.g., on the encoding side), method 900 may include writing the fusion flag. In some embodiments (e.g., on the decoding side), method 900 may include parsing the fusion flag.

[0087] At box 907, method 900 continues by generating a fused IntraTMP predictor in response to determining that the current block uses the IntraTMP fusion method if the current block employs the IntraTMP fusion mode. At box 909, method 900 continues by analyzing and identifying an IntraTMP filter flag in response to determining that the current block employs the IntraTMP filter mode if the current block does not employ the IntraTMP fusion mode. At box 911, method 900 continues by generating a filtered IntraTMP predictor in response to determining that the current block uses the IntraTMP filter method if the current block employs the IntraTMP filter mode.

[0088] In some embodiments, the method 900 may include analyzing and identifying an IntraTMP index, the index indicating an IntraTMP block selected from the IntraTMP candidate list. In some embodiments, the method 900 further includes determining whether the current block uses fractional pixel precision.

[0089] In some embodiments, the method 900 further includes writing (or parsing the bitstream to identify) a fractional pixel flag in response to determining that fractional pixel precision is to be used for the current block. In some embodiments, the method 900 further includes writing a fractional pixel index indicating a location of a fractional pixel in response to determining that fractional pixel precision is to be used for the current block.

[0090] In some embodiments, the IntraTMP fusion method includes one or more of a decoder-side intra-mode derivation (DIMD) method, a template-based intra-mode derivation (TIMD) method, and a planar mode and weight calculation method.

[0091] In some embodiments, the method 900 may include (i) determining whether the current block uses a template of a particular shape, and (ii) writing (or parsing the bitstream to identify) a template shape flag indicating that the current block uses a template of the particular shape.

[0092] In some embodiments, the method 900 may include: (1) determining whether the current block employs a combined inter-intra prediction (CIIP) mode; and (2) writing a spatial CIIP flag (or parsing and identifying the parsed bitstream) in response to determining that the current block employs the CIIP mode.

[0093] Additional Considerations The above specific embodiments of examples of the disclosed technology are not intended to be exhaustive or to limit the disclosed technology to the precise form disclosed above. While specific examples of the disclosed technology have been described above for illustrative purposes, those skilled in the relevant art will recognize that various equivalent modifications are possible within the scope of the described technology. For example, while processes or boxes are shown in a given order, alternative embodiments may perform routines or employ systems having boxes in a different order, and some processes or boxes may be deleted, moved, added, subdivided, combined, and / or modified to provide alternative embodiments or subcombinations. Each of these processes or boxes may be implemented in a variety of different ways. Also, while processes or boxes are sometimes shown as being performed in series, these processes or boxes may instead be performed or implemented in parallel, or may be performed at different times. Furthermore, any specific numerical values ​​referred to herein are merely examples, and alternative embodiments may employ different values ​​or ranges.

[0094] In specific embodiments, numerous specific details are described to provide a thorough understanding of the technology described herein. In other embodiments, the technology introduced herein may be practiced without these specific details. In other instances, well-known features, such as particular functions or routines, are not described in detail to avoid unnecessarily obscuring the present disclosure. References herein to an "embodiment / example," "one embodiment / example," or the like mean that a particular feature, structure, material, or characteristic described is included in at least one embodiment of the described technology. Thus, appearances of such phrases herein do not necessarily all refer to the same embodiment / example. Neither are such references necessarily mutually exclusive. Furthermore, particular features, structures, materials, or characteristics can be combined in any suitable manner in one or more embodiments / examples. It should be understood that the various embodiments shown in the drawings are merely illustrative representations and are not necessarily drawn to scale.

[0095] For purposes of clarity, some details describing structures or processes that are well-known and often associated with communication systems and subsystems, but that may unnecessarily obscure some important aspects of the disclosed technology, have not been described herein. Furthermore, although the following disclosure describes some embodiments of different aspects of the present disclosure, some other embodiments may have different configurations or different components than those described in this section. Thus, the disclosed technology may have other embodiments that have additional elements or that lack some of the elements described below.

[0096] Many implementations or aspects of the technology described herein may take the form of computer- or processor-executable instructions, including routines executed by a programmable computer or processor. Those skilled in the relevant art will understand that the described technology may be implemented in computer or processor systems other than those shown and described below. The technology described herein may be implemented in a special-purpose computer or data processor that is specially programmed, configured, or constructed to execute one or more of the computer-executable instructions described below. Accordingly, the terms "computer" and "processor," as used generally herein, refer to any data processor. Information processed by these computers and processors may be presented in any suitable display medium. Instructions for performing computer- or processor-executable tasks may be stored in or on any suitable computer-readable medium, including hardware, firmware, or a combination of hardware and firmware. Instructions may be contained in any suitable memory device, including flash drives and / or other suitable media.

[0097] The term "and / or" in this specification is merely a relational relationship for describing related objects and indicates that a triple relationship may exist. For example, A and / or B may indicate three cases: A exists alone, A and B both exist, and B exists alone.

[0098] These and other changes can be made to the disclosed technology in light of the above detailed description. While the detailed description describes specific examples of the disclosed technology, as well as the best mode contemplated, no matter how detailed the above description appears in text, the disclosed technology can be practiced in many ways. Details of the system, while encompassed by the technology disclosed herein, may vary widely in specific embodiments thereof. As noted above, specific terminology used in describing particular features or aspects of the disclosed technology should not be construed as suggesting that the terminology is redefined herein as being limited to the particular characteristic, feature, or aspect of the disclosed technology with which it is associated. Accordingly, the present invention is not limited except as by the appended claims. In general, terms used in the following claims should not be construed as limiting the disclosed technology to the specific examples disclosed in the specification, unless the detailed description section above explicitly defines such terms.

[0099] Those skilled in the art may recognize that, in combination with the examples described in the embodiments disclosed herein, the units and algorithm steps may be realized by electronic hardware or a combination of computer software and electronic hardware. Whether a function is performed by hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art may use different methods to implement the described functions for each specific application, but this should not be interpreted as departing from the scope of the present application.

[0100] Although certain aspects of the invention are presented below in particular claim forms, Applicant contemplates various aspects of the invention in any number of claim forms, and accordingly, Applicant reserves the right to seek additional claims after the filing of this application, and to pursue such additional claim forms in either this application or any continuing application.

Claims

1. 1. A method for directing intra template matching prediction (IntraTMP), comprising: determining whether the current block adopts IntraTMP mode; In response to determining that the current block adopts the IntraTMP mode, analyzing and identifying an IntraTMP flag; parsing and identifying an IntraTMP index, the IntraTMP index indicating an IntraTMP block selected from an IntraTMP candidate list; The method for indicating the IntraTMP comprises: When it is determined that the current block adopts the IntraTMP mode, analyzing and identifying an IntraTMP fusion flag in response to the determination that the current block adopts the IntraTMP fusion mode; If it is determined that the current block employs the IntraTMP fusion mode, generating a fused IntraTMP predictor in response to the current block determining that it uses an IntraTMP fusion method; and When it is determined that the current block does not adopt the IntraTMP fusion mode, analyzing and identifying an IntraTMP filter flag in response to the current block being determined to adopt the IntraTMP filter mode; When it is determined that the current block employs the IntraTMP filter mode, the method for indicating IntraTMP further includes generating a filtered IntraTMP predictor in response to determining that the current block uses an IntraTMP filter method.

2. The method for indicating the IntraTMP comprises: further comprising determining whether the current block uses fractional pixel precision.

2. The method for indicating an IntraTMP according to claim 1.

3. The method for indicating the IntraTMP comprises: and analyzing and identifying a fractional pixel flag in response to determining that the current block uses fractional pixel precision.

3. The method for indicating an IntraTMP according to claim 2.

4. The method for indicating the IntraTMP comprises: and analyzing and identifying a sub-pixel index in response to determining that the current block uses the sub-pixel precision, the sub-pixel index indicating a location of a sub-pixel.

3. The method for indicating an IntraTMP according to claim 2.

5. The IntraTMP fusion method includes a decoder-side intra-mode derivation (DIMD) method.

2. The method for indicating an IntraTMP according to claim 1.

6. The IntraTMP fusion method includes a template-based intra-mode derivation (TIMD) method; 2. The method for indicating an IntraTMP according to claim 1.

7. The IntraTMP fusion method includes a planar mode method; 2. The method for indicating an IntraTMP according to claim 1.

8. The IntraTMP fusion method includes a weight calculation method.

2. The method for indicating an IntraTMP according to claim 1.

9. 1. A method for directing intra template matching prediction (IntraTMP), comprising: determining whether the current block employs a combined inter-intra prediction (CIIP) mode; analyzing and identifying a spatial CIIP flag in response to determining that the current block adopts the CIIP mode; In response to determining that the current block adopts the IntraTMP mode, analyzing and identifying an IntraTMP flag; parsing and identifying an IntraTMP index, the IntraTMP index indicating an IntraTMP block selected from an IntraTMP candidate list; The method for indicating the IntraTMP comprises: When it is determined that the current block adopts the IntraTMP mode, analyzing and identifying an IntraTMP fusion flag in response to the determination that the current block adopts the IntraTMP fusion mode; If it is determined that the current block employs the IntraTMP fusion mode, generating a fused IntraTMP predictor in response to the current block determining that it uses an IntraTMP fusion method; and When it is determined that the current block does not adopt the IntraTMP fusion mode, analyzing and identifying an IntraTMP filter flag in response to the current block being determined to adopt the IntraTMP filter mode; When it is determined that the current block employs the IntraTMP filter mode, the method for indicating IntraTMP further includes generating a filtered IntraTMP predictor in response to determining that the current block uses an IntraTMP filter method.

10. The method for indicating the IntraTMP comprises: further comprising determining whether the current block uses fractional pixel precision.

10. The method for indicating an IntraTMP according to claim 9.

11. The method for indicating the IntraTMP comprises: and analyzing and identifying a fractional pixel flag in response to determining that the current block uses fractional pixel precision. The method for indicating an IntraTMP according to claim 10.

12. The method for indicating the IntraTMP comprises: and analyzing and identifying a sub-pixel index in response to determining that the current block uses the sub-pixel precision, the sub-pixel index indicating a location of a sub-pixel. The method for indicating an IntraTMP according to claim 10.

13. The IntraTMP fusion method includes a decoder-side intra-mode derivation (DIMD) method.

10. The method for indicating an IntraTMP according to claim 9.

14. The IntraTMP fusion method includes a template-based intra-mode derivation (TIMD) method; 10. The method for indicating an IntraTMP according to claim 9.

15. The IntraTMP fusion method includes a planar mode method; 10. The method for indicating an IntraTMP according to claim 9.

16. The IntraTMP fusion method includes a weight calculation method.

10. The method for indicating an IntraTMP according to claim 9.

17. 1. A method for directing intra template matching prediction (IntraTMP), comprising: determining whether the current block adopts IntraTMP mode; In response to determining that the current block adopts the IntraTMP mode, analyzing and identifying an IntraTMP flag; Parsing and identifying a template shape flag, the template shape flag indicating the use of a particular shape template; determining whether the current block uses a template of the particular shape; The method for indicating the IntraTMP comprises: When it is determined that the current block adopts the IntraTMP mode, analyzing and identifying an IntraTMP fusion flag in response to the determination that the current block adopts the IntraTMP fusion mode; If it is determined that the current block employs the IntraTMP fusion mode, generating a fused IntraTMP predictor in response to the current block determining that it uses an IntraTMP fusion method; and When it is determined that the current block does not adopt the IntraTMP fusion mode, analyzing and identifying an IntraTMP filter flag in response to the current block being determined to adopt the IntraTMP filter mode; When it is determined that the current block employs the IntraTMP filter mode, the method for indicating IntraTMP further includes generating a filtered IntraTMP predictor in response to determining that the current block uses an IntraTMP filter method.

18. The method for indicating the IntraTMP comprises: The method further includes parsing and identifying an IntraTMP index, the IntraTMP index indicating an IntraTMP block selected from the IntraTMP candidate list.

18. The method for indicating an IntraTMP according to claim 17.

19. The method for indicating the IntraTMP comprises: determining whether the current block uses fractional pixel precision; responsive to determining that the current block uses the fractional pixel precision, analyzing and identifying a fractional pixel flag; and in response to determining that the current block uses the fractional pixel precision, analyzing and identifying a fractional pixel index, the fractional pixel index indicating a location of a fractional pixel.

18. The method for indicating an IntraTMP according to claim 17.

20. The IntraTMP fusion method includes: a decoder-side intra-mode derivation (DIMD) method; a template-based intra-mode derivation (TIMD) method; [0033] a planar mode and a weight calculation method; 18. The method for indicating an IntraTMP according to claim 17.

21. 1. A method for directing intra template matching prediction (IntraTMP), comprising: determining whether the current block adopts IntraTMP mode; writing an IntraTMP flag in response to the current block being determined to adopt the IntraTMP mode; writing an IntraTMP index indicating the IntraTMP block selected from the IntraTMP candidate list; The method for indicating the IntraTMP comprises: If it is determined that the current block adopts the IntraTMP mode, writing an IntraTMP fusion flag in response to the determination that the current block adopts the IntraTMP fusion mode; If it is determined that the current block employs the IntraTMP fusion mode, generating a fused IntraTMP predictor in response to the current block determining that it uses an IntraTMP fusion method; and If it is determined that the current block does not adopt the IntraTMP fusion mode, writing an IntraTMP filter flag in response to the current block being determined to adopt the IntraTMP filter mode; When it is determined that the current block employs the IntraTMP filter mode, the method for indicating IntraTMP further includes generating a filtered IntraTMP predictor in response to determining that the current block uses an IntraTMP filter method.

22. The method for indicating the IntraTMP comprises: further comprising determining whether the current block uses fractional pixel precision.

22. The method for indicating an IntraTMP according to claim 21.

23. The method for indicating the IntraTMP comprises: and writing a fractional pixel flag in response to determining that the current block uses fractional pixel precision.

23. The method for indicating an IntraTMP according to claim 22.

24. The method for indicating the IntraTMP comprises: and, in response to determining that the current block uses the fractional pixel precision, writing a fractional pixel index indicating a location of the fractional pixel.

23. The method for indicating an IntraTMP according to claim 22.

25. The IntraTMP fusion method includes a decoder-side intra-mode derivation (DIMD) method.

22. The method for indicating an IntraTMP according to claim 21.

26. The IntraTMP fusion method includes a template-based intra-mode derivation (TIMD) method; 22. The method for indicating an IntraTMP according to claim 21.

27. The IntraTMP fusion method includes a planar mode method; 22. The method for indicating an IntraTMP according to claim 21.

28. The IntraTMP fusion method includes a weight calculation method.

22. The method for indicating an IntraTMP according to claim 21.