Method and apparatus for prediction

ES3078572T3Undetermined Publication Date: 2026-09-14HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
ES2023198133T
Authority / Receiving Office
ES · ES
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-09-13
Filing Date
2019-09-13
Publication Date
2026-09-14
Estimated Expiration
2039-09-13

Smart Images

  • Figure 00000023_0000
    Figure 00000023_0000
  • Figure 00000050_0000
    Figure 00000050_0000
  • Figure 00000050_0001
    Figure 00000050_0001
Patent Text Reader

Abstract

This disclosure provides methods and devices for intra-block prediction of a current in video encoding or decoding.The method comprises: performing intra-block prediction processing of the current block according to an intra-directional prediction mode, comprising reference sample filtering or subpixel interpolation filtering applied to reference samples in one or more reference blocks, wherein the intra-directional prediction mode is classified into one of the following groups: (A) vertical or horizontal modes, (B) directional modes including diagonal modes representing angles that are multiples of 45 degrees, (C) remaining directional modes; if the intra-directional prediction mode is classified as belonging to group B, a reference sample filter is applied to the reference samples; if the intra-directional prediction mode is classified as belonging to group C, an intra-reference sample interpolation filter is applied to the reference samples.
Need to check novelty before this filing date? Find Prior Art

Description

Method and apparatus for prediction Technical field This disclosure relates to the technical field of image and / or video encoding and decoding, and in particular to methods and devices for intra / inter-prediction. Background Video coding (video encoding and decoding) is used in a wide range of digital video applications, such as digital TV broadcasting, video streaming over the internet and mobile networks, real-time conversation applications like video chat and videoconferencing, DVD and Blu-ray discs, video content acquisition and editing systems, and video cameras for security applications. The amount of video data required to represent even a relatively short video can be substantial, which can lead to difficulties when the data is to be continuously transmitted or otherwise communicated over a communications network with limited bandwidth. Therefore, video data is typically compressed before being transmitted over modern telecommunications networks.The size of a video file can also be a problem when the video is stored on a storage device because memory resources may be limited. Video compression devices often use software and / or hardware at the source to encode the video data before transmission or storage, reducing the amount of data needed to represent digital video images. The compressed data is then received at the destination by a video decompression device that decodes the video data. With limited network resources and increasing demands for higher video quality, improved compression and decompression techniques that improve the compression ratio with little or no sacrifice in image quality are desirable. Digital video has been widely used since the introduction of DVD discs. Before transmission, the video is encoded and transmitted using a transmission medium.The viewer receives the video and uses a display device to decode and show it. Over the years, video quality has improved, for example, thanks to higher resolutions, color depths, and frame rates. This has resulted in larger data streams that are now routinely transmitted over the internet and mobile communication networks. However, higher-resolution videos generally require more bandwidth because they contain more information. To reduce bandwidth requirements, video coding standards involving video compression have been introduced. When video is encoded, bandwidth requirements (or the corresponding memory requirements in the case of storage) are reduced. Often, this reduction comes at the expense of quality. Thus, video coding standards attempt to strike a balance between bandwidth requirements and quality. High Efficiency Video Coding (HEVC) is an example of a video coding standard well-known to experts in the field. In HEVC, a coding unit (CU) is divided into prediction units (PU) or transformation units (TU). The Versatile Video Coding (VVC) Next Generation standard is the latest joint video project of the ITU-T Video Coding Expert Group (VCEG) and the ISO / IEC Moving Picture Expert Group (MPEG) standards organizations, working together in a partnership known as the Joint Video Exploration Team (JVET). VVC is also known as the ITU-T H.266 / Next Generation Video Coding (NGVC) standard.In VVC, the concepts of multiple partition types will be eliminated, i.e., the separation of the concepts of CU, PU, ​​and TU except when necessary for CUs that are too large for the maximum transformation length, and more flexibility for CU partitioning forms will be supported. The processing of these encoding units (CUs) (also called blocks) depends on their size, spatial position, and an encoding mode specified by an encoder. Encoding modes can be classified into two groups based on the type of prediction: intra-prediction modes and inter-prediction modes. Intra-prediction modes use samples from the same image (also called a frame or image) to generate reference samples for calculating prediction values ​​for samples in the block being reconstructed. Intra-prediction is also known as spatial prediction. Inter-prediction modes are designed for temporal prediction and use reference samples from previous or subsequent images to predict block samples in the current image. ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) are exploring the potential need for standardization of future video coding technology with compression capabilities that significantly exceed those of the current HEVC standard (including its existing extensions and short-term extensions for screen content coding and high dynamic range coding). The groups are collaborating on this exploration through a joint effort known as the Joint Video Exploration Team (JVET) to evaluate compression technology designs proposed by their respective experts. The VTM (Versatile Test Model) standard uses 35 Intra modes, while the BMS (Benchmark Set) uses 67 Intra modes. The intra-mode coding scheme currently described in BMS is considered complex, and a disadvantage of the unselected mode set is that the index list is always constant and not adaptive based on the properties of the current block (e.g., its neighboring blocks in INTRA modes). US20180262756A1 discloses a video encoding device comprising a sequence of filters that are configurable by one or more primary parameters and one or more secondary parameters, and a filter controller configured to adjust the one or more secondary parameters based on the one or more primary parameters and based on an intensity criterion of the filter sequence. US20170034536A1 discloses a method for reconstructing blocks of an image using prediction, comprising: determining reference samples from one or more already decoded blocks to predict a block to be reconstructed; selecting a first subset of the reference samples and a second subset of the reference samples; performing pre-prediction filtering of the first subset and the second subset of the reference samples, wherein the filter parameters for filtering the reference samples of the first subset differ from the filter parameters for filtering the reference samples of the second subset; and reconstructing the block to be reconstructed by prediction based on the reference samples that include the pre-prediction filtered reference samples of the first subset and the second subset. The document VAN DER AUWERA (QUALCOMM) G ET AL: "CE3-related: On MDIS and intra interpolation filter switching", 11th JVET MEETING; 2018071.- 20180718; LJUBLJANA; (THE JOINT VIDEO EXPLORATION TEAM OF ISO / IEC JTC1 / SC29 / WG11 AND ITU-T SG.16) , no. JVET-K006413 of July 2018 (13-07-2018). XP030199604 proposes merging two smoothing filtering operations by convoluting an MDIS filter with a Gaussian interpolation filter, while using MDIS conditions to decide between the two interpolation filters. Compendium The embodiments of the present invention provide apparatus and methods for encoding and decoding in accordance with the independent claims. The word "invention" as used herein refers to the inventive concept as understood by the applicant at the time of filing the patent application. The subject matter for which protection is sought is defined in the appended claims. All subsequent occurrences of the word "embodiment(s)," if they refer to combinations of features different from those defined by the independent claims, refer to examples originally described but not to embodiments of the currently claimed invention; these examples are shown for illustrative purposes only. The foregoing objective is achieved through the features of the independent claims. Other forms of implementation are derived from the dependent claims, the description, and the figures. Brief description of the drawings The following embodiments are described in more detail below with reference to the accompanying figures and drawings, in which: FIG.1 is a block diagram showing an example of a video encoding system configured to implement embodiments of the invention. FIG. 2 is a block diagram showing an example of a video encoder configured to implement embodiments of the invention. FIG. 3 is a block diagram showing an example structure of a video decoder configured to implement embodiments of the invention. FIG.4 shows a schematic diagram illustrating 67 intra-prediction modes. Figure 5 illustrates a first example of the use of different interpolation filters in intra- and inter-prediction. Figure 6 illustrates a second example of the use of different interpolation filters in intra- and inter-prediction. Figure 7 illustrates a third example of the use of different interpolation filters in intra- and inter-prediction. Figure 8 illustrates the use of a common interpolation filter that will be used for intra- and inter-prediction samples. FIG.9 illustrates an embodiment that uses a filtering module that participates in the prediction of chrominance samples in motion compensation and in the prediction of luminance and chrominance samples when an intra-prediction is performed. FIG. 10 illustrates one embodiment, in which the hardware filtering modules load coefficients stored in a ROM. FIG.11 illustrates a schematic diagram of a plurality of intra-prediction modes. FIG. 12 illustrates an example of interpolation filter selection for modes less than and greater than the diagonal in the case of a non-square block. FIG.13 illustrates the partitioning of binary tree plus quad tree (QTBT) blocks. FIG.14 shows a horizontal and vertical orientation of a block. Figure 15 schematically illustrates the selection of an interpolation filter for a non-square block. Figure 16 illustrates an implementation for selecting a reference sample interpolation filter for a non-square block. FIG.17 illustrates an embodiment for selecting a reference sample interpolation filter for a non-square block. FIG.18 shows a schematic diagram illustrating 93 intra-prediction directions. FIG.19 shows a block diagram of an apparatus according to one embodiment. FIG.20 shows a block diagram of an apparatus according to another embodiment FIG.21 shows a block to be predicted using an intra-prediction mode. Detailed description of the achievements The following description refers to the accompanying drawings, which form part of the disclosure and illustrate specific aspects in which the invention can be implemented. It is understood that embodiments of the invention can be used in other aspects, including structural or logical changes not shown in the figures. Therefore, the following detailed description should not be interpreted in a limited sense, and the scope of the present invention is defined by the appended claims. For example, a disclosure relating to a described method is understood to also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or more specific steps of the method are described, a corresponding device may include one or more units, such as functional units, to perform one or more of the described steps of the method (e.g., one unit performs one or more steps, or several units, each of which performs one or more of the steps), even if such one or more units are not explicitly described or illustrated in the figures.On the other hand, for example, if a specific apparatus is described based on one or more units, such as functional units, a corresponding method may include a step for performing the functionality of one or more units (for example, one step performs the functionality of one or more units, or a plurality of steps, each of which performs the functionality of one or more of the units), even if such one or more steps are not explicitly described or illustrated in the figures. Furthermore, it is understood that the features of the various embodiments given as examples and / or the aspects described herein may be combined with one another, unless specifically stated otherwise. Video coding generally refers to the processing of a sequence of images that form the video or video sequence.The terms image, frame, and picture frame can be used synonymously in the field of video encoding, as well as in this application. Each image is typically partitioned into a plurality of non-overlapping blocks. Image encoding / decoding is typically performed at the block level, where, for example, intra-image or inter-image prediction is used to generate a prediction block. This prediction block is then subtracted from the current block (the block currently being processed / to be processed) to obtain a residual block, which is subsequently transformed and quantized to reduce the amount of data to be transmitted (compression). Meanwhile, on the decoder side, the inverse processing is applied to the encoded / compressed block to reconstruct it for display. In lossless video encoding, the original video images can be reconstructed; that is, the reconstructed video images have the same quality as the original video images (assuming no transmission loss or other data loss during storage or transmission). In lossy video encoding, additional compression is performed, for example, through quantization, to reduce the amount of data representing the video images, which cannot be fully reconstructed at the decoder; that is, the quality of the reconstructed video images is lower compared to the quality of the original video images. Several video coding standards belong to the group of "lossy hybrid video codecs" (i.e., they combine spatial and temporal prediction in the sample domain and 2D transform coding to apply quantization in the transform domain). Each frame in a video sequence is typically divided into a set of non-overlapping blocks, and coding is usually performed at the block level.In other words, in the encoder, the video is usually processed, i.e., encoded, at the block level (video block), for example, using spatial (intra-image) and temporal (inter-image) prediction to generate a prediction block, subtracting the prediction block from the current block (currently processed / to be processed block) to obtain a residual block, transforming the residual block and quantizing the residual block in the transform domain to reduce the amount of data to be transmitted (compression), while in the decoder the inverse processing of the encoder is partially applied to the encoded or compressed block to reconstruct the current block for representation.Furthermore, the encoder duplicates the decoder's processing loop in such a way that both will generate identical predictions (e.g., intrapredictions and interpredictions) and / or reconstructions for processing, i.e., encoding, subsequent blocks. In the following embodiments of a video coding system 10, a video encoder 20 and a video decoder 30 are described based on Figs. 1 to 3. Figure 1 is a conceptual or schematic block diagram illustrating an example encoding system 10, e.g., a video encoding system that may utilize techniques from this application (present disclosure). The encoder 20 (e.g., video encoder 20) and decoder 30 (e.g., video decoder 30) of the video encoding system represent examples of devices that may be configured to perform techniques according to various examples described in this application. As shown in Figure 1, the encoding system comprises a source device 12 configured to provide encoded data 13, e.g., an encoded image 13, to a destination device 14 for decoding the encoded data 13. The source device 12 comprises an encoder 20, and may additionally comprise, i.e., optionally, an image source 16, a preprocessing unit 18, for example, an image preprocessing unit 18, and a communication interface or communication unit 22. Image source 16 may comprise or be any type of image capture device, for example, to capture an image of the real world, and / or any type of image or comment generation device (for screen content encoding, some text on the screen is also considered part of an image or an image to be encoded), for example, a computer graphics processor to generate a computer animated image, or any type of device to obtain and / or provide a real-world image, a computer animated image (for example, screen content, a virtual reality (VR) image) and / or any combination thereof (for example, an augmented reality (AR) image). A (digital) image is, or can be considered as, a two-dimensional array of samples with intensity values. A sample in the array can also be called a pixel (short for image element) or pel. The number of samples in the horizontal and vertical (or axis) directions of the array or image defines the size and / or resolution of the image. For color representation, three color components are generally used; that is, the image can be represented by or include three sample distributions. In RGB color space or format, an image comprises a corresponding red, green, and blue sample distribution. However, in video encoding, each pixel is generally represented in a luminance / chrominance color space or format, for example, YCbCr, which comprises a luminance component denoted by Y (sometimes L is also used instead) and two chrominance components denoted by Cb and Cr.The luminance component Y (or luma for short) represents the brightness or intensity of the gray level (for example, as in a grayscale image), while the two chrominance components Cb and Cr (or chroma for short) represent the chromaticity components or color information. Therefore, a YCbCr image comprises one distribution of luminance samples (Y) and two distributions of chrominance samples (Cb and Cr). RGB images can be converted or transformed into YCbCr format and vice versa; this process is also known as color transformation or conversion. If an image is monochromatic, it may consist of only one distribution of luminance samples. Image source 16 (e.g., video source 16) can be, for example, a camera for capturing an image, a memory device (e.g., image memory) that comprises or stores a previously captured or generated image, and / or any type of interface (internal or external) for obtaining or receiving an image. The camera can be, for example, a local camera or a camera integrated into the source device. The memory can be local or integrated, for example, integrated into the source device. The interface can be, for example, an external interface for receiving an image from an external video source, such as an external image capture device like a camera, external memory, or an external image generation device like an external graphics processor, computer, or server.The interface can be any type of interface, for example, a wired or wireless interface, an optical interface, according to any proprietary or standardized interface protocol. The interface for obtaining image data 17 can be the same interface or a part of the communication interface 22. Unlike preprocessing unit 18 and the processing performed by preprocessing unit 18, the image or image data 17 (for example, video data 16) may also be referred to as raw image or raw image data 17. The preprocessing unit 18 is configured to receive the (raw) image data 17 and to perform preprocessing of the image data 17 to obtain a preprocessed image 19 or preprocessed image data 19. The preprocessing performed by the preprocessing unit 18 may include, for example, cropping, color format conversion (e.g., from RGB to YCbCr), color correction, or noise reduction. It is understood that the preprocessing unit 18 may be an optional component. The encoder 20 (e.g., the video encoder 20) is configured to receive the preprocessed image data 19 and provide encoded image data 21 (more details will be described below, e.g., based on Fig. 2). The communication interface 22 of the source device 12 can be configured to receive the encoded image data 21 and transmit it to another device, for example, the destination device 14 or any other device, for storage or direct reconstruction, or to process the encoded image data 21 respectively before storing the encoded data 13 and / or transmitting the encoded data 13 to another device, for example, the destination device 14 or any other device, for decoding or storage. The destination device 14 comprises a decoder 30 (for example, a video decoder 30), and may additionally, i.e., optionally, comprise a communication interface or communication unit 28, a post-processing unit 32, and a display device 34. The communication interface 28 of the destination device 14 is configured to receive the encoded image data 21 or the encoded data 13, for example, directly from the source device 12 or from any other source, for example, a storage device, for example, an encoded image data storage device. The communication interface 22 and the communication interface 28 can be configured to transmit or receive the encoded image data 21 or the encoded data 13 through a direct communication link between the source device 12 and the destination device 14, for example, a direct wired or wireless connection, or through any type of network, for example, a wired or wireless network or any combination thereof, or any type of private and public network, or any combination thereof. The communication interface 22 can be configured, for example, to package the encoded image data 21 in an appropriate format, e.g., packets, for transmission over a communication link or communication network. The communication interface 28, which forms the counterpart of the communication interface 22, can be configured, for example, to unpack the encoded data 13 to obtain the encoded image data 21. Both the communication interface 22 and the communication interface 28 can be configured as unidirectional communication interfaces, as indicated by the arrow for the encoded image data 13 in Fig. 1A pointing from the source device 12 to the destination device 14, or as bidirectional communication interfaces, and can be configured, for example, to send and receive messages, for example, to establish a connection, for acknowledgment, and to exchange any other information related to the communication link and / or data transmission, for example, transmission of encoded image data. Decoder 30 is configured to receive encoded image data 21 and provide decoded image data 31 or a decoded image 31 (more details will be described below, for example, based on Fig. 3). The post-processor 32 of the target device 14 is configured to post-process the decoded image data 31 (also called reconstructed image data), for example, the decoded image 31, to obtain post-processed image data 33, for example, a post-processed image 33. The post-processing performed by the post-processing unit 32 may comprise, for example, color format conversion (for example, from YCbCr to RGB), color correction, cropping or resampling, or any other processing, for example, to prepare the decoded image data 31 for display, for example, by the display device 34. The display device 34 of the target device 14 is configured to receive the post-processed image data 33 to display the image, for example, to a user or viewer. The display device 34 may be or comprise any type of screen for representing the reconstructed image, for example, an integrated or external display or monitor. The displays may comprise, for example, liquid crystal displays (LCDs), organic light-emitting diodes (OLEDs), plasma displays, projectors, micro-LED displays, liquid crystal on silicon (LCoS), digital light processors (DLPs), or any other type of display. Although Fig. 1 depicts the source device 12 and the target device 14 as separate devices, the device embodiments may also comprise either or both functionalities: the source device 12 or the corresponding functionality and the target device 14 or the corresponding functionality. In such embodiments, the source device 12 or the corresponding functionality and the target device 14 or the corresponding functionality may be implemented using the same hardware and / or software, separate hardware and / or software, or any combination thereof. As will be evident to the subject expert based on the description, the existence and (exact) division of functionalities of the different units or functionalities within the source device 12 and / or the destination device 14, as shown in Fig. 1, may vary depending on the actual device and application. The encoder 20 (for example, a video encoder 20) and the decoder 30 (for example, a video decoder 30) can each be implemented as any of a variety of suitable circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, or any combination thereof. If the techniques are partially implemented in software, a device can store instructions for the software on a suitable non-transient, computer-readable storage medium and can execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Any of the foregoing (including hardware, software, a combination of hardware and software, etc.) can be considered as one or more processors.Each of video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (CODEC) in a respective device. The source device 12 and the destination device 14 can comprise any of a wide range of devices, including any type of portable or stationary device, for example, notebooks or laptops, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, television set-top boxes, televisions, display devices, digital media players, video game consoles, video streaming devices (such as content service servers or content delivery servers), broadcast receiving devices, broadcast transmitting devices, or the like, and may use any or no type of operating system. In some cases, the source device 12 and the destination device 14 may be equipped for wireless communication.Therefore, source device 12 and destination device 14 can be wireless communication devices. In some cases, the video encoding system illustrated in Fig. 1 is merely an example, and the techniques in this application may be applied to video encoding configurations (e.g., video encoding or video decoding) that do not necessarily involve any data communication between the encoding and decoding devices. In other examples, data is retrieved from local memory, streamed continuously over a network, or similarly. A video encoding device may encode and store data in memory, and / or a video decoding device may retrieve and decode data from memory. In some examples, encoding and decoding are performed by devices that do not communicate with each other but simply encode data into memory and / or retrieve and decode data from memory. Fig. 2 shows a schematic / conceptual block diagram of an example 20 video encoder configured to implement the techniques of this application. In the example in Fig. 2, the video encoder 20 comprises a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210 and an inverse transform processing unit 212, a reconstruction unit 214, a buffer 216, a loop filter unit 220, a decoded picture buffer (DPB) 230, a prediction processing unit 260 and an entropic encoding unit 270. The prediction processing unit 260 may include an inter-prediction unit 244, an intra-prediction unit 254 and a mode selection unit 262. The inter-prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown).A video encoder 20 such as shown in Fig. 2 may also be called a hybrid video encoder or a video encoder according to a hybrid video codec. For example, the residual calculation unit 204, the transform processing unit 206, the quantization unit 208, the prediction processing unit 260, and the entropic encoding unit 270 form a forward signal path of the encoder 20, whereas, for example, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded image buffer (DPB) 230, and the prediction processing unit 260 form a backward signal path of the encoder, wherein the backward signal path of the encoder corresponds to the signal path of the decoder (see decoder 30 in Fig. 3). The encoder 20 is configured to receive, for example, via input 202, an image 201 or a block 203 of image 201, for example, an image from a sequence of images that form a video or video sequence. The image block 203 may also be called the current image block or the image to be encoded block, and image 201 as the current image or the image to be encoded (particularly in video encoding to distinguish the current image from other images, for example, previously encoded and / or decoded images from the same video sequence, i.e., the video sequence that also comprises the current image). The prediction processing unit 260, also called the block prediction processing unit 260, is configured to receive or obtain block 203 (current block 203 from current image 201) and reconstructed image data, for example, reference samples of the same (current) image from buffer 216 and / or reference image data 231 from one or more previously decoded images from decoded image buffer 230, and to process such data for prediction, i.e., to provide a prediction block 265, which can be an interpredicted block 245 or an intrapredicted block 255. The mode selection unit 262 can be configured to select a prediction mode (for example, an intraprediction mode or an interprediction mode) and / or a corresponding prediction block 245 or 255 to be used as the prediction block 265 for calculating the residual block 205. for the reconstruction of the rebuilt block 215. The implementations of mode selection unit 262 can be configured to select the prediction mode (for example, from those supported by prediction processing unit 260) that provides the best match, or in other words, the minimum residual (minimum residual means better compression for transmission or storage) or the minimum signaling overhead (minimum signaling overhead means better compression for transmission or storage), or that considers or balances both. Mode selection unit 262 can also be configured to determine the prediction mode based on rate distortion optimization (RDO), that is, to select the prediction mode that provides minimum rate distortion optimization or whose associated rate distortion meets at least one prediction mode selection criterion. The intraprediction unit 254 is further configured to determine, based on the intraprediction parameter, for example, the selected intraprediction mode, the intraprediction block 255. In any case, after selecting an intraprediction mode for a block, the intraprediction unit 254 is also configured to provide an intraprediction parameter—that is, information indicative of the intraprediction mode selected for the block—to the entropic coding unit 270. For example, the intraprediction unit 254 can be configured to perform any combination of the intraprediction techniques described below. Implementations of the video encoder 20 may include an image splitting unit (not shown in Fig. 2) configured to split the image into a plurality of image blocks (usually non-overlapping). These blocks may also be called root blocks, macroblocks (H.264 / AVC), coding tree blocks (CTB), or coding tree units (CTU) (H.265 / HEVC and VVC). The image splitting unit may be configured to use the same block size for all images in a video sequence and the corresponding grid that defines the block size, or to change the block size between images, subsets, or groups of images, and split each image into the corresponding blocks. Like the image, the image block is, or can be considered, a two-dimensional array of samples with intensity values ​​(sample values), although of a lower dimension than the image. In other words, the block might comprise, for example, one sample array (e.g., a luma array in the case of a monochrome image, or a luma or chroma array in the case of a color image), or three sample arrays (e.g., a luma array and two chroma arrays in the case of a color image), or any other number and / or type of arrays, depending on the applied color format. The number of samples in the horizontal and vertical (or axis) directions of the block defines its size. Consequently, a block might be, for example, an M x N (M columns by N rows) distribution of samples, or an M x N distribution of transformation coefficients. The video encoder realizations, as shown in Fig. 2, can be configured to encode the image block by block; for example, encoding and prediction are performed block by block. The video encoder implementations, as shown in Fig. 2, can be further configured to split and / or encode the image using segments (also called video segments), wherein an image can be split or encoded using one or more (usually non-overlapping) segments, and each segment can comprise one or more blocks (e.g., CTUs). The video encoder embodiments, as shown in Fig. 2, can be further configured to split and / or encode the image using tile groups (also called video tile groups) and / or tiles (also called video tiles), wherein an image can be split or encoded using one or more tile groups (usually not overlapping), and each tile group can comprise, e.g., one or more blocks (e.g., CTUs) or one or more tiles, wherein each tile, e.g., can be rectangular in shape and can comprise one or more blocks (e.g., CTUs), e.g., whole or fragmented blocks. Figure 3 shows an example video decoder 30 configured to implement the techniques described in this application. The video decoder 30 is configured to receive encoded image data (e.g., an encoded bitstream) 21, for example, encoded by the encoder 100, to obtain a decoded image 131. During the decoding process, the video decoder 30 receives video data, for example, an encoded video bitstream representing image blocks from an encoded video segment and associated syntax elements, from the video encoder 100. In the example in Fig. 3, the decoder 30 comprises an entropic decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., an adder 314), a buffer 316, a loop filter 320, a decoded image buffer 330, and a prediction processing unit 360. The prediction processing unit 360 may include an inter-prediction unit 344, an intra-prediction unit 354, and a mode selection unit 362. The video decoder 30 may, in some examples, perform a decoding stage that is generally the reciprocal of the encoding stage described with respect to the video encoder 20 in Fig. 2. The entropic decoding unit 304 is configured to perform entropic decoding of the encoded image data 21 to obtain, for example, the quantized coefficients 309 and / or decoded encoding parameters (not shown in Fig. 3), such as (decoded) some or all of the inter-prediction parameters, intra-prediction parameters, loop filter parameters, and / or other syntax elements. The entropic decoding unit 304 is further configured to send inter-prediction parameters, intra-prediction parameters, and / or other syntax elements to the prediction processing unit 360. The video decoder 30 can receive the syntax elements at the video segment level and / or at the video block level. The inverse quantization unit 310 can have an identical function to the inverse quantization unit 110, the inverse transform processing unit 312 can have an identical function to the inverse transform processing unit 112, the reconstruction unit 314 can have an identical function to the reconstruction unit 114, the buffer 316 can have an identical function to the buffer 116, the loop filter 320 can have an identical function to the loop filter 120, and the decoded image buffer 330 can have an identical function to the decoded image buffer 130. The prediction processing unit 360 may comprise an intra-prediction unit 344 and an intra-prediction unit 354, wherein the inter-prediction unit 344 may resemble the inter-prediction unit 144 in function, and the intra-prediction unit 354 may resemble the intra-prediction unit in function 154. The prediction processing unit 360 is generally configured to perform block prediction and / or obtain the prediction block 365 from the encoded data 21 and receive or obtain (explicitly or implicitly) the prediction-related parameters and / or information about the selected prediction mode, e.g., from the entropic decoding unit 304. When the video segment is encoded as an intra-coded segment (I), the intra-prediction unit 354 of the prediction processing unit 360 is configured to generate prediction block 365 for an image block of the current video segment based on a specified intra-prediction mode and previously decoded block data from the current frame or image. When the video frame is encoded as an inter-coded segment (i.e., B or P), the inter-prediction unit 344 (e.g., the motion compensation unit) of the prediction processing unit 360 is configured to produce prediction blocks 365 for a video block of the current video segment based on motion vectors and other syntax elements received from the entropic decoding unit 304.For inter-prediction, prediction blocks can be generated from one of the reference frames within one of the reference frame lists. The video decoder 30 can construct the reference frame lists, List 0 and List 1, using predefined construction techniques based on reference frames stored in the DPB 330. The 360 ​​prediction processing unit is configured to determine prediction information for a video block from the current video segment by analyzing motion vectors and other syntax elements, and uses the prediction information to produce the prediction blocks for the current video block being decoded.For example, the prediction processing unit 360 uses some of the received syntax elements to determine a prediction mode (e.g., intra-prediction or inter-prediction) used to encode the video blocks in the video segment, an inter-prediction segment type (e.g., B-segment, P-segment, or GPB-segment), construction information for one or more of the reference picture lists for the segment, motion vectors for each intercoded video block in the segment, the inter-prediction state for each intercoded video block in the segment, and other information for decoding the video blocks in the current video segment. The inverse quantization unit 310 is configured to inversely quantize, i.e., dequantize, the quantized transform coefficients provided in the bitstream and decoded by the entropic decoding unit 304.The inverse quantization process may involve using a quantization parameter calculated by the video encoder 100 for each video block in the video segment to determine a degree of quantization and, likewise, a degree of inverse quantization to be applied. The inverse transform processing unit 312 is configured to apply an inverse transform—for example, an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process—to the transform coefficients to produce residual blocks in the pixel domain. The reconstruction unit 314 (e.g., the adder 314) is configured to add the inverse transform block 313 (i.e., the reconstructed residual block 313) to the prediction block 365 to obtain a reconstructed block 315 in the sample domain, e.g., by adding the sample values ​​of the reconstructed residual block 313 and the sample values ​​of the prediction block 365. Loop filter unit 320 (either in the encoding loop or after the encoding loop) is configured to filter the reconstructed block 315 to obtain a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality. In one example, loop filter unit 320 can be configured to perform any combination of the filtering techniques described later. Loop filter unit 320 is intended to represent one or more loop filters, such as an unblocking filter, a sample-adaptive shift (SAO) filter, or other filters, for example, a bilateral filter, an adaptive loop filter (ALF), a sharpening filter, smoothing filters, or collaborative filters. Although loop filter unit 320 is shown in FIG. 3 as a loop filter, in other configurations, loop filter unit 320 can be implemented as a post-loop filter. The decoded video blocks 321 in a given frame or image are then stored in the decoded image buffer 330, which stores reference images used for subsequent motion compensation. Decoder 30 is configured to output the decoded image 331, for example, through output 332, for presentation or viewing by a user. Other variations of the video decoder 30 can be used to decode the compressed bitstream. For example, the decoder 30 can produce the output video stream without the loop filtering unit 320. For example, a non-transform-based decoder 30 can inversely quantize the residual signal directly without the inverse transform processing unit 312 for certain blocks or frames. In another implementation, the video decoder 30 can have the inverse quantization unit 310 and the inverse transform processing unit 312 combined into a single unit. The video decoder implementations, as shown in Fig. 3, can be configured to split and / or decode the image using segments (also called video segments), wherein an image can be split or decoded using one or more (usually non-overlapping) segments, and each segment can comprise one or more blocks (e.g., CTUs). The video decoder embodiments, as shown in Fig. 3, can be configured to split and / or decode the image using groups of mosaics (also called video mosaic groups) and / or mosaics (also called video mosaics), wherein an image can be split or decoded using one or more groups of mosaics (usually not overlapping), and each group of mosaics can comprise, e.g., one or more blocks (e.g., CTUs) or one or more mosaics, wherein each mosaic, e.g., can be rectangular in shape and can comprise one or more blocks (e.g., CTUs), e.g., whole or fragmented blocks. It should be understood that, in the encoder and decoder, a processing result from a current stage can be further processed and then sent to the next stage. For example, after interpolation filtering, motion vector derivation, or loop filtering, an additional operation, such as clipping or shifting, can be performed on the processing result of the interpolation filtering, motion vector derivation, or loop filtering. According to the HEVC / H.265 standard, there are 35 available intra-prediction modes. This set includes the following modes: planar mode (intra-prediction mode index 0), DC mode (intra-prediction mode index 1), and directional (angular) modes covering a 180° range with intra-prediction mode index values ​​ranging from 2 to 34. To capture arbitrary edge directions present in natural video, the number of intra-directional modes is expanded from 33, as used in HEVC, to 65. The additional directional modes are shown in Figure 4, while the planar and DC modes remain the same. It is worth noting that the range covered by the intra-prediction modes can be wider than 180°. In particular, 62 directional modes with index values ​​from 3 to 64 cover the range of approximately 230°, meaning that several pairs of modes have opposite directionality.In the case of the HEVC reference model (HM) and JEM platforms, only one pair of angle modes (namely, modes 2 and 66) have opposite directionality, as shown in Fig. 4. To construct a predictor, conventional angle modes take reference samples and (if necessary) filter them to obtain a sample predictor. The number of reference samples needed to construct a predictor depends on the length of the filter used for interpolation (e.g., bilinear and cubic filters have lengths of 2 and 4, respectively). Fig. 4 shows an example of 67 intra-prediction modes, e.g., as proposed for VVC, the plurality of 67 intra-prediction modes comprising: planar mode (index 0), dc mode (index 1), and angular modes with indices 2 to 66, wherein the lower left angular mode in Fig. 4 refers to index 2, and the numbering of the indices increases until index 66 is the upper rightmost angular mode in Fig. 4. Video coding schemes such as H.264 / AVC and HEVC are designed based on the successful principle of block-based hybrid video coding. Using this principle, an image is first divided into blocks, and then each block is predicted using either intra-image or inter-image prediction. As used herein, the term "block" can refer to a portion of an image or a frame. For ease of description, embodiments of the invention are described herein with reference to High Efficiency Video Coding (HEVC) or Versatile Video Coding Reference Software (VVC), developed by the Joint Collaborative Team on Video Coding (JCT-VC) of the ITU-T Video Coding Expert Group (VCEG) and the ISO / IEC Moving Image Expert Group (MPEG). A person skilled in the art will understand that embodiments of the invention are not limited to HEVC or VVC. They can refer to a CU, PU, ​​and TU. In HEVC, a CTU is divided into CUs using a quad-tree structure called the coding tree. The decision to encode an image area using inter-image (temporal) or intra-image (spatial) prediction is made at the CU level.Each CU can be further divided into one, two, or four PUs, depending on the PU partitioning type. Within a PU, the same prediction process is applied, and the relevant information is transmitted to the decoder based on the PU. After obtaining the residual block by applying the prediction process according to the PU partitioning type, a CU can be partitioned into transform units (TUs) according to another quaternary tree structure similar to the CU's encoding tree. In the most recent development of video compression techniques, quaternary tree and binary tree (QTBT) partitioning is used to divide an encoding block. In the QTBT block structure, a CU can be square or rectangular. For example, an encoding tree unit (CTU) is first partitioned using a quaternary tree structure. The leaf nodes of the quaternary tree are then further partitioned using a binary tree structure.The leaf nodes of the binary tree are called encoding units (CUs), and this segmentation is used for prediction and transform processing without any additional partitioning. This means that the CU, PU, ​​and TU have the same block size in the QTBT encoding block structure. In parallel, the use of multiple partitioning, for example, triple tree partitioning, has also been proposed in conjunction with the QTBT block structure. ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) are studying the potential need for standardization of future video coding technology with compression capabilities that significantly exceed those of the current HEVC standard (including its current extensions and short-term extensions for screen content coding and high dynamic range coding).The groups are working together on this exploration activity in a joint collaborative effort known as the Joint Video Exploration Team (JVET) to evaluate compression technology designs proposed by their experts in this area. The VTM (Versatile Test Model) uses 35 intra-modes, while the BMS (Benchmark Set) uses 67 intra-modes. Intra-prediction is a mechanism used in many video encoding frameworks to increase compression efficiency in cases where only a specific frame can be processed. As shown in Fig. 4, the latest version of JEM has several modes corresponding to biased intra-prediction directions. In any of these modes, to predict samples within a block, a set of adjacent reference samples must be interpolated if the corresponding position within one side of the block is fractional. HEVC and VVC use linear interpolation between two adjacent reference samples. JEM uses more sophisticated 4-step interpolation filters. The filter coefficients are selected to be Gaussian or cubic depending on the width or height value.The decision to use width or height is aligned with the decision to select the primary reference side: when the intra-prediction mode is greater than or equal to the diagonal mode, the upper side of the reference samples is selected as the primary reference side, and the width value is chosen to determine the interpolation filter in use. Otherwise, the primary reference side is selected from the left side of the block, and the height controls the filter selection process. Specifically, if the length of the selected side is less than or equal to 8 samples, 4-way cubic interpolation is applied. Otherwise, the interpolation filter is a 4-way Gaussian filter. The specific filter coefficients used in JEM are shown in Table 1. The predicted sample is calculated by convolution with coefficients selected from Table 1 according to the subpixel offset and filter type as follows: In this equation, ">>" indicates a bitwise right shift operation. If the cubic filter is selected, the expected sample is further trimmed to the allowed range of values, which is defined in SPS or derived from the bit depth of the selected component. Table 1. Intra-prediction interpolation filters The motion compensation process also uses filtering to predict sample values ​​when the pixel displacements of the reference block are fractional. In JEM, 8-pulse filtering is used for the luminance component and 4-pulse length filtering for the chrominance component. The motion interpolation filter is first applied horizontally, and the output of the horizontal filtering is further filtered vertically. The coefficients for a 4-pulse chrominance filter are shown in Table 2. Table 2. Chrominance Motion Interpolation Filter Coefficients State-of-the-art video coding solutions utilize different interpolation filters in intra- and inter-prediction. Figures 5 through 7 illustrate various examples of these filters. Figure 5 schematically depicts an example of the interpolation filters used in JEM. As shown in the figure, for motion compensation interpolation at fractional positions in inter-prediction, an 8-lead interpolation filter with 6-bit coefficients is used for luma, and a 4-lead interpolation filter with 6-bit coefficients is used for chroma. Furthermore, for intra-reference sample interpolation in intra-prediction, either a 4-lead Gaussian interpolation filter with 8-bit coefficients or a 4-lead cubic interpolation filter with 8-bit coefficients is used. Figure 6 schematically illustrates an example of the interpolation filters proposed for the core experiment CE3 3.1.3 (G. Van der Auwera et al: JVET K1023 "Description of Core Experiment 3 (CE3): Intra Prediction and Mode Coding", version 2). As can be seen in the figure, for motion compensation interpolation at fractional positions in the intra-prediction, an 8-lead interpolation filter with 6-bit coefficients for luma and a 4-lead interpolation filter with 6-bit coefficients for chroma are used. Furthermore, for intra-reference sample interpolation in the intra-prediction, either a 6-lead Gaussian interpolation filter with 8-bit coefficients or a 4-lead cubic interpolation filter with 8-bit coefficients is used. Figure 7 schematically illustrates an example of the interpolation filters proposed in G. Van der Auwera et al.: JVET K0064 "CE3-related: On MDIS and intra interpolation filter switching", version 2. As can be seen in the figure, for motion compensation interpolation at fractional positions in the interprediction, an 8-pulse interpolation filter with 6-bit coefficients is used for luma, and a 4-pulse interpolation filter with 6-bit coefficients is used for chroma. Furthermore, for intra-reference sample interpolation in the intraprediction, a 6-lead Gaussian interpolation filter with 8-bit coefficients or a 6-lead cubic interpolation filter with 8-bit coefficients is used. According to this disclosure, the lookup tables and hardware modules of the chromatic motion compensation sub-pel filter are reused to interpolate pixel values ​​within an intrapredictor if they fall in fractional positions between reference samples. Since the same hardware is intended to be used for both inter- and intra-prediction, the accuracy of the filter coefficients must be consistent; that is, the number of bits used to represent the filter coefficients for the intra-reference sample interpolation must be aligned with the accuracy of the sub-pel motion compensation interpolation filter coefficient. Figure 8 illustrates the idea of ​​the disclosure provided. The discontinuous "4-way interpolation filter with 6-bit coefficients for chroma" (hereafter referred to as the "unified intra / inter filter") can be used for both processes: intra- and inter-predictive sample interpolation. An example using this design is shown in Fig. 9. In this implementation, a filtering module is implemented as a separate unit that participates in both: chrominance sample prediction in motion compensation and luminance and chrominance sample prediction when performing intra-prediction. In this implementation, the hardware filtering component is used in both intra- and inter-prediction processes. Another example shows the implementation when only the filter coefficient LUTs are reused, as illustrated in Fig. 10. In this embodiment, the hardware filtering modules load LUT coefficients stored in ROM. A switch shown in the intraprediction process determines the type of filter used depending on the length of the main side selected for the intraprediction process. An implementation of the provided application may use the following coefficients (see Table 3). Table 3: Intra- and interpolating interpolating filters An intra-predictive sample can be calculated by convolution with coefficients selected from Table 1 according to the subpixel offset and filter type as follows: In this equation, ">>" indicates a bitwise right shift operation. If the "unified intra / inter filter" is selected, the predictive sample is further trimmed to the allowed range of values, which is defined in SPS or derived from the bit depth of the selected component. For intra-reference sample interpolation and subpel motion compensation interpolation, the same filter can be used to reuse hardware modules and reduce the overall memory required. The accuracy of the filter coefficients used for interpolation of intra-reference samples, in addition to the reused filter, must be aligned with the accuracy of the coefficients of the reused filter mentioned above. Note that luma processing in motion compensation does not necessarily use 8-lead filtering; it can also work with 4-lead filtering. In this case, a 4-lead filter could be selected for unification. The method can be applied to different parts of the intra-prediction process that may involve interpolation. In particular, when amplifying the main reference samples, the side reference samples can also be filtered using a unified interpolation filter (see V. Drugeon: JVET-K0211 "CE3: DC mode without divisions and modifications to intra filtering (Essays 1.2.1, 2.2.2 and 2.5.1)" version 1 for further details). Intra-block copy operations also involve an interpolation stage that can utilize the proposed method (see [Xiaozhong Xu, Shan Liu, Tzu-Der Chuang, Yu-Wen Huang, Shawmin Lei, Krishnakanth Rapaka, Chao Pang, Vadim Seregin, Ye-Kui Wang, Marta Karczewicz: Intra Block Copy in HEVC Screen Content Coding Extensions.. IEEE J. Emerg. Sel. Topics Circuits Syst.6 (4): 409-419 (2016)] for the description of intra-block copy). A method for intra-prediction is provided, the method comprising: using an interpolation filter for the chrominance component as an interpolation filter for the intra-prediction of a block. In one embodiment, an interpolation filter lookup table for the chrominance component is the same as an interpolation filter lookup table for intra-prediction. In one embodiment, an interpolation filter lookup table for the chrominance component is not the same as an interpolation filter lookup table for intra-prediction. In one embodiment, the interpolation filter is a 4-way filter. In one embodiment, the lookup table of the interpolation filter for the chrominance component is A method for intra-prediction is provided, the method comprising: selecting an interpolation filter from a set of interpolation filters for the intra-prediction of a block. In one embodiment, the set of interpolation filters comprises a Gauss filter and a cubic filter. In one embodiment, an interpolation filter lookup table is the same as an interpolation filter lookup table for the chrominance component. In one embodiment, the selected interpolation filter is a 4-way filter. In one embodiment, the selected interpolation filter is a cubic filter. In one implementation, a lookup table of the selected interpolation filter is Displacement c0 c1 c2 c3 In one implementation, a lookup table is created from the selected interpolation filter of An encoder comprising processing circuitry is provided to carry out any of the above methods. An encoder comprising processing circuitry is provided to carry out any of the above methods. A computer program product is provided comprising program code for performing any one of the above methods. A decoder is provided, comprising one or more processors; and a computer-readable non-transient storage medium coupled to the processors and storing the programming for execution by the processors, wherein the programming, when executed by the processors, configures the decoder to carry out any of the above methods. An encoder is provided, comprising one or more processors; and a computer-readable non-transient storage medium coupled to the processors and storing the programming for execution by the processors, wherein the programming, when executed by the processors, configures the encoder to carry out any one of the above methods. For example, it is understood that a disclosure relating to a described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if a specific method step is described, a corresponding device may include a unit for performing the described method step, even if such a unit is not explicitly described or illustrated in the figures. Furthermore, it is understood that the features of the various illustrative aspects described herein may be combined with one another, unless specifically stated otherwise. A method for aspect ratio-dependent filtering for intra-prediction, comprising the method: select an interpolation filter for a block that will be predicted based on the block's aspect ratio. In one example, the interpolation filter is selected depending on a direction to set a threshold for an intra-prediction mode of the block to be predicted. In one example, the direction corresponds to an angle of the main diagonal of the block to be predicted. In one example, a direction angle is calculated as: T = arctan ( ) , where W, H are the width and height of the block to be predicted, respectively. In one example, the aspect ratio is RA = log2 (W) - log2 (H) , where W and H are the width and height of the block to be predicted, respectively. In one example, the angle of the main diagonal of the block to be predicted is determined based on the aspect ratio. In one example, a threshold for an intra-prediction mode of the block is determined based on the angle of the main diagonal of the block to be predicted. In one example, the interpolation filter is selected depending on which side the reference samples being used belong to. In one example, a straight line with an angle corresponding to an intra-direction divides the block into two areas. In one example, reference samples from different areas are predicted using different interpolation filters. One example includes a cubic interpolation filter and a Gaussian interpolation filter. In one form of implementation of this request, a frame is the same as an image. In one form of implementation of this disclosure, a value corresponding to VER_IDX is 50; a value corresponding to HOR_IDX is 18; a value corresponding to VDIA_IDX is 66, and this value may be the largest value among the values ​​corresponding to the angular modes; the value 2 corresponding to intra 2 mode may be the smallest value among the values ​​corresponding to the angular modes; a value corresponding to DIA_IDX is 34. This disclosure aims to improve the intramode signaling scheme. It proposes a video decoding method and a video decoder. In another aspect of this disclosure, a decoder comprising a processing circuit configured to carry out the above decoding methods is disclosed. In another aspect of this disclosure, a software product is provided comprising program code for performing any one of the decoding methods described above. In another aspect of this disclosure, a decoder for decoding video data is provided, the decoder comprising: one or more processors; and a computer-readable, non-transient storage medium coupled to the processors and storing the programming for execution by the processors, wherein the programming, when executed by the processors, configures the decoder to perform any one of the decoding methods described above. The processing circuit can be implemented in hardware or in a combination of hardware and software, for example by means of a software programmable processor or similar. The processing circuit can be implemented in hardware or in a combination of hardware and software, for example by means of a software programmable processor or similar. Figure 11 illustrates a schematic diagram of a plurality of intra-prediction modes used in the HEVC UIP scheme. For luminance blocks, the intra-prediction modes can comprise up to 36 modes, which may include three non-directional modes and 33 directional modes. The non-directional modes may comprise a planar prediction mode, a mean prediction mode (DC), and a chroma-from-luma (LM) prediction mode. The planar prediction mode can make predictions assuming a block amplitude surface with a horizontal and vertical slope derived from the block boundary. The DC prediction mode can make predictions assuming a flat block surface with a value that matches the mean value of the block boundary. The LM prediction mode can make predictions assuming that a chroma value for the block matches the luma value of the block.Directional modes can make predictions based on adjacent blocks as shown in Fig.11. H.264 / AVC and HEVC specify that a low-pass filter can be applied to reference samples before they are used in the intra-prediction process. The decision to use a reference sample filter is determined by the intra-prediction mode and block size. This mechanism can be called Mode-Dependent Intra-Smoothing (MDIS). There are also several methods related to MDIS. For example, the Adaptive Reference Sample Smoothing (ARSS) method can signal explicitly (i.e., a flag is included in a bitstream) or implicitly (i.e., data hiding is used to avoid placing a flag in a bitstream to reduce signaling overhead) whether the prediction samples are filtered. In this case, the encoder can decide whether to smooth by testing the distortion rate (DR) cost for all potential intra-prediction modes.As shown in Fig. 11, the latest version of JEM (JEM-7.2) has several modes corresponding to biased intra-prediction directions. In any of these modes, to predict samples within a block, a set of adjacent reference samples must be interpolated if the corresponding position within one side of the block is fractional. HEVC and VVC use linear interpolation between two adjacent reference samples. JEM uses more sophisticated 4-step interpolation filters. The filter coefficients are selected to be Gaussian or cubic depending on the width or height value.The decision regarding whether to use width or height is aligned with the decision regarding the selection of the primary reference side: when the intra-prediction mode is greater than or equal to the diagonal mode, the upper side of the reference samples is selected as the primary reference side, and the width value is chosen to determine the interpolation filter in use. Otherwise, the primary side reference is selected from the left side of the block, and the height controls the filter selection process. Specifically, if the length of the selected side is less than or equal to 8 samples, 4-way cubic interpolation is applied. Otherwise, the interpolation filter is a 4-way Gaussian filter. An example of interpolation filter selection for modes less than and greater than diagonal one (indicated as 45°) in the case of a 32x4 block is shown in Fig. 12. In VVC, a partitioning mechanism based on both quad-trees and binary trees, known as QTBT, is used. As shown in Fig. 13, QTBT partitioning can provide not only square blocks but also rectangular ones. Of course, some signaling overhead and increased computational complexity on the encoder side are the trade-offs of QTBT partitioning compared to the conventional quad-tree-based partitioning used in the HEVC / H.265 standard. However, QTBT-based partitioning offers better segmentation properties and thus demonstrates significantly higher encoding efficiency than conventional quad-trees. However, VVC in its current state applies the same filter to both sides of the reference samples (left and top). It doesn't matter if a block is oriented vertically or horizontally; the reference sample filter will be the same for both sides of the reference sample. In this document, the terms "vertically oriented block" ("vertical orientation of a block") and "horizontally oriented block" ("horizontal orientation of a block") are applied to rectangular blocks generated by the QTBT framework. These terms have the same meaning as shown in Fig. 14. This disclosure provides a mechanism for selecting different reference sample filters to account for the orientation of a block. Specifically, the width and height of a block are checked independently so that different reference sample filters are applied to reference samples located on different sides of the block to be predicted. In a review of the prior art, it was described that the selection of the interpolation filter is harmonized with the decision regarding the selection of the main reference side. Currently, both decisions are based on comparing the intra-prediction mode with the diagonal direction (45 degrees). However, it can be observed that this design has a serious flaw for elongated blocks. From Fig. 15, it can be seen that even if the shorter side is selected as the primary reference using mode comparison criteria, most of the intended pixels would still be derived from the reference samples of the longer side (shown as a dashed area). This disclosure proposes using an alternative direction to establish the threshold for an intra-prediction mode during the interpolation filter selection process. Specifically, the directions correspond to the angle of the main diagonal of the block to be predicted. For example, for blocks of size 32x4 and 4x32, the threshold mode mT used to determine the reference sample filter is defined as shown in Fig. 16. The specific value of the threshold intra-prediction angle could be calculated using the following formula: T = arctan ( ) , Where W and H are the width and height of the block, respectively. Another application of this disclosure is the use of different interpolation filters depending on which side the reference samples being used belong to. An example of this determination is shown in Fig. 17. A straight line at an angle corresponding to the intra-m direction divides a predicted block into two areas. Samples belonging to different areas are predicted using different interpolation filters. Illustrative values ​​of mT (for the set of intra-prediction modes defined in BMS1.0) and the corresponding angles are given in Table 4. The angles are given as shown in Fig.16. Table 4. Illustrative mT values ​​(for the set of intra-prediction modes defined in BMS1.0) Aspect ratio Main diagonal angle Intra-prediction mode threshold RA = log2 (W) - log2 (H) , degrees mT In comparison with existing technology and solutions, this disclosure uses samples within a block that are predicted using different interpolation filters, where the interpolation filter used to predict a sample is selected according to the shape of the block, the horizontal or vertical orientation, and the intra-prediction mode angle. This disclosure can be applied to the reference sample filtering stage. In particular, the reference sample smoothing filter can be determined using rules similar to those described above for the interpolation filter selection process. In addition to interpolation filtering, reference sample filtering can also be applied to reference samples immediately before predicting samples within an intra-predictor. The filtered reference samples obtained after reference sample filtering can be used to copy corresponding samples within an intra-predictor according to a selected intra-prediction mode direction or for further interpolation filtering. The following filters can be applied to reference samples in this way: Table 5. Illustrative reference sample filters Figure 21 illustrates an actual block 1130, shown with a surrounding bold frame and including samples 1120. The figure also illustrates reference samples 1110 from neighboring blocks. For example, the reference samples could be samples from a block above or a block to the left. According to one embodiment, the provided method includes the following steps: 1. Each selected directional intra-prediction mode is classified into one of the following groups: A. Vertical or horizontal modes, B. Diagonal modes that represent angles that are multiples of 45 degrees, C. remaining directional modes; 2. If the directional intra-prediction mode is classified as belonging to group A, then no filters are applied to the reference samples 1110 to generate samples 1120 belonging to an intra-predictor. The reference samples 1110 are separated from the samples 1120 within a block to be predicted (intra-predictor) with block boundaries 1130 as shown in Fig. 11; 3. If a mode falls into group B, then a reference sample filter (any of the reference sample filters shown in Table 5, [1, 2, 1]) is applied to the reference samples to further copy these filtered values ​​into an intra-predictor according to the selected direction, but no interpolation filters are applied; 4. If a mode is classified as belonging to group C, then only an intra-reference sample interpolation filter (e.g., the filters presented in Table 3) is applied to the reference samples to generate a predicted sample that falls at a fractional or integer position between the reference samples according to a selected direction (no reference sample filtering is performed). According to one embodiment, the provided method provides the following steps: 1. The directional intra-prediction mode for intra-prediction processing of a current block is classified into one of the following groups: A. Vertical or horizontal modes, B. Directional modes, including diagonal modes representing angles that are multiples of 45 degrees, C. Remaining directional modes. 2. If the directional intra-prediction mode is classified as belonging to group B, a reference sample filter is applied to the reference samples; 3. If the directional intra-prediction mode is classified as belonging to group C, an intra-reference sample filter is applied to the reference samples. In other words, depending on the classification of the intra-prediction mode that will be used for the intraprediction of a current block, either a reference sample is applied (classification B) or a reference sample interpolation filter is applied (classification C). Specifically, depending on the implementation, either a sample filter or a sample interpolation filter is applied. In particular, no interpolation filter is applied when the reference sample filter for a directional intra-prediction mode is not a fractional sample. In other words, when the reference sample for the prediction direction is a whole sample, no interpolation filter is required. Furthermore, depending on the classification, no filters can be used. For example, in a classification A case of the intra-prediction mode to be used for the intra-prediction of the current block, neither a reference sample filter nor a reference sample interpolation filter can be used. The predicted samples can be obtained from the left and top lines of the reference samples, as illustrated in Fig. 21. Depending on the intra-prediction mode, a corresponding reference sample position is determined for each of the predicted samples. If the mode has a non-integer slope, the reference sample position is fractional, and the reference sample value is obtained by applying an interpolation filter to the subset of reference samples adjacent to this fractional position. The position of this reference sample within a line of reference samples has a horizontal (when the intra-prediction mode is greater than DIA_IDX) or vertical (when the intra-prediction mode is less than DIA_IDX) offset with respect to the position of the predicted sample. The value of this offset depends on the mode angle and the distance from the predicted sample to the line of reference samples. When the intra-prediction mode is 2 or VDIA_IDX, the prediction angle is equal to 45 degrees and the offset value is equal to the distance to the line of reference samples. The diagonal modes of group B can also include wide-angle modes with integer slope. In this case, similar to the DIA_IDX and VDIA_IDX modes, the displacement value is a multiple of the distance to the reference sample line, and the reference sample positions for each predicted sample are not fractional. For example, when multiple reference line prediction is not used (the reference line index is zero) and the position of a predicted sample within a block is (1, 3) relative to the upper left predicted sample at position (0, 0), the distance to the reference sample lines is 4 samples when the intra-prediction mode is greater than DIA_IDX. When the intra-prediction mode is less than DIA_IDX, this distance is 2. When the intra-prediction mode is a wide angular mode and its slope is an integer, the predicted sample value can be calculated as: predSamples[x, y]=p[x + ] [-1], =N * (y+1) when the intra-prediction mode is greater than DIA_IDX, otherwise, predSamples[x, y]=p[-1][y+], = N * (x+1) . Here, it denotes the value of the displacement. The N value for angle 45 mode 2 and VDIA_IDX is equal to 1. Modes representing angles that are multiples of 45 degrees would use the same expressions to determine the predicted samples, "predSamples[x][y]", but the value of N would be greater than 1 and an integer. Note that modes representing angles that are multiples of 45 degrees do not necessarily include horizontal and vertical modes. It can be observed that the offset value for the wide-angle integer slope modes is a multiple of the offset for mode 2 and mode VDIA_IDX, Generally, the offset value can be assigned to the intra-prediction mode (predModeIntra) using an "intraPredAngle" parameter. Table 6 below shows a specific mapping of this parameter to the intra-prediction mode: The inverse angle parameter invAngle is derived as a function of intraPredAngle as follows: The following is an illustrative derivation of predicted samples: The prediction sample values ​​predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1, are derived as follows: - If predModeIntra is greater than or equal to 34, the following ordered steps are applied: 1. The reference sample matrix ref[ x ] is specified as follows: - Apply the following: ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ], with x = 0..nTbW + refIdx - If intraPredAngle is less than 0, the main reference sample matrix is ​​extended as follows: - When ( nTbH * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ], with x = -1.. (nTbH * intraPredAngle) >> 5 ref[ ( ( nTbH * intraPredAngle ) >> 5 ) - 1 ] = ref[ ( nTbH * intraPredAngle ) >> 5 ] ref[ nTbW + 1 + refIdx ] = ref[ nTbW + refIdx ] - Otherwise, ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ], with x = nTbW + 1 + refIdx..refW + refIdx ref[ -1 ] = ref[ 0 ] - The additional samples ref[ refW + refIdx +x ] with x = 1.. ( Max ( 1, nTbW / nTbH ) * refIdx + 1) are derived as follows: ref[ refW + refIdx +x ] = p[ -1 + refW ][ -1 - refIdx ] 2. The prediction sample values ​​predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1, are derived as follows: - The index variable iIdx and the multiplication factor iFact are derived as follows: iIdx = ( ( y + 1 + refIdx ) * intraPredAngle ) >> 5 + refIdx iFact = ( ( y + 1 + refIdx ) * intraPredAngle ) & 31 - If cIdx is equal to 0, the following applies: - The interpolation filter coefficients fT[ j ] with j = 0..3 are derived as follows: fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] - The value of the prediction samples predSamples[ x ][ y ] is derived as follows: - Otherwise (cIdx is not equal to 0), depending on the value of iFact, the following applies: - If iFact is not equal to 0, the value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ]= ( ( 32 - iFact ) * ref[ x + iIdx + 1 ] + iFact * ref[ x + iIdx + 2 ] + 16 ) >> 5 - The value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = ref[ x + iIdx + 1 ] - Otherwise (predModeIntra is less than 34), the following steps apply in order: 3. The reference sample matrix ref[ x ] is specified as follows: - Apply the following: ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ], with x = 0..nTbW + refIdx - If intraPredAngle is less than 0, the main reference sample matrix is ​​extended as follows: - When ( nTbH * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ][ -1 - refIdx ], with x = -1.. (nTbW * intraPredAngle) >> 5 ref[ ( ( nTbW * intraPredAngle ) >> 5 ) - 1 ] = ref[ ( nTbW * intraPredAngle ) >> 5 ] ref[ nTbG + 1 + refIdx ] = ref[ nTbH + refIdx ] - Otherwise, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ], with x = nTbH + 1 + refIdx..refH + refIdx ref[ -1 ] = ref[ 0 ] - The additional samples ref[ refH + refIdx +x ] with x = 1.. ( Max ( 1, nTbW / nTbH ) * refIdx + 1) are derived as follows: ref[ refH + refIdx +x ] = p[ -1 + refH ][ -1 - refIdx ] 4. The prediction sample values ​​predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1, are derived as follows: - The index variable iIdx and the multiplication factor iFact are derived as follows: iIdx = ( ( x + 1 + refIdx ) * intraPredAngle ) >> 5 iFact = ( ( x + 1 + refIdx ) * intraPredAngle ) & 31 - If cIdx is equal to 0, apply the following: - The interpolation filter coefficients fT[ j ] with j = 0..3 are derived as follows: fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] - The value of the prediction samples predSamples[ x ][ y ] is derived as follows: - Otherwise (cIdx is not equal to 0), depending on the value of iFact, the following applies: - If iFact is not equal to 0, the value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ y + iIdx + 1 ] + iFact * ref[ y + iIdx + 2 ] + 16 ) >> 5 - Alternatively, the value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = ref[ y + iIdx + 1 ] From the previous example and the table above, it can be observed that invoking interpolation for some modes is redundant. Specifically, this occurs for modes with a corresponding intraPredAngle parameter that is a multiple of 32. The value 32 corresponds to a mode with an integer slope of 45 degrees. In fact, the predAngle value is a 5-bit fixed-point integer representation of the offset value that would be used for predicted samples adjacent to the reference sample line. Specifically, for the modes [-14, -12, -10, -6, 2, 34, 66, 72, 76, 78, 80], the calculation of predicted samples does not require interpolation. The predicted sample values ​​can be obtained by copying reference samples. The text below provides a version of a draft VVC specification that incorporates an illustrative implementation of one realization of the disclosure: 8.4.4.2.1 General within-sample prediction The inputs to this process are: - a sample location (xTbCmp, yTbCmp) that specifies the top left sample of the current transform block relative to the top left sample of the current image, - a predModeIntra variable that specifies the intra-prediction mode, - an nTbW variable that specifies the width of the transformation block, - an nTbH variable that specifies the height of the transformation block, - an nCbW variable that specifies the width of the encoding block, - an nCbH variable that specifies the height of the encoding block, - a cIdx variable that specifies the color component of the current block. The results of this process are the predicted samples predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1. The refW and refH variables are derived as follows: - If IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT or cIdx is not equal to 0, the following applies: refW = nTbW * 2 (8-103) refH = nTbH * 2 (8-104) - Otherwise (IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT or cIdx is equal to 0), the following applies: refW = nCbW * 2 (8-105) refH = nCbH * 2 (8-106) The variable refIdx that specifies the intra-prediction reference line index is derived as follows: refIdx = ( cIdx = = 0 ) ? IntraLumaRefLineIdx[ xTbCmp ][ yTbCmp ] : 0 (8-107) For the generation of the reference samples p[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = - refIdx..refW - 1, y = -1 - refIdx, the following ordered steps are applied: 1. The reference sample availability marking process, as specified in clause 8.4.4.2.2 of Bross B et al.: "Versatile Cideo Coding (Draft 4)", JVET-M1001-v7, March 2019 (hereafter referred to as JVET-M1001-v7), is invoked with the sample location (xTbCmp, yTbCmp), the intra-prediction reference line index refIdx, the reference sample width refW, the reference sample height refH, the color component index cIdx as inputs and the reference samples refUnfilt[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = - refIdx..refW - 1, y = -1 - refIdx as output. 2. When at least one sample refUnfilt[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = -refIdx..refW - 1, y = -1 - refIdx is marked as "unavailable for intra-prediction", a reference sample replacement process is invoked, as specified in clause 8.4.4.2.3 of JVET-M1001-v7, with the intra-prediction reference line index refIdx, the reference sample width refW, the reference sample height refH, the reference samples refUnfilt[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = - refIdx..refW - 1, y = -1 - refIdx, and the color component index cIdx as inputs, and the modified reference samples refUnfilt[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = -refIdx..refW - 1, y = -1 - refIdx as output. 3. If predModeIntra is equal to INTRA_DC, RefFilterFlag is set to 0. Otherwise, the intraPredAngle, RefFilterFlag, and InterpolationFlag parameters are obtained by invoking the intraPredAngle parameter derivation process and corresponding filter flags specified in clause 8.4.4.2.7 below, with the intra-prediction mode predModeIntra, the intra-prediction reference line index refIdx, the transform block width nTbW, the transform block height nTbH, the encoding block width nCbW and height nCbH, and the color component index cIdx. 4. The reference sample filtering process as specified in clause 8.4.4.2.4 below is invoked with the intra-prediction reference line index refIdx, the transform block width nTbW and height nTbH, the reference sample width refW, the reference sample height refH, the unfiltered samples refUnfilt[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = -refIdx..refW - 1, y = -1 - refIdx, RefFilterFlag, the RefFilterFlag parameter and the color component index cIdx as inputs, and the reference samples p[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = -refIdx..refW - 1 1, y = -1 - refIdx as output. The intra-prediction process shown by predModeIntra is applied as follows: - If predModeIntra is equal to INTRA_PLANAR, the corresponding intra-prediction mode process specified in clause 8.4.4.2.5 of JVET-M1001-v7 is invoked with the transform block width nTbW, the transform block height nTbH, and the reference sample array p as inputs, and the output is the predicted sample array predSamples. - Conversely, if predModeIntra is equal to INTRA_DC, the corresponding intra-prediction mode process specified in clause 8.4.4.2.6 of JVET-M1001-v7 is invoked with the transform block width nTbW, the transform block height nTbH, and the reference sample array p as inputs, and the output is the predicted sample array predSamples. - Otherwise, if predModeIntra is equal to INTRA_LT_CCLM, INTRA_L_CCLM or INTRA_T_CCLM, the corresponding intra-prediction mode process specified in clause 8.4.4.2.8 above is invoked with the intra-prediction mode predModeIntra, the sample location (xTbC, yTbC) set equal to (xTbCmp, yTbCmp), the transform block width nTbW and height nTbH, and the reference sample array p as inputs, and the output is the predicted sample array predSamples. Otherwise, the corresponding intra-prediction mode process specified in clause 8.4.4.2.8 below is invoked with the intra-prediction mode predModeIntra, the intra-prediction reference line index refIdx, the transformation block width nTbW, the transformation block height nTbH, the reference sample width refW, the reference sample height refH, the encoding block width nCbW and height nCbH, the interpolation filter selection flag InterpolationFlag, the reference filter flag RefFilterFlag, and the reference sample array p as inputs, and the modified intra-prediction mode predModeIntra and the predicted sample array predSamples as outputs. When all of the following conditions are true, the position-dependent prediction sample filtering process specified in clause 8.4.4.2 is invoked.9 of JVET-M1001-v7 with intra-prediction mode predModeIntra, transform block width nTbW, transform block height nTbH, predicted samples predSamples [ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1, reference sample width refW, reference sample height refH, reference samples p[ x ][ y ], with x = -1, y = -1..refH - 1 and yx = 0..refW - 1, y = -1, and color component index cIdx as inputs, and the output is the modified predicted sample array predSamples:. - IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT or cIdx is not equal to 0 - refIdx is equal to 0 or cIdx is not equal to 0 - One of the following conditions is true: - predModeIntra is equal to INTRA_PLANAR - predModeIntra is equal to INTRA_DC - predModeIntra is equal to INTRA_ANGULAR18 - predModeIntra is equal to INTRA_ANGULAR50 - predModeIntra is less than or equal to INTRA_ANGULAR10 - predModeIntra is greater than or equal to INTRA_ANGULAR58 8.4.4.2.4 Reference sample filtration process The inputs to this process are: - a refIdx variable that specifies the intra-prediction reference line index, - an nTbW variable that specifies the width of the transformation block, - an nTbH variable that specifies the height of the transformation block, - a refW variable that specifies the width of the reference samples, - a variable refH that specifies the height of the reference samples, - the neighboring samples (unfiltered) refUnfilt[ x ][ y ], with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, - RefFilterFlag parameter The results of this process are the reference samples p[ x ][ y ], with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = -refIdx..refW -1, y = -1 - refIdx. The following applies to the derivation of the reference samples p[ x ][ y ]: - If RefFilterFlag is equal to 1, the filtered sample values ​​p[ x ][ y ] with x = -1, y = -1..refH -1 yx = 0..refW - 1, y = -1 are derived as follows: p[ -1 ][ -1 ] = ( refUnfilt[ -1 ][ 0 ] + 2 * refUnfilt[ -1 ][ -1 ] + refUnfilt[ 0 ][ -1 ] + 2 ) >> 2 (8-111) p[ -1 ][ y ] = ( refUnfilt[ -1 ][ y + 1 ] + 2 * refUnfilt[ -1 ][ y ] + refUnfilt[ -1 ][ y - 1 ] + 2 ) >> 2 for y = 0..refH - 2 (8-112) p[ -1 ][ refH - 1 ] = refUnfilt[ -1 ][ refH - 1 ] (8-113) p[ x ][ -1 ] = ( refUnfilt[ x - 1 ][ -1 ] + 2 * refUnfilt[ x ][ -1 ] + refUnfilt[ x + 1 ][ -1 ] + 2 ) >> 2 for x = 0..refW - 2 (8-114) p[ refW - 1 ][ -1 ] = refUnfilt[ refW - 1 ][ -1 ] (8-115) - Otherwise, the reference sample values ​​p[ x ][ y ] are set equal to the unfiltered sample values ​​refUnfilt[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx. 8.4.4.2.7 Specification of the intraPredAngle parameter and derivation of filter indicators The inputs to this process are: - the intra-prediction mode predModeIntra, - an nTbW variable that specifies the width of the transformation block, - an nTbH variable that specifies the height of the transformation block, - an nCbW variable that specifies the width of the encoding block, - an nCbH variable that specifies the height of the encoding block, - a cIdx color component index The results of this process are the modified intra-prediction mode predModeIntra, the intraPredAngle parameter, and the RefFilterFlag and InterpolationFlag variables. The variables nW and nH are derived as follows: - If IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT or cIdx is not equal to 0, the following applies: nW = nTbW nH = nTbH - Otherwise (IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT or cIdx is equal to 0), apply the following: nW = nCbW nH = nCbH The variable whRatio is set equal to Abs (Log2 (nW / nH) ) . For non-square blocks (nW is not equal to nH), the intra-prediction mode predModeIntra is modified as follows: - If all of the following conditions are true, predModeIntra is set equal to (predModeIntra + 65) . - nW is greater than nH - predModeIntra is greater than or equal to 2 - is predModeIntra less than (whRatio > 1) ? (8 + 2 * whRatio) : 8 - If all of the following conditions are true, predModeIntra is set equal to (predModeIntra - 67). - nH is greater than nW - predModeIntra is less than or equal to 66 - is predModeIntra greater than ( whRatio > 1 ) ? ( 60 - 2 * whRatio ) : 60 The intraPredAngle angle parameter is determined as specified in Table 7 using the predModeIntra value. The filterFlag variable is derived as follows: - If one or more of the following conditions are true, filterFlag is set to 0. - cIdx is not equal to 0 - refIdx is not equal to 0 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT and cIdx is equal to 0 and predModeIntra is greater than or equal to INTRA_ANGULAR34 and nW is greater than 8 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT and cIdx is equal to 0 and predModeIntra is less than INTRA_ANGULAR34 and nH is greater than 8. - Otherwise, if predModeIntra is INTRA_PLANAR, the filterFlag variable is set to nTbS >5?1:0 - Otherwise, if intraPredAngle is greater than 32, the filterFlag variable is set to 1 - Otherwise, the following applies: - The variable minDistVerHor is set equal to Min ( Abs ( predModeIntra - 50 ) , Abs ( predModeIntra - 18 ) ) . - The variable intraHorVerDistThres[nTbS] is specified in Table 8. - The filterFlag variable is derived as follows: - If minDistVerHor is greater than intraHorVerDistThres[nTbS] or Abs (intraPredAngle) >32, filterFlag is set equal to 1. Table 8 - Specification of intraHorVerDistThres[nTbS] for various nTbS transform block sizes The output variables RefFilterFlag and InterpolationFlag are derived as follows: - If predModeIntra is INTRA_PLANAR or predIntraAng is an integer multiple of 32, the variable RefFilterFlag is set equal to filterFlag, InterpolationFlag is set equal to 0, Otherwise, the RefFilterFlag variable is set to 0 and InterpolationFlag is set to filterFlag. Note: RefFilterFlag and InterpolationFlag should never both be equal to 1 for any predModeIntra (see Table 9). Table 9 - RefFilterFlag and InterpolationFlag Specification (informative) 8.4.4.2.8 Specification of the angular intra-prediction modes The inputs to this process are: - the intra-prediction mode predModeIntra, - the parameter' intraPredAngle, - a refIdx variable that specifies the intra-prediction reference line index, - an nTbW variable that specifies the width of the transformation block, - an nTbH variable that specifies the height of the transformation block, - a refW variable that specifies the width of the reference samples, - a variable refH that specifies the height of the reference samples, - an nCbW variable that specifies the width of the encoding block, - an nCbH variable that specifies the height of the encoding block, - an InterpolationFlag variable that specifies the use of 4-way filter interpolation, - a RefFilterFlag variable that specifies whether neighboring samples are filtered - the neighboring samples p[ x ][ y ], with x = -1- refIdx, y = -1- refIdx..refH - 1 and yx = -refIdx..refW - 1, y = -1- refIdx. The results of this process are the modified intra-prediction mode predModeIntra and the predicted samples predSamples [ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1. The variable nTbS is set equal to ( Log2 ( nTbW ) + Log2 ( nTbH ) ) >> 1 Fig. 18 illustrates the 93 prediction directions, where the discontinuous directions are associated with wide-angle modes that only apply to non-square blocks. The inverse angle parameter invAngle is derived as a function of intraPredAngle as follows: The interpolation filter coefficients fC[ phase ][ j ] and fG[ phase ][ j ] with phase = 0..31 and j = 0..3 are specified in Table 10. Table 10 - Specification of the interpolation filter coefficients fC and fG The sample values ​​of predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1, are derived as follows: - If predModeIntra is greater than or equal to 34, the following ordered steps are applied: 1. The reference sample matrix ref[ x ] is specified as follows: The following applies: ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ], with x = 0..nTbW + refIdx - If intraPredAngle is less than 0, the main reference sample matrix is ​​extended as follows: - When ( nTbH * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ], with x = -1.. (nTbH * intraPredAngle) >> 5 ref[ ( ( nTbH * intraPredAngle ) >> 5 ) - 1 ] = ref[ ( nTbH * intraPredAngle ) >> 5 ] ref[ nTbW + 1 + refIdx ] = ref[ nTbW + refIdx ] -Otherwise, ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ], with x = nTbW + 1 + refIdx..refW + refIdx ref[ -1 ] = ref[ 0 ] - The additional samples ref[ refW + refIdx +x ] with x = 1.. ( Max ( 1, nTbW / nTbH ) * refIdx + 1 ) are derived as follows: ref[ refW + refIdx + x ] = p[ -1 + refW ][ -1 - refIdx ] 2. The prediction sample values ​​predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1, are derived as follows: - The index variable iIdx and the multiplication factor iFact are derived as follows: iIdx = ( ( y + 1 + refIdx ) * intraPredAngle ) >> 5 + refIdx iFact = ( ( y + 1 + refIdx ) * intraPredAngle ) & 31 - If RefFilterFlag is equal to 0, the following applies: - The interpolation filter coefficients fT[ j ] with j = 0..3 are derived as follows: fT[ j ] = InterpolationFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] - The value of the prediction samples predSamples[ x ][ y ] is derived as follows: - Otherwise (RefFilterFlag is not equal to 0), depending on the value of iFact, the following applies: - If iFact is not equal to 0, the value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = ( ( 32 - iFact) * ref[ x + iIdx + 1 ] + iFact * ref[ x + iIdx + 2 ] + 16 ) >> 5 - Alternatively, the value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = ref[ x + iIdx + 1 ] - Otherwise (predModeIntra is less than 34), the following ordered steps are applied: 1. The reference sample matrix ref[ x ] is specified as follows: The following applies: ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ], with x = 0..nTbH + refIdx - If intraPredAngle is less than 0, the main reference sample matrix is ​​extended as follows: - When ( nTbH * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ][ -1 - refIdx ], with x = -1.. (nTbW * intraPredAngle) >> 5 ref[ ( ( nTbW * intraPredAngle ) >> 5 ) - 1 ] = ref[ ( nTbW * intraPredAngle ) >> 5 ] ref[ nTbG + 1 + refIdx ] = ref[ nTbH + refIdx ] - Otherwise, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ], with x = nTbH + 1 + refIdx..refH + refIdx ref[ -1 ] = ref[ 0 ] - The additional samples ref[ refH + refIdx +x ] with x = 1.. ( Max ( 1, nTbW / nTbH ) * refIdx + 1 ) are derived as follows: ref[ refH + refIdx +x ] = p[ -1 + refH ][ -1 - refIdx ] 2. The prediction sample values ​​predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1, are derived as follows: - The index variable iIdx and the multiplication factor iFact are derived as follows: iIdx = ( ( x + 1 + refIdx ) * intraPredAngle ) >> 5 iFact = ( ( x + 1 + refIdx ) * intraPredAngle ) & 31 - If RefFilterFlag is equal to 0, the following applies: - The interpolation filter coefficients fT[ j ] with j = 0..3 are derived as follows: fT[ j ] = InterpolationFlag? fG[ iFact ][ j ] : fC[ iFact ][ j ] - The value of the prediction samples predSamples[ x ][ y ] is derived as follows: - Otherwise (RefFilterFlag is not equal to 0), depending on the value of iFact, the following applies: - If iFact is not equal to 0, the value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ y + iIdx + 1 ] + iFact * ref[ y + iIdx + 2 ] + 16 ) >> 5 - The value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = ref[ y + iIdx + 1 ] Depending on the planned block size, the wide-angle modes can be divided into different groups. In the example below, these modes would still belong to group "B" or group "C" depending on whether they have a non-fractional slope. However, the selection of the interpolation filter for the group "C" modes and the presence of the reference sample filtering step for the group "B" modes would depend on the block size. The derivation portion of filterFlag can be modified as follows: The filterFlag variable is derived as follows: - If one or more of the following conditions are true, filterFlag is set to 0. - cIdx is not equal to 0 - refIdx is not equal to 0 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT and cIdx is equal to 0 and predModeIntra is greater than or equal to INTRA_ANGULAR34 and nW is greater than 8 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT and cIdx is equal to 0 and predModeIntra is less than INTRA_ANGULAR34 and nH is greater than 8. - Otherwise, if predModeIntra is INTRA_PLANAR, the filterFlag variable is set equal to nTbS >5?1:0 - Otherwise, if intraPredAngle is greater than 32 and nTbW * nTbH is greater than 32, the filterFlag variable is set equal to 1 - Otherwise, the following applies: - The variable minDistVerHor is set equal to Min ( Abs ( predModeIntra - 50 ) , Abs ( predModeIntra - 18 ) ) . - The variable intraHorVerDistThres[nTbS] is specified in Table 11. - The filterFlag variable is derived as follows: - If minDistVerHor is greater than intraHorVerDistThres[nTbS] or Abs (intraPredAngle) >32, filterFlag is set equal to 1. Table 11 - Specification of intraHorVerDistThres[nTbS] for various nTbS transform block sizes Wide-angle modes can be modes that indicate directions within the lower left quadrant or the right or upper right quadrant. Specifically, in the example illustrated in Fig. 18, the wide-angle modes are -14 to -1, as well as 67 to 80. Another version of a draft VVC specification that incorporates an exemplary implementation of an embodiment of this disclosure comprises the following reference sample filtering portion provided below: To generate the reference samples p[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = - refIdx..refW - 1, y = -1 - refIdx, the following ordered steps are applied: 1. The reference sample availability marking process is invoked, as specified in clause 8.4.4.2.2 of JVET-M1001-v7, with the sample location (xTbCmp, yTbCmp), the intra-prediction reference line index refldx, the reference sample width refW, the reference sample height refH, and the color component index cIdx as inputs and the reference samples refUnfilt[x][y] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = - refIdx..refW - 1, y = -1 - refIdx as output. 2. When at least one sample refUnfilt[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = -refIdx..refW - 1, y = -1 - refIdx is marked as "unavailable for intra-prediction", the reference sample replacement process is invoked, as specified in clause 8.4.4.2.3 of JVET-M1001-v7, with the intra-prediction reference line index refIdx, the reference sample width refW, the reference sample height refH, the reference samples refUnfilt[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = - refIdx..refW - 1, y = -1 - refIdx, and the component index of color cIdx as inputs and modified reference samples refUnfilt[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 yx = -refIdx..refW - 1, y = -1 - refIdx as output if predModeIntra is not equal to INTRA_PLANAR and predModeIntra is not equal to INTRA_DC, the intraPredAngle parameter is obtained by invoking the corresponding intra-prediction mode process specified in clause 8.4.4.2.7 below, otherwise, if predModeIntra is equal to INTRA_PLANAR, intraPredAngle is set to 32; Otherwise, intraPredAngle is set to 0. 3. The reference sample filtering process as specified in clause 8.4.4.2.4 below is invoked with intra-prediction reference line index refIdx, transform block width nTbW and height nTbH, reference sample width refW, reference sample height refH, unfiltered samples refUnfilt[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 yx = -refIdx..refW - 1, y = -1 - refIdx, the intraPredAngle parameter and the color component index cIdx as inputs, and the reference samples p[ x ][ y ] with x = -1 - refIdx, y = -1 - refIdx..refH - 1 yx = -refIdx..refW - 1, y = -1 - refIdx as output. The intra-sample prediction process according to predModeIntra is applied as follows: - If predModeIntra is equal to INTRA_PLANAR, the corresponding intra-prediction mode process specified in clause 8.4.4.2.5 of JVET-M1001-v7 is invoked with the transform block width nTbW, the transform block height nTbH, and the reference sample array p as inputs, and the output is the predicted sample array predSamples. - Conversely, if predModeIntra is equal to INTRA_DC, the corresponding intra-prediction mode process specified in clause 8.4.4.2.6 of JVET-M1001-v7 is invoked with the transform block width nTbW, the transform block height nTbH, and the reference sample array p as inputs, and the output is the predicted sample array predSamples. - Otherwise, if predModeIntra is equal to INTRA_LT_CCLM, INTRA_L_CCLM or INTRA_T_CCLM, the corresponding intra-prediction mode process specified in clause 8.4.4.2.8 is invoked with the intra-prediction mode predModeIntra, the sample location (xTbC, yTbC) set equal to (xTbCmp, yTbCmp), the transform block width nTbW and height nTbH, and the reference sample array p as inputs, and the output is the predicted sample array predSamples. - Otherwise, if one or more of the following conditions are true, fourTapFlag is set to 0: - the color component index cIdx is not equal to 0 - intraPredAngle is a multiple of 32. - Alternatively, the corresponding intra-prediction mode process specified in clause 8.4.4.2.7 below is invoked with the intra-prediction mode predModeIntra, the intra-prediction reference line index refIdx, the transform block width nTbW, the transform block height nTbH, the reference sample width refW, the reference sample height refH, the encoding block width nCbW and height nCbH, the fourTapFlag and the reference sample array p as inputs, and the modified intra-prediction mode predModeIntra and the predicted sample array predSamples as outputs. 8.4.4.2.4 Reference sample filtration process The inputs to this process are: - a refIdx variable that specifies the intra-prediction reference line index, - an nTbW variable that specifies the width of the transformation block, - an nTbH variable that specifies the height of the transformation block, - a refW variable that specifies the width of the reference samples, - a variable refH that specifies the height of the reference samples, - the neighboring samples (unfiltered) refUnfilt[ x ][ y ], with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, - parameter predIntraAngle - a cIdx variable that specifies the color component of the current block. The results of this process are the reference samples p[ x ][ y ], with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and yx = -refIdx..refW - 1, y = -1 - refIdx. The filterFlag variable is derived as follows: - If all of the following conditions are true, filterFlag is set to 1: - refIdx is equal to 0 - nTbW * nTbH is greater than 32 - cIdx is equal to 0 - IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT - predIntraAngle is not equal to 0 and is a multiple of 32 Otherwise, filterFlag is set to 0. The following applies to the derivation of the reference samples p[ x ][ y ]: - If filterFlag equals 1, the filtered sample values ​​p[ x ][ y ] with x = -1, y = -1..refH - 1 and x = 0..refW - 1, y = -1 are derived as follows: p[ -1 ][ -1 ] = ( refUnfilt[ -1 ][ 0 ] + 2 * refUnfilt[ -1 ][ -1 ] + refUnfilt[ 0 ][ -1 ] + 2 ) >> 2 (8-111) p[ -1 ][ y ] = ( refUnfilt[ -1 ][ y + 1 ] + 2 * refUnfilt[ -1 ][ y ] + refUnfilt[ -1 ][ y - 1 ] + 2) >> 2 for y = 0..refH - 2 (8-112) p[ -1 ][ refH - 1 ] = refUnfilt[ -1 ][ refH - 1 ] (8-113) p[ x ][ -1 ] = ( refUnfilt[ x - 1 ][ -1 ] + 2 * refUnfilt [ x ][ -1 ] + refUnfilt [ x + 1 ][ -1 ] + 2 ) >> 2 for x = 0..refW - 2 (8-114) p[ refW - 1 ][ -1 ] = refUnfilt[ refW - 1 ][ -1 ] (8-115) - Otherwise, the reference sample values ​​p[ x ][ y ] are set equal to the unfiltered sample values ​​rrefUnfilt[ x ][ y ] with x = -1- refIdx, y = -1- refIdx..refH - 1 and x = -refIdx..refW - 1, y = - 1- refIdx. 8.4.4.2.7 Specification of the intraPredAngle parameter The inputs to this process are: - the intra-prediction mode predModeIntra, - an nTbW variable that specifies the width of the transformation block, - an nTbH variable that specifies the height of the transformation block, - an nCbW variable that specifies the width of the encoding block, - an nCbH variable that specifies the height of the encoding block, The results of this process are the modified intra-prediction mode predModeIntra, the intraPredAngle parameter, and the filterFlag variable. The variables nW and nH are derived as follows: - If IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT or cIdx is not equal to 0, the following applies: nW = nTbW (8-125) nH = nTbH (8-126) - Otherwise (IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT or cIdx is equal to 0), the following applies: nW = nCbW (8-127) nH = nCbH (8-128) The variable whRatio is set equal to Abs(Log2(nW / nH)). For non-square blocks (nW is not equal to nH), the intra-prediction mode predModeIntra is modified as follows: - If all of the following conditions are true, predModeIntra is set equal to ( predModeIntra + 65 ) . - nW is greater than nH - predModeIntra is greater than or equal to 2 - is predModeIntra less than ( whRatio > 1 ) ? ( 8 + 2 * whRatio ) : 8 - If all of the following conditions are true, predModeIntra is set equal to ( predModeIntra + 67 ) . - nH is greater than nW - predModeIntra is less than or equal to 66 - is predModeIntra greater than ( whRatio > 1 ) ? ( 60 - 2 * whRatio ) : 60 The intraPredAngle angle parameter is determined as specified in Table 12 using the predModeIntra value. The filterFlag variable is derived as follows: - If one or more of the following conditions are true, filterFlag is set to 0. - refIdx is not equal to 0 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT and cIdx is equal to 0 and predModeIntra is greater than or equal to INTRA_ANGULAR34 and nW is greater than 8 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT and cIdx is equal to 0 and predModeIntra is less than INTRA_ANGULAR34 and nH is greater than 8 - Otherwise, the following applies: - The variable minDistVerHor is set equal to Min ( Abs ( predModeIntra - 50 ) , Abs ( predModeIntra - 18 ) ) . - The variable intraHorVerDistThres[nTbS] is specified in Table 11. - The filterFlag variable is derived as follows: - If minDistVerHor is greater than intraHorVerDistThres[nTbS] or Abs (intraPredAngle) >32, filterFlag is set equal to 1. 8.4.4.2.8 Specification of the angular intra-prediction modes The inputs to this process are: - the intra-prediction mode predModeIntra, - the intraPredAngle parameter, - a refIdx variable that specifies the intra-prediction reference line index, - an nTbW variable that specifies the width of the transformation block, - an nTbH variable that specifies the height of the transformation block, - a refW variable that specifies the width of the reference samples, - a variable refH that specifies the height of the reference samples, - an nCbW variable that specifies the width of the encoding block, - an nCbH variable that specifies the height of the encoding block, - a fourTapFlag variable that specifies the use of 4-way filter interpolation, - a variable filterFlag - the neighboring samples p[ x ][ y ], with x = -1- refIdx, y = -1- refIdx..refH - 1 and yx = -refIdx..refW - 1, y = -1- refIdx. The results of this process are the modified intra-prediction mode predModeIntra and the predicted samples predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1. The variable nTbS is set equal to ( Log2 ( nTbW ) + Log2 ( nTbH ) ) >> 1. The filterFlag variable is derived as follows: - If one or more of the following conditions are true, filterFlag is set to 0. - refIdx is not equal to 0 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT and cIdx is equal to 0 and predModeIntra is greater than or equal to INTRA_ANGULAR34 and nW is greater than 8 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT and cIdx is equal to 0 and predModeIntra is less than INTRA_ANGULAR34 and nH is greater than 8. - Otherwise, the following applies: - The variable minDistVerHor is set equal to Min ( Abs ( predModeIntra - 50 ) , Abs ( predModeIntra - 18 ) ) . - The variable intraHorVerDistThres[nTbS] is specified in Table 13. - The filterFlag variable is derived as follows: - If minDistVerHor is greater than intraHorVerDistThres[nTbS] or Abs (intraPredAngle) is greater than 32, filterFlag is set equal to 1. - Otherwise, filterFlag is set to 0. Table 13 - Specification of intraHorVerDistThres[nTbS] for various nTbS transform block sizes Fig. 18 illustrates the 93 prediction directions, where the discontinuous directions are associated with wide-angle modes that only apply to non-square blocks. The inverse angle parameter invAngle is derived as a function of intraPredAngle as follows: The interpolation filter coefficients fC[ phase ][ j ] and fG[ phase ][ j ] with phase = 0..31 and j = 0..3 are specified in Table 14. Table 14 - Specification of the interpolation filter coefficients fC and fG. The prediction sample values ​​predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1, are derived as follows: - If predModeIntra is greater than or equal to 34, the following ordered steps are applied: 1. The reference sample matrix ref[ x ] is specified as follows: The following applies: ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ], with x = 0..nTbW + refIdx (8-130) - If intraPredAngle is less than 0, the main reference sample matrix is ​​extended as follows: - When ( nTbH * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ], with x = -1.. ( nTbH * intraPredAngle ) >> 5 (8-131) ref[ ( ( nTbH * intraPredAngle ) >> 5 ) - 1 ] = ref[ ( nTbH * intraPredAngle ) >> 5 ] (8-132) ref[ nTbW + 1 + refIdx ] = ref[ nTbW + refIdx ] (8-133) - Otherwise, ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ], with x = nTbW + 1 + refIdx..refW + refIdx (8-134) ref[ -1 ] = ref[ 0 ] (8-135) - The additional samples ref[ refW + refIdx +x ] with x = 1.. ( Max ( 1, nTbW / nTbH ) * refIdx + 1) are derived as follows: ref[ refW + refIdx + x ] = p[ -1 + refW ][ -1 - refIdx ] (8-136) 2. The prediction sample values ​​predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1 are derived as follows: - The index variable iIdx and the multiplication factor iFact are derived as follows: iIdx = ( ( y + 1 + refIdx ) * intraPredAngle ) >> 5 + refIdx (8-137) iFact = ( ( y + 1 + refIdx ) * intraPredAngle ) & 31 (8-138) If fourTapFlag is equal to 1, the following applies: - The interpolation filter coefficients fT[ j ] with j = 0..3 are derived as follows: fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] (8-139) - The value of the prediction samples predSamples[ x ][ y ] is derived as follows: Otherwise (fourTapFlag is not equal to 1), depending on the value of iFact, the following applies: - If iFact is not equal to 0, the value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = ( ( 32 - iFact ) * ref[ x + iIdx + 1 ] + iFact * ref[ x + iIdx + 2 ] + 16 ) >> 5 (8-141) - The value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = ref[ x + iIdx + 1 ] (8-142) - Otherwise (predModeIntra is less than 34) , the following ordered steps are applied: 1. The reference sample matrix ref[ x ] is specified as follows: The following applies: ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ], with x = 0..nTbH + refIdx (8-143) - If intraPredAngle is less than 0, the main reference sample matrix is ​​extended as follows: - When ( nTbH * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ][ -1 - refIdx ], with x = -1.. ( nTbW * intraPredAngle ) >> 5 (8-144) ref[ ( ( nTbW * intraPredAngle ) >> 5 ) - 1 ] = ref[ ( nTbW * intraPredAngle ) >> 5 ] (8-145) ref[ nTbG + 1 + refIdx ] = ref[ nTbH + refIdx ] (8-146) - Otherwise, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ], with x = nTbH + 1 + refIdx..refH + refIdx (8-147) ref[ -1 ] = ref[ 0 ] (8-148) - The additional samples ref[ refH + refIdx +x ] with x = 1.. ( Max ( 1, nTbW / nTbH ) * refIdx + 1) are derived as follows: ref[ refH + refIdx +x ] = p[ -1 + refH ][ -1 - refIdx ] (8-149) 2. The prediction sample values ​​predSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH - 1 are derived as follows: - The index variable iIdx and the multiplication factor iFact are derived as follows: iIdx = ( ( x + 1 + refIdx ) * intraPredAngle ) >> 5 (8-150) iFact = ( ( x + 1 + refIdx ) * intraPredAngle ) & 31 (8-151) - If fourTapFlag equals 1, the following applies: - The interpolation filter coefficients fT[ j ] with j = 0..3 are derived as follows: fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] (8-152) - The value of the prediction samples predSamples[ x ][ y ] is derived as follows: - Otherwise (fourTapFlag is not equal to 1), depending on the value of iFact, the following applies: - If iFact is not equal to 0, the value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ] [ y ] = ( ( 32 - iFact ) * ref[ y + iIdx + 1 ] + iFact * ref[ y + iIdx + 2 ] + 16 ) >> 5 (8-154) - Alternatively, the value of the prediction samples predSamples[ x ][ y ] is derived as follows: predSamples[ x ][ y ] = ref [ y + iIdx + 1 ] Figure 19 is a schematic diagram of a network connection device 1300 (e.g., encoding device) according to an embodiment of the disclosure. The network connection device 1300 is suitable for implementing the disclosed embodiments as described herein. The network connection device 1300 comprises input ports 1310 and receive (Rx) units 1320 for receiving data; a processor, logic unit, or central processing unit (CPU) 1330 for processing the data; transmit (Tx) units 1340 and output ports 1350 for transmitting the data; and a memory 1360 for storing the data. The 1300 network device may also comprise optical-to-electrical (OE) components and electrical-to-optical (EO) components coupled to the 1310 input ports, the 1320 receiving units, the 1340 transmitting units, and the 1350 output ports for the output or input of optical or electrical signals. The 1330 processor is implemented in both hardware and software. It can be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), and digital signal processors (DSPs). The 1330 processor communicates with input ports (1310), receive units (1320), transmit units (1340), output ports (1350), and memory (1360). The 1330 processor includes an encoding module (1370). The encoding module (1370) implements the implementations described above. For example, the encoding module (1370) implements, processes, prepares, or provides various networking functions.The inclusion of the 1370 encoding module therefore provides a substantial improvement to the functionality of the 1300 network connection device and transforms the 1300 network connection device into a different state. Alternatively, the 1370 encoding module is implemented as instructions stored in memory 1360 and executed by the 1330 processor. The 1360 memory comprises one or more disks, tape drives, and / or solid-state drives and can be used as an overflow data storage device to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution. The 1360 memory can be volatile and / or non-volatile and can be read-only memory (ROM), random-access memory (RAM), ternary content addressable memory (TCAM), and / or static random-access memory (SRAM). An encoder comprising processing circuitry is provided to carry out any of the above methods. In this disclosure, a computer program product is provided; the computer product comprising program code is disclosed to perform any one of the above methods. In this disclosure, a decoder for decoding video data is provided, the decoder comprising one or more processors; and a computer-readable, non-transient storage medium coupled to the processors and storing the programming for execution by the processors, wherein the programming, when executed by the processors, configures the decoder to carry out any one of the above methods. A network connection device suitable for implementing the disclosed embodiments as described herein is described below. The network connection device comprises input ports and receiving (Rx) units for receiving data; a processor, logic unit, or central processing unit (CPU) for processing the data; transmitting (Tx) units and output ports for transmitting the data; and a memory for storing the data. The network connection device may also comprise optical-to-electrical (OE) and electrical-to-optical (EO) components coupled to the input ports, receiving units, transmitting units, and output ports for the output or input of optical or electrical signals. The processor is implemented using both hardware and software. It can be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field-programmable arrays (FPGAs), application-specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor communicates with input ports, receive units, a transmit unit, output ports, and memory. The processor includes an encoding module. This module implements the disclosed embodiments described above. For example, the encoding module implements, processes, prepares, or provides various networking functions. The inclusion of the encoding module thus substantially enhances the functionality of the networking device and transforms it into a different state.Alternatively, the encoding module is implemented as instructions stored in memory and executed by the processor. Memory comprises one or more disks, tape drives, and / or solid-state drives and can be used as an overflow data storage device to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution. Memory can be volatile and / or non-volatile and can be read-only memory (ROM), random-access memory (RAM), ternary content-addressable memory (TCAM), and / or static random-access memory (SRAM). Figure 20 is a block diagram of a device 1500 that can be used to implement various embodiments. The device 1500 can be the source device 12, as shown in Figure 1; the video encoder 20, as shown in Figure 2; the destination device 14, as shown in Figure 1; or the video decoder 30, as shown in Figure 3. Furthermore, the device 1500 can house one or more of the described elements. In some embodiments, the device 1500 is equipped with one or more input / output devices, such as a speaker, microphone, mouse, touchscreen, keyboard, numeric keypad, printer, display, and the like. The 1500 device may include one or more central processing units (CPUs) 1510, memory 1520, mass storage 1530, a video adapter 1540, and an I / O interface 1560 connected to a bus.The bus is one or more of any type of various bus architectures, including a memory bus or memory controller, a peripheral bus, a video bus, or similar. The CPU 1510 may comprise any type of electronic data processor. The memory 1520 may have, or be, any type of system memory, such as static random-access memory (SRAM), dynamic random-access memory (DRAM), synchronous DRAM (SDRAM), read-only memory (ROM), or a combination thereof. In one embodiment, the memory 1520 may include ROM for use during booting and DRAM for storing programs and data for use while programs are running. In some embodiments, the memory 1520 is non-transient. The mass storage 1530 may comprise any type of storage device configured to store data, programs, and other information and to make such data, programs, and other information accessible via the bus.Mass storage 1530 includes, for example, one or more of a solid-state drive, a hard disk drive, a magnetic disk drive, an optical disk drive, or similar. The 1540 video adapter and the 1560 I / O interface provide interfaces for connecting external input and output devices to the 1500 appliance. For example, the 1100 appliance can provide an SQL command interface to clients. As illustrated, examples of input and output devices include a 1590 display connected to the 1540 video adapter and a 1570 mouse / keyboard / printer connected to the 1560 I / O interface. Other devices can be connected to the 1500 appliance, and a few additional interface cards can be used. For example, a serial interface card (not shown) can be used to provide a serial interface for a printer. The 1100 device also includes one or more 1550 network connection interfaces, which include wired links, such as an Ethernet cable or similar, and / or wireless links to access nodes or one or more 1580 network connections. The 1550 network connection interfaces allow the 1500 device to communicate with remote units via the 1580 network connections. For example, the 1550 network connection interface can provide communication to the database. In one embodiment, the 1500 device connects to a local area network or a wide area network connection for data processing and communication with remote devices, such as other processing units, the Internet, remote storage facilities, or similar. A piecewise linear approach is introduced to calculate the weighting coefficient values ​​needed to predict pixels within a given block. This approach significantly reduces the computational complexity of the distance-weighted prediction mechanism compared to simply calculating the weighting coefficient. Furthermore, it helps achieve greater accuracy in the weighting coefficient values ​​compared to the simplifications of the previous technique. The realizations can be applied to other bidirectional and position-dependent intra-prediction techniques (e.g., different modifications of PDPC), as well as to mechanisms that use weighting coefficients that depend on the distance from one pixel to another to combine different parts of an image (e.g., some combination methods in image processing). Although several embodiments have been provided in this disclosure, it should be understood that the disclosed systems and methods could be implemented in many other specific ways without departing from the scope of this disclosure. The examples provided are to be considered illustrative and not restrictive, and the intention is not to limit the details given herein. For example, the various elements or components may be combined or integrated into another system, or certain features may be omitted or not implemented. Furthermore, the techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or independent can be combined or integrated with other systems, modules, techniques, or methods. Other elements shown or analyzed as coupled or directly coupled or communicating with each other can be coupled indirectly or communicate through some interface, device, or intermediate component, whether electrical, mechanical, or otherwise. Further examples of changes, substitutions, and modifications are obvious to someone skilled in the art and could be implemented. The implementations of the subject matter and operations described in this disclosure may be implemented in digital electronic circuits or in computer software, firmware, or hardware, including the structures disclosed in this disclosure and their structural equivalents, or in combinations thereof. The implementations of the subject matter described in this disclosure may be implemented as one or more computer programs, that is, one or more instruction modules of computer programs encoded on a computer storage medium for execution by or to control the operation of a data processing apparatus.Alternatively or in addition, program instructions may be encoded in an artificially generated propagated signal, for example, an electromagnetic, optical, or electrical signal generated by a machine to encode information for transmission to a suitable receiving device for execution by a data processing device. A computer storage medium, for example, a machine-readable medium, may be or be contained within a machine-readable storage device, a machine-readable storage substrate, an array or serial-access memory device, or a combination thereof. Furthermore, while a computer storage medium is not a propagated signal itself, it may be the source or destination of computer program instructions encoded in an artificially generated propagated signal.The computer storage medium may also be, or be included in, one or more separate physical and / or non-transient components or media (e.g., multiple CDs, disks, or other storage devices). In some implementations, the operations described in this disclosure may be implemented as a hosted service provided on a server within a cloud computing network. For example, computer-readable storage media may be logically pooled and accessible within a cloud computing network. Servers within the cloud computing network may include a cloud computing platform to provide cloud-based services. The terms "cloud," "cloud programming," and "cloud-based" may be used interchangeably as appropriate without departing from the scope of this disclosure. Cloud-based services may be hosted services provided by servers and distributed across a cloud computing network to a client platform to enhance, complement, or replace applications running locally on a client computer.The circuit can use cloud-based services to quickly receive updates to software, applications, and other resources that would otherwise require a long period of time before the resources can be delivered to the circuit. A computer program (also known as a program, software, software application, sequence, or code) can be written in any programming language, including compiled or interpreted languages, declarative or procedural languages, and can be implemented in any form, including as a program that runs as a standalone program or as a module, component, subroutine, object, or any other unit suitable for use in the computing environment. A computer program may, but does not need to, correspond to a file in a file system. A program can be stored in a portion of a file that contains other programs or data (for example, one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (for example, files that store one or more modules, subprograms, or code snippets).A computer program can be implemented to run on one computer or on multiple computers located at one site or distributed across several sites and interconnected by a communication network. The processes and logic flows described in this disclosure can be implemented using one or more programmable processors running one or more computer programs to perform actions on input data and generate output. The processes and logic flows can also be implemented using a special-purpose logic circuit, such as an FPGA (field-programmable array) or an ASIC (application-specific integrated circuit). The processors suitable for running a computer program include, for example, both general-purpose and special-purpose microprocessors, and any one or more of the processors found in any type of digital computer. Generally speaking, a processor receives instructions and data from read-only memory, random-access memory, or both. The components of a computer may include a processor to perform actions according to instructions and one or more memory devices to store the instructions and data. Typically, a computer will also include, or be operatively coupled to receive data from, transfer data to, or both, one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks. However, a computer does not necessarily need to have such devices.Furthermore, a computer can be integrated into another device, such as a mobile phone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a USB flash drive), to name just a few. Suitable devices for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, but not limited to, semiconductor memory devices (e.g., EPROM, EEPROM, and flash memory devices), magnetic disks (e.g., internal or removable hard drives), magneto-optical disks, and CD-ROM and DVD-ROM discs. The processor and memory can be complemented or incorporated into special-purpose logic circuits. While this disclosure contains many specific implementation details, these should not be interpreted as limitations on the scope of any implementation or claims made against it, but rather as descriptions of features specific to particular implementations. Some features described in this disclosure in the context of separate implementations may also be implemented in combination in a single implementation. Conversely, various features described in the context of a single implementation may also be implemented in multiple separate implementations or in any suitable subcombination. Similarly, although the operations are illustrated in the figures in a particular order, it should not be understood that these operations must be carried out in the specific order illustrated or sequentially, or that it is necessary to perform all the illustrated operations to obtain the desired results. In certain circumstances, the simultaneous execution of multiple tasks and parallel processing can be beneficial. Furthermore, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations. It should be understood that program components and systems can generally be integrated into a single software product or packaged into multiple software products. Therefore, the specific implementations of the subject matter have been described.Other implementations are covered by the following claims. In some cases, the actions described in the claims can be performed in a different order and still achieve the desired results. Furthermore, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or the sequential order, to achieve the desired results. In certain implementations, simultaneous multitasking and parallel processing may be beneficial. While several embodiments have been provided in this disclosure, it should be understood that the disclosed systems and methods could be implemented in many other specific ways without departing from the scope of this disclosure. The examples provided are to be considered illustrative and not restrictive, and the intention is not to limit the details given herein. For example, the various elements or components may be combined or integrated into another system, or certain features may be omitted or not implemented. Furthermore, the techniques, systems, subsystems, and methods described and illustrated in the various modalities as discrete or independent may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of this disclosure. Other elements shown or discussed as coupled or directly coupled or communicating with each other may be coupled indirectly or communicate through some interface, device, or intermediate component, whether electrical, mechanical, or otherwise. A person skilled in the art may determine other examples of changes, substitutions, and alterations, and these could be made without departing from the scope described herein. Definitions of acronyms and glossary JEM Joint Exploration Model (the software codebase for future video encoding exploration) JVET Joint Video Expert Team LUT Lookup Table QT Quadruple Tree QTBT Quaternary tree plus binary tree RDO Rate distortion optimization ROM Read-only memory VTM VVC Test Model VVC Versatile Video Coding, the standardization project developed by JVET. CTU / CTB Coding Tree Unit / Coding Tree Block CU / CB Encoding Unit / Encoding Block PU / PB Prediction Unit / Prediction Block TU / TB Transformation Unit / Transformation Block HEVC High Efficiency Video Coding

Claims

1. A method for intra-prediction of a current block in video encoding or decoding, wherein the method comprises: performing intra-prediction processing of the current block according to a directional intra-prediction mode, comprising reference sample filtering or subpixel interpolation filtering applied to reference samples in one or more reference blocks, wherein the directional intra-prediction mode is an angular mode of a plurality of intra-prediction modes and the plurality of intra-prediction modes comprises: a planar mode with index 0, a direct current (DC) mode with index 1, and angular modes with indices from 2 to 66, wherein the directional intra-prediction mode is classified into one of the following groups: A. vertical or horizontal modes, B. diagonal modes, C.remaining directional modes; if the directional intra-prediction mode is classified as belonging to group B, a reference sample filter is applied to the reference samples, wherein the reference sample filter is a 3-way filter, [1, 2, 1]; if the directional intra-prediction mode is classified as belonging to group C, an intra-reference sample interpolation filter is applied to the reference samples, wherein the intra-reference sample interpolation filter is a Gaussian filter or a cubic filter.

2. The method according to claim 1, wherein, if the directional intra-prediction mode is classified as belonging to group A, neither the reference sample filter nor the intra-reference sample interpolation filter is applied to the reference samples. 3.The method according to claim 1 or 2, wherein, if the directional intra-prediction mode is classified as belonging to group B, the reference sample filter is applied to the reference samples to copy the filtered values ​​into an intra-predictor according to the directional intra-prediction mode; and if the directional intra-prediction mode is classified as belonging to group C, the intra-reference sample interpolation filter is applied to the reference samples to generate a predicted sample that falls at a fractional or integer position between the reference samples according to the directional intra-prediction mode.

4. A coding apparatus (20), wherein the apparatus comprises processing circuits configured to carry out the method according to any one of claims 1 to 3. 5.A coding apparatus (30), wherein the apparatus comprises processing circuits configured to carry out the method according to any one of claims 1 to 3.

6. A computer program product comprising program code for carrying out the method according to any one of claims 1 to 3 when executed on a computer or processor.