Methods and apparatus for prediction
By classifying intra-prediction modes and applying tailored filtering techniques, the method enhances video coding efficiency and compression performance without compromising image quality.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- HUAWEI TECH CO LTD
- Filing Date
- 2026-03-12
- Publication Date
- 2026-06-16
AI Technical Summary
Existing video coding standards face challenges in achieving high compression ratios without sacrificing image quality, particularly in intra-prediction modes where the index list is not adaptive to current block characteristics.
The method and apparatus implement directional intra-prediction modes classified into groups A, B, and C, applying reference sample filtering or subpixel interpolation filtering based on the group classification, using a 3-tap filter for group A and interpolation filters for groups B and C, to enhance prediction accuracy.
This approach improves video coding efficiency by adapting filtering techniques to different intra-prediction modes, enhancing compression performance while maintaining image quality.
Smart Images

Figure 2026098043000001_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to the technical field of image and / or video coding and decoding, and particularly to methods and apparatuses for intra / inter prediction.
Background Art
[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 conversational applications such as video chat, video conferencing, DVDs and Blu-ray discs, video content acquisition and editing systems, and camcorders for security applications. The amount of video data required to depict even relatively short videos can be substantial, which can cause difficulties when the data is streamed or otherwise communicated over a communication network with limited bandwidth capacity. Therefore, video data is generally compressed before being communicated over modern telecommunication networks. Also, the size of the video can be a problem when the video is stored on a storage device due to potentially limited memory resources. 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 the digital video image. The compressed data is then received at the destination by a video decompression device that decodes the video data. Improved compression and decompression techniques that improve the compression ratio without sacrificing much of the image quality are desired due to limited network resources and the ever-increasing demand for higher video quality.
[0003] Digital video has been widely used since the introduction of DVD discs. Before transmission, video is encoded and transmitted using a transmission medium. Viewers receive the video, decode it using a viewing device, and display it. Over the years, video quality has improved, for example, with higher resolution, color depth, and frame rates. This has led to larger data streams, which are commonly transmitted today over the internet and mobile communication networks.
[0004] However, higher resolution video typically contains more information and therefore requires more bandwidth. To reduce bandwidth requirements, video coding standards have been introduced, including video compression. When video is encoded, bandwidth requirements (or corresponding memory requirements in the case of storage) are reduced. Often, this reduction comes at the expense of quality. Thus, video coding standards attempt to 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 divides coding units (CUs) into predictive units (PUs) or conversion units (TUs). The General-Purpose Video Coding (VVC) next-generation standard is the latest joint video project between the ITU-T Video Coding Expert Group (VCEG) and the ISO / IEC Video Expert 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 eliminates the concept of multiple partition types, namely the distinction between CU, PU, and TU, except where required for CUs that are too long for the maximum conversion length, thus supporting greater flexibility for CU partition shapes.
[0006] The processing of these coding units (CUs), also called blocks, depends on their size, spatial position, and coding mode, as specified by the encoder. Coding modes can be categorized into two groups, intra-predictive and inter-predictive modes, according to the type of prediction. Intra-predictive mode generates reference samples using samples (also called frames or images) from the same image and calculates predicted values for the samples in the block being reconstructed. Intra-predictive mode is also called spatial prediction. Inter-predictive mode is designed for temporal prediction and uses reference samples from previous or next pictures to predict the samples in 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 technologies (including current and short-term extensions for screen content coding and high dynamic range coding) that have compression capabilities significantly exceeding 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 this field.
[0008] The VTM (Versatile Test Model) standard uses 35 intra-modes, while the BMS (Benchmark Set) uses 67 intra-modes. The intra-mode coding scheme currently described in BMS is considered complex, and a drawback of the unselected mode set is that the index list is always constant and not adaptive based on the current block characteristics (e.g., the INTRA mode of its adjacent blocks). [Overview of the project]
[0009] Embodiments of the present application provide an apparatus and method for encoding and decoding according to an independent claim. The above and other objectives are achieved by the subject matter of the independent claims. Further implementations are evident from the dependent claims, specification and 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 step of performing intra-prediction processing of a current block according to a directional intra-prediction mode, the step of including reference sample filtering or subpixel 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 to belong to group B, a reference sample filter is applied to the reference sample, and if the directional intra-prediction mode is classified to belong to group C, an intra-reference sample interpolation filter is applied to the reference sample.
[0011] In the embodiment, if the directional intra-prediction mode is classified as belonging to group A, no filter is applied to the reference sample to generate the intra-predictor. In the 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 the filtered values to the intra-predictor according to 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 predicted samples corresponding to fractional or integer positions between reference samples, according to the directional intra-prediction mode.
[0012] In this 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 3-tap filter [1,2,1].
[0013] In one embodiment, the interpolation filter for the intra-prediction process for a given subpixel offset is selected from a set of filters, one of which is the same as the filter for the inter-prediction process.
[0014] In this embodiment, the interpolation filter has a length of 4 taps and a coefficient precision of 6 bits. In this embodiment, group B further includes wide-angle integer gradient modes.
[0015] For example, the wide-angle integer gradient mode is a directional intra-prediction mode other than horizontal, vertical, and diagonal, where the reference sample position for each predicted sample in the current block is non-fractional.
[0016] In one embodiment, group B further includes an intra-prediction mode in which the value of the intra-prediction angle parameter is a non-zero multiple of 32. In this embodiment, group B includes one or all of the 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 the current block in video coding or decoding, the apparatus comprising a processing circuit configured to perform intra-prediction processing of the current block according to a directional intra-prediction mode, comprising reference sample filtering or subpixel interpolation filtering applied to reference samples in one or more reference blocks, wherein the directional intra-prediction mode is 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 to belong to group B, a reference sample filter is applied to the reference sample, and if the directional intra-prediction mode is classified to belong to group C, an intra-reference sample interpolation filter is applied to the reference sample.
[0018] The further features and implementation forms of the device according to the second aspect of the present invention correspond to the features and implementation forms of the device according to the first aspect of the present invention.
[0019] According to a third aspect, the present invention relates to a computer program product including program code for executing any one of the above methods when executed by a computer or a processor.
[0020] Details of one or more embodiments are described in the accompanying drawings and the following description. Other features, objectives, and advantages will be apparent from the specification, drawings, and claims.
Brief Description of the Drawings
[0021] The following embodiments will be described in more detail in relation to the accompanying drawings and figures. [Figure 1] It is a block diagram showing an example of a video coding system configured to implement an embodiment of the present invention. [Figure 2] It is a block diagram showing an example of a video encoder configured to implement an embodiment of the present invention. [Figure 3] It is a block diagram showing an exemplary structure of a video decoder configured to implement an embodiment of the present invention. [Figure 4] It shows a schematic diagram showing 67 intra prediction modes. [Figure 5] It shows a first usage example of different interpolation filters in intra and inter prediction. [Figure 6] It shows a second usage example of different interpolation filters in intra and inter prediction. [[ID=I37]] [Figure 7] It shows a third usage example of different interpolation filters in intra and inter prediction. [Figure 8] It shows the utilization of a common interpolation filter used for intra and inter prediction samples. [Figure 9]Embodiments are shown that use a filtering module related to the prediction of chrominance samples in motion compensation and the prediction of luminance and chrominance samples when performing intra prediction. [Figure 10] Embodiments are shown in which a hardware filtering module loads coefficients stored in a ROM. [Figure 11] Schematic diagrams of multiple intra prediction modes are shown. [Figure 12] Examples of interpolation filter selection for modes smaller and larger than diagonal for non-square blocks are shown. [Figure 13] Quadtree plus binary tree (QTBT) block partitioning is shown. [Figure 14] The horizontal and vertical directions of a block are shown. [Figure 15] The selection of an interpolation filter for a non-square block is schematically shown. [Figure 16] Embodiments of reference sample interpolation filter selection for non-square blocks are shown. [Figure 17] Alternative embodiments for reference sample interpolation filter selection for non-square blocks are shown. [Figure 18] Schematic diagrams showing 93 intra prediction directions are shown. [Figure 19] A block diagram of an apparatus according to an embodiment is shown. [Figure 20] A block diagram of an apparatus according to another embodiment is shown. [Figure 21] Blocks predicted using an intra prediction mode are shown.
Best Mode for Carrying Out the Invention
[0022] The following description includes references to the accompanying drawings, which form part of this disclosure and illustrate specific embodiments in which the invention may be applied. It should be understood that embodiments of the invention may be used in other embodiments and may include structural or logical modifications not shown in the drawings. Therefore, the following detailed description should not be taken as restrictive, and the scope of the invention is defined by the appended claims.
[0023] For example, it is understood that disclosures relating to a described method may also apply to the corresponding device or system configured to perform the method, and vice versa. For example, if one or more specific method steps are described, the corresponding device may include one or more units, e.g., functional units (e.g., one unit that performs one or more steps, or multiple units, each performing one or more of the steps) to perform the described method steps, even if such one or more units are not explicitly described or illustrated in the figures. On the other hand, if a particular device is described based on one or more units, e.g., functional units, the corresponding method may include one step (e.g., one step that performs the function of one or more units, or multiple steps, each performing one or more of the functions of the units) to perform the function of one or more units, even if such one or more steps are not explicitly described or illustrated in the figures. Furthermore, it is understood that the various exemplary embodiments and / or features described herein may be combined with each other unless otherwise specified.
[0024] Video coding typically refers to the processing of a series of pictures that make up a video or video sequence. The terms picture, image, or frame may be used synonymously in the field of video coding as well as in this application. Each picture is typically divided into a set of non-overlapping blocks. Encoding / decoding of pictures is typically performed at the block level; for example, inter-frame prediction or intra-frame prediction generates a predicted block, which is subtracted from the current block (the block currently being processed / to be processed) to obtain a residual block, which is then transformed and quantized to reduce (compress) the amount of data to be transmitted, while on the decoder side, the reverse process is applied to the encoded / compressed block to reconstruct the block for representation.
[0025] In lossless video coding, the original video picture can be reconstructed, meaning the reconstructed video picture has the same quality as the original video picture (assuming no transmission loss or other data loss during storage or transmission). In non-lossless video coding, further compression is performed, for example by quantization, to reduce the amount of data representing video pictures that cannot be fully reconstructed by the decoder, meaning the quality of the reconstructed video picture is lower or degraded compared to the original video picture.
[0026] Several video coding standards belong to the group of "non-lossless hybrid video codecs" (i.e., combining spatial and temporal prediction in the sample domain with 2D transform coding to apply quantization in the transform domain). Each picture in a video sequence is typically divided into a set of non-overlapping blocks, and coding is typically performed at the block level. In other words, in an encoder, video is typically processed, or encoded, at the block (video block) level by, for example, generating predicted blocks using spatial (intra-picture) and / or temporal (inter-picture) predictions, obtaining residual blocks by subtracting the predicted blocks from the current blocks (blocks currently being processed / to be processed), transforming the residual blocks, and quantizing the residual blocks in the transform domain to reduce (compress) the amount of data to be transmitted. In a decoder, the reverse process compared to the encoder is applied to the encoded or compressed blocks to reconstruct the current blocks for representation. Furthermore, the encoder will duplicate the decoder processing loop, resulting in both generating identical predictions (e.g., intra and inter predictions) and / or reconstructions for processing, i.e., coding, subsequent blocks.
[0027] In the following embodiments of the video coding system 10, the video encoder 20 and the video decoder 30 are described with reference to Figure 1-3.
[0028] Figure 1 is a conceptual or schematic block diagram showing an exemplary coding system 10, for example, a video coding system that can utilize the technology of the present application (present disclosure). The encoder 20 (e.g., video encoder 20) and decoder 30 (e.g., video decoder 30) of the video coding system represent examples of devices that can be configured to perform the technology according to the various examples described herein. As shown in Figure 1, the coding system includes a source device 12 configured to provide encoded data 13, for example, an encoded picture 13, to a destination device 14 that decodes the encoded data 13, for example.
[0029] The source device 12 includes an encoder 20 and may additionally, i.e., optionally, include a picture source 16, a preprocessing unit 18, for example, a picture preprocessing unit 18, a communication interface, or a communication unit 22.
[0030] Picture Source 16 may include, for example, any type of picture capturing device for capturing real-world pictures, and / or a device for generating any type of picture or comment (for screen content encoding, some text on a screen is also considered an image or part of an image to be encoded), such as a computer graphics processor for generating computer-animated pictures, or any type of device for acquiring 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 having intensity values. A sample in the array can also be referred to as a pixel (short for pixel element) or pel. 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. Regarding color representation, typically three color components are used; i.e., a picture can be represented by, or contain, three sample arrays. In the RGB 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, for example, YCbCr, which includes a luminance component represented by Y (often L is used instead) and two chrominance components represented by Cb and Cr. The luminance (or abbreviated as luma) component Y represents brightness or gray level intensity (e.g., in a grayscale picture), while the two chrominance (or abbreviated as chroma) components Cb and Cr represent chromaticity or color information components. Therefore, a picture in the YCbCr format includes a luminance sample array of luminance sample values (Y) and two chrominance sample arrays of chrominance values (Cb and Cr). A picture in the RGB format can be converted to or transformed into the YCbCr format, and vice versa; this process is also known as color conversion. If the picture is monochrome, it may contain only a luminance sample array.
[0032] The picture source 16 (e.g., video source 16) can be, for example, a camera that captures pictures, memory that contains or stores previously captured or generated pictures, such as picture memory, and / or any kind of interface (internal or external) for acquiring or receiving pictures. The camera may be, for example, a local or integrated camera integrated with the source device, and the memory may be, for example, local or integrated memory integrated with the source device. The interface may be, for example, an external video source, an external picture capture device such as a camera, external memory, or an external picture generation device, such as an external computer graphics processor, computer, or server, for example. The interface can be any kind of interface that conforms to any proprietary or standardized interface protocol, such as a wired or wireless interface or an optical interface. The interface for acquiring picture data 17 may be the same interface as or part of the communication interface 22.
[0033] In distinguishing between the preprocessing unit 18 and the processing performed by the preprocessing unit 18, the picture or picture data 17 (e.g., video data 16) may also be referred to as the preprocessing picture or preprocessing picture data 17.
[0034] The preprocessing unit 18 is configured to receive (pre-processed) picture data 17, perform preprocessing on the picture data 17, and obtain a preprocessed picture 19 or preprocessed picture data 19. The preprocessing performed by the preprocessing unit 18 may include, for example, cropping, color format conversion (e.g., RGB to YCbCr), color correction, or noise reduction. It can be understood that the preprocessing unit 18 may be an optional component.
[0035] The encoder 20 (for example, a video encoder 20) is configured to receive preprocessed picture data 19 and provide encoded picture data 21 (further details will be described below, for example, based on Figure 2).
[0036] The communication interface 22 of the source device 12 can be configured to receive 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 store encoded data 13 and / or process the encoded picture data 21 before transmitting the encoded data 13 to another device, such as the destination device 14 or any other device, for decoding or storage.
[0037] The destination device 14 includes a decoder 30 (e.g., a video decoder 30) and may additionally, or optionally, include a communication interface or communication unit 28, a post-processing unit 32, and a display device 34.
[0038] The communication interface 28 of the destination device 14 is configured to receive encoded picture data 21 or encoded data 13, for example, directly from the source device 12, or from any other source, such as a storage device, such as a storage device for encoded picture data.
[0039] Communication interfaces 22 and 28 can be configured to transmit or receive encoded picture data 21 or encoded data 13 via a direct communication link between the source device 12 and the destination device 14, for example, via a direct wired or wireless connection, or via any type of network, for example, a wired or wireless network or any combination thereof, or any type of private and public network or any combination thereof.
[0040] The communication interface 22 can be configured to package the encoded picture data 21 into an appropriate format, such as a packet, for transmission over a communication link or communication network.
[0041] A communication interface 28, which forms a counterpart to communication interface 22, can be configured, for example, to depackage the encoded data 13 in order to obtain the encoded picture data 21.
[0042] Both communication interfaces 22 and 28 can be configured as one-way communication interfaces, as indicated by the arrows in Figure 1A pointing from source device 12 to destination device 14, and can be configured to set up connections, for example, to send and receive messages, in order to confirm and exchange any other information relating to the communication link and / or data transmission, such as the transmission of encoded picture data.
[0043] The decoder 30 is configured to receive the encoded picture data 21 and provide the decoded picture data 31 or the decoded picture 31 (further details will be described below, for example, based on Figure 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), for example, the decoded picture 31, to obtain post-processed picture data 33, for example, the post-processed picture 33. The post-processing performed by the post-processing unit 32 may include, for example, color format conversion (e.g., YCbCr to RGB), color correction, cropping, or resampling, or any other processing, for example, preparing the decoded picture data 31 for display by the display device 34.
[0045] The display device 34 of the destination device 14 is configured to receive post-processed picture data 33 for displaying the picture, for example, to a user or viewer. The display device 34 may be any type of display for representing the reconstructed picture, for example, an integrated or external display or monitor, or may include them. The display may include, for example, a liquid crystal display (LCD), an organic light-emitting diode (OLED) display, a plasma display, a projector, a microLED display, a liquid crystal on silicon (LCoS), a digital optical processor (DLP), or any other type of display.
[0046] Figure 1 depicts the source device 12 and the destination device 14 as separate devices, but the device embodiments may also include the functions of both or both, the source device 12 or its corresponding function, and the destination device 14 or its corresponding function. In such embodiments, the source device 12 or its corresponding function and the destination device 14 or its corresponding function 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 apparent to those skilled in the art based on the specification, the presence and (strict) division of functions or functions of various units in the source device 12 and / or destination device 14 shown in Figure 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) can each be implemented as various arbitrary suitable circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, or any combination thereof. If the technology is partially implemented in software, the device can store the software instructions in a suitable non-temporary computer-readable storage medium, and can execute the instructions in hardware using one or more processors to perform the technology of this disclosure. Any of the above (including hardware, software, and combinations of hardware and software) may be considered as 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 an individual device.
[0049] The source device 12 and destination device 14 may be any device in a wide range of types, including handheld or stationary devices, such as notebook or laptop computers, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, set-top boxes, televisions, display devices, digital media players, video game consoles, video streaming devices (such as content service servers or content distribution servers), broadcast receiving devices, broadcast transmitting devices, etc., and may or may not use any type of operating system. In some cases, the source device 12 and destination device 14 may be equipped for wireless communication. Therefore, the source device 12 and destination device 14 may be wireless communication devices.
[0050] In some cases, the video coding system 10 shown in Figure 1 is merely an example, and the technology of the present invention may be applicable to video coding configurations (e.g., video coding or video decoding) that do not require any data communication between the coding device and the decoding device. In other examples, data is retrieved from local memory and streamed over a network, etc. The video coding device is capable of coding the data and storing it in memory, and / or the video decoding device is capable of retrieving the data from memory and decoding it. In some examples, coding and decoding are performed by devices that do not communicate with each other but only code the data into memory and / or retrieve and decode the data from memory.
[0051] Figure 2 shows a schematic / conceptual block diagram of an exemplary video encoder 20 configured to realize the technology of the present invention. In the example of Figure 2, the video encoder 20 includes a residual calculation unit 204, a transformation processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transformation processing unit 212, a reconstruction unit 214, a buffer 216, a loop filter unit 220, a buffer for decoded pictures (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 shown in Figure 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 transformation processing unit 206, the quantization unit 208, the prediction processing unit 260, and the entropy coding unit 270 form the forward signal path of the encoder 20, while the inverse quantization unit 210, the inverse transformation processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the buffer for the decoded picture (DPB) 230, and the prediction processing unit 260 form the reverse signal path of the encoder, and the reverse signal path of the encoder corresponds to the signal path of the decoder (see decoder 30 in Figure 3).
[0053] The encoder 20 is configured to receive, for example, a picture from a sequence of pictures forming a video or video sequence, via input 202, picture 201, or block 203 of picture 201. Picture block 203 is also referred to as the current picture block or the picture block to be coded, and picture 201 is referred to as the current picture or the picture to be coded (in particular, in video coding, the current picture is distinguished from other pictures, for example, from previously coded and / or decoded pictures in the same video sequence, i.e., the video sequence which also includes the current picture).
[0054] The prediction processing unit 260 is also referred to as the block prediction processing unit 260 and is configured to receive or acquire block 203 (the current block 203 of the current picture 201) and reconstructed picture data, e.g., a reference sample of the same (current) picture from buffer 216, and / or reference picture data 231 from one or more previously decoded pictures from buffer 230 of decoded pictures, 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 can be configured to select a prediction mode (e.g., intra or inter-prediction mode) and / or the corresponding prediction block 245 or 255 to be used as the prediction block 265 for the calculation of the residual block 205 and for the reconstruction of the reconstructed block 215.
[0056] Embodiments of the mode selection unit 262 may be configured to select a prediction mode (for example, from those supported by the prediction processing unit 260) that provides the best match or, in other words, the smallest residual (the smallest residual means better compression for transmission or storage), or the smallest signaling overhead (the smallest signaling overhead means better compression for transmission or storage), or considers or balances both. The mode selection unit 262 may 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 in which the associated rate distortion satisfies at least the prediction mode selection criteria.
[0057] The intra-prediction unit 254 is further configured to make decisions based on intra-prediction parameters, such as the selected intra-prediction mode, and the intra-prediction block 255. In any case, after selecting the intra-prediction mode for the block, the intra-prediction unit 254 is also configured to provide the entropy coding unit 270 with information indicating the intra-prediction parameters, i.e., the selected intra-prediction mode for the block. In one example, the intra-prediction unit 254 may be configured to perform any combination of intra-prediction techniques described later.
[0058] Embodiments of encoder 20 may include a picture partitioning unit (not shown in Figure 2) configured to divide a picture into multiple (typically non-overlapping) picture blocks. These blocks may also be referred to as root blocks, macro blocks (H.264 / AVC), or coding tree blocks (CTB) or coding tree units (CTU) (H.265 / HEVC and VVC). The picture partitioning unit may be configured to use the same block size and corresponding grid defining the block size for all pictures in a video sequence, or to change the block size between pictures, subsets, or groups of pictures, dividing each picture into a corresponding block.
[0059] Similar to Picture 201, a Picture Block is again a two-dimensional array or matrix of samples having intensity values (sample values), although it is smaller in dimensions than a picture, or can be thought of as such. In other words, a block may include, for example, one sample array (e.g., a Luma array in the case of a monochrome picture, or a Luma or Chroma array in the case of a color picture) or three sample arrays (e.g., a Luma and two Chroma arrays in the case of a color picture), or any other number and / or type of arrays depending on the applied color format. The number of samples in the horizontal and vertical (or axis) directions of the block defines the size of the block. Thus, a block may be, for example, an MxN (M columns N rows) array of samples, or an MxN array of conversion coefficients.
[0060] As shown in Figure 2, the encoder embodiment can be configured to encode the picture block by block, for example, encoding and prediction are performed block by block.
[0061] The embodiment of the video encoder shown in Figure 2 can further be configured to partition and / or encode a picture by using slices (also called video slices), where the picture is partitioned into one or more slices (typically non-overlapping), and each slice may contain one or more blocks (e.g., CTUs).
[0062] The embodiment of the video encoder shown in Figure 2 can be further configured to partition and / or encode a picture by using tile groups (also called video tile groups) and / or tiles (also called video tiles), wherein the picture can be partitioned into one or more (typically non-overlapping) tile groups, each tile group can contain, for example, one or more blocks (e.g., CTUs) or one or more tiles, each tile may be, for example, rectangular in shape and may contain one or more blocks (e.g., CTUs), for example, complete or fragmented blocks.
[0063] Figure 3 shows an exemplary video decoder 30 configured to realize the technology of the present application. The video decoder 30 is configured to receive encoded picture data (e.g., encoded bitstream) 21, for example, encoded by encoder 100, to obtain a decoded picture 131. During the decoding process, the video decoder 30 receives from video encoder 100 an encoded video bitstream representing video data, for example, picture blocks and associated syntax elements of an encoded video slice.
[0064] In the example shown in Figure 3, the decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transformation unit 312, a reconstruction unit 314 (e.g., an adder 314), a buffer 316, a loop filter 320, a buffer 330 for the decoded picture, and a prediction unit 360. The prediction unit 360 may include an inter-prediction unit 344, an intra-prediction unit 354, and a mode selection unit 362. In some examples, the video decoder 30 can perform a decoding path that is roughly the reverse of the encoding path described with respect to the video encoder 100 in Figure 2.
[0065] The entropy decoding unit 304 is configured to perform entropy decoding on the encoded picture data 21 to obtain, for example, quantization coefficients 309 and / or decoded coding parameters (not shown in Figure 3), such as (decoded) inter-prediction parameters, intra-prediction parameters, loop filter parameters, and / or other syntax elements. The entropy decoding unit 304 is further configured to transfer the inter-prediction parameters, intra-prediction parameters, and / or other syntax elements to the prediction processing unit 360. The video decoder 30 can receive the syntax elements at the video slice level and / or video block level.
[0066] The inverse quantization unit 310 may be functionally identical to the inverse quantization unit 110, the inverse transformation processing unit 312 may be functionally identical to the inverse transformation 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] The prediction processing unit 360 may include an inter-prediction unit 344 and an intra-prediction unit 354, where the inter-prediction unit 344 may be functionally similar to the inter-prediction unit 144, and the intra-prediction unit 354 may be functionally similar to the intra-prediction unit 154. The prediction processing unit 360 is typically configured to perform block prediction and / or retrieve prediction blocks 365 from encoded data 21, and to receive or retrieve (explicitly or implicitly) information regarding prediction-related parameters and / or selected prediction modes from, for example, the entropy decoding unit 304.
[0068] When a video slice is encoded as an intra-coded (I) slice, the intra-prediction unit 354 of the prediction processing unit 360 is configured to generate a prediction block 365 for the picture block of the current video slice based on data from previously decoded blocks of the current frame or picture and the signaled intra-prediction mode. When a video frame is coded as an inter-coded (i.e., B or P) slice, the inter-prediction unit 344 (e.g., a motion compensation unit) of the prediction processing unit 360 is configured to generate a prediction block 365 for the video block of the current video slice based on motion vectors received from the entropy decoding unit 304 and another syntax element. With respect to inter-prediction, the prediction block may be generated from one reference picture in one reference picture list. The video decoder 30 can configure reference frame lists, List0 and List1, by using default configuration techniques based on reference pictures stored in the DPB 330.
[0069] The prediction processing unit 360 is configured to determine prediction information for the video blocks of the current video slice by analyzing motion vectors and other syntax elements, and to use that prediction information to generate prediction blocks for the current video blocks to be decoded. For example, the prediction processing unit 360 uses some of the received syntax elements to determine the prediction mode used to code the video blocks of the video slice (e.g., intra or interpredict), the interpredict slice type (e.g., B slice, P slice, or GPB slice), configuration information for one or more of the reference picture lists for the slice, motion vectors for each intercoded video block of the slice, the interpredict status for each intercoded video block of the slice, and other information for decoding the video blocks in the current video slice.
[0070] The inverse quantization unit 310 is configured to inverse quantize, i.e., dequantize, the quantization transformation 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 quantization parameters calculated by the video encoder 100 for each video block in the video slice.
[0071] The inverse transformation processing unit 312 is configured to generate residual blocks in the pixel domain by applying an inverse transformation, such as an inverse DCT, an inverse integer transformation, or a conceptually similar inverse transformation process, to the transformation coefficients.
[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, thereby obtaining the reconstructed block 315 in the sample domain by adding, for example, the sample values of the reconstructed residual block 313 and the sample values of the prediction block 365.
[0073] The loop filter unit 320 (either within or after the encoding loop) is configured to filter the reconstructed block 315 to obtain the filtered block 321, for example, to smooth pixel transitions or to improve video quality in other ways. In one example, the loop filter unit 320 can be configured to perform any combination of filtering techniques described later. 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, such as a bilateral filter or adaptive loop filter (ALF), a sharpening or smoothing filter, or a co-filter. Although the loop filter unit 320 is shown as an in-loop filter in Figure 3, in other configurations, the loop filter unit 320 may be implemented as a post-loop filter.
[0074] Next, the decoded video block 321 in a given frame or picture is stored in a decoded picture buffer 330, which stores a reference picture to be used for subsequent motion compensation.
[0075] The decoder 30 is configured to output the decoded picture 331, for example via output 332, for presentation or display to the user.
[0076] Other variations of the video encoder 30 can be used to decode a compressed bitstream. For example, the decoder 30 can generate an output video stream without a loop filtering unit 320. For example, a non-conversion-based decoder 30 can directly dequantize the residual signal for a particular block or frame without an inverse conversion unit 312. In another implementation, the video decoder 30 can combine the inverse quantization unit 310 and the inverse conversion unit 312 into a single unit.
[0077] The embodiment of the video decoder 30 shown in Figure 3 can be configured to partition and / or decode a picture by using slices (also called video slices), and the picture can be partitioned or decoded into one or more slices (typically non-overlapping), each slice can contain one or more blocks (e.g., CTUs).
[0078] The embodiment of the video decoder 30 shown in Figure 3 can be configured to partition and / or decode a picture by using tile groups (also called video tile groups) and tiles (also called video tiles), the picture can be partitioned or decoded into one or more (typically non-overlapping) tile groups, each tile group can contain, for example, one or more blocks (e.g., CTUs) or one or more tiles, each tile may be, for example, rectangular in shape and may contain one or more blocks (e.g., CTUs), for example, complete or fragmented blocks.
[0079] It should be understood that encoders and decoders may process the results of the current step further and output them to the next step. For example, after interpolation filtering, motion vector derivation, or loop filtering, further processing such as clipping or shifting may be performed on the results of interpolation filtering, motion vector derivation, or loop filtering.
[0080] According to the HEVC / H.265 standard, 35 intra-predictive modes are available. This set includes the following modes: planar mode (intra-predictive mode index is 0), DC mode (intra-predictive mode index is 1), and directional (angle) modes that cover a range of 180° and have an intra-predictive mode index value range of 2 to 34. To capture any edge direction 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 Figure 4, while the planar and DC modes remain the same. It is worth noting that the range covered by the intra-predictive modes can be wider than 180°. In particular, the 62 directional modes with index values from 3 to 64 cover a range of approximately 230°, meaning that some pairs of modes have opposite directions. For the HEVC reference model (HM) and JEM platform, as shown in Figure 4, only one pair of angle modes (i.e., modes 2 and 66) have opposite directions. To construct a predictor, the conventional angular mode takes reference samples and (if necessary) filters them to obtain a sample predictor. The number of reference samples required to construct the predictor depends on the length of the filter used for interpolation (for example, bilinear and cubic filters have lengths of 2 and 4, respectively).
[0081] Figure 4 shows an example of 67 intra-prediction modes proposed for VVC, where multiple intra-prediction modes include a planar mode (index 0), a dc mode (index 1), and angular modes having indices 2 through 66, with the lower left angular mode in Figure 4 being index 2, and the index numbering incrementing until index 66 is the upper right angular mode in Figure 4.
[0082] Video coding schemes such as H.264 / AVC and HEVC are designed according to the successful principle of block-based hybrid video coding. Using this principle, a picture is first divided into blocks, and then each block is predicted using intra-picture or inter-picture prediction.
[0083] As used in this application, the term “block” may be part of a picture or frame. For ease of explanation, embodiments of the present invention are described herein with reference to reference software for High Efficiency Video Coding (HEVC) or General-Purpose Video Coding (VVC), developed by the ITU-T Video Coding Expert Group (VCEG) and the ISO / IEC Video Expert 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. They may refer to CUs, PUs, and TUs. In HEVC, a CTU is divided into CUs by using a quadtree structure, shown 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 can be further divided into one, two, or four PUs, depending on the PU division type. Within a single PU, the same prediction processing is applied, and relevant information is transmitted to the decoder at the PU level. After obtaining residual blocks by applying a prediction process based on the PU partitioning type, the CU can be partitioned into transformation units (TUs) according to another quadtree structure similar to the coding tree of the CU. In recent developments of video compression technology, quadtree and binary tree (QTBT) partitioning is used to partition coding blocks. In the QTBT block structure, the CU can have either a square or rectangular shape. For example, a coding tree unit (CTU) is first partitioned by a quadtree structure. The quadtree leaf nodes are further partitioned by a binary tree structure. The binary tree leaf nodes are called coding units (CUs), and their segmentation is used for prediction and transformation processing 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 for use 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 technologies (including current and near-future extensions for screen content coding and high dynamic range coding) that have compression capabilities significantly exceeding those of the current HEVC standard. The groups are working together in exploratory activities in a collaborative effort known as the Joint Video Exploration Team (JVET) to evaluate compression technology designs proposed by experts in this field.
[0085] The Versatile Test Model (VTM) uses 35 intra-modes, while the Benchmark Set (BMS) uses 67 intra-modes. Intra-prediction is a mechanism used in many video coding frameworks to increase compression efficiency when only a given frame is involved.
[0086] As shown in Figure 4, the latest version of JEM has several modes corresponding to skew-intra prediction directions. For any of these modes, interpolation of an adjacent set of reference samples should be performed to predict a sample in a block, if the corresponding position within the block side is fractional. HEVC and VVC use linear interpolation between two adjacent 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 in conjunction 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, cubic 4-tap interpolation is applied. Otherwise, the interpolation filter is a 4-tap Gaussian.
[0087] Table 1 shows the specific filter coefficients used in JEM. The predicted samples are calculated by convolving with coefficients selected from Table 1, according to the subpixel offset and filter type, as follows:
number
[0088] If a cubic filter is selected, the predicted samples are further clipped to an acceptable range of values defined by the SPS or derived from the bit depth of the selected component. Table 1. Intra Predictive Interpolation Filters [Table 1]
[0089] Motion compensation processing also uses filtering to predict sample values when the displacement of pixels in the reference block is fractional. In JEM, 8-tap filtering is used for the luminance component and 4-tap length filtering is used for the chrominance component. The motion interpolation filter is first applied horizontally, and the output of the horizontal filtering is further filtered vertically. The coefficients for 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 utilize different interpolation filters in intra and inter-prediction. Figures 5 through 7, in particular, illustrate various examples of interpolation filters.
[0091] Figure 5 schematically shows the interpolation filters used in JEM. As can be seen from the figure, for motion compensation interpolation and fractional positions in interpretation, 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 intraprediction, either an 8-bit Gaussian 4-tap interpolation filter or an 8-bit cubic 4-tap interpolation filter is used.
[0092] Figure 6 schematically shows the interpolation filters proposed 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 from the figure, for motion compensation interpolation and fractional positions in intra-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] Figure 7 schematically shows 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 from the figure, for motion compensation interpolation and fractional positions in intra 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-compensated sub-PEL filter are reused to interpolate pixel values in the intra-predictor when they correspond to fractional positions between reference samples. Since the same hardware is intended to be used for both intra and intra-prediction, the precision of the filter coefficients should be consistent; that is, the number of bits representing the filter coefficients for intra-reference sample interpolation should be consistent with the coefficient precision of the motion-compensated interpolation filtering.
[0095] Figure 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 interpolation of both intra and inter prediction samples. An embodiment utilizing this design is shown in Figure 9. In this implementation, the filtering module is implemented as a separate unit engaged in both chrominance sample prediction in motion compensation and luminance and chrominance sample prediction when performing intra prediction. In this implementation, the hardware filtering unit is used for both intra and inter prediction processing.
[0096] Another embodiment, as shown in Figure 10, illustrates an implementation where only the LUT of filter coefficients is reused. In this embodiment, the hardware filtering module loads coefficients from the LUT stored in ROM. A switch shown in the intra-predictive processing determines the type of filter to be used, depending on the length of the primary side selected for the intra-predictive processing.
[0097] The embodiments of the present invention provided may use the following coefficients (see Table 3). Table 3: Intra and Interinterpolation Filters [Table 3]
[0098] The intra-predicted samples can be calculated by convolution with coefficients selected from Table 1 according to the subpixel offset and filter type, as follows:
number
[0099] When the "Unified Intra / Inter Filter" filter is selected, the predicted samples are further clipped to an acceptable range of values defined by the SPS or derived from the bit depth of the selected component.
[0100] For intra-reference sample interpolation and sub-per-motion compensation interpolation, the same filter can be used to reuse hardware modules and 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 be consistent with the precision of the coefficients of the reused filters mentioned above.
[0102] It should be noted that Luma processing in motion compensation does not necessarily use 8-tap filtering; it may also operate with 4-tap filtering. In this case, 4-tap filtering may be selected for consistency.
[0103] The method can be applied to different parts of intra-predictive processing that may involve interpolation. In particular, when expanding the primary reference sample, the reference sample may also be filtered using a unified interpolation filter (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 for details).
[0104] The intra-block copy operation also includes an interpolation step that may use the proposed method (see [Xiaozhong Xu, Shan Liu, Tzu-Der Chuang, Yu-Wen Huang, Shawmin Lei, Krishnakanth Rapaka, Chao Pang, Vadim Seregin, Ye-Kui Wang, Marta Karczewicz: Intra Block Copy in HEVC Screen Content Coding Extensions. IEEE J. Emerg. Sel. Topics Circuits Syst. 6(4): 409-419 (2016)] for a description of intra-block copy). A method for intra-prediction is provided, which includes using a chrominance component interpolation filter as an interpolation filter for intra-prediction of blocks.
[0105] In one embodiment, the look-up table for the interpolation filter for the chrominance component is the same as the look-up table for the interpolation filter for intra-prediction.
[0106] In the embodiment, the look-up table for the interpolation filter for the chrominance component is not the same as the look-up table for the interpolation filter for intra prediction.
[0107] In this embodiment, the interpolation filter is a 4-tap filter.
[0108] In this embodiment, the look-up table for the interpolation filter on the chrominance component is as follows: [Table 4]
[0109] A method for intra-prediction is provided, which includes selecting an interpolation filter from a set of interpolation filters for intra-prediction of a block.
[0110] In the embodiment, the set of interpolation filters includes a Gaussian filter and a cubic filter.
[0111] In one embodiment, the look-up table for the selected interpolation filter is the same as the look-up table for the interpolation filter for the chrominance component.
[0112] In this embodiment, the selected interpolation filter is a 4-tap filter.
[0113] In this embodiment, the selected interpolation filter is a cubic filter.
[0114] In this embodiment, the look-up table for the selected interpolation filter is as follows: [Table 5]
[0115] In this embodiment, the look-up table for the selected interpolation filter is as follows: [Table 6]
[0116] An encoder is provided which includes a processing circuit for performing any one of the above methods.
[0117] A decoder is provided that includes a processing circuit for performing any one of the above methods.
[0118] A computer program product is provided that includes program code for performing any one of the above methods.
[0119] A decoder is provided, comprising one or more processors and a non-temporary, computer-readable storage medium coupled to the processors, which stores a program for execution by the processors, wherein the program, when executed by the processors, configures the decoder to perform any one of the methods described above.
[0120] An encoder is provided, comprising one or more processors and a non-temporary, computer-readable storage medium coupled to the processors, which stores a program for execution by the processors, wherein the program, when executed by the processors, configures the encoder to perform any one of the methods described above.
[0121] For example, disclosures relating to a described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For instance, if a particular method step is described, the corresponding device may include a unit for performing the described method step, even if such a unit is not explicitly described or illustrated in the figures. Furthermore, features of the various exemplary embodiments described herein may be combined with each other unless otherwise specified.
[0122] A method for aspect ratio-dependent filtering for intra-prediction is provided, which includes selecting an interpolation filter for a predicted block depending on the aspect ratio of the block.
[0123] In one example, the interpolation filter is selected depending on the direction in which the intra-prediction mode of the predicted block is thresholded.
[0124] In one example, the direction corresponds to the angle of the main diagonal of the predicted block.
[0125] In one example, the angle of direction is,
number
[0126] In one example, the aspect ratio is RA = log2(W) - log2(H) Here, W and H are the predicted width and height of the block, respectively.
[0127] In one example, the predicted angles of the main diagonals of a block are determined based on the aspect ratio.
[0128] In one example, the threshold for the block's intra-prediction mode is determined based on the angle of the main 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 straight 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 may include a cubic interpolation filter or a Gaussian interpolation filter.
[0133] In one implementation of this invention, a frame is the same as a picture.
[0134] In one implementation of this 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 corresponding to the angular mode, the value corresponding to intra-mode 2 is 2, which may be the minimum value corresponding to the angular mode, and the value corresponding to DIA_IDX is 34.
[0135] This disclosure aims to improve intra-mode signaling schemes. This disclosure proposes a video decoding method and a video decoder.
[0136] In another embodiment of this disclosure, a decoder including a processing circuit is disclosed and configured to perform the decoding method described above.
[0137] In another aspect of this disclosure, a computer program product is provided which includes program code for performing any one of the above-described decryption methods.
[0138] In another aspect of the present disclosure, a decoder for decoding video data is provided, the decoder comprising one or more processors and a non-temporary computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures the decoder to perform any one of the above decoding methods.
[0139] The processing circuit can be implemented in hardware, or in combination with hardware and software, such as by a software-programmable processor.
[0140] The processing circuit can be implemented in hardware, or in combination with hardware and software, for example, by a software-programmable processor.
[0141] Figure 11 shows a schematic diagram of the multiple intra-prediction modes used in the HEVC UIP scheme. With respect to a luminance block, the intra-prediction modes can include up to 36 modes, which can include 3 non-directional modes and 33 directional modes. Non-directional modes may include planar prediction modes, mean (DC) prediction modes, and chroma-from-luma (LM) prediction modes. Planar prediction modes can perform predictions by assuming a block amplitude surface with horizontal and vertical slopes derived from the block boundaries. DC prediction modes can perform predictions by assuming a flat block surface with values matching the average value of the block boundaries. LM prediction modes can perform predictions by assuming that the chroma value for a block matches the luma value for a block. Directional modes can perform predictions based on adjacent blocks, as shown in Figure 11.
[0142] H.264 / AVC and HEVC specify that a low-pass filter may be applied to reference samples before they are used in intra-prediction processing. The decision of whether or not to use a reference sample filter is determined by the intra-prediction mode and block size. This mechanism is sometimes called mode-dependent intra-smoothing (MDIS). There are also several methods related to MDIS. For example, Adaptive Reference Sample Smoothing (ARSS) signals whether or not to filter predictive samples, either explicitly (i.e., by including a flag in the bitstream) or implicitly (i.e., by using data hiding to avoid flagging in the bitstream and reduce signaling overhead). In this case, the encoder can make a 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 skew-intra prediction directions. For any of these modes, interpolation of an adjacent set of reference samples should be performed to predict a sample in a block, if the corresponding position within the block side is fractional. HEVC and VVC use linear interpolation between two adjacent 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 in conjunction 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 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, cubic 4-tap interpolation is applied. Otherwise, the interpolation filter is a 4-tap Gaussian.
[0144] In the case of a 32x4 block, examples of interpolation filter selection for modes smaller and larger than the diagonal (shown as 45°) are shown in Figure 12.
[0145] VVC uses a partitioning mechanism known as QTBT, which is based on both quadtrees and binary trees. As shown in Figure 13, QTBT partitioning can provide not only square blocks but also rectangular blocks. Of course, some signaling overhead and increased computational complexity on the encoder side are the trade-offs for QTBT partitioning compared to the conventional quadtree-based partitioning used in the HEVC / H.265 standard. Nevertheless, QTBT-based partitioning provides better segmentation characteristics and therefore exhibits significantly higher coding efficiency than conventional quadtrees.
[0146] However, in its current state, VVC applies the same filter to both sides (left and top) of the reference sample. Whether the block is vertical or horizontal, the reference sample filter will be the same on both sides of the reference sample.
[0147] In this document, the terms “vertical block” (“vertical block”) and “horizontal block” (“horizontal block”) apply to the rectangular blocks generated by 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 orientation of a block. Specifically, the width and height of the block are examined independently, and as a result, different reference sample filters are applied to reference samples located on different sides of the expected block.
[0149] In the prior art review, it was explained that the selection of the interpolation filter is in harmony with the decision regarding the selection of the primary reference. Both of these decisions currently depend on a comparison between the intra-prediction mode and the diagonal (45-degree) direction.
[0150] However, it can be acknowledged that this design has a significant flaw for elongated blocks. From Figure 15, it can be observed that even if the shorter side is selected as the primary reference using a mode comparison criterion, the majority of the predicted pixels will still be derived from the longer side reference sample (shown as the dashed area).
[0151] This disclosure proposes using an alternative direction to threshold the intra-prediction mode during the interpolation filter selection process. Specifically, the direction corresponds to the angle of the main diagonal of the predicted block. 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 Figure 16.
[0152] A specific value for the threshold intra-prediction angle can be calculated using the following formula.
number
[0153] Another embodiment of this disclosure uses different interpolation filters depending on which side the reference sample used belongs to. An example of this determination is shown in Figure 17.
[0154] A straight line with an angle corresponding to the intra-direction m divides the predicted block into two areas. Samples belonging to different areas are predicted using different interpolation filters.
[0155] Exemplary values of mT (for the set of intra-prediction modes defined in BMS1.0) and their corresponding angles are given in Table 4. The angle α is given as shown in Figure 16. Table 4. Example values for mT (for the set of intra-prediction modes defined in BMS1.0) [Table 7]
[0156] Compared to existing technologies and solutions, this disclosure uses samples within a block predicted using different interpolation filters, the interpolation filters used to predict the samples are selected according to the block shape, whether horizontal or vertical, and the intra-prediction mode angle.
[0157] This disclosure may be applicable at the reference sample filtering stage. In particular, it is possible to determine the reference sample smoothing filter using the same rules described above for the interpolation filter selection process.
[0158] In addition to interpolation filtering, reference sample filtering can also be applied to reference samples immediately before predicting a sample in the intra predictor. The filtered reference samples obtained after reference sample filtering can be used either 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 reference samples in this manner. Table 5. Exemplary Reference Sample Filter [Table 8]
[0159] Figure 21 shows the current block 1130, indicated by a thick border around it, which includes sample 1120. Furthermore, the drawing shows a reference sample 1110 from an adjacent block. For example, the reference sample may be from the block above or the block to the left.
[0160] According to the embodiment, the provided method includes the following steps: 1. Each selected directional intra-prediction mode is classified into one of the following groups: A. Vertical or horizontal mode, B. Diagonal mode representing angles that are multiples of 45 degrees. C. Remaining directional modes; 2. If the directional intra-prediction mode is classified as belonging to group A, the filter is not applied to reference sample 1110 in order to generate sample 1120 belonging to the intra-predictor. Reference sample 1110 is separated from sample 1120 within the predicted block (intra-predictor) using the block boundary 1130, as shown in Figure 11; 3. If the mode falls under Group B, a reference sample filter (any reference sample filter shown in Table 5, e.g., [1,2,1]) is applied to the reference samples, 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, only the intra-reference sample interpolation filter (e.g., the filter shown in Table 3) is applied to the reference samples to generate predicted samples corresponding to fractional or integer positions between the reference samples according to the selected direction (no reference sample filtering is performed).
[0161] According to the embodiment, the provided method provides the following steps: 1. The directional intra-prediction mode for the current block's intra-prediction processing falls 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 modes; 2. If the directional intra-prediction mode is classified as belonging to group B, the reference sample filter is applied to the reference sample; 3. 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.
[0162] In other words, depending on the classification of the intra-prediction mode to be used for the current block's intra-prediction, 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. Specifically, if the reference sample filter in the directional intra-prediction mode is not a fractional sample, the interpolation filter is not applied. In other words, if the reference sample in the prediction direction is an integer sample, the interpolation filter does not need to be used.
[0164] Furthermore, depending on the classification, filters may not be used at all. For example, in the case of 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 sample, as shown in Figure 21. Depending on the intra-prediction mode, the corresponding position of the reference sample is determined for each predicted sample. If the mode has a non-integer gradient, the position of the reference sample is fractional, and the reference sample value is obtained by applying an interpolation filter to a subset of reference samples adjacent to this fractional position.
[0166] The position of this reference sample within the reference sample line 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 relative to the predicted sample position. The value of this offset depends on the mode angle and the distance from the predicted sample to the reference sample line. When the intra-prediction mode is 2 or VDIA_IDX, the prediction angle is equal to 45 degrees, and the offset value is equal to the distance to the reference sample line.
[0167] The diagonal modes in Group B may also include integer gradient wide-angle modes. In this case, similar to modes DIA_IDX and VDIA_IDX, the offset value 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.
[0168] For example, if multi-reference line prediction is not used (reference line index is equal to zero), and the predicted sample position within a block is equal to (1,3) relative to the top-left predicted sample with position (0,0), then if the intra-prediction mode is greater than DIA_IDX, the distance to the reference sample line is equal to 4 samples. If the intra-prediction mode is less than DIA_IDX, this distance is equal to 2.
[0169] If the intra-prediction mode is wide-angle mode and its gradient is an integer, the predicted sample values can be calculated as follows: If the intra prediction mode is greater than DIA_IDX predSamples[x,y]=p[ x +Δ] [ -1], Δ = N * (y+1) And if not, predSamples[x,y]=p[-1][ y +Δ], Δ = N * (x+1) Here, Δ represents the offset value. For 45-degree angle mode 2 and VDIA_IDX, the value N is equal to 1.
[0170] The mode representing angles that are multiples of 45 degrees uses the same formula to determine the predicted sample “predSamples[x][y]”, but the value of N will be an integer greater than 1. Note that the mode representing angles that are multiples of 45 degrees does not necessarily include the horizontal and vertical modes.
[0171] It can be seen that the offset value Δ for the wide-angle integer gradient mode is a multiple of the offset for mode 2 and mode VDIA_IDX.
[0172] Generally, the offset value can be mapped to the intra-prediction mode (predModeIntra) using the parameter “intraPredAngle”. The specific mapping of this parameter to the intra-prediction mode is shown in Table 6 below. Table 6 - Specifications of intraPredAngle [Table 9]
[0173] The inverse angle parameter invAngle is derived based on intraPredAngle as follows: invAngle = Round(256*32 / intraPredAngle)
[0174] An illustrative derivation of the prediction sample is described below: The values for the prediction sample predSamples[x][y], x=0..nTbW-1, y=0..TbH-1 are derived as follows: - If predModeIntra is 34 or higher, the following sequential steps apply: 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 expanded 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 example 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 multiplier 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 expanded 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 multiplier 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 examples and table above, it can be seen that the interpolation calls for some modes are redundant. Specifically, this occurs for modes with a corresponding intraPredAngle parameter that is a multiple of 32. The value 32 corresponds to a mode with an integer gradient of 45 degrees. In fact, the value of predAngle is a 5-bit fixed-point integer representation of the offset value that would be used for the predicted sample adjacent to the line of the reference sample.
[0179] Specifically, for modes [-14, -12, -10, -6, 2, 34, 66, 72, 76, 78, 80], the calculation of predicted samples does not require interpolation. The predicted sample values can be obtained by copying the reference samples.
[0180] A version of the VVC draft specification incorporating an exemplary implementation of the disclosure is given in the following text: 8.4.4.2.1 General Intra Sample Prediction The input for this process is as follows: - The sample position (xTbCmp, yTbCmp) that specifies the top-left sample of the current transformation block relative to the top-left sample of the current picture. - Variable predModeIntra, which specifies the intra prediction mode. - Variable nTbW, which specifies the width of the conversion block. - Variable nTbH, which specifies the height of the transformation block. - Variable nCbW that specifies the coding block width, - Variable nCbH that specifies the coding block height, - A variable cIdx that specifies the color component of the current block. The output of this process is the predicted sample 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 if cIdx is not equal to 0, the following applies: refW = nTbW * 2 (8-103) refH = nTbH * 2 (8-104) - If not (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-predictive 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 apply: 1. The reference sample availability marking process, as specified in clause 8.4.4.2.2 of Bross B et al.: “Versatile Cideo Coding (Draft 4)”, JVET-M1001-v7, March 2019, (hereinafter this document will be referred to as JVET-M1001-v7), is called with the input sample position (xTbCmp, yTbCmp), intra-predicted reference line index refIdx, reference sample width refW, reference sample height refH, and color component index cIdx, and with the output reference sample refUnfilt[x][y], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = - refIdx..refW - 1, y = -1 - refIdx.
[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 a reference sample replacement process as specified in clause 8.4.4.2.3 of JVET-M1001-v7 may be performed using the intra-prediction reference line index refIdx, reference sample width refW, reference sample height refH, reference sample refUnfilt[ x ][ y ],x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = - refIdx..refW - 1, y = -1 - refIdx, and color component index cIdx as input, and the modified reference sample refUnfilt[ x ][ y ] The function is called with the output ], 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 clause 8.4.4.2.7 and later, along with the intra prediction mode predModeIntra, the intra prediction reference line index refIdx, the transformed block width nTbW, the transformed 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 and later, is invoked with the following inputs: intra-predicted reference line index refIdx, transformed block width nTbW and height nTbH, reference sample width refW, reference sample height refH, unfiltered sample refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, RefFilterFlag parameter, and color component index cIdx, and with the following outputs: reference sample 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 using predModeIntra is applied as follows: - If predModeIntra is equal to INTRA_PLANAR, the corresponding intra predictive mode processing specified in clause 8.4.4.2.5 of JVET-M1001-v7 is invoked with the transformed block width nTbW and transformed block height nTbH, as well as the reference sample array p, as inputs, and the output is the predicted sample array predSamples.
[0188] - If not, and predModeIntra is equal to INTRA_DC, the corresponding intra predictive mode processing specified in clause 8.4.4.2.6 of JVET-M1001-v7 is invoked with the transformed block width nTbW, transformed block height nTbH, and reference sample array p as inputs, and the output is the predicted sample array predSamples.
[0189] - If not, and predModeIntra is equal to INTRA_LT_CCLM, INTRA_L_CCLM, or INTRA_T_CCLM, the corresponding intra-prediction mode processing specified in clause 8.4.4.2.8 is invoked with the intra-prediction mode predModeIntra, sample positions (xTbC, yTbC) set to equal (xTbCmp, yTbCmp), transformed block width nTbW and height nTbH, and reference sample array p as input, and the output is the predicted sample array predSamples.
[0190] - Otherwise, the corresponding intra-prediction mode processing specified in clause 8.4.4.2.8 and later is invoked with the intra-prediction mode predModeIntra, intra-prediction reference line index refIdx, converted block width nTbW, converted block height nTbH, reference sample width refW, reference sample height refH, coding block width nCbW and height nCbH, interpolation filter selection flag InterpolationFlag, and reference sample array p as inputs, and with the modified intra-prediction mode predModeIntra and predicted sample array predSamples as outputs.
[0191] The position-dependent predictive sample filtering process specified in clause 8.4.4.2.9 of JVET-M1001-v7 is invoked with the following inputs: intra-prediction mode predModeIntra, transformed block width nTbW, transformed block height nTbH, predicted samples predSamples[x][y], x = 0..nTbW - 1, y = 0..nTbH - 1, reference sample width refW, reference sample height refH, reference samples p[x][y], x = -1, y = -1..refH - 1 and x = 0..refW - 1, y = -1, and color component index 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 for this process is as follows: - Variable refIdx that specifies the intra-reference line index, - Variable nTbW, which specifies the width of the conversion block. - Variable nTbH, which specifies the height of the transformation block. - 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 is the reference sample p[x][y], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx.
[0193] The following applies to the derivation of the reference sample p[x][y]: - 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 value p[x][y] is set to equal the unfiltered sample value 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 Specifications of intraPredAngle parameters and derivation of filter flags The input for this process is as follows: - Intra predictive mode predModeIntra, - Variable nTbW that specifies the width of the conversion block - Variable nTbH that specifies the height of the transformation block - Variable nCbW that specifies the coding block width - Variable nCbH that specifies the coding block height - Color component index cIdx The output of this process is the 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 if cIdx is not equal to 0, the following applies: nW = nTbW nH = nTbH - If not (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 to equal Abs(Log2(nW / nH)).
[0196] For non-square blocks (where nW is not equal to nH), the intra prediction mode predModeIntra is modified as follows: - If all of the following conditions are true, predModeIntra will be set to equal (predModeIntra + 65). - nW is greater than nH - predModeIntra is 2 or greater. - Is predModeIntra less than (whRatio > 1)? (8 + 2 * whRatio) : 8 - Otherwise, predModeIntra is set to (predModeIntra - 67) if all of the following conditions are true. - nH is greater than nW - predModeIntra is 66 or less. - Is predModeIntra greater than (whRatio > 1)? (60 - 2 * whRatio) : 60
[0197] The angle parameter intraPredAngle is determined using the value of predModeIntra as specified in Table 7. Table 7 - Specifications of intraPredAngle [Table 10]
[0198] The variable filterFlag is derived as follows: - If one or more of the following conditions are true, filterFlag is set to equal to 0. - 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, 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, 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 should never both be equal to 1 for any predModeIntra. (See Table 9.) Table 9 - Specifications of RefFilterFlag and InterpolationFlag (for reference) [Table 12]
[0203] 8.4.4.2.8 Specifications of Angle Intra Prediction Mode The input for this process is as follows: - Intra predictive mode predModeIntra - intraPredAngle parameters - Variable refIdx specifies the intra-predictive reference line index. - Variable nTbW that specifies the width of the conversion block - Variable nTbH that specifies the height of the transformation block - Variable refW specifies the reference sample width. - Variable refH that specifies the reference sample height - Variable nCbW that specifies the coding block width - Variable nCbH that specifies the coding block height - Variable to specify the use of 4-tap filter interpolation: InterpolationFlag - Variable RefFilterFlag that specifies whether adjacent samples are filtered. - 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 corrected 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 to equal to (Log2(nTbW) + Log2(nTbH)) >> 1.
[0206] Figure 18 shows 93 prediction directions, where the dashed lines relate to the wide-angle mode, which 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 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 34 or higher, the following sequential steps apply: 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 - When intraPredAngle is less than 0, the primary reference sample array is extended as follows: - When (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 ] - Otherwise, ref[ x ] = p[ -1 - refIdx + x ][ -1 - refIdx ],x = nTbW + 1 + refIdx..refW + refIdx ref[ -1 ] = ref
[0000] - The additional samples ref[ refW + refIdx +x ], x = 1..(Max( 1, nTbW / nTbH ) * refIdx + 1) are derived as follows: ref[ refW + refIdx +x ] = p[ -1 + refW ][ -1 - refIdx ]
[0210] 2. The values of the prediction samples 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] - If not (predModeIntra is less than 34), the following sequential steps apply: 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 expanded 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 extended 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 multiplier 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 predicted block size, wide-angle modes may belong to different groups. In the given example below, these modes would still belong to either group "B" or group "C," depending on whether they have non-fractional gradients. However, the selection of interpolation filters for group "C" modes and the presence of a reference sample filtering step for group "B" modes depend on the block size. The part of the filterFlag derivation can be modified as follows: The variable filterFlag is derived as follows: - If one or more of the following conditions are true, filterFlag is set to equal to 0. - 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, the variable filterFlag is set to nTbS > 5 ? 1 : 0. - Otherwise, if intraPredAngle is greater than 32 and nTbW*nTbH is greater than 32, the variable filterFlag is set to 1.
[0214] - If not, the following applies: - The variable minDistVerHor is set to equal 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, filterFlag is set to equal to 1.
[0215] Table 11 - Specifications of intraHorVerDistThres[nTbS] for various conversion block sizes nTbS [Table 14]
[0216] The wide-angle mode may be a mode that shows the lower part of the lower left quadrant, the right part, or the upper right quadrant. Specifically, in the example shown in Figure 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 the embodiments of this disclosure includes the following sections relating to reference sample filtering, which are given below. ru: For the generation of 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 apply:
[0218] 1. The reference sample availability marking process, as specified in clause 8.4.4.2.2 of JVET-M1001-v7, is called with the sample position (xTbCmp, yTbCmp), intra-predicted reference line index refIdx, reference sample width refW, reference sample height refH, and color component index cIdx as input, and the reference sample refUnfilt[x][y], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = - refIdx..refW - 1, y = -1 - refIdx as output.
[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 a reference sample replacement process as specified in clause 8.4.4.2.3 of JVET-M1001-v7 may be performed, taking the intra-prediction reference line index refIdx, reference sample width refW, reference sample height refH, reference sample refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, and 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 are called as output. If predModeIntra is not equal to INTRA_PLANAR and predModeIntra is not equal to INTRA_DC, the parameter intraPredAngle is obtained by calling the corresponding intra-predictive mode processing as specified in clause 8.4.4.2.7 and later; otherwise, if predModeIntra is equal to INTRA_PLANAR, intraPredAngle is set to 32; otherwise, intraPredAngle is set to 0.
[0220] 3. Reference sample filtering, as specified in Clause 8.4.4.2.4 and later, is called with input the intra-predicted reference line index refIdx, transformed block width nTbW and height nTbH, reference sample width refW, reference sample height refH, unfiltered sample refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, intraPredAngle parameter, and color component index cIdx, and output the reference sample p[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx.
[0221] The intra-sample prediction process using predModeIntra is applied as follows: - If predModeIntra is equal to INTRA_PLANAR, the corresponding intra-prediction mode processing specified in clause 8.4.4.2.5 of JVET-M1001-v7 is invoked with a converted block width nTbW, a converted block height nTbH, and a reference sample array p as inputs, and the output is the predicted sample array predSamples.
[0222] - If not, and predModeIntra is equal to INTRA_DC, the corresponding intra predictive mode processing specified in clause 8.4.4.2.6 of JVET-M1001-v7 is invoked with a converted block width nTbW, a converted block height nTbH, and a reference sample array p as inputs, and the output is the predicted sample array predSamples.
[0223] - If not, and predModeIntra is equal to INTRA_LT_CCLM, INTRA_L_CCLM, or INTRA_T_CCLM, the corresponding intra-prediction mode processing specified in clause 8.4.4.2.8 and later is invoked with the intra-prediction mode predModeIntra, sample position (xTbC, yTbC) set to equal (xTbCmp, yTbCmp), transformed block width nTbW and height nTbH, and reference sample array p as input, and the output is the predicted sample array predSamples.
[0224] - Otherwise, if one or more of the following conditions are true, fourTapFlag is set to 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 processing specified in clause 8.4.4.2.7 and later is invoked with the intra-prediction mode predModeIntra, intra-prediction reference line index refIdx, converted block width nTbW, converted block height nTbH, reference sample width refW, reference sample height refH, coding block width nCbW and height nCbH, fourTapFlag, and reference sample array p as inputs, and with the modified intra-prediction mode predModeIntra and predicted sample array predSamples as outputs.
[0226] 8.4.4.2.4 Reference Sample Filtering Process The input for this process is as follows: - Variable refIdx specifies the intra-predictive reference line index. - Variable nTbW that specifies the width of the conversion block - Variable nTbH that specifies the height of the transformation block - Variable refW specifies the reference sample width. - Variable refH that specifies the reference sample height - (Unfiltered sample) Adjacent sample refUnfilt[ x ][ y ], x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 - refIdx, - predIntraAngle parameter - A variable cIdx that specifies the color component of the current block. The output of this process is the reference sample 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 to 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 to equal to 0.
[0228] The following applies to the derivation of the reference sample p[x][y]: - 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 value p[x][y] is set to equal the unfiltered sample value 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 Specifications of intraPredAngle parameters The input for this process is as follows: - Intra predictive mode predModeIntra, - Variable nTbW that specifies the width of the conversion block - Variable nTbH that specifies the height of the transformation block - Variable nCbW that specifies the coding block width - Variable nCbH that specifies the coding block height
[0230] The output of this process is the modified intra-prediction mode (predModeIntra), the intraPredAngle parameter, and the filterFlag variable.
[0231] The variables nW and nH are derived as follows: - If IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT, or if cIdx is not equal to 0, the following applies: nW = nTbW (8-125) nH = nTbH (8-126) - If not (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 to equal Abs(Log2(nW / nH)).
[0232] For non-square blocks (where nW is not equal to nH), the intra prediction mode predModeIntra is modified as follows: - If all of the following conditions are true, predModeIntra will be set to equal to (predModeIntra + 65). - nW is greater than nH - predModeIntra is 2 or greater. - Is predModeIntra less than (whRatio > 1)? (8 + 2 * whRatio) : 8 - Otherwise, if all of the following conditions are true, predModeIntra is set to (predModeIntra - 67). - nH is greater than nW - predModeIntra is 66 or less. - Is predModeIntra greater than (whRatio > 1)? (60 - 2 * whRatio) : 60
[0233] The angle parameter intraPredAngle is determined using the predModeIntra value as specified in Table 12. Table 12 - Specifications of intraPredAngle [Table 15]
[0234] The variable filterFlag is derived as follows: - If one or more of the following conditions are true, filterFlag is set to 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. - If not, the following applies: - The variable minDistVerHor is set to equal 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, filterFlag is set to equal to 1.
[0235] 8.4.4.2.8 Specifications of Angle Intra Prediction Mode The input for this process is as follows: - Intra predictive mode predModeIntra, - intraPredAngle parameters, - Variable refIdx specifies the intra-predicted reference line index. - Variable nTbW, which specifies the width of the conversion block. - Variable nTbH that specifies the height of the transformation block - Variable refW specifies the reference sample width. - Variable refH that specifies the reference sample height - Variable nCbW that specifies the coding block width - Variable nCbH that specifies the coding block width - Variable fourTapFlag to specify the use of 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 corrected 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 to equal to (Log2(nTbW) + Log2(nTbH)) >> 1.
[0238] The variable filterFlag is derived as follows: - If one or more of the following conditions are true, filterFlag is set to 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. - If not, the following applies: - The variable minDistVerHor is set to equal Min( Abs( predModeIntra - 50 ), Abs( predModeIntra - 18 ) ). - The variable `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, filterFlag is set to equal 1. - Otherwise, filterFlag is set to equal to 0.
[0239] Table 13 - Specifications of intraHorVerDistThres[nTbS] for various conversion block sizes nTbS [Table 16]
[0240] Figure 18 shows 93 prediction directions, with the dashed lines indicating directions related to wide-angle modes that apply 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 34 or higher, the following sequential steps apply: 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 (8-130) - If intraPredAngle is less than 0, the primary reference sample array is expanded 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 example 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 multiplier 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 apply: - 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] - If not (predModeIntra is less than 34), the following sequential steps apply: 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 expanded 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 multiplier 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] Figure 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 inlet 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 exit 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 inlet port 1310, receiver unit 1320, transmitter unit 1340, and exit port 1350 for the input and output 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., a multi-core processor), field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 1330 communicates with the inlet port 1310, the receiver unit 1320, the transmitter unit 1340, the exit port 1350, and the memory 1360. The processor 1330 includes a coding module 1370. The coding module 1370 implements the embodiments disclosed above. For example, the coding module 1370 implements, processes, prepares, or provides various networking functions. Therefore, including the coding module 1370 results in a substantial improvement to the functionality of the network device 1300 and affects the conversion of the network device 1300 to different states. Alternatively, the coding module 1370 is implemented as an instruction stored in memory 1360 and executed by processor 1330.
[0248] Memory 1360 includes one or more disks, tape drives, and solid-state drives, and can be used as an overflow data storage device, storing programs when such programs are selected for execution, and storing instructions and data read during program execution. Memory 1360 may be volatile and / or non-volatile, and may be read-only memory (ROM), random-access memory (RAM), ternarily content-addressable memory (TCAM), and / or static random-access memory (SRAM).
[0249] A decoder is provided which includes a processing circuit configured to perform any one of the above methods.
[0250] In this disclosure, a computer program product is provided, and the computer program product, including program code, is disclosed to perform any one of the methods described above.
[0251] In this disclosure, a decoder for decoding video data is provided, the decoder comprising one or more processors and a non-temporary computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures the decoder to perform any one of the above methods.
[0252] Network devices suitable for carrying out the disclosed embodiments, as described herein, are described below. The network device includes an inlet 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 exit port for transmitting data, and memory for storing data. The network device may also include optical-electrical (OE) components and electrical-optical (EO) components coupled to the inlet port, receiver unit, transmitter unit, and exit port for the entry and exit of 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., a multi-core processor), field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor communicates with inlet ports, receiver units, transmitter units, exit ports, and memory. The processor includes coding modules. The coding modules implement the embodiments disclosed above. For example, the coding modules implement, process, prepare, or provide various networking functions. Therefore, including coding modules results in a substantial improvement to the functionality of the network device and affects the conversion of the network device to different states. Alternatively, the coding modules are implemented as instructions stored in memory and executed by the processor.
[0254] Memory includes one or more disks, tape drives, and solid-state drives, and can be used as an overflow data storage device, storing programs when such programs are selected for execution, and storing instructions and data read during program execution. Memory may be volatile and / or non-volatile, and may be read-only memory (ROM), random-access memory (RAM), ternarily content-addressable memory (TCAM), and / or static random-access memory (SRAM).
[0255] Figure 20 is a block diagram of a device 1500 that can be used to implement various embodiments. The device 1500 may be a source device 12 as shown in Figure 1, or a video encoder 20 as shown in Figure 2, or a destination device 14 as shown in Figure 1, or a video decoder 30 as shown in Figure 3. Furthermore, the device 1500 can respond to one or more of the elements described. In some embodiments, the device 1500 includes one or more input / output devices such as a speaker, microphone, mouse, touchscreen, keypad, keyboard, printer, and display. The device 1500 may also include one or more central processing units (CPUs) 1510, memory 1520, mass storage 1530, a video adapter 1540, and an I / O interface 1560 connected to a bus. The bus is one or more of any type of bus architecture, including a memory bus or memory controller, peripheral bus, video bus, etc.
[0256] The CPU 1510 may have any type of electronic data processor. The memory 1520 may have any type of system memory, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), read-only memory (ROM), or a combination thereof. In embodiments, the memory 1520 may include ROM for use at startup and DRAM for program and data storage for use while a program is running. In embodiments, the memory 1520 is non-temporary. The 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 the bus. The mass storage 1530 includes, for example, one or more of the following: solid-state drives, hard disk drives, magnetic disk drives, optical disk drives, etc.
[0257] The video adapter 1540 and the input / output interface 1560 provide interfaces for connecting external input and output devices to the device 1500. For example, the device 1100 may provide an SQL command interface to a client. As shown in the figure, examples of input and output devices include a display 1590 connected to the video adapter 1540 and any combination of a mouse / keyboard / printer 1570 connected to the I / O interface 1560. Other devices may be connected to the device 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] Furthermore, the device 1100 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 interfaces 1550 enable the device 1500 to communicate with remote units via the network 1580. For example, the network interfaces 1550 can provide communication to a database. In embodiments, the device 1500 is coupled to a local area network or a wide area network for communication with other processing units, the Internet, remote devices such as remote storage facilities, and for data processing.
[0259] Piecewise linear approximation is introduced to compute the weight coefficient values required to predict pixels within a given block. Piecewise linear approximation significantly reduces the computational complexity of the distance-weighted prediction mechanism compared to direct weight coefficient calculation, and helps achieve higher accuracy in weight coefficient values compared to the simplification of prior art.
[0260] The embodiments may be applicable not only to mechanisms that use distance-dependent weighting coefficients to blend different parts of a picture (e.g., several blending methods in image processing), but also to other bidirectional and position-dependent intra-prediction techniques (e.g., different modifications of PDPC).
[0261] While several embodiments are provided in this disclosure, it should be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of this disclosure. These embodiments should be considered illustrative and not restrictive, and their intent is not limited to the details given herein. For example, various elements or components may be combined or integrated into other systems, or certain features may be omitted or not implemented.
[0262] Furthermore, the technologies, systems, subsystems, and methods described and illustrated individually or separately in various embodiments may be combined or integrated with other systems, modules, technologies, or methods. Other items shown or discussed as being coupled to one another, directly coupled, or communicating with one another may be indirectly coupled or communicated through several interfaces, devices, or intermediate components, whether electrically, mechanically, or otherwise. Other examples of modifications, substitutions, and alternatives are verifiable and implementable by those skilled in the art.
[0263] Implementations of the subjects and operations described in this disclosure can be implemented in computer software, firmware, or hardware, or one or more combinations thereof, including digital electronic circuits, or the structures disclosed in this disclosure and their structural equivalents. Implementations of the subjects described in this disclosure can be implemented as one or more modules of computer program instructions encoded on a computer storage medium for execution by a data processing device or for controlling its operation. Alternatively or additionally, the program instructions may be encoded on artificially generated propagating signals, such as machine-generated electrical, optical, or electromagnetic signals generated to encode information for transmission to a suitable receiver device for execution by a data processing device. The computer storage medium, such as a computer-readable medium, may be a computer-readable storage device, a computer-readable storage board, a random or serial-access memory array or device, or one or more combinations thereof, or may be included therein. Furthermore, although the computer storage medium is not a propagating signal, the computer storage medium may be the source or destination of computer program instructions encoded on an artificially generated propagating signal. Furthermore, the computer storage medium may be one or more separate physical and / or non-temporary components or media (e.g., multiple CDs, disks, or other storage devices), or may be contained within them.
[0264] In some implementations, the operations described herein may be implemented as hosted services provided on servers within a cloud computing network. For example, computer-readable storage media may be logically grouped and accessible within a cloud computing network. Servers within a cloud computing network may include a cloud computing platform for providing cloud-based services. The terms “cloud,” “cloud computing,” and “cloud-based” can be used interchangeably without departing from the scope of this disclosure. A cloud-based service may be a hosted service provided by a server and delivered to a client platform over a network to enhance, supplement, or replace an application running locally on a client computer. A circuit can use a cloud-based service to quickly receive software upgrades, applications, and other resources that would otherwise require a long time before they 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 a compiled or interpreted language, a declarative or procedural language, and can be deployed in any form, either as a standalone program or contained within a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but is not required, correspond to a file in a file system. A program may be stored in 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 multiple collaborative files (e.g., a file storing one or more modules, subprograms, or parts of code). A computer program may be deployed to run on a single computer, or on multiple computers located in one site or distributed across multiple sites and interconnected by a communication network.
[0266] The processes and logic flows described herein can be executed by one or more programmable processors running one or more computer programs, acting on input data and producing outputs to perform the operations. The processes and logic flows may also be executed by special-purpose logic circuits, such as FPGAs (field programmable gate arrays) or ASICs (application-specific integrated circuits), or devices may be implemented as such.
[0267] Processors suitable for executing computer programs include, for example, both general-purpose and dedicated microprocessors, and any one or more processors in any type of digital computer. Generally, a processor will receive instructions and data from read-only memory or random-access memory or both. Essential elements of a computer are a processor for performing actions according to instructions, and one or more memory devices for storing instructions and data. Generally, a computer will also include one or more mass storage devices for storing data, such as magnetic, magneto-optical disks, or optical disks, or will be operablely coupled for receiving data from them, transmitting data to them, or both. However, a computer is not required to have such devices. Furthermore, a computer may be incorporated into other devices, for example, mobile phones, personal digital assistants (PDAs), mobile audio or video players, game consoles, global positioning system (GPS) receivers, or portable storage devices (e.g., Universal Serial Bus (USB) flash drives). Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, such as semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Processors and memory may be supplemented by or incorporated into special-purpose logic circuits.
[0268] While this disclosure includes many specific implementation details, these should not be interpreted as limitations on the scope of any implementation or claimable features, but rather as descriptions of implementation-specific features within the specificity of a particular implementation. Specific features described in this disclosure in the context of separate implementations may also be implemented in combination in a single implementation. Conversely, various features described in the context of a single implementation may also be implemented separately in multiple implementations or in any appropriate subcombination. Furthermore, while features may be described above as acting in a particular combination, and may even be initially claimed as such, one or more features in a claimed combination may, in some cases, be extracted from the combination, and the claimed combination may be directed to a subcombination or a variation of a subcombination.
[0269] Similarly, while the diagrams show operations in a specific order, this should not be understood as requiring that such operations be performed in the specific illustrated order or sequential order, or that all illustrated operations be performed, in order to achieve the desired result. Under certain circumstances, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system components in the implementation described above should not be understood as requiring such separation in all implementations, and it should be understood 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, specific implementations of the subject matter have been described. Other implementations fall within the scope of the following claims. In some cases, the operations described in the claims may be performed in a different order, and the desired results may still be achieved. Furthermore, the processes shown in the accompanying drawings do not necessarily require the specific order or sequence shown to achieve the desired results. In certain implementations, multitasking and parallel processing may be advantageous.
[0271] While several embodiments have been provided in this disclosure, it should be understood that the disclosed systems and methods can be embodied in many other specific forms without departing from the spirit or scope of this disclosure. These embodiments should be considered illustrative, non-limiting, and non-existent, and their intent is not limited to the details given herein. For example, various elements or components can be combined or integrated into other systems, or certain features may be omitted or not implemented.
[0272] Furthermore, the technologies, systems, subsystems, and methods described and illustrated individually or separately in various embodiments may be combined with or integrated with other systems, modules, technologies, or methods without departing from the scope of this disclosure. Other items illustrated or discussed to be coupled to, directly coupled to, or to communicate with one another may be indirectly coupled or to communicate with each other, whether electrically, mechanically, or otherwise, through some interfaces, devices, or intermediate components. Other examples of modifications, substitutions, and alternatives are evident to those skilled in the art and may be made without departing from the spirit and scope disclosed herein.
[0273] Definitions and glossary of acronyms 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) is a standardization project being 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. A method for intra-predicting the current block in video encoding, A step of generating a predicted block by performing intra-prediction processing on the current block according to a directional intra-prediction mode, comprising reference sample filtering or subpixel interpolation filtering applied to reference samples in one or more reference blocks, wherein the directional intra-prediction mode is an angular mode of a plurality of intra-prediction modes, wherein the plurality of intra-prediction modes includes a planar mode with index 0, a DC mode with index 1, and angular modes with index 2 to 66, and the directional intra-prediction mode is in the following group: A. Vertical or horizontal mode, B. Diagonal mode, C. Remaining Directional Modes It is classified as one of the following: If the directional intra-prediction mode is classified as belonging to group B, the reference sample filter is applied to the reference sample. 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 sample; A step of obtaining a residual block by subtracting the predicted block from the current block; and A step of performing transformation and quantization on the residual block to obtain a bitstream; A method that includes this.
2. The method according to claim 1, wherein the reference sample filter is a three-tap [1,2,1] filter.
3. The method according to claim 1 or 2, wherein the intra-reference sample interpolation filter is a Gaussian filter or a cubic filter.
4. The method according to claim 1, wherein if the directional intra prediction mode is classified as belonging to group A, neither the reference sample filter nor the intra reference sample interpolation filter is applied to the reference sample.
5. If the directional intra-prediction mode is classified as belonging to group B, then, according to the directional intra-prediction mode, the reference sample filter is applied to the reference sample to copy the filtered values to the intra-predictor, and The method according to any one of claims 1 to 3, wherein, if the directional intra-prediction mode is classified to belong to group C, the intra-reference sample interpolation filter is applied to the reference samples in order to generate predicted samples corresponding to fractional or integer positions between the reference samples according to the directional intra-prediction mode.
6. A method for intra-prediction of the current block in video decoding, The step of analyzing the bitstream to obtain the residual block of the current block; A step of obtaining a predicted block by performing intra-prediction processing on the current block according to a directional intra-prediction mode, comprising reference sample filtering or subpixel interpolation filtering applied to reference samples in one or more reference blocks, wherein the directional intra-prediction mode is an angular mode of a plurality of intra-prediction modes, wherein the plurality of intra-prediction modes includes a planar mode with index 0, a DC mode with index 1, and angular modes with index 2 to 66, and the directional intra-prediction mode is in the following groups: A. Vertical or horizontal mode, B. Diagonal mode, C. Remaining Directional Modes It is classified as one of the following: If the directional intra-prediction mode is classified as belonging to group B, the reference sample filter is applied to the reference sample. 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; and A step of reconstructing the current block based on the residual block and the predicted block; A method that includes this.
7. The method according to claim 6, wherein the reference sample filter is a three-tap [1,2,1] filter.
8. The method according to claim 6 or 7, wherein the intra-reference sample interpolation filter is a Gaussian filter or a cubic filter.
9. The method according to claim 6, wherein if the directional intra-prediction mode is classified as belonging to group A, neither the reference sample filter nor the intra-reference sample interpolation filter is applied to the reference sample.
10. If the directional intra-prediction mode is classified as belonging to group B, then, according to the directional intra-prediction mode, the reference sample filter is applied to the reference sample to copy the filtered values to the intra-predictor, and The method according to any one of claims 6 to 9, wherein, if the directional intra-prediction mode is classified to belong to group C, the intra-reference sample interpolation filter is applied to the reference samples to generate predicted samples corresponding to fractional or integer positions between the reference samples, according to the directional intra-prediction mode.
11. An encoding device comprising a processing circuit configured to perform the method described in any one of claims 1 to 5.
12. A decoding device comprising a processing circuit configured to perform the method described in any one of claims 6 to 10.
13. A computer program comprising program code for performing the method described in any one of claims 1 to 10 when executed on a computer or processor.
14. A video bitstream generated by a method for intra-predicting the current block in video encoding according to any one of claims 1 to 5, or by the apparatus of claim 11.