Method and apparatus for prediction

JP7651819B2Active Publication Date: 2025-03-27HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2021514316
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-03-23
Filing Date
2019-09-13
Publication Date
2025-03-27
Estimated Expiration
2039-09-13

Smart Images

  • Figure 0007651819000028
    Figure 0007651819000028
  • Figure 0007651819000029
    Figure 0007651819000029
  • Figure 0007651819000030
    Figure 0007651819000030
Patent Text Reader

Abstract

The present disclosure provides a method and device for intra prediction of a current block in video encoding or decoding, the method including: performing intra prediction processing of the current block according to a directional intra prediction mode, the directional intra prediction mode including reference sample filtering or sub-pixel interpolation filtering applied to reference samples in one or more reference blocks, the directional intra prediction mode being 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, and (C) remaining directional modes, wherein if the directional intra prediction mode is classified as belonging to group B, the reference sample filter is applied to the reference sample, 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 sample.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to the technical field of image and / or video coding and decoding, and in particular to methods and apparatus for intra / inter prediction. [Background technology]

[0002] Video coding (video encoding and decoding) is used in a wide range of digital video applications, such as broadcast digital TV, video transmission over the Internet and mobile networks, real-time conversation applications like video chat, video conferencing, DVDs and Blu-ray Discs, video content acquisition and editing systems, and camcorders in security applications. The amount of video data required to depict even a relatively short video can be substantial, which can create difficulties when the data is streamed or otherwise communicated over a communications network that has limited bandwidth capacity. Thus, video data is typically compressed before being communicated over modern telecommunications networks. The size of the video can also be an issue when the video is stored on a storage device due to which memory resources may be limited. Video compression devices often use software and / or hardware at the source to code the video data before transmission or storage, thereby reducing the amount of data required to represent a digital video image. The compressed data is then received at the destination by a video decompression device that decodes the video data. With limited network resources and an ever-increasing demand for higher video quality, improved compression and decompression techniques that improve compression ratios with little sacrifice in image quality are desired.

[0003] Digital video has been widely used since the introduction of DVD discs. Before transmission, the video is encoded and transmitted over a transmission medium. The viewer receives the video and decodes and displays the video using a viewing device. Over the years, the quality of the video has improved, for example due to higher resolution, color depth, and frame rate. This has led to larger data streams that are commonly transferred over the Internet and mobile communication networks today.

[0004] However, higher resolution video typically contains more information and therefore requires more bandwidth. To reduce the bandwidth requirements, video coding standards have been introduced that involve compression of the video. When the video is encoded, the 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 try to find a balance between bandwidth requirements and quality.

[0005] High Efficiency Video Coding (HEVC) is an example of a video coding standard commonly known to those skilled in the art. HEVC splits coding units (CUs) into prediction units (PUs) or transform units (TUs). The Generic Video Coding (VVC) next generation standard is the latest joint video project between the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Moving Picture Experts Group (MPEG) standardization 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. VVC aims to remove the concept of multiple partition types, i.e., the distinction between CUs, PUs, and TUs, except as required for CUs with sizes that are too long for the maximum transform length, and supports more flexibility for CU partition shapes.

[0006] The processing of these coding units (CUs), also called blocks, depends on their size, spatial location, and coding mode specified by the encoder. According to the type of prediction, coding modes can be classified into two groups: intra-prediction and inter-prediction modes. Intra-prediction modes use samples of the same picture (also called frame or image) to generate reference samples and calculate predicted values ​​of the samples of the block to be reconstructed. Intra-prediction is also called spatial prediction. Inter-prediction modes are designed for temporal prediction and use reference samples of the previous or next picture to predict the samples of the block of the current picture.

[0007] 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 techniques (including current and near-term extensions for screen content coding and high dynamic range coding) with compression capabilities significantly beyond those of the current HEVC standard. The groups are working together in this exploration activity in a collaborative effort known as the Joint Video Exploration Team (JVET) to evaluate compression technology designs proposed by experts in the field.

[0008] The Versatile Test Model (VTM) standard uses 35 intra-modes, while the Benchmark Set (BMS) uses 67 intra-modes. The intra mode coding scheme currently described in BMS is considered complex, and a drawback of the unselected mode set is that the index list is always constant and is not adaptive based on the current block characteristics (e.g., the INTRA modes of its neighboring blocks). Summary of the Invention

[0009] Embodiments of the present application provide devices and methods for encoding and decoding according to the independent claims. These and other objects are achieved by the subject matter of the independent claims. Further implementation forms are evident from the dependent claims, the description and the drawings.

[0010] According to a first aspect, the present invention relates to a method for intra prediction of a current block in video encoding or decoding, the method comprising the steps of performing an intra prediction process of the current block according to a directional intra prediction mode, comprising reference sample filtering or sub-pixel interpolation filtering applied to reference samples in one or more reference blocks, the directional intra prediction mode being 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, wherein if the directional intra prediction mode is classified as belonging to group B, a reference sample filter is applied to the reference sample, and if the directional intra prediction mode is classified as belonging to group C, an intra reference sample interpolation filter is applied to the reference sample.

[0011] In an embodiment, if the directional intra-prediction mode is classified as belonging to group A, no filter is applied to the reference samples to generate the intra predictor. In an embodiment, if the directional intra prediction mode is classified as belonging to group B, a reference sample filter is applied to the reference sample to copy filtered values ​​to the intra predictor in accordance with the directional intra prediction mode, and if the directional intra prediction mode is classified as belonging to group C, an intra reference sample interpolation filter is applied to the reference sample to generate a predicted sample that falls at a fractional or integer position between the reference samples in accordance with the directional intra prediction mode.

[0012] In an embodiment, the reference sample filter or intra prediction process is a 3-tap filter, for example, the reference sample filter for the intra prediction process is a [1,2,1] 3-tap filter.

[0013] In an embodiment, the interpolation filter for the intra prediction process for a given sub-pixel offset is selected from a set of filters, one of which is the same as the filter for the inter prediction process.

[0014] In an embodiment, the interpolation filter has a length of 4 taps and a coefficient precision of 6 bits. In an embodiment, group B further includes a wide-angle integer gradient mode.

[0015] For example, a wide-angle integer gradient mode is a directional intra-prediction mode other than horizontal, vertical, and diagonal, and the reference sample position of each predicted sample of the current block is non-fractional.

[0016] In an embodiment, group B further includes intra-prediction modes whose intra-prediction angle parameter has a value that is a non-zero multiple of 32. In an embodiment, group B includes one or all of the following intra prediction modes: [-14, -12, -10, -6, 2, 34, 66, 72, 76, 78, 80].

[0017] According to a second aspect, the present invention relates to an apparatus for intra prediction of a current block in video encoding or decoding, the apparatus comprising a processing circuit configured to perform an intra prediction process of the current block according to a directional intra prediction mode, comprising reference sample filtering or sub-pixel interpolation filtering applied to reference samples in one or more reference blocks, the directional intra prediction mode being 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, wherein if the directional intra prediction mode is classified as belonging to group B, a reference sample filter is applied to the reference sample, and if the directional intra prediction mode is classified as belonging to group C, an intra reference sample interpolation filter is applied to the reference sample.

[0018] Further features and implementation forms of the device according to the second aspect of the invention correspond to those of the device according to the first aspect of the invention.

[0019] According to a third aspect, the invention relates to a computer program product comprising program code for performing any one of the above methods when the program code is executed on a computer or processor.

[0020] The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims. [Brief description of the drawings]

[0021] The following embodiments are explained in more detail with reference to the accompanying figures and drawings. [Figure 1] FIG. 1 is a block diagram illustrating an example of a video coding system configured to implement embodiments of the present invention. [Diagram 2] FIG. 2 is a block diagram illustrating an example of a video encoder configured to implement embodiments of the present invention. [Diagram 3] FIG. 2 is a block diagram illustrating an exemplary structure of a video decoder configured to implement an embodiment of the present invention. [Figure 4] 1 shows a schematic diagram illustrating the 67 intra prediction modes. [Diagram 5] 1 shows a first example of the use of different interpolation filters in intra and inter prediction. [Figure 6] 13 illustrates a second example of the use of different interpolation filters in intra and inter prediction. [Figure 7] 13 illustrates a third example of the use of different interpolation filters in intra and inter prediction. [Figure 8] 1 illustrates the use of a common interpolation filter used for intra and inter predicted samples. [Figure 9]1 illustrates an embodiment that uses a filtering module for predicting chrominance samples in motion compensation, and predicting luma and chrominance samples when performing intra prediction. [Figure 10] 13 illustrates an embodiment in which a hardware filtering module loads coefficients stored in a ROM. [Figure 11] 1 shows a schematic diagram of multiple intra-prediction modes. [Figure 12] 13 shows an example of interpolation filter selection for less than and more than the diagonal modes for non-square blocks. [Figure 13] We present quadtree plus binary tree (QTBT) block partitioning. [Figure 14] Indicates the horizontal and vertical orientation of the block. [Figure 15] 13 illustrates a schematic diagram of an interpolation filter selection for a non-square block; [Figure 16] 1 illustrates an embodiment of a reference sample interpolation filter selection for non-square blocks. [Figure 17] 1 illustrates an alternative embodiment for reference sample interpolation filter selection for non-square blocks. [Figure 18] 1 shows a schematic diagram illustrating 93 intra prediction directions. [Figure 19] 1 shows a block diagram of an apparatus according to an embodiment. [Figure 20] 4 shows a block diagram of an apparatus according to another embodiment. [Figure 21] 1 indicates a block that is predicted using an intra prediction mode. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0022] In the following description, reference is made to the accompanying drawings which form a part of this disclosure and which show by way of illustration specific aspects in which the present invention may be practiced. It is understood that the embodiments of the present invention may be used in other ways and may include structural or logical changes not shown in the drawings. Therefore, the following detailed description is not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.

[0023] For example, it will be understood that disclosure relating to an described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, when one or more particular method steps are described, a corresponding device may include one or more units, e.g., functional units (e.g., one unit performing one or more steps, or multiple units each performing one or more of the multiple steps), to perform the described one or more method steps, even if such one or more units are not explicitly described or illustrated in a figure. On the other hand, when a particular apparatus is described, e.g., based on one or more units, e.g., functional units, a corresponding method may include a step to perform the function of the one or more units (e.g., one step to perform the function of one or more units, or multiple steps each performing the function of one or more of the multiple units), even if such one or more steps are not explicitly described or illustrated in a figure. Furthermore, it is understood that features of various exemplary embodiments and / or aspects described herein may be combined with each other, unless otherwise specified.

[0024] Video coding typically refers to the processing of a sequence of pictures forming a video or a video sequence. The terms picture, image or frame may / will be used synonymously in the field of video coding as well as in this application. Each picture is typically partitioned into a set of non-overlapping blocks. Picture encoding / decoding is typically performed at the block level, e.g. inter-frame prediction or intra-frame prediction generates a predictive block and subtracts it from a current block (the block currently being / to be processed) to obtain a residual block, which is further transformed and quantized and used to reduce (compress) the amount of data to be transmitted, while at the decoder side, an inverse process is applied to the coded / compressed block to reconstruct the block for representation.

[0025] In the case of lossless video coding, the original video picture can be reconstructed, i.e. the reconstructed video picture has the same quality as the original video picture (assuming no transmission losses or other data losses during storage or transmission). In the case of non-lossless video coding, further compression, e.g. by quantization, is performed to reduce the amount of data representing the video picture that cannot be fully reconstructed at the decoder, i.e. the quality of the reconstructed video picture is lower or degraded than the quality of the original video picture.

[0026] Some video coding standards belong to the group of "non-lossless hybrid video codecs" (i.e., they combine spatial and temporal prediction in the sample domain with 2D transform coding to apply quantization in the transform domain). Each picture of a video sequence is typically partitioned into a set of non-overlapping blocks and coding is typically performed at the block level. In other words, at the encoder, a video is typically processed, i.e., encoded, at the block (video block) level, e.g., by generating a predictive block using spatial (intra-picture) prediction and / or temporal (inter-picture) prediction, subtracting the predictive block from a current block (the block currently being / to be processed) to obtain a residual block, transforming the residual block, and quantizing the residual block in the transform domain to reduce (compress) the amount of data to be transmitted, while at the decoder, the reverse processing is applied to the coded or compressed block compared to the encoder in order to reconstruct the current block for representation. Furthermore, the encoder will replicate the decoder processing loop so that both will generate the same predictions (eg, intra and inter predictions) and / or reconstructions for processing, ie, coding, subsequent blocks.

[0027] In the following embodiment of a video coding system 10, a video encoder 20 and a video decoder 30 are described with reference to FIGS. 1-3.

[0028] 1 is a conceptual or schematic block diagram illustrating an example coding system 10, e.g., a video coding system capable of utilizing techniques of the present disclosure. An encoder 20 (e.g., video encoder 20) and a decoder 30 (e.g., video decoder 30) of the video coding system represent examples of devices that may be configured to perform techniques in accordance with various examples described herein. As shown in FIG. 1, the coding system includes a source device 12 configured to provide encoded data 13, e.g., encoded pictures 13, to a destination device 14, e.g., which decodes the encoded data 13.

[0029] The source device 12 comprises an encoder 20 and may additionally, i.e. optionally, comprise a picture source 16 , a pre-processing unit 18 , for example a picture pre-processing unit 18 , and a communication interface or unit 22 .

[0030] The picture source 16 may include or be, for example, any kind of picture capture device for capturing real-world pictures and / or a device for generating any kind of pictures or comments (for screen content coding, some text on the screen is also considered as the image or part of the image to be coded), e.g. a computer graphics processor for generating computer animated pictures, or any kind of device for obtaining and / or providing real-world pictures, computer animated pictures (e.g. screen content, virtual reality (VR) pictures), and / or any combination thereof (e.g. augmented reality (AR) pictures).

[0031] A (digital) picture is, or can be thought of as, a two-dimensional array or matrix of samples with intensity values. The samples in the array can also be referred to as pixels (short for pixel element) or pels. The number of samples in the horizontal and vertical directions (or axes) of the array or picture defines the size and / or resolution of the picture. For color representation, typically three color components are used, i.e. a picture can be represented with or contain three sample arrays. In an RBG format or color space, a picture contains corresponding red, green and blue sample arrays. However, in video coding, each pixel is typically represented in a luminance / chrominance format or color space, e.g. YCbCr, which contains a luminance component denoted Y (often L is also used instead) and two chrominance components denoted Cb and Cr. The luminance (or luma for short) component Y represents the brightness or gray level intensity (as in, for example, a gray scale picture), while the two chrominance (or chroma for short) components Cb and Cr represent the chromaticity or color information components. Thus, a picture in YCbCr format contains a luminance sample array of luminance sample values ​​(Y) and two chrominance sample arrays of chrominance values ​​(Cb and Cr). A picture in RGB format can be converted or transformed to YCbCr format and vice versa, a process also known as color conversion or transformation. If the picture is monochrome, the picture can contain only a luminance sample array.

[0032] The picture source 16 (e.g., video source 16) can be, for example, a camera capturing a picture, a memory containing or storing a previously captured or generated picture, e.g., a picture memory, and / or any kind of interface (internal or external) for acquiring or receiving a picture. The camera can be, for example, a local or integrated camera integrated in the source device, and the memory can be, for example, a local or integrated memory integrated in the source device. The interface can be, for example, an external interface for receiving a picture from an external video source, e.g., an external picture capturing device such as a camera, an external memory, or an external picture generating device, e.g., an external computer graphics processor, computer or server. The interface can be any kind of interface, e.g., a wired or wireless interface, an optical interface, following any proprietary or standardized interface protocol. The interface for acquiring the picture data 17 can be the same interface as the communication interface 22 or be part of it.

[0033] In order to distinguish between pre-processing unit 18 and the processing performed by pre-processing unit 18 , pictures or picture data 17 (eg, video data 16 ) may also be referred to as pre-processed pictures or pre-processed picture data 17 .

[0034] The pre-processing unit 18 is configured to receive (pre-processing) picture data 17 and perform pre-processing on the picture data 17 to obtain a pre-processed picture 19 or pre-processed picture data 19. The pre-processing performed by the pre-processing unit 18 may include, for example, cropping, color format conversion (e.g., from RGB to YCbCr), color correction, or noise removal. It can be understood that the pre-processing unit 18 may be an optional component.

[0035] An encoder 20 (e.g., a video encoder 20) is configured to receive pre-processed picture data 19 and to provide encoded picture data 21 (e.g., based on FIG. 2, further details will be described below).

[0036] The communications interface 22 of the source device 12 may be configured to receive the encoded picture data 21 and transmit it to another device, such as the destination device 14 or any other device, for storage or direct reconstruction, or to process the encoded picture data 21 before storing the encoded data 13 and / or transmitting the encoded data 13 to another device, such as the destination device 14 or any other device, for decoding or storage, respectively.

[0037] Destination device 14 includes a decoder 30 (eg, a video decoder 30), and may additionally, or optionally, include a communications interface or unit 28, a post-processing unit 32, and a display device 34.

[0038] The communications interface 28 of the destination device 14 is configured to receive the encoded picture data 21 or the encoded data 13, e.g. directly from the source device 12 or from any other source, e.g. a storage device, e.g. a storage device for encoded picture data.

[0039] The communication interface 22 and the communication interface 28 may be configured to transmit or receive the encoded picture data 21 or the encoded data 13 via a direct communication link between the source device 12 and the destination device 14, such as a direct wired or wireless connection, or via any kind of network, such as a wired or wireless network or any combination thereof, or any kind of private and public network, or any kind of combination thereof.

[0040] The communications interface 22 may be arranged to package the encoded picture data 21 into a suitable format, eg packets, for transmission over a communications link or network.

[0041] A communications interface 28, which forms a counterpart of the communications interface 22, can for example be configured to depackage the encoded data 13 in order to obtain the encoded picture data 21.

[0042] Both communication interface 22 and communication interface 28 may be configured as unidirectional communication interfaces, as indicated by the arrow of encoded picture data 13 in FIG. 1A pointing from source device 12 to destination device 14, and may be configured to, e.g., set up a connection, e.g., to send and receive messages, e.g., to confirm and exchange a communication link and / or any other information related to data transmission, e.g., transmission of encoded picture data.

[0043] The decoder 30 is arranged to receive the encoded picture data 21 and to provide decoded picture data 31 or decoded pictures 31 (further details will be explained below, e.g. based on FIG. 3).

[0044] The post-processing processor 32 of the destination device 14 is configured to post-process the decoded image data 31 (also called reconstructed picture data), e.g. a decoded picture 31, to obtain post-processed picture data 33, e.g. a post-processed picture 33. The post-processing performed by the post-processing unit 32 may include, e.g., color format conversion (e.g., from YCbCr to RGB), color correction, cropping, or resampling, or any other processing, e.g. to prepare the decoded picture data 31 for display by a display device 34.

[0045] A display device 34 of destination device 14 is configured to receive the post-processed picture data 33 for displaying the picture, e.g., to a user or viewer. The display device 34 may be or include any type of display for presenting the reconstructed picture, e.g., an integrated or external display or monitor. The display may include, for example, a liquid crystal display (LCD), an organic light emitting diode (OLED) display, a plasma display, a projector, a micro LED display, a liquid crystal on silicon (LCoS), a digital light processor (DLP), or any other type of display.

[0046] 1 depicts source device 12 and destination device 14 as separate devices, an embodiment of the devices may also include both or both functionality, source device 12 or corresponding functionality, and destination device 14 or corresponding functionality. In such an embodiment, source device 12 or corresponding functionality and destination device 14 or corresponding functionality may be implemented using the same hardware and / or software, or by separate hardware and / or software, or any combination thereof.

[0047] As will be clear to a person skilled in the art based on the specification, the presence and (exact) division of functions or functions of various units in the source device 12 and / or destination device 14 shown in FIG. 1 may vary depending on the actual device and application.

[0048] The encoder 20 (e.g., video encoder 20) and the decoder 30 (e.g., video decoder 30), each may 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. Where the techniques are implemented in part in software, the device may store the software instructions in a suitable non-transitory computer readable storage medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Any of the above (including hardware, software, a combination of hardware and software, etc.) may be considered to be one or more processors. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, and either may be integrated as part of a combined encoder / decoder (CODEC) within the respective device.

[0049] Source device 12 and destination device 14 may include any of a wide range of devices, including any type of handheld or stationary device, such as a notebook or laptop computer, a mobile phone, a smart phone, a tablet or tablet computer, a camera, a desktop computer, a set-top box, a television, a display device, a digital media player, a video game console, a video streaming device (such as a content service server or a content delivery server), a broadcast receiving device, a broadcast transmitting device, and the like, and may or may not use any type of operating system. In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices.

[0050] In some cases, the video coding system 10 shown in FIG. 1 is merely an example, and the techniques of the present application may be applied to video coding settings (e.g., video encoding or video decoding) that do not need to include any data communication between the encoding device and the decoding device. In other examples, data may be retrieved from local memory, streamed over a network, etc. A video encoding device may encode data and store it in memory, and / or a video decoding device may retrieve data from memory and decode it. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode data to memory and / or retrieve data from memory and decode it.

[0051] FIG. 2 illustrates a schematic / conceptual block diagram of an exemplary video encoder 20 configured to implement the techniques of the present application. In the example of FIG. 2, the video encoder 20 includes a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, 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 entropy coding 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). The video encoder 20 illustrated in FIG. 2 may also be referred to as a hybrid video encoder or a video encoder with a hybrid video codec.

[0052] For example, the residual calculation unit 204, the transform processing unit 206, the quantization unit 208, the prediction processing unit 260, and the entropy coding unit 270 form a forward signal path of the encoder 20, while, 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 picture buffer (DPB) 230, and the prediction processing unit 260 form a backward signal path of the encoder, which corresponds to the signal path of the decoder (see decoder 30 in FIG. 3).

[0053] The encoder 20 is arranged to receive, for example, a picture of a sequence of pictures forming a video or a video sequence, for example via an input 202, a picture 201 or a block 203 of the picture 201. The picture block 203 is also referred to as a current picture block or a picture block to be coded, and the picture 201 is also referred to as a current picture or a picture to be coded (in particular in video coding to distinguish the current picture from other pictures, for example from previously coded and / or decoded pictures of the same video sequence, i.e. a video sequence which also includes the current picture).

[0054] The prediction processing unit 260, also referred to as block prediction processing unit 260, is configured to receive or obtain the block 203 (the current block 203 of the current picture 201) and reconstructed picture data, e.g. reference samples of the same (current) picture from the buffer 216 and / or reference picture data 231 from one or more previously decoded pictures from the decoded picture buffer 230, and to process the data for prediction, i.e. to provide a prediction block 265, which may be an inter-prediction block 245 or an intra-prediction block 255.

[0055] The mode selection unit 262 may be configured to select a prediction mode (e.g., intra or inter prediction mode) and / or a corresponding prediction block 245 or 255 to be used as the prediction block 265 for calculation of the residual block 205 and for reconstruction of the reconstructed block 215.

[0056] An embodiment of the mode selection unit 262 may be configured to select a prediction mode (e.g., from those supported by the prediction processing unit 260) that provides the best match or in other words the smallest residual (smallest residual means better compression for transmission or storage), or the smallest signaling overhead (smallest signaling overhead means better compression for transmission or storage), or a consideration or balance of both. The mode selection unit 262 may also be configured to determine the prediction mode based on rate-distortion optimization (RDO), i.e., to select a prediction mode that provides the smallest rate-distortion optimization, or a prediction mode whose associated rate-distortion at least satisfies a prediction mode selection criterion.

[0057] The intra prediction unit 254 is further configured to determine intra prediction parameters, e.g., a selected intra prediction mode, based on the intra prediction block 255. In any case, after selecting an intra prediction mode for the block, the intra prediction unit 254 is also configured to provide the intra prediction parameters, i.e., information indicative of the selected intra prediction mode for the block, to the entropy coding unit 270. In one example, the intra prediction unit 254 may be configured to perform any combination of the intra prediction techniques described below.

[0058] Embodiments of the encoder 20 may include a picture partitioning unit (not shown in FIG. 2) configured to partition a picture into multiple (typically non-overlapping) picture blocks, which may also be referred to as root blocks, macroblocks (H.264 / AVC) or coding tree blocks (CTBs) or coding tree units (CTUs) (H.265 / HEVC and VVC). The picture partitioning unit may be configured to use the same block size for all pictures of a video sequence and a corresponding grid that defines the block size, or to vary the block size between pictures, subsets, or groups of pictures and partition each picture into corresponding blocks.

[0059] Similar to the picture 201, a picture block is or can be considered as a two-dimensional array or matrix of samples with intensity values ​​(sample values), again with smaller dimensions than a picture. In other words, a block may contain, for example, one sample array (e.g. a luma array in case of a monochrome picture, or a luma or chroma array in case of a color picture) or three sample arrays (e.g. a luma and two chroma arrays in case of a color picture), or any other quantity and / or type of arrays depending on the color format applied. The number of samples in the horizontal and vertical directions (or axes) of a block defines the size of the block. Thus, a block may be, for example, an MxN (M columns and N rows) array of samples, or an MxN array of transform coefficients.

[0060] As shown in FIG. 2, an embodiment of the encoder may be configured to encode a picture block-by-block, eg, encoding and prediction are performed block-by-block.

[0061] The video encoder embodiment shown in FIG. 2 may be further configured to partition and / or encode a picture using slices (also referred to as video slices), where a picture is partitioned into one or more (typically non-overlapping) slices, and each slice may include one or more blocks (e.g., CTUs).

[0062] The embodiment of the video encoder shown in FIG. 2 may be further configured to partition and / or encode a picture by using tile groups (also referred to as video tile groups) and / or tiles (also referred to as video tiles), where a picture may be partitioned into one or more (typically non-overlapping) tile groups, each of which may include, for example, one or more blocks (e.g., CTUs) or one or more tiles, and each tile may be, for example, rectangular in shape and may include one or more blocks (e.g., CTUs), e.g., complete or fractional blocks.

[0063] 3 illustrates an exemplary video decoder 30 configured to implement the techniques of the present application. The video decoder 30 is configured to receive encoded picture data (e.g., an encoded bitstream) 21, e.g., encoded by an encoder 100, to obtain a decoded picture 131. During the decoding process, the video decoder 30 receives video data from the video encoder 100, e.g., an encoded video bitstream representing picture blocks of an encoded video slice and associated syntax elements.

[0064] 3, decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., summer 314), a buffer 316, a loop filter 320, a decoded picture buffer 330, and a prediction processing unit 360. Prediction processing unit 360 may include an inter prediction unit 344, an intra prediction unit 354, and a mode selection unit 362. Video decoder 30 may, in some examples, perform a decoding path that is generally the reverse of the encoding path described with respect to video encoder 100 according to FIG.

[0065] The entropy decoding unit 304 is configured to perform entropy decoding on the encoded picture data 21 to obtain, e.g., quantization coefficients 309 and / or decoded coding parameters (not shown in FIG. 3), e.g., (decoded) inter-prediction parameters, intra-prediction parameters, loop filter parameters, and / or other syntax elements. The entropy decoding unit 304 is further configured to forward the inter-prediction parameters, intra-prediction parameters, and / or other syntax elements to the prediction processing unit 360. The video decoder 30 may receive the syntax elements at a video slice level and / or a video block level.

[0066] The inverse quantization unit 310 may be functionally identical to the inverse quantization unit 110, the inverse transform processing unit 312 may be functionally identical to the inverse transform processing unit 112, the reconstruction unit 314 may be functionally identical to the reconstruction unit 114, the buffer 316 may be functionally identical to the buffer 116, the loop filter 320 may be functionally identical to the loop filter 120, and the decoded picture buffer 330 may be functionally identical to the decoded picture buffer 130.

[0067] Prediction processing unit 360 may include an inter prediction unit 344, which may be functionally similar to inter prediction unit 144, and an intra prediction unit 354, which may be functionally similar to intra prediction unit 154. Prediction processing unit 360 is typically configured to perform block prediction and / or obtain a prediction block 365 from the encoded data 21, and to receive or obtain (explicitly or implicitly) prediction-related parameters and / or information regarding a selected prediction mode, for example from entropy decoding unit 304.

[0068] When a video slice is coded as an intra-coded (I) slice, intra prediction unit 354 of prediction processing unit 360 is configured to generate a prediction block 365 for a picture block of the current video slice based on data from a previously decoded block of the current frame or picture and a signaled intra prediction mode. When a video frame is coded as an inter-coded (i.e., B or P) slice, inter prediction unit 344 (e.g., a motion compensation unit) of prediction processing unit 360 is configured to generate a prediction block 365 for a video block of the current video slice based on a motion vector and another syntax element received from entropy decoding unit 304. For inter prediction, the prediction block may be generated from one reference picture in one reference picture list. Video decoder 30 may construct the reference frame lists, List0 and List1, by using a default construction technique based on the reference pictures stored in DPB 330.

[0069] Prediction processing unit 360 is configured to determine prediction information for video blocks of the current video slice by parsing the motion vectors and other syntax elements, and to use the prediction information to generate a prediction block for the current video block to be decoded. For example, prediction processing unit 360 uses some of the received syntax elements to determine a prediction mode (e.g., intra or inter prediction) to be used to code video blocks of the video slice, an inter-prediction slice type (e.g., a B slice, a P slice, or a GPB slice), configuration information for one or more of the reference picture lists for the slice, a motion vector for each inter-coded video block of the slice, an inter-prediction status for each inter-coded video block of the slice, and other information for decoding video blocks in the current video slice.

[0070] The inverse quantization unit 310 is configured to inverse quantize, i.e., dequantize, the quantized transform coefficients provided in the bitstream and decoded by the entropy decoding unit 304. The inverse quantization process may include determining the degree of quantization, and likewise the degree of inverse quantization, to be applied using a quantization parameter calculated by the video encoder 100 for each video block in a video slice.

[0071] Inverse transform processing unit 312 is configured to apply an inverse transform, eg, 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.

[0072] The reconstruction unit 314 (e.g., 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 sample values ​​of the reconstructed residual block 313 and sample values ​​of the prediction block 365.

[0073] The loop filter unit 320 (either in the coding loop or after the coding loop) is configured to filter the reconstructed block 315 to obtain a filtered block 321, e.g., to smooth pixel transitions or otherwise improve video quality. In one example, the loop filter unit 320 can be configured to perform any combination of the filtering techniques described below. The loop filter unit 320 is intended to represent one or more loop filters, such as a deblocking filter, a sample adaptive offset (SAO) filter, or other filters, e.g., a bilateral filter or an adaptive loop filter (ALF), a sharpening or smoothing filter, or a collaborative filter. Although the loop filter unit 320 is illustrated as an in-loop filter in FIG. 3, in other configurations the loop filter unit 320 may be realized as a post-loop filter.

[0074] The decoded video blocks 321 in a given frame or picture are then stored in a decoded picture buffer 330, which stores reference pictures used for subsequent motion compensation.

[0075] The decoder 30 is arranged to output the decoded pictures 331, for example via an output 332, for presentation or display to a user.

[0076] Other variations of the video encoder 30 may be used to decode the compressed bitstream. For example, the decoder 30 may generate an output video stream without the loop filtering unit 320. For example, the non-transform-based decoder 30 may inverse quantize the residual signal directly for a particular block or frame without the inverse transform processing unit 312. In another implementation, the video decoder 30 may combine the inverse quantization unit 310 and the inverse transform processing unit 312 into a single unit.

[0077] The embodiment of video decoder 30 shown in FIG. 3 may be configured to partition and / or decode a picture by using slices (also referred to as video slices), where a picture may be partitioned or decoded into one or more (typically non-overlapping) slices, and each slice may include one or more blocks (e.g., CTUs).

[0078] The embodiment of video decoder 30 shown in FIG. 3 may be configured to partition and / or decode a picture by using tile groups (also referred to as video tile groups) and tiles (also referred to as video tiles), where a picture may be partitioned or decoded into one or more (typically non-overlapping) tile groups, where each tile group may, for example, include one or more blocks (e.g., CTUs) or one or more tiles, where each tile may, for example, be rectangular in shape and may include one or more blocks (e.g., CTUs), e.g., complete or fractional blocks.

[0079] It should be understood that in the encoder and decoder, the processing result of the current step may be further processed and output to the next step, for example, after the interpolation filtering, the motion vector derivation, or the loop filtering, further processing such as clipping or shifting may be performed on the processing result of the interpolation filtering, the motion vector derivation, or the loop filtering.

[0080] According to the HEVC / H.265 standard, 35 intra-prediction modes are available. This set includes the following modes: planar mode (intra-prediction mode index is 0), DC mode (intra-prediction mode index is 1), and directional (angular) mode covering a range of 180° and having an intra-prediction mode index value range of 2 to 34. In order to capture any edge directions present in natural video, the number of directional intra modes is extended from 33 as used in HEVC to 65. The additional directional modes are shown in FIG. 4, where 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, the 62 directional modes with index values ​​of 3 to 64 cover a range of about 230°, i.e., some paired modes have opposite directionality. In the case of the HEVC Reference Model (HM) and JEM platform, only one paired angular mode (i.e., modes 2 and 66) has opposite directionality, as shown in FIG. 4. To construct a predictor, traditional angular modes take reference samples and filter them (if necessary) to obtain a sample predictor. The number of reference samples needed to construct a predictor depends on the length of the filter used for the interpolation (e.g., bilinear and cubic filters have lengths of 2 and 4, respectively).

[0081] FIG. 4 shows an example of 67 intra prediction modes proposed for VVC, for example, where the intra prediction modes of the 67 intra prediction modes include planar mode (index 0), dc mode (index 1), and angle modes with indices 2 to 66, where the bottom left angle mode in FIG. 4 refers to index 2, and the index numbering is incremented until index 66 is the top right most angle mode in FIG. 4.

[0082] Video coding schemes such as H.264 / AVC and HEVC are designed around the successful principle of block-based hybrid video coding, where a picture is first partitioned into blocks, and then each block is predicted by using intra-picture or inter-picture prediction.

[0083] As used herein, the term "block" may be a portion of a picture or a frame. For ease of explanation, embodiments of the present invention are described herein with reference to High Efficiency Video Coding (HEVC) or Generic Video Coding (VVC) reference software developed by the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Moving Picture Experts Group (MPEG) Joint Collaboration Team on Video Coding (JCT-VC). Those skilled in the art will understand that embodiments of the present invention are not limited to HEVC or VVC. It may refer to CUs, PUs, and TUs. In HEVC, a CTU is divided into CUs by using a quadtree structure, denoted as a coding tree. The decision of whether to code a picture area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU level. Each CU may be further divided into one, two, or four PUs depending on the PU division type. Within one PU, the same prediction process is applied, and related information is transmitted to the decoder on a PU basis. After obtaining the residual block by applying the prediction process based on the PU partition type, the CU can be partitioned into transform units (TUs) according to another quadtree structure, which is similar to the coding tree of the CU. In the latest development of video compression technology, quadtree and binary tree (QTBT) partitioning is used to partition the coding blocks. In the QTBT block structure, the CU can have either a square or rectangular shape. For example, the coding tree unit (CTU) is first partitioned by a quadtree structure. The quadtree leaf node is further partitioned by a binary tree structure. The binary tree leaf node is called the coding unit (CU), and its segmentation is used for prediction and transform processes without any further partitioning. This means that the CU, PU, ​​and TU have the same block size in the QTBT coding block structure. At the same time, multiple partitions, such as ternary tree partitions, have also been proposed to be used with the QTBT block structure.

[0084] 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 techniques (including current and near-term extensions for screen content coding and high dynamic range coding) with compression capabilities significantly beyond those of the current HEVC standard. The groups are working together in a collaborative exploration effort known as the Joint Video Exploration Team (JVET) to evaluate compression technology designs proposed by experts in the field.

[0085] The Versatile Test Model (VTM) uses 35 intra modes, while the Benchmark Set (BMS) uses 67. Intra prediction is a mechanism used in many video coding frameworks to increase compression efficiency when only a given frame may be involved.

[0086] As shown in Figure 4, the latest version of JEM has several modes corresponding to skewed intra prediction directions. For any of these modes, to predict a sample in a block, an interpolation of a set of neighboring reference samples should be performed if the corresponding position within the block side is fractional. HEVC and VVC use linear interpolation between two neighboring reference samples. JEM uses a more advanced 4-tap interpolation filter. The filter coefficients are selected to be either Gaussian or cubic depending on the width or height value. The decision of whether to use width or height is coordinated with the decision regarding the selection of the primary reference side, i.e., if 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 selected to determine the interpolation filter to 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 8 samples or less, a cubic 4-tap interpolation is applied. Otherwise, the interpolation filter is a 4-tap Gaussian one.

[0087] The specific filter coefficients used in JEM are shown in Table 1. The predicted sample is calculated by convolving with a coefficient selected from Table 1 according to the sub-pixel offset and filter type, as follows:

number

[0088] If a cubic filter is selected, the predicted samples are further clipped to the range of allowed values ​​specified in the SPS or derived from the bit depth of the selected component. Table 1. Intra prediction interpolation filters [Table 1]

[0089] The motion compensation process also uses filtering to predict sample values ​​when the pixel displacement of the reference block is fractional. In JEM, 8-tap filtering is used for the luminance component and 4-tap long filtering is used for the chrominance component. The motion interpolation filter is applied horizontally first and the output of the horizontal filtering is further filtered vertically. The coefficients of the 4-tap chrominance filter are given in Table 2.

[0090] Table 2. Chrominance motion interpolation filter coefficients [Table 2] State-of-the-art video coding solutions use different interpolation filters for intra- and inter-prediction. In particular, Figures 5 to 7 show various examples of interpolation filters.

[0091] Figure 5 shows a schematic of the interpolation filters used in JEM. As can be seen, for motion compensation interpolation, fractional positions in inter prediction, an 8-tap interpolation filter with 6-bit coefficients is used for luma, and a 4-tap interpolation filter with 6-bit coefficients is used for chroma. Furthermore, for intra reference sample interpolation in intra prediction, a Gaussian 4-tap interpolation filter with 8-bit coefficients or a cubic 4-tap interpolation filter with 8-bit coefficients is used.

[0092] FIG. 6 shows a schematic of the proposed interpolation filters for 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, for motion compensated interpolation, fractional positions in inter prediction, an 8-tap interpolation filter with 6-bit coefficients is used for luma and a 4-tap interpolation filter with 6-bit coefficients is used for chroma. Furthermore, for intra reference sample interpolation in intra prediction, a Gaussian 6-tap interpolation filter with 8-bit coefficients or a cubic 4-tap interpolation filter with 8-bit coefficients is used.

[0093] FIG. 7 shows a schematic diagram 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, for motion compensation interpolation, fractional positions in inter prediction, an 8-tap interpolation filter with 6-bit coefficients is used for luma, and a 4-tap interpolation filter with 6-bit coefficients is used for chroma. Furthermore, for intra reference sample interpolation in intra prediction, a Gaussian 6-tap interpolation filter with 8-bit coefficients or a cubic 6-tap interpolation filter with 8-bit coefficients is used.

[0094] According to this disclosure, the look-up table and hardware module of the chroma motion compensation sub-pel filter are reused in the intra predictor to interpolate pixel values ​​when they fall at fractional positions between reference samples. Because the same hardware is intended to be used for both inter and intra prediction, the precision of the filter coefficients should be consistent, i.e., the number of bits representing the filter coefficients for intra reference sample interpolation should match the coefficient precision of the motion sub-pel motion compensation interpolation filtering.

[0095] FIG. 8 illustrates the idea of ​​the provided disclosure. The dashed "4-tap interpolation filter with 6-bit coefficients for chroma" (further referred to as the "unified intra / inter filter") can be used for both processes: interpolation of intra- and inter-predicted samples. An embodiment utilizing this design is shown in FIG. 9. In this implementation, the filtering module is implemented as a separate unit that is responsible for both prediction of chrominance samples in motion compensation and prediction of luma and chrominance samples when performing intra prediction. In this implementation, the hardware filtering unit is used for both intra- and inter-prediction processes.

[0096] Another embodiment shows an implementation where only the LUT of the filter coefficients is reused, as shown in Figure 10. In this embodiment, the hardware filtering module loads the coefficients from the LUT stored in ROM. A switch shown in the intra prediction process determines the filter type used depending on the dominant side length selected for the intra prediction process.

[0097] The embodiment of the present application provided may use the following coefficients (see Table 3): Table 3: Intra and Inter Interpolation Filters [Table 3]

[0098] The intra predicted samples can be calculated by convolution with coefficients selected from Table 1 according to the sub-pixel offset and filter type, as follows:

number

[0099] If the "Unified Intra / Inter Filter" filter is selected, the predicted samples are further clipped to the range of allowed values ​​specified in the SPS or derived from the bit depth of the selected component.

[0100] For intra reference sample interpolation and sub-pel motion compensation interpolation, it is possible to use the same filters in order to reuse hardware modules and to reduce the overall size of memory required.

[0101] In addition to the reused filters, the precision of the filter coefficients used for intra reference sample interpolation should match the precision of the coefficients of the reused filters mentioned above.

[0102] Note that luma processing in motion compensation does not necessarily use 8-tap filtering, but may also work with 4-tap filtering, in which case, for uniformity, a 4-tap filter can be chosen.

[0103] The method can be applied to different parts of the intra prediction process that may include interpolation. In particular, when extending the primary reference sample, the reference samples may also be filtered using a unified interpolation filter (for details, see V. Drugeon: JVET-K0211 “CE3: DC mode without divisions and modifications to intra filtering (Tests 1.2.1, 2.2.2 and 2.5.1)” version 1).

[0104] The intra block copy operation also includes an interpolation step, possibly using the proposed method (for a description of intra block copy 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)]). A method for intra prediction is provided, the method including using an interpolation filter of the chrominance components as an interpolation filter for intra prediction of a block.

[0105] In an embodiment, the interpolation filter look-up table for the chrominance components is the same as the interpolation filter look-up table for intra prediction.

[0106] In an embodiment, the interpolation filter look-up table for the chrominance components is not the same as the interpolation filter look-up table for intra prediction.

[0107] In an embodiment, the interpolation filter is a 4-tap filter.

[0108] In an embodiment, the look-up table of the interpolation filters for the chrominance components is as follows: [Table 4]

[0109] A method for intra prediction is provided, the method including selecting an interpolation filter from a set of interpolation filters for intra prediction of a block.

[0110] In an embodiment, the set of interpolation filters includes a Gaussian filter and a cubic filter.

[0111] In an embodiment, the selected interpolation filter look-up table is the same as the interpolation filter look-up table for the chrominance components.

[0112] In an embodiment, the interpolation filter selected is a 4-tap filter.

[0113] In an embodiment, the interpolation filter selected is a cubic filter.

[0114] In an embodiment, the look-up table of the selected interpolation filter is as follows: [Table 5]

[0115] In an embodiment, the look-up table of the selected interpolation filter is as follows: [Table 6]

[0116] An encoder is provided that includes processing circuitry for performing any one of the above methods.

[0117] A decoder is provided that includes processing circuitry for performing any one of the above methods.

[0118] There is provided a computer program product comprising program code for performing any one of the above methods.

[0119] A decoder is provided that includes one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing programming for execution by the processors, the programming, when executed by the processors, configuring the decoder to perform any one of the methods described above.

[0120] An encoder is provided that includes one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing programming for execution by the processors, the programming, when executed by the processors, configuring the encoder to perform any one of the methods described above.

[0121] For example, it is understood that disclosure related to a described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, where certain method steps are described, a corresponding device may include units for performing the described method steps, even if such units are not explicitly described or shown in the figures. Furthermore, it is understood that features of various exemplary aspects described herein may be combined with each other, unless otherwise specified.

[0122] A method of aspect ratio dependent filtering for intra prediction is provided, the method including selecting an interpolation filter for a predicted block depending on an aspect ratio of the block.

[0123] In one example, the interpolation filter is selected depending on the direction of thresholding the intra-prediction mode of the block being predicted.

[0124] In one example, the direction corresponds to the major diagonal angle of the block being predicted.

[0125] In one example, the angle of orientation is:

number

[0126] In one example, the aspect ratio is RA = log2(W) - log2(H) where W, H are the width and height of the predicted block, respectively.

[0127] In one example, the angle of the major diagonal of the predicted block is determined based on the aspect ratio.

[0128] In one example, the threshold for an intra prediction mode of a block is determined based on the angle of the leading diagonal of the block being predicted.

[0129] In one example, the interpolation filter is selected depending on which side the reference sample used belongs to.

[0130] In one example, a line with an angle corresponding to the intra direction divides the block into two areas.

[0131] In one example, reference samples belonging to different areas are predicted using different interpolation filters.

[0132] In one example, the filter includes a cubic or Gaussian interpolation filter.

[0133] In one implementation of this application, a frame is the same as a picture.

[0134] In one implementation form of the present disclosure, the value corresponding to VER_IDX is 50, the value corresponding to HOR_IDX is 18, the value corresponding to VDIA_IDX is 66, which may be the maximum value of the values ​​corresponding to the angle modes, the value 2 corresponding to intra mode 2, which may be the minimum value of the values ​​corresponding to the angle modes, and the value corresponding to DIA_IDX is 34.

[0135] The present disclosure aims at an improvement in intra-mode signaling schemes. In the present disclosure, a video decoding method and a video decoder are proposed.

[0136] In another aspect of the present disclosure, a decoder including processing circuitry is disclosed and configured to perform the above decoding method.

[0137] In another aspect of the present disclosure there is provided a computer program product comprising program code for performing any one of the above decoding methods.

[0138] In another aspect of the present disclosure, a decoder for decoding video data is provided, the decoder including one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing programming for execution by the processors, the programming, when executed by the processors, configuring the decoder to perform any one of the decoding methods described above.

[0139] The processing circuitry may be implemented in hardware or in a combination of hardware and software, such as a software programmable processor.

[0140] The processing circuitry may be implemented in hardware or a combination of hardware and software, such as a software programmable processor.

[0141] FIG. 11 shows a schematic diagram of multiple intra prediction modes used in the HEVC UIP scheme. For a luma block, the intra prediction modes may include up to 36 intra prediction modes, which may include three non-directional modes and 33 directional modes. The non-directional modes may include a planar prediction mode, a mean (DC) prediction mode, and a chroma-from-luma (LM) prediction mode. The planar prediction mode may perform prediction by assuming a block amplitude surface with horizontal and vertical gradients derived from the boundaries of the block. The DC prediction mode may perform prediction by assuming a flat block surface with values ​​that match the mean values ​​of the block boundaries. The LM prediction mode may perform prediction by assuming that the chroma values ​​for the block match the luma values ​​for the block. The directional modes may perform prediction based on neighboring blocks, as shown in FIG. 11.

[0142] H.264 / AVC and HEVC specify that a low-pass filter may be applied to the reference samples before they are used in the intra prediction process. The decision to use a reference sample filter or not is determined by the intra prediction mode and block size. This mechanism is sometimes called Mode-Dependent Intra Smoothing (MDIS). There are also multiple methods related to MDIS. For example, the Adaptive Reference Sample Smoothing (ARSS) method signals whether the prediction samples are filtered or not explicitly (i.e., a flag is included in the bitstream) or implicitly (i.e., using data hiding, for example, to avoid putting a flag in the bitstream and reduce signaling overhead). In this case, the encoder can make the decision regarding smoothing by examining the rate-distortion (RD) cost for all potential intra prediction modes.

[0143] As shown in Figure 11, the latest version of JEM (JEM-7.2) has several modes corresponding to skewed intra prediction directions. For any of these modes, to predict a sample in a block, an interpolation of a set of neighboring reference samples should be performed if the corresponding position within the block side is fractional. HEVC and VVC use linear interpolation between two neighboring reference samples. JEM uses a more advanced 4-tap interpolation filter. The filter coefficients are selected to be either Gaussian or cubic depending on the width or height value. The decision of whether to use width or height is coordinated with the decision regarding the selection of the primary reference side: if the intra prediction mode is greater than or equal to the diagonal mode, the upper side of the reference samples is selected as being the primary reference side, and the width value is selected to determine the interpolation filter to 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 8 samples or less, a cubic 4-tap interpolation is applied. Otherwise, the interpolation filter is a 4-tap Gaussian one.

[0144] In the case of a 32×4 block, an example of the interpolation filter selection for modes less than and greater than the diagonal (shown as 45°) is shown in FIG.

[0145] In VVC, a partitioning mechanism based on both quadtrees and binary trees, known as QTBT, is used. As shown in Fig. 13, QTBT partitioning can provide not only square but also rectangular blocks. Of course, some signaling overhead and increased computational complexity on the encoder side are the price to pay for QTBT partitioning compared to the conventional quadtree-based partitioning used in the HEVC / H.265 standard. Nevertheless, QTBT-based partitioning gives better segmentation properties and therefore shows a significantly higher coding efficiency than the conventional quadtree.

[0146] However, in its current state, VVC applies the same filter to both sides (left and top) of the reference sample, so whether the block is vertical or horizontal, the reference sample filter will be the same on both reference sample sides.

[0147] In this document, the terms "vertical block" ("vertical direction of block") and "horizontal block" ("horizontal direction of block") apply to rectangular blocks generated in the QTBT framework. These terms have the same meaning as shown in Figure 14.

[0148] This disclosure provides a mechanism for selecting different reference sample filters to take into account the block orientation: specifically, the width and height of a block are examined independently, so that different reference sample filters are applied to reference samples located on different sides of the block to be predicted.

[0149] In the prior art discussion, it was explained that the selection of the interpolation filter goes hand in hand with the decision regarding the selection of the primary reference, both of which currently depend on a comparison of the intra-prediction mode and the diagonal (45 degree) direction.

[0150] However, it can be observed that this design has a serious deficiency for elongated blocks. From Fig. 15, it is observed that even if the shorter side is selected as the primary reference using the mode comparison criterion, most of the predicted pixels will still be derived from the reference samples of the longer side (shown as dashed areas).

[0151] This disclosure proposes to use a different direction for thresholding intra-prediction modes during the interpolation filter selection process. Specifically, the direction corresponds to the angle of the main diagonal of the block to be predicted. For example, for blocks of size 32×4 and 4×32, the threshold mode mT used to determine the reference sample filter is defined as shown in FIG.

[0152] A particular value of the threshold intra-prediction angle may be calculated using the following formula:

number

[0153] Another embodiment of the present disclosure is to use different interpolation filters depending on which side the reference sample used belongs to. An example of this determination is shown in FIG.

[0154] A line with an angle corresponding to the intra direction m divides the predicted block into two areas. Samples belonging to different areas are predicted with different interpolation filters.

[0155] Exemplary values ​​of mT (for the set of intra-prediction modes defined in BMS1.0) and corresponding angles are given in Table 4. The angle α is given as shown in FIG. Table 4. Example values ​​of mT (for the set of intra-prediction modes specified in BMS1.0) [Table 7]

[0156] In comparison with existing techniques and solutions, the present disclosure uses samples within a block to be predicted using different interpolation filters, where the interpolation filter used to predict a sample is selected according to the shape of the block, its orientation, whether horizontal or vertical, and the intra-prediction mode angle.

[0157] The present disclosure may be applied at the reference sample filtering stage. In particular, it is possible to determine the reference sample smoothing filter using similar rules as described above for the interpolation filter selection process.

[0158] In addition to the interpolation filtering, reference sample filtering can also be applied to the reference samples immediately preceding the sample predicted in the intra predictor. The filtered reference samples obtained after reference sample filtering can either be used to copy them to the corresponding samples in the intra predictor according to the selected direction of the intra prediction mode or for further interpolation filtering. The following filters can be applied to the reference samples in this way: Table 5. Exemplary reference sample filters [Table 8]

[0159] Figure 21 shows a current block 1130, shown with a bold frame around it, which contains a sample 1120. Furthermore, the drawing shows a reference sample 1110 of a neighboring block. For example, the reference sample may be a sample of the block above or to the left.

[0160] According to an embodiment, a method is provided comprising the steps of: 1. Each of the selected directional intra-prediction modes is classified into one of the following groups: A. Vertical or horizontal mode, B. Diagonal modes that represent angles that are multiples of 45 degrees, C. remaining directional mode; 2. If the directional intra prediction mode is classified as belonging to group A, then no filter is applied to the reference sample 1110 to generate the sample 1120 belonging to the intra predictor. The reference sample 1110 is separated from the sample 1120 within the block to be predicted (intra predictor) using the block boundary 1130, as shown in FIG. 11 ; 3. If the mode falls into group B, a reference sample filter (any reference sample filter shown in Table 5, e.g., [1,2,1]) is applied to the reference sample, and these filtered values ​​are further copied to the intra predictor according to the selected direction, but no interpolation filter is applied; 4. If the mode is classified as belonging to group C, then only intra-reference sample interpolation filters (e.g., filters shown in Table 3) are applied to the reference samples to generate predicted samples that fall at fractional or integer positions between the reference samples according to the selected direction (no reference sample filtering is performed).

[0161] According to an embodiment, the method provided provides the following steps: 1. The directional intra prediction mode for the intra prediction process of the current block is classified into one of the following groups: A. Vertical or horizontal mode, B. Directional modes, including diagonal modes that represent angles that are multiples of 45 degrees; C. remaining directional mode; 2. If the directional intra prediction mode is classified as belonging to group B, a reference sample filter is applied to the reference sample; 3. If the directional intra prediction mode is classified as belonging to group C, then an intra reference sample interpolation filter is applied to the reference samples.

[0162] In other words, depending on the classification of the intra prediction mode to be used for intra prediction of the current block, either a reference sample is applied (classification B) or a reference sample interpolation filter is applied (classification C).

[0163] In particular, according to the embodiment, either a sample filter or a sample interpolation filter is applied. In particular, if the reference sample filter according to the directional intra-prediction mode is not a fractional sample, the interpolation filter is not applied. In other words, if the reference sample according to the prediction direction corresponds to an integer sample, the interpolation filter does not need to be used.

[0164] Furthermore, depending on the classification, no filter may be used at all, for example, for classification A of the intra prediction mode used for intra prediction of the current block, neither the reference sample filter nor the reference sample interpolation filter may be used.

[0165] The predicted samples can be obtained from the left and top lines of the reference samples, as shown in Figure 21. Depending on the intra prediction mode, for each predicted sample, the corresponding position of the reference sample is determined. If the mode has a non-integer gradient, the position of the reference sample is a fraction, and the reference sample value is obtained by applying an interpolation filter to a subset of the reference samples adjacent to this fractional position.

[0166] The position of this reference sample within the line of reference samples has a horizontal (if the intra prediction mode is greater than DIA_IDX) or vertical (if the intra prediction mode is less than DIA-IDX) offset with respect to the predicted sample position. The value of this offset depends on the angle of the mode and the distance from the predicted sample to the line of reference samples. If the intra prediction mode is 2 or VDIA_IDX, the angle of prediction is equal to 45 degrees and the value of the offset is equal to the value of the distance to the line of reference samples.

[0167] Group B diagonal modes may also include integer gradient wide angle modes, where the value of the offset is a multiple of the distance to the line of the reference sample, and the reference sample position for each predicted sample is non-fractional, similar to modes DIA_IDX and VDIA_IDX.

[0168] For example, if multi-reference line prediction is not used (reference line index is equal to zero) and the position of the predicted sample in the block is equal to (1,3) for the top-left predicted sample with position (0,0), then the distance to the line of the reference sample is equal to 4 samples if the intra prediction mode is greater than DIA_IDX, and equal to 2 if the intra prediction mode is less than DIA_IDX.

[0169] If the intra prediction mode is a wide-angle mode and the gradient is an integer, the value of the predicted sample can be calculated as follows: If the intra prediction mode is greater than DIA_IDX, predSamples[x,y]=p[ x +Δ] [ -1], Δ=N * (y+1) If not, predSamples[x,y]=p[-1][ y +Δ], Δ = N * (x+1) Here, Δ denotes the offset value. 45 For angle mode 2 and VDIA_IDX the value N is equal to 1.

[0170] Modes that represent angles that are multiples of 45 degrees use the same formula to determine the predicted samples "predSamples[x][y]", but the value of N will be an integer greater than 1. Note that modes that represent angles that are multiples of 45 degrees do not necessarily include horizontal and vertical modes.

[0171] It can be seen that the value of the offset Δ for the wide angle integer gradient mode is a multiple of the offset for mode 2 and mode VDIA_IDX.

[0172] In general, the value of the offset can be mapped to an intra-prediction mode (predModeIntra) using the parameter "intraPredAngle." The specific mapping of this parameter to intra-prediction modes is shown in Table 6 below. Table 6 - intraPredAngle specifications [Table 9]

[0173] The inverse angle parameter invAngle is derived based on intraPredAngle as follows: invAngle = Round(256*32 / intraPredAngle)

[0174] An exemplary derivation of the prediction samples is described below: The values ​​of the predicted samples predSamples[x][y], x=0..nTbW-1, y=0..TbH-1 are derived as follows: - If predModeIntra is greater than or equal to 34, the following sequential steps are applied: 1. The reference sample array ref[x] is specified as follows: - The following applies: ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ], x = 0..nTbW + refIdx - If intraPredAngle is less than 0, the primary reference sample array is extended as follows: - if (nTbH * intraPredAngle)>>5 is less than -1, ref[ x ]=p[ -1 - refIdx ][ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8) ], x = -1..( nTbH * intraPredAngle ) >> 5 ref[ ( ( nTbH * intraPredAngle ) >> 5 ) - 1 ] = ref[ ( nTbH * intraPredAngle ) >> 5 ] ref[ nTbW + 1 + refIdx ] = ref[ nTbW + refIdx ] - If not, ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ], x = nTbW + 1 + refIdx..refW + refId ref[ -1 ] = ref

[0000] - The additional sample ref[ refW + refIdx +x ], x = 1..( Max( 1, nTbW / nTbH ) * refIdx + 1) is derived as follows: ref[ refW + refIdx +x ] = p[ -1 + refW ][ -1 - refIdx ]

[0175] 2. The predicted sample values ​​predSamples[ x ][ y ], 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], j=0..3 are derived as follows: fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] - The predicted sample values ​​predSamples[ x ][ y ] are derived as follows:

number

[0176] 3. The reference sample array ref[x] is specified as follows: - The following applies: ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ], x = 0..nTbH + refIdx - If intraPredAngle is less than 0, the primary reference sample array is extended as follows: - ( nTbW * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ][ -1 - refIdx ], x = -1..( nTbW * intraPredAngle ) >> 5 ref[ ( ( nTbW * intraPredAngle ) >> 5 ) - 1 ] = ref[ ( nTbW * intraPredAngle ) >> 5 ] ref[ nTbG + 1 + refIdx ] = ref[ nTbH + refIdx ] - If not, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ], x = nTbH + 1 + refIdx..refH + refIdx ref[ -1 ] = ref

[0000] - The additional sample ref[ refH + refIdx +x ], x = 1..( Max( 1, nTbW / nTbH ) * refIdx + 1) is derived as follows: ref[ refH + refIdx +x ] = p[ -1 + refH ][ -1 - refIdx ]

[0177] 4. The predicted sample values ​​predSamples[ x ][ y ], 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, the following applies: - The interpolation filter coefficients fT[ j ], j = 0..3, are derived as follows: fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] - The predicted sample values ​​predSamples[ x ][ y ] are derived as follows:

number

[0178] From the above example and table, it can be seen that the calls of interpolation for some modes are redundant. Specifically, this occurs for modes that have a corresponding intraPredAngle parameter that is a multiple of 32. A value of 32 corresponds to a mode with an integer 45 degree slope. In fact, the value of predAngle is a 5-bit fixed-point integer representation for the value of the offset that will be used for predicted samples adjacent to a line of reference samples.

[0179] Specifically, for modes [-14, -12, -10, -6, 2, 34, 66, 72, 76, 78, 80], the calculation of the predicted samples does not require interpolation: the values ​​of the predicted samples can be obtained by copying the reference samples.

[0180] A version of the VVC draft specification that incorporates an exemplary implementation of the disclosed embodiments is given in the following text: 8.4.4.2.1 General intra-sample prediction The inputs to this process are: - a sample position (xTbCmp, yTbCmp) that specifies the top-left sample of the current transform block relative to the top-left sample of the current picture, - variable predModeIntra, which specifies the intra prediction mode, - Variable nTbW, which specifies the conversion block width. - variable nTbH specifying the transformation block height, - variable nCbW, which specifies the coding block width, - variable nCbH, which specifies the coding block height, - Variable cIdx that specifies the color components of the current block. The output of this process are the predicted samples predSamples[x][y],x = 0..nTbW - 1, y = 0..nTbH - 1.

[0181] The variables refW and refH 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 and cIdx is equal to 0), the following applies: refW = nCbW * 2 (8-105) refH = nCbH * 2 (8-106)

[0182] The variable refIdx, which specifies the intra prediction reference line index, is derived as follows: refIdx = ( cIdx = = 0 ) ? IntraLumaRefLineIdx[ xTbCmp ][ yTbCmp ] : 0 (8-107)

[0183] For the reference samples p[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, the following sequential steps are applied: The reference sample availability marking process as specified in clause 8.4.4.2.2 of 1. Bross B et al.: “Versatile Cideo Coding (Draft 4)”, JVET-M1001-v7, March 2019, (hereinafter this document is referred to as JVET-M1001-v7) is called with the sample position ( xTbCmp, yTbCmp ), intra prediction reference line index refIdx, reference sample width refW, reference sample height refH, color component index cIdx as input, and the reference samples refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = - refIdx..refW - 1, y = -1 - refIdx as output.

[0184] 2. If at least one sample refUnfilt[ x ][ y ],x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx is marked as "not available for intra prediction", then the reference sample replacement process as specified in clause 8.4.4.2.3 of JVET-M1001-v7 is performed with the intra prediction reference line index refIdx, the reference sample width refW, the reference sample height refH, the reference samples refUnfilt[ x ][ y ],x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx and the color component index cIdx as input and the modified reference sample refUnfilt[ x ][ y ],x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx.

[0185] 3. If predModeIntra is equal to INTRA_DC, RefFilterFlag is set to 0. Otherwise, the parameters PredAngle, RefFilterFlag, and InterpolationFlag are obtained by calling the corresponding intraPredAngle parameter and the filter flag derivation process specified in clauses 8.4.4.2.7 et seq. with the intra prediction mode predModeIntra, the intra prediction reference line index refIdx, the transform block width nTbW, the transform block height nTbH, the coding block width nCbW and height nCbH, and the color component index cIdx.

[0186] 4. The reference sample filtering process as specified in clause 8.4.4.2.4 et seq. is called with input the intra prediction reference line index refIdx, the transformed block width nTbW and height nTbH, the reference sample width refW, the reference sample height refH, the unfiltered samples refUnfilt[x][y], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, the RefFilterFlag parameter, and the color component indices cIdx, and with output the reference samples p[x][y], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx.

[0187] The intra sample prediction process with 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 called with the transform block width nTbW and transform block height nTbH as well as the reference sample array p as input, and the output is the predicted sample array predSamples.

[0188] - Otherwise, 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 called with inputs the transform block width nTbW, the transform block height nTbH and the reference sample array p, and the output is the predicted sample array predSamples.

[0189] - otherwise, if predModeIntra is equal to INTRA_LT_CCLM, INTRA_L_CCLM or INTRA_T_CCLM then the corresponding intra-prediction mode process specified in clause 8.4.4.2.8 is called with input the intra-prediction mode predModeIntra, the sample positions ( xTbC, yTbC ) set equal to ( xTbCmp, yTbCmp ), the transform block width nTbW and height nTbH, and the reference sample array p, and the output is the predicted sample array predSamples.

[0190] - otherwise, the corresponding intra-prediction mode process specified in clauses 8.4.4.2.8 et seq. is called 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 coding block width nCbW and height nCbH, the interpolation filter selection flag InterpolationFlag, and the reference sample array p, and with the modified intra-prediction mode predModeIntra and the predicted sample array predSamples as outputs.

[0191] The position dependent prediction sample filtering process specified in clause 8.4.4.2.9 of JVET-M1001-v7 is called with inputs the intra prediction mode predModeIntra, the transform block width nTbW, the transform block height nTbH, the predicted samples predSamples[ x ][ y ], x = 0..nTbW - 1, y = 0..nTbH - 1, the reference sample width refW, the reference sample height refH, the reference samples p[ x ][ y ], x = -1, y = -1..refH - 1 and x = 0..refW - 1, y = -1, and the color component indices cIdx, 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 equal to INTRA_ANGULAR10 - predModeIntra is INTRA_ANGULAR58 or higher

[0192] 8.4.4.2.4 Reference sample filtering process The input to this process is: - A variable refIdx that specifies the intra reference line index, - Variable nTbW, which specifies the conversion block width. - variable nTbH specifying the transformation block height, - variable refW, which specifies the reference sample width - variable refH, which specifies the reference sample height, - (unfiltered) adjacent samples refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, - RefFilterFlag parameter The output of this process are the reference samples p[x][y], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx.

[0193] Regarding the derivation of the reference samples p[ x ][ y ], the following applies: - if RefFilterFlag is equal to 1, the filtered values ​​p[ x ][ y ], x = -1, y = -1..refH - 1 and x = 0..refW - 1, y = -1 are derived as follows: p[ -1 ][ -1 ] = ( refUnfilt[ -1 ]

[0000] + 2 * refUnfilt[ -1 ][ -1 ] + refUnfilt

[0000] [ -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],x=-1-refIdx, y=-1-refIdx..refH-1 and x=-refIdx..refW-1, y=-1-refIdx.

[0194] 8.4.4.2.7 Specification of the intraPredAngle parameter and filter flag derivation The input to this process is: - Intra prediction mode predModeIntra, - Variable nTbW that specifies the conversion block width - Variable nTbH that specifies the transformation block height - nCbW variable specifies the coding block width - Variable nCbH that specifies the coding block height - Color component index cIdx The output of this process is a modified intra prediction mode predModeIntra, the intraPredAngle parameter RefFilterFlag and the InterpolationFlag variable.

[0195] 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 and cIdx is equal to 0), the following applies: nW = nCbW nH = nCbH The variable whRatio is set equal to Abs(Log2(nW / nH)).

[0196] For non-square blocks (nW 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 2 or greater - predModeIntra is less than ( whRatio > 1 ) ? ( 8 + 2 * whRatio ) : 8 - Otherwise, if all of the following conditions are true, then predModeIntra is set equal to (predModeIntra - 67): - nH is greater than nW - predModeIntra is less than or equal to 66 - predModeIntra is greater than ( whRatio > 1 ) ? ( 60 - 2 * whRatio ) : 60

[0197] The angle parameter intraPredAngle is determined as specified in Table 7 using the value of predModeIntra. Table 7 - intraPredAngle specifications [Table 10]

[0198] The variable filterFlag is derived as follows: - filterFlag is set equal to 0 if one or more of the following conditions are true: - cIdx is not equal to 0 - refIdx is not equal to 0 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, cIdx is equal to 0, predModeIntra is greater than or equal to INTRA_ANGULAR34, and nW is greater than 8. - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, cIdx is equal to 0, predModeIntra is less than INTRA_ANGULAR34, and nH is greater than 8.

[0199] - Otherwise, if predModeIntra is INTRA_PLANAR, the variable filterFlag is set to nTbS > 5?1:0. - Otherwise, if intraPredAngle is greater than 32, the variable filterFlag 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 8. - The variable filterFlag is derived as follows: - if minDistVerHor is greater than intraHorVerDistThres[nTbS] or Abs(intraPredAngle)>32, then filterFlag is set equal to 1.

[0200] Table 8 - Specification of intraHorVerDistThres[ nTbS ] for various transform block sizes nTbS [Table 11]

[0201] The output variables RefFilterFlag and InterpolationFlag are derived as follows: If predModeIntra is INTRA_PLANAR or predIntraAng is an integer multiple of 32, then the variable RefFilterFlag is set equal to filterFlag and InterpolationFlag is set equal to 0. - Otherwise, the variable RefFilterFlag is set equal to 0 and InterpolationFlag is set equal to filterFlag.

[0202] Note: RefFilterFlag and InterpolationFlag shall never both be equal to 1 for any predModeIntra. See Table 9. Table 9 - RefFilterFlag and InterpolationFlag specifications (reference) [Table 12]

[0203] 8.4.4.2.8 Angular intra prediction mode specification The inputs to this process are: - Intra prediction mode predModeIntra - intraPredAngle parameter - refIdx variable that specifies the intra prediction reference line index - Variable nTbW that specifies the conversion block width - Variable nTbH that specifies the transformation block height - Variable refW that specifies the reference sample width - Variable refH that specifies the reference sample height - nCbW variable specifies the coding block width - Variable nCbH that specifies the coding block height - InterpolationFlag variable that specifies whether to use 4-tap filter interpolation - Variable RefFilterFlag that specifies whether adjacent samples are filtered or not - adjacent samples p[ x ][ y ], x = -1- refIdx, y = -1- refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1- refIdx.

[0204] The output of this process is the modified intra prediction mode predModeIntra and the predicted samples predSamples[ x ][ y ], x = 0 .. nTbW − 1, y = 0 .. nTbH − 1.

[0205] The variable nTbS is set equal to ( Log2 ( nTbW ) + Log2 ( nTbH ) ) >> 1.

[0206] FIG. 18 shows 93 prediction directions, where the dashed directions relate to the wide angle mode that applies only to non-square blocks.

[0207] The inverse angle parameter invAngle is derived based on intraPredAngle as follows: invAngle = Round(256*32 / intraPredAngle)

[0208] The interpolation filter coefficients fC[phase][j] and fG[phase][j], phase=0..31 and j=0..3, are specified in Table 10. Table 10 - Specifications of the Interpolation Filter Coefficients fC and fG [Table 13]

[0209] The predicted sample values ​​predSamples[ x ][ y ], x = 0..nTbW - 1, y = 0..nTbH - 1, are derived as follows: - If predModeIntra is greater than or equal to 34, the following sequential steps are applied: 1. The reference sample array ref[x] is specified as follows: - The following applies: ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ],x = 0..nTbW + refIdx - If intraPredAngle is less than 0, the primary reference sample array is extended as follows: - ( nTbH * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ], x = -1..( nTbH * intraPredAngle ) >> 5 ref[ ( ( nTbH * intraPredAngle ) >> 5 ) - 1 ] = ref[ ( nTbH * intraPredAngle ) >> 5 ] ref[ nTbW + 1 + refIdx ] = ref[ nTbW + refIdx ] - If not, ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ],x = nTbW + 1 + refIdx..refW + refIdx ref[ -1 ] = ref

[0000] - The additional sample ref[ refW + refIdx +x ], x = 1..( Max( 1, nTbW / nTbH ) * refIdx + 1) is derived as follows: ref[ refW + refIdx +x ] = p[ -1 + refW ][ -1 - refIdx ]

[0210] 2. The predicted sample values ​​predSamples[ x ][ y ], 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], j = 0..3 are derived as follows: fT[ j ] = InterpolationFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] - The predicted sample values ​​predSamples[ x ][ y ] are derived as follows:

number

[0211] - Otherwise (predModeIntra is less than 34), the following ordering steps are applied: 1. The reference sample array ref[x] is specified as follows: - The following applies: ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ],x = 0..nTbH + refIdx - If intraPredAngle is less than 0, the primary reference sample array is extended as follows: - ( nTbW * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ][ -1 - refIdx ], x = -1..( nTbW * intraPredAngle ) >> 5 ref[ ( ( nTbW * intraPredAngle ) >> 5 ) - 1 ] = ref[ ( nTbW * intraPredAngle ) >> 5 ] ref[ nTbG + 1 + refIdx ] = ref[ nTbH + refIdx ] - If not, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ],x = nTbH + 1 + refIdx..refH + refIdx ref[ -1 ] = ref

[0000] - The additional sample ref[ refH + refIdx +x ], x = 1..( Max( 1, nTbW / nTbH ) * refIdx + 1) is expanded as follows: ref[ refH + refIdx +x ] = p[ -1 + refH ][ -1 - refIdx ]

[0212] 2. The predicted sample values ​​predSamples[ x ][ y ], 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], j = 0..3 are derived as follows: fT[ j ] = InterpolationFlag? fG[ iFact ][ j ] : fC[ iFact ][ j ] - The predicted sample values ​​predSamples[ x ][ y ] are derived as follows:

number

[0213] Based on the size of the predicted block, the wide-angle modes may fall into different groups. In the example given below, these modes would still belong to either group "B" or group "C" depending on whether they have a non-fractional gradient or not. However, the choice of the interpolation filter for the modes in group "C" and the presence of a reference sample filtering step for the modes in group "B" depend on the size of the block. Part of the filterFlag derivation can be modified as follows: The variable filterFlag is derived as follows: - filterFlag is set equal to 0 if one or more of the following conditions are true: - cIdx is not equal to 0 - refIdx is not equal to 0 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, cIdx is equal to 0, predModeIntra is greater than or equal to INTRA_ANGULAR34, and nW is greater than 8. - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, cIdx is equal to 0, predModeIntra is less than INTRA_ANGULAR34, and nH is greater than 8 - Otherwise, if predModeIntra is INTRA_PLANAR, then the variable filterFlag is set equal to nTbS > 5?1:0. Otherwise, if intraPredAngle is greater than 32 and nTbW*nTbH is greater than 32, then the variable filterFlag is set to 1.

[0214] - 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 variable filterFlag is derived as follows: - if minDistVerHor is greater than intraHorVerDistThres[nTbS] or Abs(intraPredAngle)>32, then filterFlag is set equal to 1.

[0215] Table 11 - Specification of intraHorVerDistThres[ nTbS ] for various transform block sizes nTbS [Table 14]

[0216] The wide-angle modes may be modes that represent the lower or right part of the lower left quadrant or the upper right quadrant. Specifically, in the example shown in FIG. 18, the wide-angle modes are −14 to −1 and modes 67 to 80.

[0217] Another version of the VVC draft specification incorporating an exemplary implementation of an embodiment of the present disclosure includes the following portions related to reference sample filtering, and is provided below: R: For the generation of the reference samples p[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, the following sequential steps are applied:

[0218] 1. The reference sample availability marking process as specified in clause 8.4.4.2.2 of JVET-M1001-v7 is called with input the sample position ( xTbCmp, yTbCmp ), intra prediction reference line index refIdx, reference sample width refW, reference sample height refH, color component index cIdx, and output the reference samples refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = - refIdx..refW - 1, y = -1 - refIdx.

[0219] 2. If at least one sample refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx is marked as "not available for intra prediction", then the reference sample replacement process as specified in clause 8.4.4.2.3 of JVET-M1001-v7 is performed using the intra prediction reference line index refIdx, the reference sample width refW, the reference sample height refH, the reference samples refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, and the color component index cIdx as input and the modified reference sample refUnfilt[ x ][ y 8.4.4.2.7 et seq. intra prediction mode process; otherwise, if predModeIntra is equal to INTRA_PLANAR then intraPredAngle is set to 32, otherwise intraPredAngle is set to 0.

[0220] 3. The reference sample filtering process as specified in clause 8.4.4.2.4 et seq. is called with the intra prediction reference line index refIdx, the transformed block width nTbW and height nTbH, the reference sample width refW, the reference sample height refH, the unfiltered samples refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, the intraPredAngle parameter, and the color component indices cIdx, and with the reference samples p[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx as output.

[0221] The intra sample prediction process with 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 called with the transform block width nTbW, the transform block height nTbH, and the reference sample array p as input, and the output is the predicted sample array predSamples.

[0222] - Otherwise, 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 called with inputs the transform block width nTbW, the transform block height nTbH, and the reference sample array p, and the output is the predicted sample array predSamples.

[0223] - otherwise, if predModeIntra is equal to INTRA_LT_CCLM, INTRA_L_CCLM or INTRA_T_CCLM then the corresponding intra-prediction mode process specified in clauses 8.4.4.2.8 et seq. is called with input the intra-prediction mode predModeIntra, sample positions ( xTbC, yTbC ) set equal to ( xTbCmp, yTbCmp ), the transform block width nTbW and height nTbH, and the reference sample array p, and the output is the predicted sample array predSamples.

[0224] - Otherwise, if one or more of the following conditions are true, fourTapFlag is set equal to 0: - The color component index cIdx is not equal to 0 - intraPredAngle is a multiple of 32.

[0225] - otherwise, the corresponding intra-prediction mode process specified in clauses 8.4.4.2.7 et seq. is called 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 coding block width nCbW and height nCbH, fourTapFlag, and the reference sample array p, and with the modified intra-prediction mode predModeIntra and the predicted sample array predSamples as outputs.

[0226] 8.4.4.2.4 Reference sample filtering process The inputs to this process are: - refIdx variable that specifies the intra prediction reference line index - Variable nTbW that specifies the conversion block width - Variable nTbH that specifies the transformation block height - Variable refW that specifies the reference sample width - Variable refH that specifies the reference sample height - (unfiltered sample) adjacent samples refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, - predIntraAngle parameter - Variable cIdx that specifies the color components of the current block. The output of this process are the reference samples p[x][y], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx.

[0227] The variable filterFlag is derived as follows: - filterFlag is set equal to 1 if all of the following conditions are true: - 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 equal to 0.

[0228] Regarding the derivation of the reference samples p[ x ][ y ], the following applies: - If filterFlag is equal to 1, the filtered sample values ​​p[ x ][ y ], x = -1, y = -1..refH - 1 and x = 0..refW - 1, y = -1 are derived as follows: p[ -1 ][ -1 ] = ( refUnfilt[ -1 ]

[0000] + 2 * refUnfilt[ -1 ][ -1 ] + refUnfilt

[0000] [ -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],x=-1-refIdx, y=-1-refIdx..refH-1 and x=-refIdx..refW-1, y=-1-refIdx.

[0229] 8.4.4.2.7 intraPredAngle Parameter Specification The inputs to this process are: - Intra prediction mode predModeIntra, - Variable nTbW that specifies the conversion block width - Variable nTbH that specifies the transformation block height - nCbW variable specifies the coding block width - Variable nCbH that specifies the coding block height

[0230] The output of this process is a modified intra prediction mode predModeIntra, an intraPredAngle parameter, and a filterFlag variable.

[0231] 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 and 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)).

[0232] 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 - predModeIntra is less than ( whRatio > 1 )?( 8 + 2 * whRatio ) : 8 - Otherwise, 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 - predModeIntra is greater than ( whRatio > 1 )? ( 60 - 2 * whRatio ) : 60

[0233] The angle parameter intraPredAngle is determined as specified in Table 12 using the predModeIntra value. Table 12 - intraPredAngle specifications [Table 15]

[0234] The variable filterFlag is derived as follows: - filterFlag is set equal to 0 if one or more of the following conditions are true: - refIdx is not equal to 0 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, cIdx is equal to 0, predModeIntra is greater than or equal to INTRA_ANGULAR34, and nW is greater than 8. - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, cIdx is equal to 0, 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 variable filterFlag is derived as follows: - if minDistVerHor is greater than intraHorVerDistThres[nTbS] or Abs(intraPredAngle)>32, then filterFlag is set equal to 1.

[0235] 8.4.4.2.8 Angular intra prediction mode specification The inputs to this process are: - Intra prediction mode predModeIntra, - intraPredAngle parameter, - variable refIdx that specifies the intra prediction reference line index, - Variable nTbW, which specifies the conversion block width. - Variable nTbH that specifies the transformation block height - Variable refW that specifies the reference sample width - Variable refH that specifies the reference sample height - nCbW variable specifies the coding block width - Variable nCbH that specifies the coding block width - Variable fourTapFlag that specifies whether to use 4-tap filter interpolation - Variable filterFlag - adjacent samples p[ x ][ y ], x = -1- refIdx, y = -1- refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1- refIdx.

[0236] The output of this process is the modified intra prediction mode predModeIntra and the predicted samples predSamples[ x ][ y ], x = 0 .. nTbW − 1, y = 0 .. nTbH − 1.

[0237] The variable nTbS is set equal to ( Log2 ( nTbW ) + Log2 ( nTbH ) ) >> 1.

[0238] The variable filterFlag is derived as follows: - filterFlag is set equal to 0 if one or more of the following conditions are true: - refIdx is not equal to 0 - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, cIdx is equal to 0, predModeIntra is greater than or equal to INTRA_ANGULAR34, and nW is greater than 8. - IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT, cIdx is equal to 0, 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 variable filterFlag is derived as follows: - if minDistVerHor is greater than intraHorVerDistThres[nTbS] or Abs(intraPredAngle) is greater than 32, then filterFlag is set equal to 1. - Otherwise, filterFlag is set equal to 0.

[0239] Table 13 - Specification of intraHorVerDistThres[ nTbS ] for various transform block sizes nTbS [Table 16]

[0240] FIG. 18 shows 93 prediction directions, with the dashed directions relating to the wide angle mode that applies only to non-square blocks.

[0241] The inverse angle parameter invAngle is derived based on intraPredAngle as follows: invAngle = Round(256*32 / intraPredAngle) (8-129) The interpolation filter coefficients fC[phase][j] and fG[phase][j], phase=0..31 and j=0..3, are specified in Table 14. [Table 17] Table 14 - Specifications of Interpolation Filter Coefficients fC and fG

[0242] The predicted sample values ​​predSamples[ x ][ y ], x = 0..nTbW - 1, y = 0..nTbH - 1, are derived as follows: - If predModeIntra is greater than or equal to 34, the following sequential steps are applied: 1. A reference sample array ref[x] is specified as follows: - The following applies: ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ],x = 0..nTbW + refIdx (8-130) - If intraPredAngle is less than 0, the primary reference sample array is extended as follows: - ( nTbH * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ], 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) - If not, ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ], with x = nTbW + 1 + refIdx..refW + refIdx (8-134) ref[ -1 ] = ref

[0000] (8-135) - The additional sample ref[ refW + refIdx +x ], x = 1..( Max( 1, nTbW / nTbH ) * refIdx + 1) is derived as follows: ref[ refW + refIdx +x ] = p[ -1 + refW ][ -1 - refIdx ] (8-136)

[0243] 2. The predicted sample values ​​predSamples[ x ][ y ], 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 steps are applied: - The interpolation filter coefficients fT[j], j = 0..3 are derived as follows: fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] (8-139) - The predicted sample values ​​predSamples[ x ][ y ] are derived as follows:

number

[0244] - Otherwise (predModeIntra is less than 34), the following ordering steps are applied: 1. The reference sample array ref[x] is specified as follows: - The following applies: ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ], x = 0..nTbH + refIdx (8-143) - If intraPredAngle is less than 0, the primary reference sample array is extended as follows: - ( nTbW * intraPredAngle ) >> 5 is less than -1, ref[ x ] = p[ -1 - refIdx + ( ( x * invAngle + 128 ) >> 8 ) ][ -1 - refIdx ], 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) - If not, ref[ x ] = p[ -1 - refIdx ][ -1 - refIdx + x ], with x = nTbH + 1 + refIdx..refH + refIdx (8-147) ref[ -1 ] = ref

[0000] (8-148) - The additional sample ref[ refH + refIdx +x ], x = 1..( Max( 1, nTbW / nTbH ) * refIdx + 1) is derived as follows: ref[ refH + refIdx +x ] = p[ -1 + refH ][ -1 - refIdx ] (8-149)

[0245] 2. The predicted sample values ​​predSamples[ x ][ y ], 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 is equal to 1, the following applies: - The interpolation filter coefficients fT[j], j = 0..3 are derived as follows: fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ] (8-152) - The predicted sample values ​​predSamples[ x ][ y ] are derived as follows:

number

[0246] FIG. 19 is a schematic diagram of a network device 1300 (e.g., a coding device) according to an embodiment of the present disclosure. The network device 1300 is suitable for implementing the disclosed embodiments as described herein. The network device 1300 includes an ingress port 1310 and a receiver unit (Rx) 1320 for receiving data, a processor, logic unit, or central processing unit 1330 for processing data, a transmitter unit (Tx) 1340 and an egress port 1350 for transmitting data, and a memory 1360 for storing data. The network device 1300 may also include optical-electrical (OE) and electrical-optical (EO) components coupled to the ingress port 1310, the receiver unit 1320, the transmitter unit 1340, and the egress port 1350 for the ingress and egress of optical or electrical signals.

[0247] The processor 1330 is implemented by hardware and software. The processor 1330 can be implemented as one or more CPU chips, cores (e.g., multi-core processors), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 1330 communicates with the ingress port 1310, the receiver unit 1320, the transmitter unit 1340, the egress port 1350, and the memory 1360. The processor 1330 includes a coding module 1370. The coding module 1370 implements the disclosed embodiments described above. For example, the coding module 1370 implements, processes, prepares, or provides various networking functions. Thus, the inclusion of the coding module 1370 provides substantial improvements to the functionality of the network device 1300 and affects the transformation of the network device 1300 into different states. Alternatively, the coding module 1370 may be implemented as instructions stored in the memory 1360 and executed by the processor 1330 .

[0248] Memory 1360 may include one or more disks, tape drives, and solid state drives, and may be used as an overflow data storage device, to store programs when such programs are selected for execution, and to store instructions and data loaded during the execution of the programs. Memory 1360 may be volatile and / or non-volatile, and may be read-only memory (ROM), random access memory (RAM), ternary content addressable memory (TCAM), and / or static random access memory (SRAM).

[0249] A decoder is provided that includes processing circuitry configured to perform any one of the above methods.

[0250] In the present disclosure, a computer program product is provided, the computer program product including program code is disclosed for performing any one of the above methods.

[0251] In the present disclosure, a decoder for decoding video data is provided, the decoder including one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing programming for execution by the processors, the programming, when executed by the processors, configuring the decoder to perform any one of the methods described above.

[0252] As described herein, a network device suitable for implementing the disclosed embodiments is described below. The network device includes an ingress port and a receiver unit (Rx) for receiving data, a processor, logic unit, or central processing unit (CPU) for processing the data, a transmitter unit (Tx) and an egress port for transmitting data, and a memory for storing data. The network device may also include optical-electrical (OE) and electrical-optical (EO) components coupled to the ingress port, receiver unit, transmitter unit, and egress port for entering and exiting optical or electrical signals.

[0253] The processor is implemented by hardware and software. The processor can be implemented as one or more CPU chips, cores (e.g., multi-core processors), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor communicates with the ingress port, the receiver unit, the transmitter unit, the egress port, and the memory. The processor includes a coding module. The coding module implements the disclosed embodiments described above. For example, the coding module implements, processes, prepares, or provides various networking functions. Thus, the inclusion of the coding module provides substantial improvements to the functionality of the network device and affects the transformation of the network device into different states. Alternatively, the coding module is implemented as instructions stored in memory and executed by the processor.

[0254] The memory may include one or more disks, tape drives, and solid state drives, and may be used as overflow data storage devices, to store programs when such programs are selected for execution, and to store instructions and data loaded during the execution of the programs. The memory may be volatile and / or non-volatile, and may be read-only memory (ROM), random access memory (RAM), ternary content addressable memory (TCAM), and / or static random access memory (SRAM).

[0255] FIG. 20 is a block diagram of an apparatus 1500 that can be used to implement various embodiments. The apparatus 1500 can be a source device 12 as shown in FIG. 1, or a video encoder 20 as shown in FIG. 2, or a destination device 14 as shown in FIG. 1, or a video decoder 30 as shown in FIG. 3. Additionally, the apparatus 1500 can support one or more of the described elements. In some embodiments, the apparatus 1500 includes one or more input / output devices, such as a speaker, microphone, mouse, touch screen, keypad, keyboard, printer, display, etc. The apparatus 1500 can include one or more central processing units (CPUs) 1510, memory 1520, mass storage 1530, video adapter 1540, and an I / O interface 1560 connected to a bus. The bus can be one or more of any type of bus architecture, including a memory bus or memory controller, a peripheral bus, a video bus, etc.

[0256] CPU 1510 may include any type of electronic data processor. Memory 1520 may include 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), combinations thereof, and the like. In an embodiment, memory 1520 may include ROM for use during start-up and DRAM for program and data storage for use while executing programs. In an embodiment, memory 1520 is non-transitory. Mass storage 1530 includes any type of storage device that stores data, programs, and other information and makes the data, programs, and other information accessible via a bus. Mass storage 1530 may include, for example, one or more of a solid state drive, a hard disk drive, a magnetic disk drive, an optical disk drive, and the like.

[0257] Video adapter 1540 and I / O interface 1560 provide interfaces for coupling external input and output devices to apparatus 1500. For example, apparatus 1100 may provide a SQL command interface to a client. As shown, examples of input and output devices include a display 1590 coupled to video adapter 1540, and any combination of mouse / keyboard / printer 1570 coupled to I / O interface 1560. Other devices may be coupled to apparatus 1500, and additional or fewer interface cards may be used. For example, a serial interface card (not shown) may be used to provide a serial interface to a printer.

[0258] The device 1100 also includes one or more network interfaces 1550, including wired links such as Ethernet cables and / or wireless links to access nodes or one or more networks 1580. The network interface 1550 allows the device 1500 to communicate with remote units over the network 1580. For example, the network interface 1550 may provide communication to a database. In an embodiment, the device 1500 is coupled to a local area network or a wide area network for communication and data processing with remote devices such as other processing units, the Internet, or remote storage facilities.

[0259] A piecewise linear approximation is introduced to calculate the values ​​of the weighting factors required to predict pixels in a given block. The piecewise linear approximation significantly reduces the computational complexity of the distance weighting prediction mechanism compared to direct weighting factor calculations on the one hand, and helps achieve a higher accuracy of the weighting factor values ​​compared to prior art simplifications on the other hand.

[0260] The embodiments may be applied to other bidirectional and position-dependent intra prediction techniques (e.g., different modifications of PDPC) as well as mechanisms that use weighting factors that depend on the distance from one pixel to another to blend different parts of a picture (e.g., some blending methods in image processing).

[0261] Although several embodiments have been provided in this disclosure, it should be understood that the disclosed system and method may be embodied in many other specific forms without departing from the spirit or scope of the disclosure. The present examples should be considered as illustrative and not restrictive, and the intention is not to be limited to the details provided in this application. For example, various elements or components may be combined or integrated into another system, or certain features may be omitted or not implemented.

[0262] Additionally, the techniques, systems, subsystems, and methods described and illustrated individually or separately in various embodiments may be combined or integrated with other systems, modules, techniques, or methods. Other items shown or discussed as being coupled or directly coupled or in communication with each other may be indirectly coupled or in communication through some interface, device, or intermediate component, whether electrically, mechanically, or otherwise. Other examples of modifications, substitutions, and alternatives will be ascertainable and possible by those skilled in the art.

[0263] Implementations of the subject matter and operations described in this disclosure can be realized in digital electronic circuitry, or computer software, firmware, or hardware, including the structures disclosed in this disclosure and their structural equivalents, or a combination of one or more of them. Implementations of the subject matter described in this disclosure can be realized as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a computer storage medium for execution by or to control the operation of a data processing apparatus. Alternatively or additionally, the program instructions may be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal generated to encode information for transmission to a suitable receiver apparatus for execution by the data processing apparatus. A computer storage medium, e.g., a computer readable medium, may be or be included in a computer readable storage device, a computer readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Furthermore, while a computer storage medium is not a propagated signal, a computer storage medium may be a source or destination of computer program instructions encoded in an artificially generated propagated signal. A computer storage medium may also be or be contained in one or more separate physical and / or non-transitory components or media (e.g., multiple CDs, disks, or other storage devices).

[0264] In some implementations, the operations described in this disclosure may be realized as hosted services provided on servers in a cloud computing network. For example, computer-readable storage media may be logically grouped and accessible in a cloud computing network. The servers in the cloud computing network may include a cloud computing platform for providing cloud-based services. The terms "cloud," "cloud computing," 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 delivered over a network to client platforms to enhance, supplement, or replace applications that run locally on the client computers. Using cloud-based services, a circuit may quickly receive software upgrades, applications, and other resources that would otherwise require a long time before the resources could be delivered to the circuit.

[0265] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may correspond to a file in a file system, but this is not required. A program may be stored as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in several coordinated files (e.g., a file that stores one or more modules, subprograms, or code portions). A computer program may be deployed to be executed on one computer or on several computers that are located at one site or distributed across several sites and interconnected by a communication network.

[0266] The processes and logic flows described in this disclosure may be performed by one or more programmable processors executing one or more computer programs to perform operations by operating on input data and generating output. The processes and logic flows may also be performed by, or devices may be implemented as, special purpose logic circuitry, such as a field programmable gate array (FPGA) or application-specific integrated circuit (ASIC).

[0267] Processors suitable for executing a computer program include, for example, both general purpose and special purpose microprocessors, and any one or more processors of any kind of digital computer. Typically, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing operations according to the instructions, and one or more memory devices for storing instructions and data. Typically, a computer will also include one or more mass storage devices, such as magnetic, magneto-optical, or optical disks, for storing data, or be operatively coupled to receive data therefrom or transmit data thereto, or both. However, a computer need not have such devices. Additionally, a computer may be incorporated in other devices, 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 universal serial bus (USB) flash drive), to name a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including, for example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, special purpose logic circuitry.

[0268] Although the present disclosure includes many specific implementation details, these should not be construed as limitations on the scope of any implementation or what may be claimed, but rather as descriptions of features specific to the particular implementation of a particular implementation. Certain features described in the present 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 implementations separately or in any suitable subcombination. Furthermore, although features may be described above as working in a particular combination, and even initially claimed as such, one or more features of a claimed combination may, in some cases, be carved out of the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination.

[0269] Similarly, although the figures depict acts in a particular order, this should not be understood as requiring such acts to be performed in the particular order depicted, or in sequential order, or that all of the acts illustrated be performed, to achieve desired results. In certain circumstances, multitasking and parallel processing may be advantageous. Furthermore, it should be understood that the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and that the program components and systems described above may generally be integrated together in a single software product or packaged in multiple software products.

[0270] Thus, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims may be performed in a different order and still achieve desirable results. Moreover, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.

[0271] Although several embodiments have been provided in this disclosure, it should be understood that the disclosed system and method may be embodied in many other specific forms without departing from the spirit or scope of the disclosure. The present examples should be considered as illustrative and not limiting, and the intention is not to be limited to the details provided herein. For example, various elements or components may be combined or integrated into another system, or certain features may be omitted or not implemented.

[0272] Furthermore, the techniques, systems, subsystems, and methods described and illustrated individually or separately in various embodiments can be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items illustrated or discussed as being coupled or directly coupled or in communication with each other can be indirectly coupled or in communication through some interface, device, or intermediate component, whether electrically, mechanically, or otherwise. Other examples of modifications, substitutions, and alterations will be ascertainable by those skilled in the art and can be made without departing from the spirit and scope of the present disclosure.

[0273] Acronym Definitions and Glossary JEM Joint Exploration Model (a software codebase for future video coding exploration) JVET Joint Video Experts Team LUT Look-Up Table QT QuadTree QTBT QuadTree plus Binary Tree RDO Rate-distortion Optimization ROM Read-Only Memory VTM VVC Test Model VVC Versatile Video Coding, a standardization project developed by JVET CTU / CTB Coding Tree Unit / Coding Tree Block CU / CB Coding Unit / Coding Block PU / PB Prediction Unit / Prediction Block TU / TB Transform Unit / Transform Block HEVC High Efficiency Video Coding

Claims

1. 1. A video coding method for performing an intra prediction process for a current coding block, the method comprising: obtaining an intra-prediction mode of the current coding block; performing an intra prediction process of the current coding block according to the intra prediction mode of the current coding block by performing a reference sample filtering process on reference samples of the current coding block when the intra prediction mode of the current coding block is a diagonal mode, where the diagonal mode represents an angle that is a multiple of 45 degrees, the diagonal mode does not include a vertical mode and a horizontal mode, and the reference sample filtering process is performed based on a 3-tap [1,2,1] filtering; performing an intra prediction process of the current coding block according to the intra prediction mode of the current coding block by performing an interpolation filtering process on reference samples of the current coding block when the intra prediction mode of the current coding block is a directional mode but is not one of the following directional intra prediction modes: vertical mode, horizontal mode, and diagonal mode, wherein the interpolation filtering process is performed using an interpolation filter selected from a set of interpolation filters for intra prediction, the set of interpolation filters including a Gaussian filter and a cubic filter, and the directional intra prediction mode is an angular mode of index 2 to 66; performing an intra prediction process of the current coding block according to the intra prediction mode of the current coding block and a reference sample of the current coding block, where if the intra prediction mode of the current coding block is a vertical mode or a horizontal mode, no filtering process is applied to the reference sample of the current coding block; The method includes:

2. The method of claim 1 , wherein the interpolation filtering process is performed to generate predicted samples that fall at fractional or integer positions between reference samples.

3. A computer program comprising program code for causing a computer to carry out the method according to claim 1 or 2.

4. 1. An apparatus for intra prediction of a current coding block in video encoding or decoding, comprising: a processing circuit, the processing circuit comprising: obtaining an intra-prediction mode of the current coding block; performing an intra prediction process of the current coding block according to the intra prediction mode of the current coding block by performing a reference sample filtering process on reference samples of the current coding block when the intra prediction mode of the current coding block is a diagonal mode, where the diagonal mode represents an angle that is a multiple of 45 degrees, the diagonal mode does not include a vertical mode and a horizontal mode, and the reference sample filtering process is performed based on a 3-tap [1,2,1] filtering; performing an intra prediction process of the current coding block according to the intra prediction mode of the current coding block by performing an interpolation filtering process on reference samples of the current coding block when the intra prediction mode of the current coding block is a directional mode but is not one of the following directional intra prediction modes: vertical mode, horizontal mode, and diagonal mode, wherein the interpolation filtering process is performed using an interpolation filter selected from a set of interpolation filters for intra prediction, the set of interpolation filters including a Gaussian filter and a cubic filter, and the directional intra prediction mode is an angular mode of index 2 to 66; performing an intra prediction process of the current coding block according to the intra prediction mode of the current coding block and a reference sample of the current coding block, where if the intra prediction mode of the current coding block is a vertical mode or a horizontal mode, no filtering process is applied to the reference sample of the current coding block; The apparatus is configured to: