Template matching prediction for video encoding and decoding
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- INTERDIGITALCE PATENT HLDG SAS
- Filing Date
- 2022-03-22
- Publication Date
- 2026-08-03
Smart Images

Figure 0007898803000006 
Figure 0007898803000007 
Figure 0007898803000008
Abstract
Description
Technical Field
[0001] This disclosure relates to video compression.
Background Art
[0002] To achieve high compression efficiency, image and video coding methods typically employ prediction and transformation to exploit spatial redundancy and temporal redundancy within video content. Generally, intra prediction or inter prediction is used to exploit intra-frame correlation or inter-frame correlation. The difference between the original picture block and the predicted picture block, often shown as the prediction error or prediction residual, is transformed, quantized, and entropy coded. To reconstruct the video, the compressed data is decoded by inverse processes corresponding to entropy coding, quantization, transformation, and prediction.
Summary of the Invention
[0003] Generally, at least one example of an embodiment involves a method or apparatus for video encoding or decoding, the method or apparatus including providing an intra prediction processing mode that employs template matching prediction based on a determined search range as described herein.
[0004] At least one example of an embodiment may involve a method or apparatus for video encoding or decoding, the method or apparatus including providing an intra prediction processing mode that employs template matching prediction based on a template search having a fixed number of comparisons per pixel regardless of block size.
[0005] At least one example of the embodiment may involve a method or apparatus for video encoding or decoding, the method or apparatus including providing an intra-predictive processing mode that employs template matching prediction based on a template search having a fixed number of comparisons per pixel, regardless of block dimensions, and modifying the search range to enable parallel processing.
[0006] At least one example of the embodiment may include an apparatus comprising: one or more processors configured to determine a predicted block for a current block of picture information based on a comparison of a template associated with the current block and at least one other template associated with at least one other block in the area of decoded picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block; and decoding the current block based on the predicted block.
[0007] At least one example of the embodiment may involve a method that determines a predicted block for a current block of picture information based on a comparison of the template associated with the current block with at least one other template associated with at least one other block in the area of decoded picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block, and decodes the current block based on the predicted block.
[0008] At least one example of the embodiment may include an apparatus comprising: one or more processors configured to determine a predicted block for a current block of picture information based on a comparison of a template associated with the current block and at least one other template associated with at least one other block in the area of reconstructed picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block; and encoding the current block based on the predicted block.
[0009] At least one example of the embodiment may include one or more processors configured to determine a predicted block for a current block of picture information based on a comparison of a template associated with the current block and at least one other template associated with at least one other block in the area of reconstructed picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block; and a method that encodes the current block based on the predicted block.
[0010] According to another general aspect of at least one embodiment, a device is provided comprising: an apparatus according to any of the decoding embodiments; and at least one of: (i) an antenna configured to receive a signal, the signal including a video block; (ii) a band limiter configured to restrict the received signal to a frequency band including a video block; or (iii) a display configured to display an output representing a video block.
[0011] Another generalized aspect of at least one embodiment provides a non-temporary computer-readable medium containing data content generated according to any of the decrypting embodiments or variations described.
[0012] According to another general aspect of at least one embodiment, a computer program product is provided that stores program instructions suitable for implementing one or more embodiments of the method described herein when executed by a processor.
[0013] According to another generalized aspect of at least one embodiment, a signal is provided that includes video data generated according to any of the described encoding embodiments or variations.
[0014] According to another generic aspect of at least one embodiment, the bitstream is formatted to include data content generated according to any of the decrypting embodiments or variations described.
[0015] The following provides a simplified overview of these embodiments to give a basic understanding of some aspects of the present disclosure. This overview is not a comprehensive overview of the present content. It is not intended to identify the main / important elements of the embodiments or to delineate the scope of the subject matter. The following overview merely presents some aspects of the principles in a simplified form as a prelude to the more detailed explanation provided below. [Brief explanation of the drawing]
[0016] This disclosure may be better understood by considering the following detailed description in conjunction with the attached drawings.
[0017] [Figure 1] This figure shows an example of an encoder, such as a video encoder, suitable for implementing the various aspects, features, and embodiments described herein, in the form of a block diagram. [Figure 2] This figure shows an example of a decoder, such as a video decoder, suitable for implementing the various aspects, features, and embodiments described herein, in the form of a block diagram. [Figure 3]This diagram shows intra-predictive modes in Versatile Video Coding (VVC) and other applications. [Figure 4] This figure shows an example of template matching prediction (TMP). [Figure 5] This figure shows an example of parallel processing, such as wavefront parallel processing (WPP), in video coding. [Figure 6] This figure shows an example of at least one embodiment which may generally involve a TMP having a single search area. [Figure 7] This figure shows an example of at least one embodiment which may generally involve a TMP having multiple search areas. [Figure 8] This figure shows an example of at least one embodiment which may generally involve a TMP with a relatively small search range (in this case, not all pixels in the current coding tree unit (CTU) may be used). [Figure 9] This figure shows an example of at least one embodiment that may generally involve a TMP with wavefront parallel processing (WPP). [Figure 10] This figure shows an example of at least one embodiment, which may include a TMP that decodes a search range generally limited to the current CTU line, in order to enable independent CTU line decoding. [Figure 11] This figure shows an example of at least one embodiment which may have a TMP with an upper template that is generally ignored when it exceeds the CTU line. [Figure 12] This diagram shows, in block diagram form, an example of an embodiment of a suitable apparatus, device, or system for implementing one or more embodiments, aspects, or features of the present disclosure. [Figure 13] This figure shows an example of at least one embodiment of the present disclosure. [Figure 14]A diagram showing an example of at least one embodiment according to the present disclosure. [Figure 15] A diagram showing an example of at least one embodiment according to the present disclosure.
[0018] It should be understood that the drawings are for showing examples of various aspects, features, and embodiments according to the present disclosure and are not necessarily the only possible configurations. Throughout the various drawings, like reference numerals refer to the same or similar features.
Embodiments for Carrying Out the Invention
[0019] As will be described in more detail below, the video codec may involve an intra prediction processing mode. An example of intra prediction can employ a template matching prediction process. The template matching prediction can be based on template search in a specific region. At least one example of the embodiments described herein may involve template matching prediction having a fixed number of comparisons per pixel. The fixed number of comparisons per pixel can be performed regardless of the block size. In at least one other embodiment, the template matching prediction may involve a fixed number of comparisons regardless of the block size and modifying the search range so that parallel processing can be executed.
[0020] One example of an approach to video coding is provided by High Efficiency Video Coding (HEVC). More recent additions to video compression technology include various versions of reference software and / or documentation known as the Joint Exploration Model (JEM), which is being developed by the Joint Video Exploration Team (JVET) as part of the development of a new video coding standard known as Multipurpose Video Coding (VVC). The goal of JEM is to make further improvements to the existing High Efficiency Video Coding (HEVC) standard, such as improving coding efficiency and reducing complexity.
[0021] For the sake of clarity, one or more aspects and / or examples of the embodiments and / or examples of the features described herein may be described in relation to a particular standard such as the VVC. However, reference to the VVC or any other particular standard is not intended to and does not limit the scope of the potential application of the various embodiments and features described herein.
[0022] Now, looking at the figures, Figure 1 shows an example of a video encoder 100, such as a High Efficiency Video Coding (HEVC) encoder. Modifications of this encoder 100 are possible. However, for clarity, encoder 100 is described below without describing all possible variations. For example, Figure 1 may also show an encoder that is an improvement over the HEVC standard, or an encoder that employs HEVC-like technology, such as the Joint Video Exploration Model (JEM) encoder being developed by the Joint Video Exploration Team (JVET) as part of the development of a new video coding standard known as Multipurpose Video Coding (VVC).
[0023] Before encoding, the video sequence may undergo pre-encoding processing (101), such as applying a color conversion to the input color picture (e.g., converting from RGB4:4:4 to YCbCr4:2:0), or performing a remapping of the input picture components to obtain a signal distribution more resilient to compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with the pre-processing and appended to the bitstream.
[0024] In HEVC, to encode a video sequence having one or more pictures, one picture is divided into one or more slices (102), and each slice may contain one or more slice segments. The slice segments are organized into coding units, prediction units, and transformation units. The HEVC specification distinguishes between “blocks” and “units,” where a “block” is a specific region of a sample array (e.g., lumens, Y), and a “unit” is a collated block containing all encoded color components (Y, Cb, Cr, or monochrome), syntax elements, and prediction data associated with the block (e.g., motion vectors).
[0025] For coding in HEVC, a picture is divided into square coding tree blocks (CTBs) of a configurable size, and a set of consecutive coding tree blocks is grouped into slices. A coding tree unit (CTU) contains the CTB of the encoded color components. The CTB is the root of the quadtree partitioning into coding blocks (CBs), which may be divided into one or more prediction blocks (PBs), forming the root of the quadtree partitioning into transform blocks (TBs). Corresponding to coding blocks, prediction blocks, and transform blocks, a coding unit (CU) contains a prediction unit (PU) and a transform unit (TU) of a tree structure set, where the PU contains prediction information for all color components, and the TU contains the residual coding syntax structure for each color component. The sizes of the CBs, PBs, and TBs of the lumens components apply to the corresponding CUs, PUs, and TUs. Figure 3 illustrates the division of a coding tree unit (CTU) in HEVC into coding units (CUs), prediction units (PUs), and transformation units (TUs).
[0026] In JEM, the Quadtree plus Binary Tree (QTBT) structure eliminates the concept of multiple partition types in HEVC, i.e., the distinction between CU, PU, and TU concepts. A coding tree unit (CTU) is first partitioned by a quadtree structure. The leaf nodes of the quadtree are further partitioned by a binary tree structure. The leaf nodes of the binary tree are called coding units (CUs) and are used for prediction and transformation without further partitioning. Therefore, CUs, PUs, and TUs have the same block size in the new coding QTBT block structure. In JEM, a CU consists of blocks of different color components, i.e., coding blocks (CBs).
[0027] In this application, the term “block” may be used to refer to, for example, any of CTU, CU, PU, TU, CB, PB, and TB. In addition, “block” may also be used to refer to macroblocks and partitions as specified in H.264 / AVC or other video coding standards, and more broadly, to refer to arrays of data of various sizes.
[0028] In encoder 100, the picture is encoded by encoder elements as described below. The picture to be encoded is divided into units, for example, CUs (102), and processed. Each unit is encoded using either intra-mode or inter-mode, for example. When a unit is encoded in intra-mode, it performs intra-prediction (160). In inter-mode, motion estimation (175) and motion compensation (170) are performed. The encoder determines whether to use intra-mode or inter-mode to encode a unit (105), and indicates the intra / inter decision, for example, by a prediction mode flag. The prediction residual is calculated, for example, by subtracting the predicted blocks from the original image blocks (110).
[0029] The predicted residual is then transformed (125) and quantized (130). The quantized transformation coefficients, as well as the motion vector and other syntax elements, are entropicoded to output a bitstream (145). The encoder can skip the transformation and apply quantization directly to the untransformed residual signal. The encoder can bypass both the transformation and quantization, i.e., the residual is encoded directly without applying either the transformation or quantization process.
[0030] The encoder decodes the encoded blocks to provide a reference for further prediction. The quantized transformation coefficients are inversely quantized (140) and inversely transformed (150) to decode the prediction residuals. The decoded prediction residuals and prediction blocks are combined (155) to reconstruct the image blocks. An in-loop filter (165) is applied to the reconstructed picture to perform, for example, non-blocking / sample adaptive offset (SAO) filtering to reduce encoding artifacts. The filtered image is stored in a reference picture buffer (180).
[0031] Figure 2 shows a block diagram of the video decoder 200. In the decoder 200, the bitstream is decoded by the decoder elements, as described below. The video decoder 200 generally performs a decoding path that is the opposite of the encoding path described in Figure 1. The encoder 100 also generally performs video decoding as part of encoding the video data.
[0032] In particular, the input to the decoder includes a video bitstream, which can be generated by the video encoder 100. The bitstream is first entropy-decoded to obtain transformation coefficients, motion vectors, and other encoded information (230). Picture segmentation information indicates how the picture is segmented. The decoder can therefore segment the picture according to the decoded picture segmentation information (235). The transformation coefficients are inversely quantized (240) and inversely transformed (250) to decode the prediction residuals. The image blocks are reconstructed by combining the decoded prediction residuals and the predicted blocks (255). Predicted blocks can be obtained from intra-prediction (260) or motion-compensated prediction (i.e., inter-prediction) (275) (270). An in-loop filter (265) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (280).
[0033] The decoded picture may undergo further post-decoded processing (285), such as inverse color transformation (e.g., conversion from YCbCr4:2:0 to RGB4:4:4), or reverse remapping, which performs the reverse of the remapping process performed in pre-encoding processing (101). The post-decoded processing may use metadata derived in pre-encoding processing and signaled in the bitstream.
[0034] As described above, in the HEVC video compression standard, a picture is divided into so-called coding tree units (CTUs), and each CTU is represented by a coding unit (CU) in the compressed region. Each CU is then given several intra or interprediction parameters (prediction information). To do this, it is spatially divided into one or more prediction units (PUs), and each PU is assigned several pieces of prediction information. The intra or intercoding mode is assigned at the CU level. Intra-frame correlation or inter-frame correlation is used with intra-frame or inter-frame prediction. The difference between the original block and the predicted block, often shown as prediction error or prediction residual, is transformed, quantized, and entropicoded in the transformed block (TB). To reconstruct the video, the compressed data is decoded by the reverse process corresponding to entropicoding, quantization, transformation, and prediction.
[0035] Intra-picture prediction is a fundamental part of image and video compression. Traditionally, the prediction signal is generated by or from L-shaped reconstructed pixels (reference samples) to the left and / or above the current block or coding unit. During intra-prediction, the reference samples are acquired based on assuming them along various angles. This mechanism is known as angle prediction. Video codecs such as VVC offer 65 intra-prediction modes, including 63 angle predictions as well as DC predictions and plane predictions, as shown in Figure 3.
[0036] Traditional intra-prediction in VVC is enhanced with multiple tools. - Cross-component linear model (CCLM): The chroma prediction block is generated by a linear model of the luma-reconstructed sample. - Multi-reference line prediction (MRL): Uses more reference samples to generate prediction blocks. - Intra sub-partitioning (ISP): The prediction block is separated into four sub-blocks that share the same prediction mode. - Matrix-weighted intra-prediction (MIP): Prediction blocks are generated by multiplying the reference sample by several offline-optimized prediction matrices. - Intra-block copy (IBC): Prediction blocks are generated by copying another block from an already reconstructed image portion, and the displacement vectors are transmitted as signals in the bitstream.
[0037] The residual block is transformed in another mode of combination of DST-VII and DCT-VIII, known as core transform DCT-II, or multiple transform selection (MTS). The transformed block may be further transformed using a second-order non-separable transform to further compress the residual block. This process is called the low-frequency non-separable transform (LFNST).
[0038] Template Matching Prediction (TMP) is another powerful intra-prediction mode not included in VVC. It is performed by searching for one or more similar L-shaped neighborhoods (called "templates") to find one or more target or candidate blocks for prediction. This is illustrated in Figure 4. When TMP is used, the current template is formed by the reconstructed L-shaped neighborhoods. Similar templates with small differences from the current template are found. The blocks belonging to these templates (target blocks) are used to generate a prediction signal, either by averaging them or by considering only those with the smallest template difference.
[0039] Integrating TMP with video codecs such as VVC requires proper interoperability with existing intranet tools. That is, - Interaction with ISP, MIP, and MRL - Interaction with conversion tools (MTS and LFNST, implicit MTS) - Interaction with combined inter and-intra prediction (CIIP)
[0040] In general, at least one example of the embodiments described herein addresses these interactions, enables this mode, and provides an acceptable complexity / rate distortion (RD) performance trade-off for subsequent VVC profiles or new codecs, for example.
[0041] One potential problem associated with implementing TPM stems from the number of comparisons per pixel. For a given search range, the number of comparisons for smaller blocks is far greater than the number of comparisons for larger blocks. This increases the complexity for smaller blocks and can become a bottleneck in the coding process.
[0042] Another potential issue is that TMP may perform template searches that do not allow parallel processing. Specifically, in wavefront parallel processing (WPP), the CTU decoding process must be independent of the CTUs from the top-right CTU onward. This is illustrated in Figure 5. That is, each CTU within a given CTU line decode (a "thread" in Figure 5) can be decoded if the top-right CTU of the previous thread / line decode has been decoded. This limits the search scope to the reconstructed portion.
[0043] In general, at least one example of the embodiments described herein may include the following: - Independent of or unrelated to the block size, defining a certain number of comparisons per pixel, e.g., a fixed number or maximum number of comparisons per pixel, and / or - Define the search scope so that parallel processing can be performed, for example, limiting the search scope to the reconfigured frame portion.
[0044] One example of an embodiment involving a comparison of a certain number of pixels, such as a fixed number comparison or a maximum number comparison, can provide a single search area. For example, the search range can be within a single area, or it can be limited to a single area. One example of an embodiment may involve a single search area located at the top left of the current block (CU / PU). This provides avoidance of accessing pixels that have not been decoded within the current CTU. This search area is shown in Figure 6.
[0045] In one embodiment, a number of comparisons can be determined based on or in relation to the search area. For example, for a search area of width "search_w" and height "search_h", a comparison of search_w x search_ is performed to select the most matching block. That is, in the example described, the number of comparisons per pixel (CompPerPixel) is calculated as follows:
[0046]
number
[0047] In order to fix CompPerPixel, search_w / blk_w and search_h / blk_h must be fixed. In other words, it is as follows:
[0048]
number
[0049] At least one other example of the embodiment may involve multiple search regions or search areas. Multiple search regions may possibly provide a higher coding gain. An example of an embodiment of multiple search regions may involve a search based on a region or area that includes one or more reconstructed pixels of the upper right and upper left CTUs, in addition to the reconstructed pixels having the current CTU. Figure 7 shows an example of multiple search regions. In the example in Figure 7, four regions are defined as follows: R1: Start in the upper left corner from the current position within the current CTU. R2: Top left pixel R3: Top right pixel R4 left pixel
[0050] Each search area is defined by its search width (search_w) and search height (search_h). The total comparison per pixel is calculated as follows:
[0051]
number
[0052] To have a fixed CompPerPixel, as in the case of a single search area, search_w / blk_w and search_h / blk_h must be fixed. In other words, as follows:
[0053]
number
[0054] For small search ranges, one example of an embodiment may be based on using fewer than all pixels in the current CTU being used; that is, using not all, but some, or a subset, of the pixels in the current CTU. This is illustrated by an example of an embodiment shown in Figure 8.
[0055] In general, at least one other example of the embodiment may involve template matching prediction based on providing or enabling a parallel process, such as wavefront parallel processing (WPP). In at least one example of the embodiment, the search range is restricted so as not to access pixels beyond the upper right CTU of each CTU line in order to enable wavefront parallel processing (WPP). That is, pixels should not be used if they are not readily available. Figure 9 shows an example of the embodiment, where CTUs that can be used for TMP search are shown as shaded, and the current block is located inside the white, unshaded CTUs.
[0056] In general, at least one other example of the embodiment may involve independent CTU lines. For example, for many real-time coding processes, it may be desirable that each CTU line be independently decodeable; that is, there is no dependency between the current CTU line and the line above it. In order to enable TMP and have independent CTU lines, the search range can be reduced, controlled, or determined to restrict, deny, or disable access to the upper CTU line, as illustrated by the example shown in Figure 10.
[0057] Furthermore, in at least one other example of the embodiment, if the template extends beyond the current CTU line, only the left template is considered. This occurs when the vertical position of the current block is the same as the CTU. This is shown in Figure 11. In this case, the upper template is not used to find the best candidate, and only the left template is used.
[0058] At least one other example of the embodiment involves a template that is a partial template. For example, when coding a CU in the first line or first column, the top or left template is unavailable, respectively. This is shown in Figures 14 and 15. In this case, a partial template is used for template matching prediction. In other words, if the reference template crosses or extends beyond the frame boundary, a partial template within the frame is considered. Figure 14 shows an example of an embodiment where the top template is unavailable. In the example of Figure 14, only the left template is used for template matching prediction. That is, the template of the current block includes only the first area on the left side of the current block, i.e., the first left template on the left side of the current block, and the template associated with the second block used for comparison with the template of the current block includes only the second area on the left side of the second block, i.e., the second left template on the left side of the second block. Thus, this comparison is based only on the first and second areas on the left side of the corresponding block, i.e., the first and second left templates. Figure 15 shows an example where the left template is unavailable. In the example of Figure 15, only the top template is used for template matching prediction. In other words, the template of the current block includes only the first upper section of the current block, i.e., the first upper template of the current block, and the template associated with the second block used for comparison with the template of the current block includes only the second upper section of the second block, i.e., the second upper template of the second block. Therefore, this comparison is based only on the first and second upper sections of the corresponding block, i.e., the first and second upper templates.
[0059] Another example of the embodiment involves a special case where both the upper template and the left template cross a frame boundary, and therefore neither the upper template nor the left template is available. For example, this special case may occur when coding the first CU in the current frame. In this case, the prediction is considered a DC prediction with the prediction value set as follows:
[0060]
number
[0061] In general, the examples of embodiments described and intended herein can be implemented in many different forms. Figures 1 and 2 above, and Figure 12 below, provide some examples of embodiments, but other embodiments are also intended, and the description of Figures 1, 2 and 12 is not limited to the scope of implementation. For example, at least one aspect of one or more examples of embodiments described herein generally relates to video encoding and decoding, and at least one other aspect generally relates to transmitting a generated or encoded bitstream. These and other aspects can be implemented in various embodiments, examples of which include methods, apparatus, computer-readable storage media (which store and have instructions for encoding or decoding video data according to any of the described methods), and / or computer-readable storage media (which store and have bitstreams generated according to any of the described methods). In addition, it should be understood that the drawings provided herein, and the selection of text or syntax provided herein, which may relate to industry standards or standard-related documentation, are intended to illustrate various aspects and embodiments and are not necessarily the only possible configurations. Furthermore, the terms “reconstructed” and “decoded” may be used interchangeably in this application, the terms “pixel” and “sample” may be used interchangeably, and the terms “image,” “picture,” and “frame” may be used interchangeably. Various methods are described herein, each of which includes one or more steps or actions to achieve the described method. Unless a particular order of steps or actions is required for the proper operation of the method, the order and / or use of any particular steps and / or actions may be modified or combined.Modules such as module 160 included in the example of the video encoder embodiment 100 shown in Figure 1, and module 260 included in the example of the video decoder embodiment 200 shown in Figure 2, can be modified using the various methods and other embodiments described herein. Furthermore, the various embodiments, features, etc. described herein are not limited to VVC or HEVC, but can be applied to other standards and recommendations, whether existing or future, and to any extensions of such standards and recommendations (including VVC and HEVC). Unless otherwise specified or technically excluded, the embodiments described herein can be used individually or in combination. Various numerical values are used herein, for example, the size of the maximum quantization matrix and the number of block sizes considered. Specific values are for illustrative purposes only, and the embodiments described are not limited to these specific values.
[0062] Figure 12 is a block diagram of an example system in which various features and embodiments are implemented. System 1000 in Figure 12 can be materialized as a device including various components described below and is configured to perform or implement one or more of the examples of embodiments, features, etc. described herein. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, and servers. The elements of System 1000 can be materialized individually or in combination as a single integrated circuit (IC), multiple ICs, and / or separate components. For example, in at least one embodiment, the processing elements and encoder / decoder elements of System 1000 are distributed across multiple ICs and / or separate components. In various embodiments, System 1000 is communicably coupled to one or more other systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports. In general, system 1000 is configured to implement one or more examples of embodiments, features, etc., described herein.
[0063] System 1000 includes, for example, at least one processor 1010 configured to execute instructions loaded into it in order to implement various embodiments described herein. The processor 1010 may include embedded memory, input / output interfaces, and various other circuits known in the art. System 1000 includes at least one memory 1020 (e.g., a volatile memory device and / or a non-volatile memory device). System 1000 includes a storage device 1040, which may include non-volatile memory and / or volatile memory, including, but not limited to, electrically erasable programmable read-only memory (EEPROM), read-only memory (ROM), programmable read-only memory (PROM), random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash memory, magnetic disk drives, and / or optical disk drives. The storage device 1040 may, in non-limiting examples, include internal storage devices, accessory storage devices (including removable and non-removable storage devices), and / or network-accessible storage devices.
[0064] System 1000 includes, for example, an encoder / decoder module 1030 configured to process data to provide encoded or decoded video, the encoder / decoder module 1030 of which may include its own processor and memory. The encoder / decoder module 1030 represents a module that can be included in a device for performing encoding and / or decoding functions. As is known, the device may include one or both of the encoding module and the decoding module. Furthermore, the encoder / decoder module 1030 may be implemented as a separate element of System 1000, or it may be incorporated into the processor 1010 as a combination of hardware and software, as is known to those skilled in the art.
[0065] For example, program code to be loaded into the processor 1010 or encoder / decoder 1030 can be stored in the storage device 1040 and then loaded into the memory 1020 for execution by the processor 1010 in order to perform or implement one or more examples of embodiments, features, etc., described herein. According to various embodiments, one or more of the processor 1010, memory 1020, storage device 1040, and encoder / decoder module 1030 can store one or more of various items during the execution of the processes described herein. Such stored items may include, but are not limited to, input video, decoded video, or a portion of decoded video, bitstreams, matrices, variables, and intermediate or final results from the processing of equations, formulas, actions, and operational logic.
[0066] In some embodiments, the internal memory of the processor 1010 and / or the encoder / decoder module 1030 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, external memory of the processing device (for example, the processing device can be either the processor 1010 or the encoder / decoder module 1030) is used for one or more of these functions. The external memory can be memory 1020 and / or storage device 1040, for example, dynamic volatile memory and / or non-volatile flash memory. In some embodiments, external non-volatile flash memory is used to store, for example, the television's operating system. In at least one embodiment, high-speed external dynamic volatile memory, such as RAM, is used as working memory for video encoding and decoding operations, such as MPEG-2 (MPEG stands for Moving Picture Experts Group, also known as ISO / IEC 13818, 13818-1 is also known as H.222, and 13818-2 is also known as H.262), HEVC (HEVC stands for High Efficiency Video Coding, also known as H.265 and MPEG-H Part 2), or VVC (Versatile Video Coding, a new standard being developed by JVET (the Joint Video Experts Team)).
[0067] Inputs to the elements of system 1000 can be provided through various input devices, as shown in block 1130. Such input devices include, but are not limited to, (i) a radio frequency (RF) section for receiving RF signals transmitted over the entire broadcast by a broadcaster, (ii) a component (COMP) input terminal (or set of COMP input terminals), (iii) a Universal Serial Bus (USB) input terminal, and / or (iv) a High Definition Multimedia Interface (HDMI) input terminal. Although not shown in Figure 3, other examples include composite video.
[0068] In various embodiments, the input device of block 1130 has associated input processing elements, as known in the art. For example, the RF portion may be associated with elements suitable for (i) selecting a desired frequency (also referred to as selecting a signal, or band-limiting a signal to a frequency in a certain band), (ii) down-converting the selected signal, (iii) again band-limiting to a narrower frequency band in order to select a signal frequency band that may be referred to as a channel in a particular embodiment, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a stream of desired data packets. The RF portion of various embodiments includes one or more elements that perform these functions, e.g., frequency selectors, signal selectors, band limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF portion may include tuners that perform various of these functions, e.g., down-converting a received signal to a lower frequency (e.g., an intermediate frequency or near-baseband frequency) or to baseband. In one embodiment of a set-top box, the RF section and its associated input processing elements receive an RF signal transmitted via a wired (e.g., cable) medium and perform frequency selection by filtering, down-converting, and re-filtering it to a desired frequency band. Various embodiments may involve rearranging the order of the elements described above (and others), removing some of these elements, and / or adding other elements that perform similar or different functions. Adding elements may include inserting elements between existing elements, such as inserting an amplifier and an analog-to-digital converter. In various embodiments, the RF section includes an antenna.
[0069] Furthermore, the USB terminal and / or HDMI terminal may include their respective interface processors for connecting the system 1000 to other electronic devices via USB and / or HDMI connections. It should be understood that various forms of input processing, such as Reed-Solomon error correction, can be implemented, for example, in a separate input processing IC or within the processor 1010 as needed. Similarly, forms of USB or HDMI interface processing can be implemented, for example, in a separate interface IC or within the processor 1010 as needed. For example, the processor 1010, along with various processing elements including an encoder / decoder 1030 operating in conjunction with memory and storage elements, may process data streams as needed to provide demodulated, error-corrected, and demultiplexed streams for presentation on an output device.
[0070] Various elements of system 1000 can be provided within an integrated housing. Within the integrated housing, the various elements can be interconnected using suitable connection devices 1140, such as internal buses known in the art, including inter-IC (I2C) buses, wiring, and printed circuit boards, and data can be transmitted between them.
[0071] System 1000 includes a communication interface 1050 that enables communication with other devices via a communication channel 1060. The communication interface 1050 may, but is not limited to, include a transceiver configured to transmit and receive data via the communication channel 1060. The communication interface 1050 may, but is not limited to, a modem or a network card, and the communication channel 1060 may be implemented, for example, in a wired and / or wireless medium.
[0072] In various embodiments, the data is streamed to system 1000 or provided in another way using a wireless network such as a Wi-Fi network, e.g., IEEE 802.11 (IEEE stands for Institute of Electrical and Electronics Engineers). The Wi-Fi signal in these embodiments is received by a communication channel 1060 and a communication interface 1050 adapted for Wi-Fi communication. The communication channel 1060 in these embodiments is typically connected to an access point or router that provides access to an external network, including the Internet, to enable streaming applications and other over-the-top communications. In other embodiments, the streamed data is provided to system 1000 using a set-top box that distributes data via an HDMI connection on input block 1130. In yet another embodiment, the streamed data is provided to system 1000 using an RF connection on input block 1130. As shown above, various embodiments provide data in a non-streaming manner. Additionally, various embodiments use wireless networks other than Wi-Fi, e.g., cellular networks or Bluetooth networks.
[0073] System 1000 can provide output signals to various output devices, including a display 1100, a speaker 1110, and other peripheral devices 1120. In various embodiments, the display 1100 includes, for example, one or more of a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. The display 1100 may be for a television, tablet, laptop, mobile phone, or other device. The display 1100 may also be integrated with other components (e.g., in a smartphone) or separate (e.g., an external monitor for a laptop). In various examples of embodiments, the other peripheral devices 1120 include one or more of a standalone digital video disc (or digital multi-purpose disc) (DVR in both terms), a disc player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 1120 that provide functionality based on the output of System 1000. For example, the disc player performs the function of playing the output of system 1000.
[0074] In various embodiments, control signals are communicated between the system 1000 and the display 1100, speaker 1110, or other peripheral devices 1120 using signal transmission such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that enable control between devices with or without user intervention. Output devices can be communicably coupled to the system 1000 via dedicated connections through their respective interfaces 1070, 1080, and 1090. Alternatively, output devices can be connected to the system 1000 via communication interface 1050 and communication channel 1060. The display 1100 and speaker 1110 can be integrated into a single unit with other components of the system 1000, such as an electronic device like a television. In various embodiments, the display interface 1070 includes a display driver, such as a timing controller (TCon) chip.
[0075] For example, if the RF portion of input 1130 is part of a separate set-top box, the display 1100 and speaker 1110 can alternatively be separated from one or more other components. In various embodiments where the display 1100 and speaker 1110 are external components, the output signal can be provided via a dedicated output connection, such as an HDMI port, a USB port, or a COMP output.
[0076] The embodiments can be implemented by a processor 1010, by hardware, or by a combination of hardware and software, or by computer software. In non-limiting examples, the embodiments can be implemented by one or more integrated circuits. The memory 1020 can be any type appropriate to the technical environment and can be implemented using appropriate data storage technology. Non-limiting examples of such data storage technology include optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and live-bubble memory. The processor 1010 can be any type appropriate to the technical environment and, in non-limiting examples, can include one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture.
[0077] Figure 13 provides another example of an embodiment. In Figure 13, in 1310, a predicted block is determined for the current block of picture information. The determination in 1310 is based on a comparison between the template associated with the current block (for example, an L-shaped template, such as the one shown in Figure 4, having a first part on the left side of the current block and a second part on the top side of the current block) and at least one other template associated with at least one other block in the area of the decoded or reconstructed picture information. The comparison may include searching for one or more templates in the area of the decoded or reconstructed picture information that match or are the closest match to the template of the current block. The comparison may be based on a constant number of comparisons per pixel, independent of block size, as described herein, for example, with respect to Figure 6 or Figure 7. A predicted block is generated using one or more blocks associated with one or more templates determined from the comparison. In 1320, the current block is decoded (or encoded) based on the predicted block.
[0078] In addition to the examples of embodiments described herein, various specialized embodiments as well as generalized embodiments are also supported and intended throughout this disclosure. Examples of embodiments provided herein include, but are not limited to, the following:
[0079] Generally, at least one example of the embodiments involves a method or apparatus for video encoding or decoding, the method or apparatus including providing an intra-predictive processing mode that employs template matching predictions based on a search range determined as described herein.
[0080] At least one example of the embodiment may involve a method or apparatus for video encoding or decoding, the method or apparatus including providing an intra-predictive processing mode that employs template matching prediction based on template lookup having a fixed number of comparisons per pixel, regardless of block dimensions.
[0081] At least one example of the embodiment may involve a method or apparatus for video encoding or decoding, the method or apparatus including providing an intra-predictive processing mode that employs template matching prediction based on a template search having a fixed number of comparisons per pixel, regardless of block dimensions, and modifying the search range to enable parallel processing.
[0082] At least one example of the embodiment may include an apparatus comprising: one or more processors configured to determine a predicted block for a current block of picture information based on a comparison of a template associated with the current block and at least one other template associated with at least one other block in the area of decoded picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block; and decoding the current block based on the predicted block.
[0083] At least one example of the embodiment may involve a method that determines a predicted block for a current block of picture information based on a comparison of the template associated with the current block with at least one other template associated with at least one other block in the area of decoded picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block, and decodes the current block based on the predicted block.
[0084] At least one example of the embodiment may include an apparatus comprising: one or more processors configured to determine a predicted block for a current block of picture information based on a comparison of a template associated with the current block and at least one other template associated with at least one other block in the area of reconstructed picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block; and encoding the current block based on the predicted block.
[0085] At least one example of the embodiment may include one or more processors configured to determine a predicted block for a current block of picture information based on a comparison of a template associated with the current block and at least one other template associated with at least one other block in the area of reconstructed picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block; and a method that encodes the current block based on the predicted block.
[0086] At least one example of the embodiment may involve a method or apparatus as described herein, in which a constant comparison per pixel is one of a fixed value or a value transmitted through high-level syntax information.
[0087] At least one example of the embodiment may involve a method or apparatus as described herein, and the area resulting in at least one other template includes the area above and to the left of the current block.
[0088] At least one example of the embodiment may involve a method or apparatus as described herein, wherein the area resulting in at least one other template includes a plurality of regions, which include a first region containing pixels in the current CTU that includes the current block, the pixels above and to the left of the current block; a second region containing pixels above and to the left of the current CTU; a third region containing pixels above and to the right of the current CTU; and a fourth region containing pixels to the left of the current CTU.
[0089] At least one example of the embodiment may involve a method or apparatus as described herein, wherein the region in which at least one other template arises includes a region selected to enable wavefront parallel processing.
[0090] At least one example of the embodiment may involve a method or apparatus as described herein, wherein the region resulting in at least one other template includes a region selected to allow independent decoding of each CTU line.
[0091] At least one example of the embodiment may involve a method or apparatus as described herein, in which the region is selected such that decoding is not required to access the CTU line above the CTU line containing the current block.
[0092] At least one example of the embodiment may involve a method or apparatus as described herein, in which the template associated with the current block includes a first part to the left of the current block and a second part above the current block, and if the second part extends above the CTU line containing the current block, the comparison will be based on the first part only.
[0093] At least one example of the embodiment may involve a device, which includes an apparatus as described herein and at least one of the following: (i) an antenna configured to receive a signal containing data representing image information; (ii) a band limiter configured to restrict the received signal to a frequency band containing data representing image information; and (iii) a display configured to display an image from the image information.
[0094] At least one example of the embodiment may involve a device as described herein, which includes a television, a television signal receiver, a set-top box, a gateway device, a mobile device, a cell phone, a tablet, a computer, a laptop, or any other electronic device.
[0095] Generally, another example of the embodiment may involve a bitstream or signal formatted to include syntax elements and picture information, wherein the syntax elements are generated and the picture information is encoded by processing based on one or more examples of embodiments of the method of the present disclosure.
[0096] In general, one or more other embodiments may also provide a computer-readable storage medium, such as a non-volatile computer-readable storage medium, which stores and has instructions for encoding or decoding picture information, such as video data, in accordance with the methods or apparatus described herein. One or more embodiments may also provide a computer-readable storage medium which stores and has bitstreams generated in accordance with the methods or apparatus described herein. One or more embodiments may also provide methods and apparatus for transmitting or receiving bitstreams or signals generated in accordance with the methods or apparatus described herein.
[0097] Many of the embodiments described herein are described in detail and often in a manner that may sound restrictive, at least to illustrate their individual characteristics. However, this is for the purpose of clarifying the description and not to limit the application or scope of those embodiments. In practice, all of the different embodiments can be combined and substituted to provide further embodiments. Furthermore, embodiments, features, etc., can be combined and substituted with other things similarly described in prior applications.
[0098] Various implementations include decoding. As used in this application, “decoding” can encompass all or part of the processes performed on a received encoded sequence to produce a final output suitable for display, for example. In various embodiments, such processes include one or more of the processes typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and differential decoding. In various embodiments, such processes may also include, or alternatively, processes performed by the decoders of the various implementations described in this application.
[0099] As further examples, in one embodiment, “decoding” refers only to entropy decoding; in another embodiment, “decoding” refers only to differential decoding; and in yet another embodiment, “decoding” refers to a combination of entropy decoding and differential decoding. Whether the phrase “encoding process” is intended to refer specifically to a working subset or to refer to a broader encoding process as a whole will become clear from the context of the specific explanation and will be well understood by those skilled in the art.
[0100] Various implementations involve encoding. Similar to the above considerations regarding "decoding," "encoding" as used in this application may encompass all or part of the processes performed on an input video sequence to produce an encoded bitstream. In various embodiments, such processes include one or more of the processes typically performed by an encoder, such as partitioning, differential coding, transformation, quantization, and entropy coding.
[0101] As further examples, in one embodiment, “encoding” refers only to entropy coding; in another embodiment, “encoding” refers only to differential coding; and in yet another embodiment, “encoding” refers to a combination of differential coding and entropy coding. Whether the phrase “encoding process” is intended to refer specifically to a working subset or to refer to a broader encoding process as a whole will become clear from the context of the specific explanation and will be well understood by those skilled in the art.
[0102] Please note that the syntax elements used herein are descriptive terms; therefore, they do not preclude the use of other syntax element names.
[0103] If a diagram is presented as a flowchart, it should be understood that the diagram also provides a block diagram of the corresponding device. Similarly, if a diagram is presented as a block diagram, it should be understood that the diagram also provides a flowchart of the corresponding method / process.
[0104] In general, examples of embodiments, implementations, features, etc., described herein can be implemented, for example, in methods or processes, apparatus, software programs, data streams, or signals. Even if considered only in the context of a single form of implementation (for example, considered only as a method), the implementation of the considered feature can be implemented in other forms (for example, apparatus or programs). For example, an apparatus can be implemented in appropriate hardware, software, and firmware. One or more examples of methods can be implemented, for example, in a processor, which generally refers to a processing device, and this processor includes, for example, a computer, microprocessor, integrated circuit, or programmable logic device. Processors also include communication devices, such as computers, mobile phones, and portable / mobile information terminals ("Personal Digital Assistants, PDAs"), which facilitate the communication of information between end users. Furthermore, the use of the term "processor" herein is intended to broadly encompass various configurations of one or more processors.
[0105] References to "one embodiment" or "a certain embodiment," or "one implementation" or "a certain implementation," or other variations thereof, mean that the specific features, structures, characteristics, etc. described in relation to that embodiment are included in at least one embodiment. Therefore, when the phrases "in one embodiment" or "in a certain embodiment," or "in one implementation" or "in a certain implementation," or other variations appear in various places throughout this application, they do not necessarily all refer to the same embodiment.
[0106] In addition, this application may refer to "determining" various types of information. Determining information may include, for example, one or more of the following: estimating information, calculating information, predicting information, or retrieving information from memory.
[0107] Furthermore, this application may refer to "accessing" various types of information. Accessing information may include, for example, receiving information, retrieving information (e.g., from memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.
[0108] In addition, this application may refer to "receiving" various types of information. Receiving is intended to be a broad term, similar to "accessing." Receiving information may include, for example, accessing information or retrieving information (for example, from memory). Furthermore, "receiving" generally involves in some way operations such as storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.
[0109] For example, in the cases of "A / B", "A and / or B", and "at least one of A and B", it should be understood that the use of any of the following " / ", "and / or", and "at least one of" is intended to encompass the selection of only the first listed option (A), only the second listed option (B), or both options (A and B). In further embodiments, in the cases of "A, B, and / or C" and "at least one of A, B, and C," such expressions are intended to encompass the selection of only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or the selection of all three options (A, B, and C). This can be extended to the number of listed items, as will be apparent to those skilled in the art in this and related fields.
[0110] As will be obvious to those skilled in the art, the implementation can result in a variety of signals formatted to carry information that can be stored or transmitted. The information may include, for example, instructions for performing a method, or data generated by one of the implementations described. For example, a signal can be formatted to carry a bitstream of the embodiment described. Such a signal may be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. As is known, signals can be transmitted over a variety of different wired or wireless links. The signals can be stored in a processor-readable medium.
[0111] Various embodiments are described herein. Features of these embodiments may be provided individually or in any combination across various claims and types. Furthermore, embodiments may include, individually or in any combination, one or more of the following features, devices, or aspects across various claims and types: ● Providing video encoding and / or decoding, which includes determining a predicted block for the current block of picture information based on a comparison of a template associated with the current block and at least one other template associated with at least one other block in the area of decoded picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block, and encoding / decoding the current block based on the predicted block. ●Providing video encoding and / or decoding as described herein, wherein a constant number of comparisons per pixel is one of a fixed value or a value transmitted through high-level syntax information. ●Providing video encoding and / or decoding as described herein, wherein the region in which at least one other template occurs includes regions above and to the left of the current block. ● Providing video encoding and / or decoding as described herein, wherein the region in which at least one other template occurs includes a plurality of regions, the plurality of regions including: a first region including pixels in the current CTU that includes the current block, which are the pixels above and to the left of the current block; a second region including pixels above and to the left of the current CTU; a third region including pixels above and to the right of the current CTU; and a fourth region including pixels to the left of the current CTU. ●Providing video encoding and / or decoding as described herein, wherein the region in which at least one other template occurs includes a region selected to enable wavefront parallel processing. ●Providing video encoding and / or decoding as described herein, wherein the region in which at least one other template occurs includes a region selected to allow independent decoding of each CTU line. ●Providing video encoding and / or decoding as described herein, wherein the region is selected such that decoding does not require access to the CTU line above the CTU line containing the current block. ●In providing video encoding and / or decoding as described herein, the template associated with the current block includes a first part to the left of the current block and a second part above the current block, and if the second part extends above the CTU line containing the current block, the comparison is based only on the first part. ● To provide a bitstream or signal that includes one or more of the described syntax elements, or a variation thereof. ● To provide a bitstream or signal containing a syntax for carrying information generated according to any of the described embodiments. ● To provide a method for inserting syntax elements into signal transmission that enable the decoder to operate in a manner corresponding to the method used by the encoder. ● The encoder and / or decoder are inserted into signal transmission syntax elements that enable them to provide encoding and / or decoding, either alone or in any combination, according to any embodiment, feature, or entity, as described herein. ● Based on these syntactic elements, features or entities may be selected individually or in any combination as described herein and applied to the decoder. ● To provide a means of creating and / or transmitting and / or receiving and / or decoding a bitstream or signal that includes one or more of the described syntax elements or variations thereof. ● To provide a method for creating and / or transmitting and / or receiving and / or decoding a bitstream in accordance with any of the embodiments described. ● A method, process, apparatus, medium for storing instructions, medium for storing data, or signal, according to any of the embodiments described. ●A TV, set-top box, mobile phone, tablet, or other electronic device that provides the ability to apply encoding and / or decoding, either alone or in any combination, according to any embodiment, feature, or entity as described herein. ●A TV, set-top box, mobile phone, tablet, or other electronic device that performs encoding and / or decoding, either alone or in any combination, according to any embodiment, feature, or entity as described herein, and displays the resulting image (for example, using a monitor, screen, or other type of display). A TV, set-top box, mobile phone, tablet, or other electronic device that tunes a channel (for example, using a tuner) to receive a signal containing an encoded image, and performs encoding and / or decoding, either alone or in any combination, according to any embodiment, feature, or entity as described herein. ● A TV, set-top box, mobile phone, tablet, or other electronic device that wirelessly receives a signal containing an encoded image (for example, using an antenna) and performs encoding and / or decoding, either alone or in any combination, according to any embodiment, feature, or entity as described herein. A computer program product that stores program code to be encoded and / or decoded, either alone or in any combination, according to any embodiment, feature, or entity, when executed by a computer, as described herein. ● A non-temporary computer-readable medium containing executable program instructions, either alone or in any combination as described herein, causing a computer executing the instructions to implement encoding and / or decoding according to any embodiment, feature, or entity.
Claims
1. It is a device, It comprises one or more processors, and the one or more processors Determining a predicted block for the current block of picture information based on a comparison between a template associated with the current block and at least one other template associated with at least one other block in the region of decoded picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block, and the region in which the at least one other template arises includes a plurality of regions, the plurality of regions including pixels above and to the left of the current block, a first region including pixels in the current CTU containing the current block, a second region including pixels above and to the left of the current CTU, a third region including pixels above and to the right of the current CTU, and a fourth region including pixels to the left of the current CTU. A device configured to decode the current block based on the predicted block.
2. It is a method, Determining a predicted block for the current block of picture information based on a comparison between a template associated with the current block and at least one other template associated with at least one other block in the region of decoded picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block, and the region in which the at least one other template arises includes a plurality of regions, the plurality of regions including pixels above and to the left of the current block, a first region including pixels in the current CTU containing the current block, a second region including pixels above and to the left of the current CTU, a third region including pixels above and to the right of the current CTU, and a fourth region including pixels to the left of the current CTU. A method comprising decoding the current block based on the predicted block.
3. It is a device, It comprises one or more processors, and the one or more processors Determining a predicted block for the current block of picture information based on a comparison of a template associated with the current block and at least one other template associated with at least one other block in the area of reconstructed picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block, and the area in which the at least one other template arises includes a plurality of regions, the plurality of regions including pixels above and to the left of the current block, a first region including pixels in the current CTU containing the current block, a second region including pixels above and to the left of the current CTU, a third region including pixels above and to the right of the current CTU, and a fourth region including pixels to the left of the current CTU. A device configured to encode the current block based on the predicted block.
4. It is a method, Determining a predicted block for the current block of picture information based on a comparison of a template associated with the current block and at least one other template associated with at least one other block in the area of reconstructed picture information, wherein the comparison is based on a constant number of comparisons per pixel, independent of the size of the current block, and the area in which the at least one other template arises includes a plurality of regions, the plurality of regions including pixels above and to the left of the current block, a first region including pixels in the current CTU containing the current block, a second region including pixels above and to the left of the current CTU, a third region including pixels above and to the right of the current CTU, and a fourth region including pixels to the left of the current CTU. A method comprising encoding the current block based on the predicted block.
5. The apparatus according to claim 1 or 3, wherein the certain number of comparisons per pixel are one of a fixed value or a value transmitted through high-level syntax information.
6. The apparatus according to any one of claims 1, 3, or 5, wherein the area where the at least one other template arises includes areas above and to the left of the current block.
7. The apparatus according to any one of claims 1, 3, or 5, wherein the region where the at least one other template arises includes a region selected to enable wavefront parallel processing.
8. The apparatus according to any one of claims 1, 3, or 5, wherein the region where the at least one other template arises includes a region selected to enable independent decoding of each CTU line.
9. The apparatus according to claim 8, wherein the region is selected such that access to the CTU line above the CTU line containing the current block does not require decoding.
10. A computer program that, when executed by a computer, includes instructions causing the computer to perform the method described in claim 2 or 4.
11. A non-temporary computer-readable medium for storing executable program instructions, which causes a computer executing the instructions to perform the method according to claim 2 or 4.
12. It is a device, The apparatus according to any one of claims 1, 3, or 5 to 9, A device comprising: (i) an antenna configured to receive a signal containing data representing image information; (ii) a band limiter configured to restrict the received signal to a frequency band containing the data representing the image information; and (iii) at least one of a display configured to display an image from the image information.
13. The device according to claim 12, wherein the device includes one of a television, a television signal receiver, a set-top box, a gateway device, a mobile device, a cell phone, a tablet, a computer, a laptop, or another electronic device.
14. The method according to claim 2 or 4, wherein the area resulting in the at least one other template includes areas above and to the left of the current block.
15. The method according to any one of claims 2, 4, or 14, wherein the template associated with the current block includes a first portion to the left of the current block and a second portion above the current block, and the comparison is based solely on the first portion if the second portion extends above the CTU line containing the current block.
16. The method according to claim 2 or 4, wherein the template of the current block comprises only the first left template to the left of the current block, and the at least one other template of the at least one other block comprises only the second left template to the left of the at least one other block, and the comparison is based only on the first left template and the second left template.
17. The method according to claim 2 or 4, wherein the template of the current block comprises only the first upper template above the current block, and the at least one other template of the at least one other block comprises only the second upper template above the at least one other block, and the comparison is based only on the first upper template and the second upper template.
18. The method according to claim 2 or 4, wherein the current block corresponds to a first coding unit of the current frame, and the template of the first block extends beyond both the upper and left boundaries of the current frame.