Encoder, decoder and corresponding method for filter modification of general intra-frame prediction process

By modifying the filter of the general intra-frame prediction process and using the filter indication to select the filtered or unfiltered value of the reference sample to generate the prediction sample, the problem of insufficient compression ratio in video decoding is solved, and the compression efficiency is improved without reducing the image quality.

CN115211109BActive Publication Date: 2025-09-12HUAWEI TECH CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202080061520.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-09-02
Filing Date
2020-09-01
Publication Date
2025-09-12
Estimated Expiration
2040-09-01

AI Technical Summary

Technical Problem

Existing video decoding technologies have difficulty improving the compression ratio without sacrificing image quality during the compression and decompression process, especially when transmitting video data over communication networks with limited bandwidth.

Method used

By modifying the filter of the general intra-frame prediction process and using a filtering indication to decide whether to use the filtered value or the unfiltered value of the reference sample to generate the prediction sample, the reference sample filtering stage is simplified or omitted.

Benefits of technology

It improves the compression ratio of video data while maintaining or improving image quality, and is suitable for various video encoding and decoding devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115211109B_ABST
    Figure CN115211109B_ABST
Patent Text Reader

Abstract

The general intra-frame prediction process is very complex and includes reference sample filtering. The present application provides a technical solution to this problem. For example, the method of the intra-frame prediction sample generation stage includes obtaining a filtering indication, wherein the filtering indication indicates whether to use the filtered value or the unfiltered value of the reference sample of the current decoding block. When the value of the filtering indication is true, the predicted sample is generated using the filtered value of the reference sample according to the planar mode. When the value of the filtering indication is false, the predicted sample is generated using the unfiltered value of the reference sample according to the planar mode. Therefore, the reference sample filtering stage can be completely deleted or combined with other stages.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-application of related applications

[0002] This application claims priority from PCT application number PCT / EP2019 / 073370, filed on September 2, 2019, the contents of which are incorporated herein by reference. Technical Field

[0003] Embodiments of the present application (invention) generally relate to the field of image processing, and more particularly, to filter modifications to a general intra prediction process. Background Art

[0004] Video coding (video encoding and decoding) is widely used in digital video applications such as broadcast digital television, video transmission over the Internet and mobile networks, real-time conversation applications such as video chat and video conferencing, DVD and Blu-ray Discs, video content acquisition and editing systems, and camcorders for security applications.

[0005] Even in the case of shorter videos, a large amount of video data is required to describe it, which can cause difficulties when the data is to be sent or otherwise transmitted across a communication network with limited bandwidth capacity. Therefore, video data is often compressed before being sent across modern telecommunications networks. Since memory resources may be limited, the size of the video can also be an issue when storing the video on a storage device. Video compression devices typically use software and / or hardware to encode the video data at the source side before transmission or storage, thereby reducing the amount of data required to represent the digital video image. A video decompression device that decodes the video data then receives the compressed data at the destination side. With limited network resources and the growing demand for higher video quality, there is a need for improved compression and decompression techniques that increase the compression ratio with little sacrifice in image quality. Summary of the Invention

[0006] The embodiments of the present application provide an apparatus and method for encoding and decoding as described in the independent claims.

[0007] The above and other objects are achieved by the subject matter claimed in the independent claims. Other implementations are apparent from the dependent claims, the description and the drawings.

[0008] In a first aspect, the present invention relates to a method for decoding. The method is performed by a decoding device. The method includes an intra-frame prediction sample generation phase. In the intra-frame prediction sample generation phase, a filtering indication is obtained, wherein the filtering indication indicates whether to use filtered values ​​or unfiltered values ​​of reference samples of a current decoding block. When the value of the filtering indication is true, prediction samples are generated using the filtered values ​​of the reference samples according to planar mode; or when the value of the filtering indication is false, prediction samples are generated using the unfiltered values ​​of the reference samples according to planar mode.

[0009] According to a second aspect, the present invention relates to a method for encoding. The method is performed by an encoding device. The method includes an intra-frame prediction sample generation phase. In the intra-frame prediction sample generation phase, a filtering indication is obtained, wherein the filtering indication indicates whether to use filtered values ​​or unfiltered values ​​of reference samples of a current decoding block. When the value of the filtering indication is true, prediction samples are generated using the filtered values ​​of the reference samples according to planar mode; or when the value of the filtering indication is false, prediction samples are generated using the unfiltered values ​​of the reference samples according to planar mode.

[0010] The method according to the first aspect of the present invention can be performed by the apparatus according to the third aspect of the present invention. Other features and implementations of the method according to the third aspect of the present invention correspond to the features and implementations of the apparatus according to the first aspect of the present invention.

[0011] The method according to the second aspect of the present invention can be performed by the apparatus according to the fourth aspect of the present invention. Other features and implementations of the method according to the fourth aspect of the present invention correspond to the features and implementations of the apparatus according to the second aspect of the present invention.

[0012] In a fifth aspect, the present invention relates to an apparatus for decoding a video code stream, comprising a processor and a memory, wherein the memory stores instructions that enable the processor to execute the method according to the first aspect.

[0013] In a sixth aspect, the present invention relates to an apparatus for encoding a video code stream, comprising a processor and a memory, wherein the memory stores instructions that enable the processor to execute the method according to the second aspect.

[0014] In a seventh aspect, a computer-readable storage medium storing instructions is provided, wherein the instructions, when executed, cause one or more processors to decode video data. The instructions cause the one or more processors to perform the method according to the first or second aspect, or any possible embodiment of the first or second aspect.

[0015] In an eighth aspect, the present invention relates to a computer program comprising program code, which, when executed in a computer, is used to perform the method according to the first or second aspect or any possible embodiment of the first or second aspect.

[0016] The general intra-frame prediction process is very complex and includes reference sample filtering. Aspects 1 through 8, or any possible embodiments thereof, provide a technical solution to this problem. For example, when the value of the filtering indication is false, the reference sample filtering stage can be completely eliminated or combined with other stages by using the unfiltered value of the reference sample.

[0017] The details of one or more embodiments are set forth in the accompanying drawings and the description. Other features, objects, and advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0018] The embodiments of the present invention will be described in detail below with reference to the accompanying drawings, in which:

[0019] Figure 1A is a block diagram of an exemplary video decoding system for implementing an embodiment of the present invention;

[0020] Figure 1B is a block diagram of another exemplary video decoding system for implementing an embodiment of the present invention;

[0021] Figure 2 is a block diagram of an exemplary video encoder for implementing an embodiment of the present invention;

[0022] Figure 3 is a block diagram of an exemplary structure of a video decoder for implementing an embodiment of the present invention;

[0023] Figure 4 is a block diagram of an exemplary encoding device or decoding device;

[0024] Figure 5 is a block diagram of another exemplary encoding device or decoding device;

[0025] Figure 6 It is the intra prediction mode in VVC;

[0026] Figure 7 Intra mode mapping for wide angle intra prediction;

[0027] Figure 8 is the reference sample used in multi-reference row intra prediction;

[0028] Figure 9 Filtering of reference samples for blocks using intra planar mode;

[0029] Figure 10 A block diagram for plane prediction;

[0030] Figure 11 The position of the reference sample value p(x,y) is shown. It should be noted that the samples in the current block are to be predicted;

[0031] Figure 12 An embodiment of a method 1200 in the intra-frame prediction sample generation stage provided by the present invention is shown;

[0032] Figure 13 An embodiment of a method 1300 in a position-dependent intra prediction (PDPC) stage according to the present invention is shown;

[0033] Figure 14 It is a block diagram of an embodiment of a device 1400 for intra-frame prediction provided by the present invention.

[0034] In the following, unless explicitly stated otherwise, identical reference signs refer to identical or at least functionally equivalent features. DETAILED DESCRIPTION

[0035] In the following description, reference is made to the accompanying drawings, which form a part hereof, and which illustrate, by way of illustration, specific aspects of embodiments of the invention or in which embodiments of the invention may be used. It should be understood that embodiments of the invention may be used in other aspects and include structural or logical variations not depicted in the accompanying drawings. Therefore, the following detailed description is not to be construed as limiting, and the scope of the invention is defined by the appended claims.

[0036] It will be understood that the disclosures relating to the described methods also apply to devices or systems corresponding to the methods for performing the methods, 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, for performing the described one or more method steps (e.g., a unit that performs the one or more steps, or multiple units that each perform one or more of the multiple steps), even if such one or more units are not explicitly described or illustrated in the figure. On the other hand, for example, if a specific device is described in terms of one or more units (e.g., functional units), the corresponding method may include a step to perform the function of the one or more units (e.g., a step that performs the function of the one or more units, or multiple steps that each perform the function of one or more of the multiple units), even if such one or more steps are not explicitly described or illustrated in the figure. In addition, it will be understood that, unless specifically noted otherwise, the features of the various exemplary embodiments and / or aspects described herein may be combined with each other.

[0037] Video coding generally refers to the processing of a sequence of images that constitute a video or video sequence. In the field of video coding, the terms "frame" or "picture / image" can be used as synonyms. Video coding (or generally referred to as decoding) includes two parts: video encoding and video decoding. Video coding is performed on the source side, which generally includes processing (for example, by compression) the original video image to reduce the amount of data required to represent the video image (for more efficient storage and / or transmission). Video decoding is performed on the destination side, which generally includes inverse processing relative to the encoder to reconstruct the video image. The "decoding" of video images (or generally referred to as images) involved in the embodiments should be understood as involving "encoding" or "decoding" of video images or corresponding video sequences. The encoding part and the decoding part are also collectively referred to as codecs (CODEC) (encoding and decoding).

[0038] In the case of lossless video coding, the original video image can be reconstructed, i.e., the reconstructed video image has the same quality as the original video image (assuming no transmission losses or other data loss during storage or transmission). In the case of lossy video coding, compression is further performed (e.g., by quantization) to reduce the amount of data representing the video image that cannot be fully reconstructed in the decoder, i.e., the reconstructed video image is of lower or inferior quality compared to the original video image.

[0039] Several video coding standards belong to the group of "lossy hybrid video codecs" (i.e., combining spatial and temporal prediction in the sample domain with 2D transform coding for quantization in the transform domain). Each image in a video sequence is typically partitioned into a set of non-overlapping blocks, and decoding is typically performed on a block-by-block basis. In other words, in the encoder, the video is typically processed (i.e., encoded) in units of blocks (video blocks), for example, by generating a prediction block through spatial (intra-frame) prediction and / or temporal (inter-frame) prediction; subtracting the prediction block from the current block (currently processed / to-be-processed block) to obtain a residual block; transforming and quantizing the residual block in the transform domain to reduce the amount of data to be transmitted (compressed), while in the decoder, the inverse of the encoder processing is applied to the coded or compressed block to reconstruct the current block for representation. Furthermore, the encoder's processing loop is identical to the decoder's processing loop, so that both will produce the same predicted (e.g., intra-frame and inter-frame predicted) blocks and / or reconstructed blocks for processing (i.e., decoding) subsequent blocks.

[0040] In the following embodiment of the video encoding system 10, the video encoder 20 and the video decoder 30 are configured according to Figures 1A to 3 Provide a description.

[0041] Figure 1A1 is an exemplary decoding system 10 that can utilize the techniques of the present application, for example, a video decoding system 10 (or simply, decoding system 10). Video encoder 20 (or simply, encoder 20) and video decoder 30 (or simply, decoder 30) of video decoding system 10 represent examples of devices that can be used to perform various techniques according to various examples described in this application.

[0042] like Figure 1A As shown, the decoding system 10 includes a source device 12 for providing encoded image data 21 to a destination device 14 for decoding the encoded image data 13 .

[0043] The source device 12 includes an encoder 20 and, in addition or alternatively, may include an image source 16 , a pre-processor (or pre-processing unit) 18 such as an image pre-processor 18 , and a communication interface or communication unit 22 .

[0044] The image source 16 may include or may be any type of image capture device, such as a camera for capturing real-world images, and / or any type of image generation device, such as a computer graphics processor for generating computer-animated images, or any other device for acquiring and / or providing real-world images, computer-generated images (e.g., screen content, virtual reality (VR) images), and / or any combination thereof (e.g., augmented reality (AR) images). The image source may be any type of memory (memory / storage) that stores any of the above images.

[0045] In distinction from the processing performed by the pre-processor 18 and the pre-processing unit 18 , the image or image data 17 may also be referred to as a raw image or raw image data 17 .

[0046] The preprocessor 18 is configured to receive (raw) image data 17 and preprocess the image data 17 to obtain a preprocessed image 19 or preprocessed image data 19. The preprocessing performed by the preprocessor 18 may include trimming, color format conversion (e.g., from RGB to YCbCr), color correction, or denoising. It should be understood that the preprocessing unit 18 may be an optional component.

[0047] The video encoder 20 is used to receive the pre-processed image data 19 and provide the encoded image data 21 (hereinafter referred to as Figure 2 etc. for further description).

[0048] Communication interface 22 in source device 12 may be used to receive encoded image data 21 and transmit the encoded image data 21 (or any other processed version thereof) to another device, such as destination device 14 , or any other device, via communication channel 13 for storage or direct reconstruction.

[0049] Destination device 14 includes a decoder 30 (eg, video decoder 30 ) and, in addition or optionally, may include a communication interface or communication unit 28 , a post-processor 32 (or post-processing unit 32 ), and a display device 34 .

[0050] The communication interface 28 in the destination device 14 is used to receive the encoded image data 21 (or any other processed version thereof) directly from the source device 12 or from any other source device such as a storage device, for example, which is an encoded image data storage device, and provide the encoded image data 21 to the decoder 30.

[0051] Communication interface 22 and communication interface 28 may be used to send or receive encoded image data 21 or encoded data 13 via a direct communication link (e.g., a direct wired or wireless connection) between source device 12 and destination device 14, or via any type of network (e.g., a wired or wireless network or any combination thereof, or any type of private and public network), or any combination thereof.

[0052] For example, the communication interface 22 may be used to encapsulate the encoded image data 21 into a suitable format such as a message, and / or process the encoded image data using any type of transmission coding or processing for transmission over a communication link or network.

[0053] For example, the communication interface 28 corresponding to the communication interface 22 may be used to receive the transmitted data and process the transmitted data using any type of corresponding transport decoding or processing and / or decapsulation to obtain the encoded image data 21 .

[0054] Both the communication interface 22 and the communication interface 28 can be configured as follows Figure 1A The unidirectional communication interface indicated by the arrow pointing from the source device 12 to the corresponding communication channel 13 of the destination device 14, or configured as a bidirectional communication interface, and can be used to send and receive messages, etc. to establish a connection, confirm and exchange any other information related to the communication link and / or data transmission such as encoded image data transmission, etc.

[0055] The decoder 30 is configured to receive the encoded image data 21 and provide decoded image data 31 or a decoded image 31 (hereinafter referred to as Figure 3 or Figure 5 Detailed description).

[0056] The post-processor 32 of the destination device 14 is configured to post-process the decoded image data 31 (also referred to as reconstructed image data) (e.g., decoded image 31) to obtain post-processed image data 33 (e.g., post-processed image 33). The post-processing performed by the post-processing unit 32 may include color format conversion (e.g., from YCbCr to RGB), color grading, trimming, resampling, or any other processing to provide the decoded image data 31 for display by a display device 34, etc.

[0057] The display device 34 in the destination device 14 is configured to receive the post-processed image data 33 for displaying the image to a user, viewer, or the like. The display device 34 may be or include any type of display for displaying the reconstructed image, such as an integrated or external display or screen. For example, the display may include a liquid crystal display (LCD), an organic light emitting diode (OLED) display, a plasma display, a projector, a micro-LED display, a liquid crystal on silicon (LCoS) display, a digital light processor (DLP), or any other type of display.

[0058] although Figure 1A Source device 12 and destination device 14 are described as separate devices, but device embodiments may also include two devices or two functions, namely, source device 12 or corresponding functions and destination device 14 or corresponding functions. In these embodiments, source device 12 or corresponding functions and destination device 14 or corresponding functions may be implemented using the same hardware and / or software or by separate hardware and / or software, or any combination thereof.

[0059] According to the description, Figure 1A It will be apparent to a skilled person that the different units or functions shown and (accurately) divided in the source device 12 and / or the destination device 14 may vary depending on the actual device and application.

[0060] The encoder 20 (eg, video encoder 20) or the decoder 30 (eg, video decoder 30), or both the encoder 20 and the decoder 30, may be configured as follows: Figure 1BThe processing circuits shown are implemented as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, video encoding dedicated processors, or any combination thereof. The encoder 20 may be implemented by processing circuits 46 to embody the Figure 2 The decoder 30 may be implemented by processing circuitry 46 to embody the various modules discussed with respect to the encoder 20 and / or any other encoder system or subsystem described herein. Figure 3 The various modules discussed in connection with the decoder 30 and / or any other decoder system or subsystem described herein. The processing circuitry may be used to perform various operations to be discussed later. Figure 5 As shown in , when the techniques are partially implemented in software, the device may store the instructions of the software in a suitable non-transitory computer-readable storage medium and may execute the instructions in hardware using one or more processors to perform the techniques of the present invention. The video encoder 20 or the video decoder 30 may be integrated into a single device as part of a combined encoder / decoder (codec), such as Figure 1B shown.

[0061] Source device 12 and destination device 14 may include any of a variety of devices, including any type of handheld or fixed device, such as a notebook computer or laptop computer, a mobile phone, a smartphone, a tablet computer (tablet / tabletcomputer), a camera, a desktop computer, a set-top box, a television, a display device, a digital media player, a video game console, a video streaming device (such as a content service server or content distribution server), a broadcast receiver device, a broadcast transmitter device, etc., and may not use or use any type of operating system. In some cases, source device 12 and destination device 14 may be equipped with components for wireless communication. Therefore, source device 12 and destination device 14 may be wireless communication devices.

[0062] In some cases, Figure 1AThe video decoding system 10 shown is merely exemplary, and the techniques provided herein may be applicable to video decoding arrangements (e.g., video encoding or video decoding) that do not necessarily include any data communication between an encoding device and a decoding device. In other examples, data is retrieved from a local memory, sent over a network, and so on. A video encoding device may encode data and store the data in a memory, and / or a video decoding device may retrieve data from a memory and decode the data. In some examples, encoding and decoding are performed by devices that do not communicate with each other but simply encode data to a memory and / or retrieve data from a memory and decode the data.

[0063] For ease of description, this document describes embodiments of the present invention with reference to the High-Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC) reference software developed by the Joint Collaboration Team on Video Coding (JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Motion Picture Experts Group (MPEG), or the next-generation video coding standards. Those skilled in the art will appreciate that embodiments of the present invention are not limited to the HEVC or VVC standards.

[0064] Encoders and encoding methods

[0065] Figure 2 FIG. 2 is a schematic block diagram of an exemplary video encoder 20 for implementing the technology of the present application. Figure 2 In the example of FIG, the video encoder 20 includes an input terminal 201 (or input interface 201), a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a loop filter unit 220, a decoded picture buffer (DPB) 230, a mode selection unit 260, an entropy coding unit 270, and an output terminal 272 (or output interface 272). The mode selection unit 260 may include an inter-frame prediction unit 244, an intra-frame prediction unit 254, and a segmentation unit 262. The inter-frame prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). Figure 2 The illustrated video encoder 20 may also be referred to as a hybrid video encoder or a hybrid video codec-based video encoder.

[0066] The residual calculation unit 204, the transform processing unit 206, the quantization unit 208, and the mode selection unit 260 constitute the forward signal path of the encoder 20; the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, the inter-frame prediction unit 244, and the intra-frame prediction unit 254 constitute the reverse signal path of the video encoder 20, wherein the reverse signal path of the video encoder 20 corresponds to the decoder (see Figure 3 The inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter-frame prediction unit 244, and the intra-frame prediction unit 254 also constitute the "built-in decoder" of the video encoder 20.

[0067] Images and image segmentation (images and blocks)

[0068] Encoder 20 is operable to receive, via input 201 or the like, an image 17 (or image data 17), for example, an image from a sequence of images forming a video or video sequence. The received image or image data may also be a pre-processed image 19 (or pre-processed image data 19). For simplicity, the following description uses image 17. Image 17 may also be referred to as a current image or a picture to be decoded (particularly when distinguishing the current image from other images in video decoding, such as previously encoded and / or decoded images in the same video sequence, i.e., a video sequence that also includes the current image).

[0069] A (digital) image is or can be a two-dimensional array or matrix of samples with intensity values. The samples in the array can also be called pixels (short for picture elements). The number of samples in the horizontal and vertical directions (or axes) of the array or image defines the image size and / or resolution. To represent color, three color components are typically used; that is, the image can be represented as or include three sample arrays. In the RGB format or color space, an image includes corresponding arrays of red, green, and blue samples. However, in video decoding, each pixel is typically represented in a luma and chroma format or color space, such as YCbCr, consisting of a luma component represented by Y (sometimes also represented by L) and two chroma components represented by Cb and Cr. The luma component Y represents brightness or grayscale intensity (for example, as in a grayscale image), while the two chroma components Cb and Cr represent chroma or color information components. Accordingly, an image in the YCbCr format includes a luma sample array of luma sample values ​​(Y) and two chroma sample arrays of chroma values ​​(Cb and Cr). Images in the RGB format can be converted or transformed into the YCbCr format, and vice versa. This process is also known as color conversion or transformation. If the image is monochrome, the image may include only a luma sample array. Accordingly, for example, the image may include a luma sample array in a monochrome format or a luma sample array and two corresponding chroma sample arrays in 4:2:0, 4:2:2, and 4:4:4 color formats.

[0070] In one embodiment, the video encoder 20 may include an image segmentation unit ( Figure 2 ), is used to partition the image 17 into a plurality of (typically non-overlapping) image blocks 203. These blocks may also be referred to as root blocks, macroblocks (H.264 / AVC) or coding tree blocks (CTBs), or coding tree units (CTUs) (H.265 / HEVC and VVC). The image partitioning unit may be used to use the same block size for all images in a video sequence and a corresponding grid of defined block sizes, or to vary the block size between images or subsets or groups of images, and to partition each image into corresponding blocks.

[0071] In another embodiment, the video encoder may be configured to directly receive a block 203 of the image 17, for example, one, several or all blocks constituting the image 17. The image block 203 may also be referred to as a current image block or an image block to be decoded.

[0072] Like image 17, image block 203 is also or can be considered to be a two-dimensional array or matrix of samples having intensity values ​​(sample values), but the size of image block 203 is smaller than that of image 17. That is, for example, block 203 may include, for example, one sample array (e.g., a luma array in the case of black and white image 17, or a luma or chroma array in the case of a color image), or three sample arrays (e.g., a luma array and two chroma arrays in the case of a color image 17), or any other number and / or type of arrays depending on the color format used. The number of samples in the horizontal and vertical directions (or axes) of block 203 defines the size of block 203. Thus, a block may be an M×N (M columns×N rows) sample array, or an M×N transform coefficient array, etc.

[0073] In one embodiment, Figure 2 The video encoder 20 is shown for encoding the image 17 block by block, eg, performing encoding and prediction on each block 203 .

[0074] Figure 2 The illustrated embodiment of the video encoder 20 may also be used to partition and / or encode an image using slices (also referred to as video slices), where an image may be partitioned or encoded using one or more (typically non-overlapping) slices, and each slice may include one or more blocks (e.g., CTUs).

[0075] Figure 2 The illustrated embodiment of the video encoder 20 may also be used to segment and / or encode an image using partition groups (also referred to as video partition groups) and / or blocks (also referred to as video blocks), wherein an image may be segmented or encoded using one or more partition groups (typically non-overlapping), each partition group may include one or more blocks (e.g., CTUs) or one or more partitions, etc., wherein each partition may be rectangular, etc., and may include one or more blocks (e.g., CTUs), such as complete or partial blocks.

[0076] Residual calculation

[0077] The residual calculation unit 204 is used to calculate the residual block 205 (also referred to as residual 205) based on the image block 203 and the prediction block 265 (the prediction block 265 is described in detail later) in the following manner: for example, the sample value of the prediction block 265 is subtracted from the sample value of the image block 203 sample by sample (pixel by pixel) to obtain the residual block 205 in the sample domain.

[0078] Transform

[0079] The transform processing unit 206 is configured to perform a discrete cosine transform (DCT) or a discrete sine transform (DST) on the sample values ​​of the residual block 205 to obtain transform coefficients 207 in the transform domain. The transform coefficients 207 may also be referred to as transform residual coefficients, representing the residual block 205 in the transform domain.

[0080] The transform processing unit 206 can be used to apply integer approximations of DCT / DST, such as those specified for H.265 / HEVC. Compared to the orthogonal DCT transform, this integer approximation is typically scaled by a certain factor. In order to maintain the norm of the residual block processed by the forward and inverse transforms, other scaling factors are applied during the transform process. The scaling factor is typically selected based on certain constraints, such as whether the scaling factor is a power of 2 for the shift operation, the bit depth of the transform coefficients, a trade-off between accuracy and implementation cost, etc. For example, a specific scaling factor is specified for the inverse transform by the inverse transform processing unit 212, etc. (and for the corresponding inverse transform at the video decoder 30 by the inverse transform processing unit 312, etc.), and accordingly, a corresponding scaling factor can be specified for the forward transform in the encoder 20 by the transform processing unit 206, etc.

[0081] An embodiment of the video encoder 20 (corresponding to the transform processing unit 206) can be used to directly output or output transform parameters (e.g., one or more transform types) after encoding or compression by the entropy coding unit 270, such that the video decoder 30 can receive and use the transform parameters for decoding.

[0082] Quantification

[0083] The quantization unit 208 may be configured to quantize the transform coefficients 207 by, for example, scalar quantization or vector quantization to obtain quantized transform coefficients 209 . The quantized transform coefficients 209 may also be referred to as quantized transform coefficients 209 or quantized residual coefficients 209 .

[0084] The quantization process can reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform coefficient can be rounded down to an m-bit transform coefficient during quantization, where n is greater than m. The degree of quantization can be modified by adjusting a quantization parameter (QP). For example, for scalar quantization, different scaling can be applied to achieve finer or coarser quantization. A smaller quantization step size corresponds to finer quantization, while a larger quantization step size corresponds to coarser quantization. The applicable quantization step size can be represented by a quantization parameter (QP). For example, the quantization parameter can be an index into a predefined set of applicable quantization step sizes. For example, a smaller quantization parameter can correspond to fine quantization (smaller quantization step size), a larger quantization parameter can correspond to coarse quantization (larger quantization step size), and vice versa. Quantization can include dividing by the quantization step size and corresponding quantization or inverse quantization, such as performed by the inverse quantization unit 210, or can include multiplying by the quantization step size. In some embodiments, the quantization parameter can be used to determine the quantization step size according to some standards such as HEVC. Typically, the quantization step size can be calculated based on the quantization parameter using a fixed-point approximation of an equation involving division. Quantization and dequantization can introduce additional scaling factors to restore the norm of the residual block, which may be modified due to the scaling used in the fixed-point approximation of the equation for the quantization step size and the quantization parameter. In one exemplary implementation, the scaling of the inverse transform and dequantization can be combined. Alternatively, a custom quantization table can be used and signaled by the encoder to the decoder via a bitstream or other means. Quantization is a lossy operation, and the loss increases with increasing quantization step size.

[0085] In an embodiment, the video encoder 20 (corresponding to the quantization unit 208 ) may be configured to output a quantization parameter (QP), for example, directly or after being encoded by the entropy coding unit 270 , such that the video decoder 30 may receive and use the quantization parameter for decoding.

[0086] Dequantization

[0087] The inverse quantization unit 210 is configured to perform inverse quantization performed by the quantization unit 208 on the quantized coefficients to obtain dequantized coefficients 211. For example, the inverse quantization scheme performed by the quantization unit 208 may be performed according to or using the same quantization step size as the quantization unit 208. The dequantized coefficients 211 may also be referred to as dequantized residual coefficients 211, which correspond to the transform coefficients 207. However, due to the loss caused by quantization, the dequantized coefficients 211 are generally not identical to the transform coefficients.

[0088] Inverse transform

[0089] The inverse transform processing unit 212 is configured to perform an inverse transform of the transform performed by the transform processing unit 206, such as an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST), to obtain a reconstructed residual block 213 (or corresponding dequantized coefficients 213) in the sample domain. The reconstructed residual block 213 may also be referred to as a transform block 213.

[0090] reconstruction

[0091] The reconstruction unit 214 (e.g., an adder or summer 214) is used to add the transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 265 to obtain the reconstructed block 215 in the sample domain, for example, by adding the sample values ​​of the reconstructed residual block 213 and the sample values ​​of the prediction block 265.

[0092] Filtering

[0093] The loop filter unit 220 (or simply "loop filter" 220) is used to filter the reconstructed block 215 to obtain a filtered block 221, or generally to filter the reconstructed samples to obtain filtered samples. For example, the loop filter unit is used to smooth pixel transitions or improve video quality. The loop filter unit 220 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter, or a collaborative filter, or any combination thereof. Although the loop filter unit 220 is in Figure 3 2. The filter block 221 is shown as a loop filter, but in other configurations, the loop filter unit 220 can be implemented as a post-loop filter. The filter block 221 can also be referred to as a filtered reconstruction block 221.

[0094] Embodiments of the video encoder 20 (specifically, the loop filter unit 220) may be configured to encode output loop filter parameters (e.g., sample adaptive offset information) directly or via the entropy coding unit 270, such that, for example, the decoder 30 may receive and apply the same loop filter parameters or a corresponding loop filter for decoding.

[0095] Decoded image buffer

[0096] The decoded picture buffer (DPB) 230 may be a memory that stores reference images or reference image data for use by the video encoder 20 in encoding video data. The DPB 230 may be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The decoded picture buffer (DPB) 230 may be used to store one or more filter blocks 221. The decoded picture buffer 230 may also be used to store other previous filter blocks of different images, such as the same current image or a previous reconstructed image, such as a previous reconstruction and filter block 221, and may provide a complete previous reconstruction, i.e., decoded image (and corresponding reference blocks and samples) and / or a partially reconstructed current image (and corresponding reference blocks and samples), for example, for inter-frame prediction. The decoded picture buffer (DPB) 230 may also be used to store one or more unfiltered reconstructed blocks 215, or generally to store unfiltered reconstructed samples, e.g., reconstructed blocks 215 that have not been filtered by the loop filter unit 220, or reconstructed blocks or reconstructed samples that have not undergone any other processing.

[0097] Mode selection (segmentation and prediction)

[0098] The mode selection unit 260 includes a segmentation unit 262, an inter-frame prediction unit 244, and an intra-frame prediction unit 254, which are configured to receive or obtain original image data, such as the original block 203 (current block 203 of the current image 17), and reconstructed image data, such as filtered and / or unfiltered reconstructed samples or reconstructed blocks of the same (current) image and / or one or more previously decoded images, from the decoded image buffer 230 or other buffers (e.g., line buffers, not shown). The reconstructed image data is used as reference image data required for prediction, such as inter-frame prediction or intra-frame prediction, to obtain a prediction block 265 or a prediction value 265.

[0099] The mode selection unit 260 may be used to determine or select a partitioning type for a current block prediction mode (including non-partitioning) and a prediction mode (e.g., intra-frame or inter-frame prediction mode), and to generate a corresponding prediction block 265 to calculate the residual block 205 and to reconstruct the reconstruction block 215.

[0100] In one embodiment, the mode selection unit 260 may be configured to select a segmentation and prediction mode (e.g., from prediction modes supported or available by the mode selection unit 260) that provides the best match or minimum residual (minimum residual means better compression during transmission or storage), or provides the minimum indicated overhead (minimum indicated overhead means better compression during transmission or storage), or a combination of both. The mode selection unit 260 may be configured to determine the segmentation and prediction mode based on rate distortion optimization (RDO), i.e., selecting the prediction mode that provides the minimum rate distortion optimization. Terms such as "best," "minimum," and "optimal" in this context do not necessarily mean "best," "minimum," or "optimal" in general, but may also refer to satisfying a termination or selection criterion, e.g., a value exceeding or falling below a threshold or other constraint, which may result in a "suboptimal selection" but reduces complexity and processing time.

[0101] In other words, the partitioning unit 262 can be used to partition the block 203 into smaller partitions or sub-blocks (forming blocks again), for example, iteratively using quad-tree (QT) partitioning, binary-tree (BT) partitioning or triple-tree (TT) partitioning or any combination thereof, and for example, predicting each partition or sub-block, wherein the mode selection includes selecting a tree structure of the partition 203 and applying a prediction mode to each partition or sub-block.

[0102] The segmentation (eg, performed by segmentation unit 260) and prediction processes (eg, performed by inter-prediction unit 244 and intra-prediction unit 254) performed by exemplary video encoder 20 are described in detail below.

[0103] segmentation

[0104] The segmentation unit 262 can segment (or divide) the current block 203 into smaller segments, such as smaller blocks of square or rectangular size. These smaller blocks (also referred to as sub-blocks) can be further segmented into even smaller segments. This method is also known as tree segmentation or hierarchical tree segmentation, in which a root block, such as root tree level 0 (hierarchical level 0, depth 0), can be recursively segmented, for example, into two or more blocks at the next lower tree level, such as nodes at tree level 1 (hierarchical level 1, depth 1). These blocks can be further segmented into two or more blocks at the next lower level, such as blocks at tree level 2 (hierarchical level 2, depth 2), and so on, until the segmentation terminates due to a termination criterion being met, a maximum tree depth or minimum block size being reached. Blocks that are not further segmented are also referred to as leaf blocks or leaf nodes of the tree. A tree segmented into two segments is called a binary tree (BT), a tree segmented into three segments is called a ternary tree (TT), and a tree segmented into four segments is called a quad tree (QT).

[0105] As mentioned above, the term "block" used in this document can be a part of an image, specifically a square or rectangular part. For example, in conjunction with HEVC and VVC, a block can be or correspond to a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU) and a transform unit (TU), and / or correspond to a corresponding block, such as a coding tree block (CTB), a decoding block (CB), a transform block (TB) or a prediction block (PB).

[0106] For example, a coding tree unit (CTU) can be or include a CTB of luma samples, two corresponding CTBs of chroma samples for an image with three sample arrays, or a CTB of samples for a monochrome image, or a CTB of samples for an image coded using three independent color planes and syntax structures for decoding the samples. Accordingly, a coding tree block (CTB) can be an N×N block of samples, where N can be set to a value that allows the components to be divided into CTBs, which is known as partitioning. A coding unit (CU) can be or include a coded block of luma samples, two corresponding coded blocks of chroma samples for an image with three sample arrays, or a coded block of samples for a monochrome image, or a coded block of samples for an image coded using three independent color planes and syntax structures for decoding the samples. Accordingly, a coding block (CB) can be an M×N block of samples, where M and N can be set to values ​​that allow the CTB to be divided into coded blocks, which is known as partitioning.

[0107] In an embodiment, for example according to HEVC, a coding tree unit (CTU) may be divided into a plurality of CUs by a quadtree structure represented as a coding tree. Whether to use inter (temporal) prediction or intra (spatial) prediction to decode an image region is decided at the CU level. Each CU may be further divided into 1, 2, or 4 PUs according to the PU partitioning type. The same prediction process is performed within a PU, and relevant information is sent to the decoder in units of PUs. After applying the prediction process according to the PU partitioning type to obtain the residual block, the CU may be partitioned into transform units (TUs) according to another quadtree structure similar to the coding tree for the CU.

[0108] In an embodiment, for example, according to the latest video coding standard currently under development called Versatile Video Coding (VVC), a combined quad-tree and binary tree (QTBT) partitioning is used to partition the coding block. In the QTBT block structure, a CU can be square or rectangular. For example, the coding tree unit (CTU) is first partitioned by a quadtree structure. The quadtree leaf nodes are further partitioned by a binary tree or ternary tree structure. The partitioned leaf nodes are called coding units (CUs), and the fragments are used for prediction and transformation processing without further partitioning. This means that in the QTBT coding block structure, the block sizes of CU, PU, ​​and TU are the same. At the same time, multiple partitionings such as ternary tree partitioning can be used with the QTBT block structure.

[0109] In one example, mode select unit 260 of video encoder 20 may be used to perform any combination of the segmentation techniques described herein.

[0110] As described above, the video encoder 20 is configured to determine or select the best or optimal prediction mode from a (eg, predetermined) set of prediction modes. For example, the set of prediction modes may include intra-frame prediction modes and / or inter-frame prediction modes.

[0111] Intra-frame prediction

[0112] The intra-frame prediction mode set may include 35 different intra-frame prediction modes, for example, non-directional modes such as DC (or mean) mode and planar mode, or directional modes as defined in HEVC, or may include 67 different intra-frame prediction modes, for example, non-directional modes such as DC (or mean) mode and planar mode, or directional modes as defined in VVC.

[0113] The intra prediction unit 254 is configured to generate an intra prediction block 265 using reconstructed samples of neighboring blocks of the same current image according to an intra prediction mode in the intra prediction mode set.

[0114] The intra-frame prediction unit 254 (or generally the mode selection unit 260) is also used to output intra-frame prediction parameters (or generally information representing the selected intra-frame prediction mode of the block) to the entropy coding unit 270 in the form of syntax elements 266 to be included in the encoded image data 21, for example, so that the video decoder 30 can receive and use the prediction parameters for decoding.

[0115] Inter-frame prediction

[0116] The set of (possible) inter-frame prediction modes is determined based on the available reference picture (i.e., a previously at least partially decoded picture stored in the DPB 230, for example) and other inter-frame prediction parameters, such as whether to use the entire reference picture or only a part of the reference picture (e.g., a search window area around the area of ​​the current block) to search for the best matching reference block, and / or whether to apply pixel interpolation (e.g., half-pixel and / or quarter-pixel interpolation).

[0117] In addition to the above-mentioned prediction modes, skip mode and / or direct mode may also be applied.

[0118] The inter-frame prediction unit 244 may include a motion estimation (ME) unit and a motion compensation (MC) unit (both in Figure 2(not shown in the figure). The motion estimation unit may be configured to receive or obtain the image block 203 (the current image block 203 of the current image 17) and the decoded image 231, or at least one or more previously reconstructed blocks, for example, reconstructed blocks of one or more other / different previously decoded images 231, for motion estimation. For example, a video sequence may include the current image and the previously decoded image 231, or in other words, the current image and the previously decoded image 231 may be part of a sequence of images constituting the video sequence or a sequence of images forming the video sequence.

[0119] For example, the encoder 20 may be configured to select a reference block from a plurality of reference blocks of the same or different images in a plurality of other images, and provide the reference image (or reference image index) and / or the offset (spatial offset) between the position (x coordinate, y coordinate) of the reference block and the position of the current block as an inter-frame prediction parameter to the motion estimation unit. This offset is also referred to as a motion vector (MV).

[0120] The motion compensation unit is configured to obtain (e.g., receive) inter-frame prediction parameters and perform inter-frame prediction based on or using the inter-frame prediction parameters to obtain an inter-frame prediction block 265. The motion compensation performed by the motion compensation unit may involve extracting or generating a prediction block based on a motion / block vector determined by motion estimation, and may also include interpolation with sub-pixel precision. Interpolation filtering can generate samples of other pixels from samples of known pixels, thereby potentially increasing the number of candidate prediction blocks that can be used to decode the image block. Upon receiving a motion vector corresponding to a PU of the current image block, the motion compensation unit may locate the prediction block pointed to by the motion vector in one of the reference picture lists.

[0121] The motion compensation unit may also generate syntax elements associated with the blocks and video slices for use by the video decoder 30 in decoding the image blocks of the video slice. In addition to or as an alternative to slices and corresponding syntax elements, tile groups and / or tiles and corresponding syntax elements may also be received and / or used.

[0122] Entropy decoding

[0123] The entropy coding unit 270 is used to apply or not apply an entropy coding algorithm or scheme (such as a variable length coding (VLC) scheme, a context adaptive VLC (CAVLC) scheme, an arithmetic coding scheme, binarization, context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding or other entropy coding methods or techniques) to (uncompressed) quantization coefficients 209, inter-frame prediction parameters, intra-frame prediction parameters, loop filter parameters and / or other syntax elements to obtain encoded image data 21 that can be output through the output terminal 272 in the form of an encoded bitstream 21, etc., so that the video decoder 30, etc. can receive and use these parameters for decoding. The encoded codestream 21 may be transmitted to the video decoder 30 or stored in memory for later transmission or retrieval by the video decoder 30 .

[0124] Other structural variations of the video encoder 20 may be used to encode the video stream. For example, a non-transform based encoder 20 may directly quantize the residual signal of certain blocks or frames without the transform processing unit 206. In another implementation, the encoder 20 may include the quantization unit 208 and the inverse quantization unit 210 combined into a single unit.

[0125] Decoder and decoding method

[0126] Figure 3 An example of a video decoder 30 for implementing the technology of the present application is shown. The video decoder 30 is configured to receive coded image data 21 (e.g., coded codestream 21), for example, coded by the encoder 20, and obtain a decoded image 331. The coded image data or codestream includes information for decoding the coded image data, such as data representing image blocks of coded video slices (and / or partition groups or partitions) and related syntax elements.

[0127] exist Figure 3In the example of FIG. 3 , decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., a summer 314), a loop filter 320, a decoded picture buffer (DPB) 330, a mode application unit 360, an inter-frame prediction unit 344, and an intra-frame prediction unit 354. Inter-frame prediction unit 344 may be or include a motion compensation unit. In some examples, video decoder 30 may perform operations generally similar to those described in FIG. Figure 2 The decoding process performed by the video encoder 100 is the reverse of the encoding process.

[0128] As explained with respect to encoder 20, inverse quantization unit 210, inverse transform processing unit 212, reconstruction unit 214, loop filter 220, decoded picture buffer (DPB) 230, inter-prediction unit 344, and intra-prediction unit 354 are also referred to as the "built-in decoder" that constitutes video encoder 20. Accordingly, inverse quantization unit 310 may be functionally identical to inverse quantization unit 110, inverse transform processing unit 312 may be functionally identical to inverse transform processing unit 212, reconstruction unit 314 may be functionally identical to reconstruction unit 214, loop filter 320 may be functionally identical to loop filter 220, and decoded picture buffer 330 may be functionally identical to decoded picture buffer 230. Therefore, the explanation of the corresponding units and functions of video encoder 20 applies accordingly to the corresponding units and functions of video decoder 30.

[0129] Entropy decoding

[0130] The entropy decoding unit 304 is used to parse the code stream 21 (or generally the encoded image data 21) and perform entropy decoding on the encoded image data 21 to obtain quantization coefficients 309 and / or decoded decoding parameters ( Figure 3 , such as any or all of inter-frame prediction parameters (e.g., reference picture index and motion vector), intra-frame prediction parameters (e.g., intra-frame prediction mode or index), transform parameters, quantization parameters, loop filter parameters, and / or other syntax elements. The entropy decoding unit 304 may be configured to apply a decoding algorithm or scheme corresponding to the encoding scheme described for the entropy encoding unit 270 of the encoder 20. The entropy decoding unit 304 may also be configured to provide the inter-frame prediction parameters, intra-frame prediction parameters, and / or other syntax elements to the mode application unit 360, as well as to provide other parameters to other units of the decoder 30. The video decoder 30 may receive syntax elements at the video slice level and / or the video block level. In addition to or in lieu of slices and corresponding syntax elements, partition groups and / or partitions and corresponding syntax elements may be received or used.

[0131] Dequantization

[0132] The inverse quantization unit 310 may be configured to receive a quantization parameter (QP) (or generally information related to inverse quantization) and quantization coefficients from the encoded image data 21 (e.g., parsed and / or decoded by the entropy decoding unit 304), and inverse quantize the decoded quantization coefficients 309 according to the quantization parameter to obtain dequantized coefficients 311, which may also be referred to as transform coefficients 311. The inverse quantization process may include using the quantization parameter determined by the video encoder 20 for each video block in a video slice (or partition or group of partitions) to determine a degree of quantization, and thus a degree of inverse quantization to be applied.

[0133] Inverse transform

[0134] The inverse transform processing unit 312 may be configured to receive the dequantized coefficients 311, also referred to as transform coefficients 311, and apply a transform to the dequantized coefficients 311 to obtain a reconstructed residual block 213 in the sample domain. The reconstructed residual block 213 may also be referred to as a transform block 313. The transform may be an inverse transform, such as an inverse DCT, an inverse DST, an inverse integer transform, or a conceptually similar inverse transform process. The inverse transform processing unit 312 may also be configured to receive transform parameters or corresponding information from the encoded image data 21 (e.g., parsed and / or decoded by the entropy decoding unit 304) to determine the transform to be applied to the dequantized coefficients 311.

[0135] reconstruction

[0136] The reconstruction unit 314 (e.g., the adder or summer 314) can be used to add the reconstructed residual block 313 to the prediction block 365 to obtain the reconstructed block 315 in the sample domain, for example, by adding the sample values ​​of the reconstructed residual block 313 and the sample values ​​of the prediction block 365.

[0137] Filtering

[0138] The loop filter unit 320 (in the decoding loop or after) is used to filter the reconstructed block 315 to obtain a filter block 321, so as to smoothly perform pixel conversion or improve video quality. The loop filter unit 320 may include one or more loop filters, such as a deblocking filter, a sample adaptive offset (SAO) filter or one or more other filters, such as a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter or a collaborative filter or any combination thereof. Although the loop filter unit 320 is in Figure 3 3. Although shown as a loop filter in FIG. 3, in other configurations, the loop filter unit 320 may be implemented as a post-loop filter.

[0139] Decoded image buffer

[0140] The decoded video blocks 321 in one picture are then stored in a decoded picture buffer 330 which stores the decoded picture 331 as a reference picture for subsequent motion compensation of other pictures and / or respective output displays.

[0141] The decoder 30 is configured to output the decoded image 311 via an output unit 312 or the like, and present the decoded image 311 to a user or for the user to view.

[0142] predict

[0143] The function of the inter-frame prediction unit 344 can be the same as that of the inter-frame prediction unit 244 (especially the motion compensation unit), and the function of the intra-frame prediction unit 354 can be the same as that of the intra-frame prediction unit 254, and determine the partitioning or segmentation and perform prediction based on the partitioning and / or prediction parameters or corresponding information received from the encoded image data 21 (for example, parsed and / or decoded by the entropy decoding unit 304, etc.). The mode application unit 360 can be used to perform prediction (intra-frame or inter-frame prediction) for each block based on the reconstructed image, block or corresponding samples (filtered or unfiltered), to obtain a prediction block 365.

[0144] When the video slice is coded as an intra-coded (I) slice, the intra-prediction unit 354 of the mode application unit 360 is configured to generate a prediction block 365 for a picture block of the current video slice based on an intra-prediction mode and data indicated by a previously decoded block of the current frame or picture. When the video picture is coded as an inter-coded (e.g., B or P) slice, the inter-prediction unit 344 (e.g., motion compensation unit) of the mode application unit 360 is configured to generate a prediction block 365 for the video block of the current video slice based on the motion vector and other syntax elements received from the entropy decoding unit 304. For inter-prediction, these prediction blocks can be generated from a reference picture in one of the reference picture lists. Video decoder 30 can construct reference frame list 0 and list 1 using a default construction technique based on the reference pictures stored in DPB 330. The same or similar processes may be applied to embodiments of partition groups (e.g., video partition groups) and / or partitions (e.g., video partitions) in addition to or as an alternative to slices (e.g., video slices), e.g., video may be coded using I, P, or B partition groups and / or partitions.

[0145] Mode application unit 360 is configured to determine prediction information for video blocks in a current video slice by parsing motion vectors or related information and other syntax elements, and to use the prediction information to generate a prediction block for the decoded current video block. For example, mode application unit 360 uses some of the received syntax elements to determine a prediction mode (e.g., intra or inter prediction) for coding video blocks in the video slice, an inter prediction slice type (e.g., B slice, P slice, or GPB slice), construction information for one or more reference picture lists for the slice, motion vectors for each inter-coded video block in the slice, inter prediction status for each inter-coded video block in the slice, and other information to decode the video blocks in the current video slice. In addition to or as an alternative to slices (e.g., video slices), the same or similar process can be applied to embodiments involving partition groups (e.g., video partition groups) and / or partitions (e.g., video partitions), for example, where video may be coded using I, P, or B partition groups and / or partitions.

[0146] Figure 3 An embodiment of the video decoder 30 shown in FIG. 1 may be used to partition and / or decode an image using slices (also referred to as video slices), where an image may be partitioned or decoded using one or more (typically non-overlapping) slices, and each slice may include one or more blocks (e.g., CTUs).

[0147] Figure 3 The illustrated embodiment of the video decoder 30 may be used to segment and / or decode an image using partition groups (also referred to as video partition groups) and / or blocks (also referred to as video blocks), wherein an image may be segmented or decoded using one or more partition groups (typically non-overlapping), each partition group may include one or more blocks (e.g., CTUs) or one or more partitions, etc., wherein each partition may be rectangular, etc., and may include one or more blocks (e.g., CTUs), such as complete or partial blocks.

[0148] Other variations of the video decoder 30 may be used to decode the encoded image data 21. For example, the decoder 30 may generate an output video stream without the loop filter unit 320. For example, a non-transform-based decoder 30 may directly inverse quantize the residual signal of certain blocks or frames without the inverse transform processing unit 312. In another implementation, the inverse quantization unit 310 and the inverse transform processing unit 312 may be combined into a single unit in the video decoder 30.

[0149] It should be understood that the processing result of the current step can be further processed in the encoder 20 and the decoder 30 and then output to the next step. For example, after interpolation filtering, motion vector derivation, or loop filtering, the processing result of interpolation filtering, motion vector derivation, or loop filtering can be further operated on, such as clipping or shifting operations.

[0150] It should be noted that further operations can be performed on the derived motion vector of the current block (including but not limited to control point motion vectors in affine mode, sub-block motion vectors in affine mode, planar mode, and ATMVP mode, and temporal motion vectors). For example, the motion vector value can be constrained to a predefined range based on the representation bits of the motion vector. If the representation bits of the motion vector are bitDepth, the range is –2^(bitDepth–1) to 2^(bitDepth–1)–1, where “^” represents an exponent. For example, if bitDepth is set to 16, the range is –32768 to 32767; if bitDepth is set to 18, the range is –131072 to 131071. For example, the derived motion vector value (e.g., the MVs of four 4×4 sub-blocks in an 8×8 block) is constrained so that the maximum difference between the integer parts of the four 4×4 sub-block MVs does not exceed N pixels, for example, not more than 1 pixel. Two methods for constraining motion vectors based on bitDepth are provided herein.

[0151] Method 1: Remove the most significant bit (MSB) of the overflow by smoothing

[0152] ux=(mvx+2 bitDepth )%2 bitDepth (1)

[0153] mvx=(ux>=2 bitDepth–1 )? (ux–2 bitDepth ):ux (2)

[0154] uy=(mvy+2 bitDepth )%2 bitDepth (3)

[0155] mvy=(uy>=2 bitDepth–1 )? (uy–2 bitDepth ):uy (4)

[0156] Among them, mvx is the horizontal component of the motion vector of the image block or sub-block, mvy is the vertical component of the motion vector of the image block or sub-block, and ux and uy represent intermediate values.

[0157] For example, if the value of mvx is –32769, then after applying equations (1) and (2), the resulting value is 32767. In computer systems, decimal numbers are stored in two's complement form. The two's complement of –32769 is 1, 0111, 1111, 1111, 1111 (17 bits), and then the MSB is discarded, so the resulting two's complement is 0111, 1111, 1111, 1111 (32767 in decimal), which is the same as the output of equations (1) and (2).

[0158] ux=(mvpx+mvdx+2 bitDepth )%2 bitDepth (5)

[0159] mvx=(ux>=2 bitDepth–1 )? (ux–2 bitDepth ):ux (6)

[0160] uy=(mvpy+mvdy+2 bitDepth )%2 bitDepth (7)

[0161] mvy=(uy>=2 bitDepth–1 )? (uy–2 bitDepth ):uy (8)

[0162] In the process of summing mvp and mvd, the above operations can be applied, as shown in equations (5) to (8).

[0163] Method 2: Clip the value to remove the overflowed MSB

[0164] vx=Clip3(–2 bitDepth–1 ,2 bitDepth–1 –1,vx)

[0165] vy=Clip3(–2 bitDepth–1 ,2 bitDepth–1 –1,vy)

[0166] Where vx is the horizontal component of the motion vector of an image block or sub-block, and vy is the vertical component of the motion vector of an image block or sub-block; x, y, and z correspond to the three input values ​​of the MV clipping process, respectively. The function Clip3 is defined as follows:

[0167]

[0168] Figure 4 Schematic diagram of a video decoding device 400 provided in an embodiment of the present invention. The video decoding device 400 is suitable for implementing the disclosed embodiments described herein. In one embodiment, the video decoding device 400 may be a decoder, such as Figure 1AThe video decoder 30, or encoder, such as Figure 1A video encoder 20.

[0169] The video decoding device 400 includes an input port 410 (or input port 410) and a receiver (Rx) 420 for receiving data, a processor, logic unit, or central processing unit (CPU) 430 for processing data, a transmitter (Tx) 440 and an output port 450 (or output port 450) for transmitting data, and a memory 460 for storing data. The video decoding device 400 may also include optical-to-electrical (OE) components and electrical-to-optical (EO) components coupled to the input port 410, the receiver 420, the transmitter 440, and the output port 450 for outputting or transmitting optical or electrical signals.

[0170] Processor 430 is implemented using hardware and software. Processor 430 can be implemented as one or more CPU chips, one or more cores (e.g., a multi-core processor), one or more FPGAs, one or more ASICs, and one or more DSPs. Processor 430 communicates with input port 410, receiver unit 420, transmitter unit 440, output port 450, and memory 460. Processor 430 includes a decoding module 470. Decoding module 470 implements the embodiments disclosed above. For example, decoding module 470 performs, processes, prepares, or provides various decoding operations. Thus, decoding module 470 provides substantial improvements to the functionality of video decoding device 400 and facilitates switching of video decoding device 400 to different states. Alternatively, decoding module 470 can be implemented using instructions stored in memory 460 and executed by processor 430.

[0171] The memory 460 may include one or more disks, tape drives, and solid-state drives, and may be used as an overflow data storage device for storing programs when they are selected for execution, and for storing instructions and data read during program execution. For example, the memory 460 may be volatile and / or non-volatile, and may be a read-only memory (ROM), a random access memory (RAM), a ternary content-addressable memory (TCAM), and / or a static random-access memory (SRAM).

[0172] Figure 5 A simplified block diagram of an apparatus 500 is provided for an exemplary embodiment. The apparatus 500 may be used as Figure 1A Either or both of the source device 12 and the destination device 14.

[0173] The processor 502 in the apparatus 500 may be a central processing unit. Alternatively, the processor 502 may be any other type of device or devices, now available or later developed, capable of manipulating or processing information. While the disclosed implementations may be implemented using a single processor, such as the processor 502 shown, using more than one processor may improve speed and efficiency.

[0174] In one implementation, the memory 504 in the apparatus 500 may be a read-only memory (ROM) device or a random access memory (RAM) device. Any other suitable type of storage device may be used as the memory 504. The memory 504 may include code and data 506 that are accessed by the processor 502 via a bus 512. The memory 504 may also include an operating system 508 and application programs 510. The application programs 510 include at least one program that causes the processor 502 to perform the methods described herein. For example, the application programs 510 may include applications 1 through N, as well as a video decoding application that performs the methods described herein.

[0175] The apparatus 500 may also include one or more output devices, such as a display 518. In one example, the display 518 may be a touch-sensitive display that combines a display with touch-sensitive elements that can be used to sense touch input. The display 518 may be coupled to the processor 502 via the bus 512.

[0176] Although bus 512 in device 500 is described herein as a single bus, bus 512 may include multiple buses. In addition, auxiliary memory 514 may be directly coupled to other components of device 500 or may be accessible via a network and may include a single integrated unit such as a memory card or multiple units such as multiple memory cards. Thus, device 500 may have a variety of configurations.

[0177] Intra-frame prediction background

[0178] To capture arbitrary edge directions that occur in natural videos, the number of directional intra prediction modes in VTM6 is extended from 33 used in HEVC to 65. New directional modes not in HEVC are Figure 6 The planar and DC modes remain unchanged. These more dense directional intra prediction modes are applicable to all block sizes and luma and chroma intra prediction. Specifically, the values ​​of all intra prediction modes are defined in Table 1:

[0179] Table 1 - Description of intra prediction modes and related names

[0180] Intra prediction mode Related Name 0 INTRA_PLANAR 1 INTRA_DC 2..66 INTRA_ANGULAR2..INTRA_ANGULAR66

[0181] The traditional angular intra prediction direction is defined as 45 degrees to -135 degrees in the clockwise direction. In VTM6, several traditional angular intra prediction modes are adaptively replaced with wide angular intra prediction modes for non-square blocks. Figure 7 As shown, when the aspect ratio is 1 / 2, modes 61 to 66 are mapped to –6 to –1, respectively. Modes 61 to 66 will reference the reference samples at the lower left edge instead of the upper right edge.

[0182] The mapping rule is defined as the following process, where the input nW is the block width, nH is the block height, and predModeIntra is the input angle mode. The process is as follows:

[0183] The variable whRatio is set equal to Abs(Log2(nW / nH)).

[0184] For non-square blocks (nW is not equal to nH), the intra prediction mode predModeIntra is modified as follows:

[0185] If all of the following conditions are true (these conditions are used to determine whether the wide angle mapping process is applied), then predModeIntra is set equal to (predModeIntra+65).

[0186] –nW is greater than nH;

[0187] –predModeIntra is greater than or equal to 2;

[0188] –predModeIntra is less than (whRatio>1)? (8+2*whRatio):8.

[0189] – Otherwise, if the following conditions are all true (these conditions are used to determine whether the wide angle mapping process is applied), then predModeIntra is set equal to (predModeIntra–67).

[0190] –nH is greater than nW;

[0191] –predModeIntra is less than or equal to 66;

[0192] –predModeIntra greater than (whRatio>1)? (60–2*whRatio):60.

[0193] Taking a block with an aspect ratio of 1:2 (block width is half of the block height) as an example, predModeIntra modes 61 to 66 are mapped to –6 to –1 when the following conditions are met:

[0194] –nH is greater than nW;

[0195] –predModeIntra is less than or equal to 66;

[0196] Is predModeIntra greater than (whRatio > 1)? (60–2*whRatio): 60, where whRatio = Abs(Log2(nW / nH)) = 1.

[0197] In the current VVC draft (i.e. JVET-O2001, version 14 http: / / phenix.it-sudparis.eu / jvet / doc_end_user / documents / 15_Gothenburg / wg11 / JVET-O2001-v14.zip), after the intra prediction mode is derived, the general intra prediction process can be divided into three stages:

[0198] 1. Reference sample filtering

[0199] 2. Intra-frame prediction sample generation

[0200] 3. Position-dependent intra-frame prediction sample filtering process (PDPC)

[0201] Reference sample filtering

[0202] Reference sample filtering is triggered when all of the following conditions are true:

[0203] –Multiple reference line (MRL) intra prediction is not applied to the current decoding block;

[0204] – Intrasub-block partition (ISP)-based prediction is not applied to the current decoding block;

[0205] –The current decoding block is the luminance decoding block;

[0206] – The decoding block size is larger than 32 luma samples;

[0207] – The prediction mode (after wide angle mapping) is the mode set {0, –14, –12, –10, –6, 2, 34, 66, 72,

[0208] 76, 78, 80}.

[0209] The intra sub-partition (ISP) decoding mode is a tool for applying luma intra prediction modes. The applied intra prediction mode is divided vertically or horizontally into two or four sub-partitions, depending on the block size, as shown in Table 2. It should be noted that the width of a vertical sub-prediction partition cannot be less than four luma samples. All sub-prediction partitions share the same intra mode.

[0210] Table 2: Number of subpartitions determined by block size

[0211] Block size Number of subpartitions 4×4 No division 4×8,8×4 2 All other cases 4

[0212] Multiple reference line (MRL) intra prediction uses more reference lines for intra prediction. Figure 8 An example of 4 reference lines is depicted in FIG, where the samples of segments A and F are not extracted from the reconstructed neighboring samples, but are filled with the closest samples of segments B and E, respectively. In the known technical solution, intra prediction uses the nearest reference line (i.e., reference line 0). In MRL, 2 additional lines (reference line 1 and reference line 3) can be used. Figure 8 In the example shown for multiple reference line intra prediction, only reference lines 0, 1, and 3 can be used. In other examples, reference lines 0, 1, and 2 can be used. When MRL is enabled, the reference line index is indicated or inferred in the bitstream, indicating which reference line is selected.

[0213] When the reference sample filtering process is triggered, a 1:2:1 filter is applied to the reference samples. Figure 9 An example of how to apply a 1:2:1 filter to reference samples of a 4×4 block in planar mode is shown. Figure 9 In FIG. 1 , a filter with a weight of

[121] is shown with reference samples A to K for a planar pattern. For example, reference samples B to J are filtered to B' to J', respectively. For example, B' = (A+2*B+C+2)>>2

[0214] Intra-frame prediction sample generation

[0215] After the reference sample filtering process is complete, reference samples are available. Using these reference samples (filtered or unfiltered), intra-prediction samples can be generated. If the intra mode of the current block is planar or DC mode, the corresponding intra prediction process is defined. If the intra prediction mode is angular (i.e., neither planar nor DC mode), prediction using angular mode is activated.

[0216] For example, the planar mode prediction is defined as follows:

[0217] Description of INTRA_PLANAR intra prediction mode

[0218] The inputs to this process are:

[0219] – variable nTbW, representing the transform block width;

[0220] – variable nTbH, representing the transform block height;

[0221] – Neighboring samples p[x][y], where x = –1, y = –1..nTbH and x = 0..nTbW, y = –1.

[0222] The output of this process is the predicted samples predSamples[x][y], where x = 0..nTbW–1 and y = 0..nTbH–1.

[0223] The variables nW and nH are derived as follows:

[0224] nW=Max(nTbW,2) (8-135)

[0225] nH=Max(nTbH,2) (8-136)

[0226] The values ​​of the predicted samples predSamples[x][y] (where x = 0..nTbW–1 and y = 0..nTbH–1) are derived as follows:

[0227] predV[x][y]=((nH–1–y)*p[x][–1]+(y+1)*p[–1][nTbH])< <Log2(nW)(8-137)

[0228] predH[x][y]=((nW–1–x)*p[–1][y]+(x+1)*p[nTbW][–1])< <Log2(nH)(8-138)

[0229] predSamples[x][y]=(predV[x][y]+predH[x][y]+nW*nH)>>(Log2(nW)+Log2(nH)+1) (8-139)

[0230] In this example, for a sample to be predicted at coordinate (x,y):

[0231] p[–1][y] represents the corresponding left column reference sample,

[0232] p[nTbW][–1] represents the corresponding reference sample in the right column. It should be noted that the reference samples in the right column are the same and are padded with the sample p[nTbW][–1].

[0233] p[x][–1] represents the corresponding uplink reference sample,

[0234] p[–1][nTbH] represents the corresponding downlink reference sample. It should be noted that the downlink reference samples are the same and are padded with samples p[–1][nTbH].

[0235] Figure 11 An example of coordinate interpretation of the reference sample value p(x,y) is provided. Figure 11 As shown, p[–1][y] represents the corresponding left column reference sample, y = –1, 0...4; p[x][–1] represents the corresponding uplink reference sample, x = –1, 0...4.

[0236] The intra prediction samples of planar mode are generated as follows Figure 10 As shown, the width and height of the prediction block are set to N. The resulting sample is a combination of horizontal and vertical components, as defined in Equation 8-139. The horizontal component is a linear filter of the samples corresponding to the left and right columns, and the vertical component is a linear filter of the samples corresponding to the upper and lower rows. The horizontal and vertical components are derived according to Equations 8-138 and 8-137, respectively.

[0237] Position-dependent intra prediction sample filtering process (PDPC)

[0238] After the intra prediction samples are generated, the intra prediction results of some modes (including planar mode) can also be modified using the position-dependent intra prediction combination (PDPC) method. PDPC is applied to the following intra modes when not indicated: planar mode, DC mode, intra modes less than or equal to horizontal mode (i.e., value 18), and intra modes greater than or equal to vertical mode (i.e., value 50).

[0239] The predicted sample at coordinate (x, y) (i.e., predSamples[x][y] in the following formula 8-267) is predicted using a linear combination of the reference samples according to the following formula:

[0240] predSamples[x][y]=clip1Cmp((refL[x][y]*wL[x]+refT[x][y]*wT[y]–p[–1][–1]*wTL[x][y]+(64–wL[x]–wT[y]+wTL[x][y])*predSamples[x][y]+32)

[0241] >>6) (8-267)

[0242] Where refL[x][y], refT[x][y], and p[–1][–1] represent the values ​​of the left, top, and upper-left reference samples, respectively; wL[x][y], wT[x][y], and wTL[x][y] represent the weights of the left, top, and upper-left reference samples, respectively. clip1Cmp is the clipping operation for the corresponding luma or chroma components. The derivation of these values ​​is defined based on the intra prediction mode. For more details, see the VVC draft (JVET-O2001, Version 14, http: / / phenix.it-sudparis.eu / jvet / doc_end_user / documents / 15_Gothenburg / wg11 / JVET-O2001-v14.zip).

[0243] In one example, the PDPC process for intra prediction modes (planar mode and DC mode) is defined as follows:

[0244] The inputs to this process are:

[0245] – Intra prediction mode predModeIntra;

[0246] – variable nTbW, representing the transform block width;

[0247] – variable nTbH, representing the transform block height;

[0248] – variable refW, indicating the reference sample width;

[0249] – variable refH, indicating the reference sample height;

[0250] – Prediction samples predSamples[x][y], where x = 0..nTbW–1, y = 0..nTbH–1;

[0251] – adjacent samples p[x][y], where x = –1, y = –1..refH–1 and x = 0..refW–1, y = –1;

[0252] –Variable cIdx, which represents the color component of the current block.

[0253] The output of this process is the modified prediction samples predSamples[x][y], where x = 0..nTbW–1 and y = 0..nTbH–1.

[0254] Depending on the value of cIdx, the function clip1Cmp is set as follows:

[0255] – If cIdx is equal to 0, clip1Cmp is set to Clip1 Y .

[0256] – Otherwise, clip1Cmp is set to Clip1 C .

[0257] The variables refL[x][y], refT[x][y], wT[y], wL[x], and wTL[x][y] (where x = 0..nTbW–1, y = 0..nTbH–1) are derived as follows:

[0258] The variable nScale is derived as follows:

[0259] – If predModeIntra is greater than INTRA_ANGULAR50, nScale is set to Min(2,Log2(nTbH)–Floor(Log2(3*invAngle–2))+8) via invAngle (as detailed in Section 8.4.5.2.12).

[0260] – Otherwise, if predModeIntra is less than INTRA_ANGULAR18, nScale is set to Min(2,Log2(nTbW)–Floor(Log2(3*invAngle–2))+8) via invAngle (as detailed in Section 8.4.5.2.12).

[0261] – Otherwise, nSacle is set to ((Log2(nTbW)+Log2(nTbH)–2)>>2).

[0262] – If predModeIntra is equal to INTRA_PLANAR or INTRA_DC, then

[0263] refL[x][y]=p[–1][y] (8-245)

[0264] refT[x][y]=p[x][–1] (8-246)

[0265] wT[y]=32>>((y<<1)>>nScale) (8-247)

[0266] wL[x]=32>>((x<<1)>>nScale) (8-248)

[0267] wTL[x][y]=0 (8-249)

[0268] The values ​​of the modified prediction samples predSamples[x][y] (where x = 0..nTbW–1, y = 0..nTbH–1) are derived as follows:

[0269]

[0270] It should be noted that if the reference sample filtering process is activated, the input reference samples of the PDPC process are filtered reference samples.

[0271] It has been asserted that the general intra prediction process is very complex and includes reference sample filtering.

[0272] This application provides several alternative technical solutions to this problem.

[0273] In one example, the reference sample filtering stage can be deleted implicitly. Basically, when the reference sample filtering is activated, it can be divided into the following two scenarios:

[0274] – Planar prediction mode (after wide angle mapping) is planar mode, ie equal to value 0.

[0275] – Planar prediction mode (after wide angle mapping) is not planar mode and is not equal to {–14, –12, –10, –6, 2,

[0276] Any one of 34, 66, 72, 76, 78, 80}.

[0277] In one embodiment, the reference sample filtering process is removed. However, when the intra prediction mode is equal to planar mode, the reference sample filtering process is combined with the planar mode intra prediction sample generation. In addition, the reference samples are not modified because the planar mode intra prediction sample generation and reference sample filtering are combined. Therefore, the input reference samples of the PDPC are not filtered.

[0278] Thus, general intra prediction can be divided into two stages:

[0279] 1. Intra-frame prediction sample generation

[0280] 2. Position-dependent intra prediction sample filtering process (PDPC)

[0281] However, in the intra prediction sample generation stage, when the intra prediction mode is equal to the planar mode, the planar mode process is modified as follows (modifications are highlighted).

[0282] Description of INTRA_PLANAR intra prediction mode

[0283] The inputs to this process are:

[0284] – variable nTbW, representing the transform block width;

[0285] – variable nTbH, representing the transform block height;

[0286] – Neighboring samples p[x][y], where x = –1, y = –1..nTbH and x = 0..nTbW, y = –1.

[0287] –Variable refFilterFlag, which indicates the value of the reference filter flag

[0288] The output of this process is the predicted samples predSamples[x][y], where x = 0..nTbW–1 and y = 0..nTbH–1.

[0289] The variables nW and nH are derived as follows:

[0290] nW=Max(nTbW,2) (8-135)

[0291] nH=Max(nTbH,2) (8-136)

[0292] The values ​​of the predicted samples predSamples[x][y] (where x = 0..nTbW–1 and y = 0..nTbH–1) are derived as follows:

[0293] If refFilterFlag is equal to 1:

[0294] predV[x][y]=((nH-1-y)*((p[x-1][-1]+2*p[x][-1]+p[x+1][-1]+2)>>2)+(y+1)*p[-1][nTbH])< <Log2(nW) (8-XXX)

[0295] predH[x][y]=((nW-1-x)*((p[-1][y-1]+2*p[-1][y]+p[-1][y+1]+2)>>2)+(x+1)*p[nTbW][-1])< <Log2(nH)

[0296] (8-XXX)

[0297] Otherwise (i.e., refFilterFlag is equal to 0):

[0298] predV[x][y]=((nH–1–y)*p[x][–1]+(y+1)*p[–1][nTbH])< <Log2(nW) (8-137)

[0299] predH[x][y]=((nW–1–x)*p[–1][y]+(x+1)*p[nTbW][–1])< <Log2(nH) (8-138)

[0300] The output samples predSamples[x][y] are derived as follows:

[0301] predSamples[x][y]=(predV[x][y]+predH[x][y]+nW*nH)>>(Log2(nW)+Log2(nH)+1) (8-139)

[0302] The above changes reflect the integration of the reference sample filtering process with the generation of intra prediction samples for planar mode. For example, when the reference sample filtering condition is met (i.e., refFilterFlag is equal to 1), the value of the upper reference sample p[x][–1] is replaced by the filtered reference sample value ((p[x–1][–1]+2*p[x][–1]+p[x+1][–1]+2)>>2). Similarly, the value of the left reference sample p[–1][y] is replaced by the filtered reference sample value ((p[–1][y–1]+2*p[–1][y]+p[–1][y+1]+2)>>2).

[0303] It should be noted that the reference samples (p[x][y], where x = –1, y = –1..nTbH and x = 0..nTbW, y = –1) are not filtered. Therefore, the reference samples of the PDPC input are not filtered, which is not the case in the current VVC specification.

[0304] When reference sample filtering is enabled, the three phases ("phases" or "stages") of general intra prediction in the prior art and the proposed modifications are listed in Table 3 and Table 4, respectively.

[0305] Table 3

[0306]

[0307] Table 4: Modifications combining reference filtering with planar sample prediction

[0308]

[0309] In one embodiment, the reference sample filter is removed and combined with the PDPC process. Table 5 summarizes the proposed modifications:

[0310] Table 5: Modifications to combine reference filtering with PDPC

[0311]

[0312]

[0313] When the reference sample filtering process for planar mode is combined with the PDPC stage, the description of the PDPC process is modified as highlighted below:

[0314] For example, for intra prediction modes (planar and DC), the derivation of these values ​​is defined as follows:

[0315] The inputs to this process are:

[0316] – Intra prediction mode predModeIntra;

[0317] – variable nTbW, representing the transform block width;

[0318] – variable nTbH, representing the transform block height;

[0319] – variable refW, indicating the reference sample width;

[0320] – variable refH, indicating the reference sample height;

[0321] – Prediction samples predSamples[x][y], where x = 0..nTbW–1, y = 0..nTbH–1;

[0322] – adjacent samples p[x][y], where x = –1, y = –1..refH–1 and x = 0..refW–1, y = –1;

[0323] –Variable cIdx, which represents the color component of the current block.

[0324] –Variable refFilterFlag, which indicates the value of the reference filter flag

[0325] The output of this process is the modified prediction samples predSamples[x][y], where x = 0..nTbW–1 and y = 0..nTbH–1.

[0326] Depending on the value of cIdx, the function clip1Cmp is set as follows:

[0327] – If cIdx is equal to 0, clip1Cmp is set to Clip1 Y .

[0328] – Otherwise, clip1Cmp is set to Clip1 C .

[0329] The variables refL[x][y], refT[x][y], wT[y], wL[x], and wTL[x][y] (where x = 0..nTbW–1, y = 0..nTbH–1) are derived as follows:

[0330] The variable nScale is derived as follows:

[0331] – If predModeIntra is greater than INTRA_ANGULAR50, nScale is set to Min(2,Log2(nTbH)–Floor(Log2(3*invAngle–2))+8) via invAngle (as detailed in Section 8.4.5.2.12).

[0332] – Otherwise, if predModeIntra is less than INTRA_ANGULAR18, nScale is set to Min(2,Log2(nTbW)–Floor(Log2(3*invAngle–2))+8) via invAngle (as detailed in Section 8.4.5.2.12).

[0333] – Otherwise, nSacle is set to ((Log2(nTbW)+Log2(nTbH)–2)>>2).

[0334] – If predModeIntra is equal to INTRA_PLANAR or INTRA_DC, then

[0335] If refFilterFlag is equal to 1:

[0336] refL[x][y]=(p[–1][y–1]+2*p[–1][y]+p[–1][y+1]+2)>>2 (8-245)

[0337] refT[x][y]=(p[x-1][-1]+2*p[x][-1]+p[x+1][-1]+2)>> (8-246)

[0338] otherwise:

[0339] refL[x][y]=p[–1][y] (8-245)

[0340] refT[x][y]=p[x][–1] (8-246)

[0341] wT[y]=32>>((y<<1)>>nScale) (8-247)

[0342] wL[x]=32>>((x<<1)>>nScale) (8-248)

[0343] wTL[x][y]=0 (8-249)

[0344] In one embodiment, reference sample filtering is completely removed. In this case, unfiltered reference samples are always used for intra prediction sample generation and PDPC phase, regardless of the intra mode. Table 6 summarizes the modifications of this embodiment.

[0345] Table 6: Modifications combining reference filtering with planar sample prediction

[0346]

[0347] In one example, the input refFilterFlag in the above example is always set to 1. A first new embodiment can be derived from the embodiment corresponding to Table 4. In this first new embodiment, the intra-prediction sample generation for planar mode always uses filtered values ​​to generate intra-prediction samples. Similarly, a second new embodiment can be derived from the embodiment corresponding to Table 5, in which the PDPC for planar mode always uses filtered sample values ​​to replace the corresponding reference sample values.

[0348] In one example, the value of the input refFilterFlag in the above example is 1 when one or more of the following conditions are true:

[0349] The current block size is larger than N luminance samples (N can be a number equal to a power of 2 and greater than 2, i.e. 4, 8, 16, 32,

[0350] 64, 128, etc.);

[0351] Otherwise, refFilterFlag is inferred to be 0.

[0352] In one example, the value of the input refFilterFlag in the above example is set to 1 when one or more of the following conditions are true:

[0353] ISP is not applied to the current block;

[0354] Otherwise, refFilterFlag is inferred to be 0.

[0355] In one example, the value of the input refFilterFlag in the above example is set to 1 when one or more of the following conditions are true:

[0356] The current block is a luminance block;

[0357] Otherwise, refFilterFlag is inferred to be 0.

[0358] In one example (combined example), the value of the input refFilterFlag in the above example is set to 1 when one or more of the following conditions are true:

[0359] ISP is not applied to the current block;

[0360] The current block is a luminance block;

[0361] The current block size is larger than N luminance samples (N can be a number equal to a power of 2 and greater than 2, i.e. 4, 8, 16, 32,

[0362] 64, 128, etc.);

[0363] In one example, the

[121] reference sample filtering combined with planar prediction sample generation is implemented as follows:

[0364] If refFilterFlag is equal to 1:

[0365] predV[x][y]=((nH-1-y)*((p[x-1][-1]+(p[x][-1]<<1)+p[x+1][-1]+2)>>2)+(y+1)*p[-1][nTbH])< <Log2(nW) (8-XXX)

[0366] predH[x][y]=((nW-1-x)*((p[-1][y-1]+(p[-1][y]<<1)+p[-1][y+1]+2)>>2)+(x+1)*p[nTbW][-1])< <Log2(nH) (8-XXX)

[0367] Otherwise (i.e., refFilterFlag is equal to 0):

[0368] predV[x][y]=((nH–1–y)*p[x][–1]+(y+1)*p[–1][nTbH])< <Log2(nW) (8-137)

[0369] predH[x][y]=((nW–1–x)*p[–1][y]+(x+1)*p[nTbW][–1])< <Log2(nH) (8-138)

[0370] In one example, the

[121] reference sample filtering combined with planar prediction sample generation is implemented as follows:

[0371] If refFilterFlag is equal to 1:

[0372] predV[x][y]=((nH-1-y)*(p[x-1][-1]+(p[x][-1]<<1)+p[x+1][-1]+2)+((y+1)*p[-1][nTbH]<<2))<<(Log2(nW)-2)

[0373] predH[x][y]=((nW-1-x)*(p[-1][y-1]+(p[-1][y]<<1)+p[-1][y+1]+2)+((x+1)*p[nTbW][-1]<<2))<<(Log2(nH)-2)

[0374] Otherwise (i.e., refFilterFlag is equal to 0):

[0375] predV[x][y]=((nH–1–y)*p[x][–1]+(y+1)*p[–1][nTbH])< <Log2(nW) (8-137)

[0376] predH[x][y]=((nW–1–x)*p[–1][y]+(x+1)*p[nTbW][–1])< <Log2(nH) (8-138)

[0377] In one example, in planar prediction sample generation, the reference sample filtering weights are set to

[161] as follows:

[0378] If refFilterFlag is equal to 1:

[0379] predV[x][y]=((nH-1-y)*((p[x-1][-1]+(p[x][-1]*6)+p[x+1][-1]+4)>>3)+(y+1)*p[-1][nTbH])< <Log2(nW) (8-XXX)

[0380] predH[x][y]=((nW-1-x)*((p[-1][y-1]+(p[-1][y]*6)+p[-1][y+1]+4)>>3)+(x+1)*p[nTbW][-1])< <Log2(nH) (8-XXX)

[0381] Otherwise (i.e., refFilterFlag is equal to 0):

[0382] predV[x][y]=((nH–1–y)*p[x][–1]+(y+1)*p[–1][nTbH])< <Log2(nW) (8-137)

[0383] predH[x][y]=((nW–1–x)*p[–1][y]+(x+1)*p[nTbW][–1])< <Log2(nH) (8-138)

[0384] In one example, in the planar prediction sample generation, the reference sample filtering weight is set to

[161] , which is implemented as follows:

[0385] If refFilterFlag is equal to 1:

[0386] predV[x][y]=((nH-1-y)*((p[x-1][-1]+(p[x][-1]<<2)+(p[x][-1]<<1)+p[x+1][-1]+4)>>3)+(y+1)*p[-1][nTbH])< <Log2(nW)

[0387] predH[x][y]=((nW-1-x)*((p[-1][y-1]+(p[-1][y]<<2)+(p[-1][y]<<1)+p[-1][y+1]+4)>>3)+(x+1)*p[nTbW][-1])< <Log2(nH)

[0388] Otherwise (i.e., refFilterFlag is equal to 0):

[0389] predV[x][y]=((nH–1–y)*p[x][–1]+(y+1)*p[–1][nTbH])< <Log2(nW) (8-137)

[0390] predH[x][y]=((nW–1–x)*p[–1][y]+(x+1)*p[nTbW][–1])< <Log2(nH) (8-138)

[0391] Other examples of the PDPC process are highlighted below:

[0392] In one example,

[121] reference sample filtering combined with PDPC is implemented as follows:

[0393] If refFilterFlag is equal to 1:

[0394] refL[x][y]=(p[x-1][-1]+(p[x][-1]<<1)+p[x+1][-1]+2)>>2

[0395] refT[x][y]=(p[-1][y-1]+(p[-1][y]<<1)+p[-1][y+1]+2)>>2

[0396] Otherwise (i.e., refFilterFlag is equal to 0):

[0397] refL[x][y]=p[–1][y] (8-245)

[0398] refT[x][y]=p[x][–1] (8-246)

[0399] In one example, in planar prediction sample generation, the reference sample filtering weights are set to

[161] as follows:

[0400] If refFilterFlag is equal to 1:

[0401] refL[x][y]=(p[x–1][-1]+(p[x][-1]*6)+p[x+1][-1]+4)>>3 (8-245)

[0402] refT[x][y]=(p[-1][y-1]+(p[-1][y]*6)+p[-1][y+1]+4)>>3

[0403] Otherwise (i.e., refFilterFlag is equal to 0):

[0404] refL[x][y]=p[–1][y] (8-245)

[0405] refT[x][y]=p[x][–1] (8-246)

[0406] In one example, in the planar prediction sample generation, the reference sample filtering weight is set to

[161] , which is implemented as follows:

[0407] If refFilterFlag is equal to 1:

[0408] refL[x][y]=(p[x-1][-1]+(p[x][-1]<<2)+(p[x][-1]<<1)+p[x+1][-1]+4)>>3(8-245)

[0409] refT[x][y]=(p[-1][y-1]+(p[-1][y]<<2)+(p[-1][y]<<1)+p[-1][y+1]+4)>>3(8-246)

[0410] Otherwise (i.e., refFilterFlag is equal to 0):

[0411] refL[x][y]=p[–1][y] (8-245)

[0412] refT[x][y]=p[x][–1] (8-246)

[0413] In an embodiment, the conditions depending on refFilterFlag are removed in all the above examples, and the value of the filtered reference sample is always used (ie, the value of the filtered reference sample is used regardless of the value of refFilterFlag).

[0414] In the above example, p[x][y] represents the reference value at the coordinates (x, y), where x represents the horizontal position, y represents the vertical position, and p[0][0] represents the upper left corner position of the current decoding block at the coordinates (0, 0). Figure 11 is an example of the current 4×4 decoding block and its position.

[0415] Specifically, the following methods and embodiments are implemented by a decoding device or an encoding device. The decoding device may be Figure 1A Video decoder 30 or Figure 3 The decoder 30. The encoding device may be Figure 1A Video encoder 20 or Figure 2 encoder 20.

[0416] According to the embodiment 1200 (see Figure 12 ), the device obtains a filtering indication. The filtering indication may be used to indicate whether the filtered value or the unfiltered value of the reference sample of the current decoding block is used in step 1201.

[0417] By applying the filter to the reference samples, filtered values ​​of the reference samples are obtained.

[0418] In step 1203, the device determines whether the value of the filter indication is true or false. If the value of the filter indication is false, step 1205a is performed. If the value of the filter indication is true, step 1205b is performed.

[0419] The value of the filtering indication is true when one or more of the following conditions are true:

[0420] The current block size is greater than N luma samples (N can be a number equal to a power of 2 and greater than 2, i.e., 4, 8, 16, 32, 64, 128, etc.);

[0421] Intrasub-partition (ISP) is not applied to the current block; or

[0422] The current block is a luminance block.

[0423] In step 1205a, the device generates prediction samples using filtered values ​​of reference samples according to planar mode.

[0424] In step 1205b, the device generates prediction samples using the filtered values ​​of the reference samples according to the planar mode.

[0425] For example, when the filter is

[121] ,

[0426] predV[x][y]=((nH–1–y)*((p[x–1][–1]+2*p[x][–1]+p[x+1][–1]+2)>>2)+(y+1)*p[–1][nTbH])< <Log2(nW)

[0427] predH[x][y]=((nW–1–x)*((p[–1][y–1]+2*p[–1][y]+p[–1][y+1]+2)>>2)+(x+1)*p[nTbW][–1])< <Log2(nH)

[0428] Wherein, predV[x][y] is the vertical component of the predicted sample, predH[x][y] is the horizontal component of the predicted sample, and p[x][y] (x=–1, y=–1..nTbH, and x=0..nTbW, y=–1) is the reference sample.

[0429] When the filter is

[161] ,

[0430] predV[x][y]=((nH–1–y)*((p[x–1][–1]+(p[x][–1]*6)+p[x+1][–1]+4)>>3)+(y+1)*p[–1][nTbH])< <Log2(nW)

[0431] predH[x][y]=((nW–1–x)*((p[–1][y–1]+(p[–1][y]*6)+p[–1][y+1]+4)>>3)+(x+1)*p[nTbW][–1])< <Log2(nH)

[0432] Wherein, predV[x][y] is the vertical component of the predicted sample, predH[x][y] is the horizontal component of the predicted sample, and p[x][y] (x=–1, y=–1..nTbH, and x=0..nTbW, y=–1) is the reference sample.

[0433] The output samples predSamples[x][y] are derived as follows:

[0434] predSamples[x][y]=(predV[x][y]+predH[x][y]+nW*nH)>>(Log2(nTbW)+Log2(nTbH)+1) (8139)

[0435] According to another embodiment 1300 (see Figure 13 ), the device obtains a filtering indication. The filtering indication may be used to indicate whether the filtered value or the unfiltered value of the reference sample of the current decoding block is used in step 1301. The filtered value of the reference sample is obtained by applying a filter to the reference sample.

[0436] When the filter is

[121] ,

[0437] refL[x][y]=(p[–1][y–1]+2*p[–1][y]+p[–1][y+1]+2)>>2

[0438] refT[x][y]=(p[x–1][–1]+2*p[x][–1]+p[x+1][–1]+2)>>2

[0439] Wherein, refL[x][y] is the corresponding reference sample of the left column of the output sample, refT[x][y] is the corresponding reference sample of the upper row of the output sample, and p[x][y] (x=–1, y=–1..nTbH, and x=0..nTbW, y=–1) is the reference sample.

[0440] When the filter is

[161] ,

[0441] refL[x][y]=(p[x–1][–1]+(p[x][–1]*6)+p[x+1][–1]+4)>>3

[0442] refT[x][y]=(p[–1][y–1]+(p[–1][y]*6)+p[–1][y+1]+4)>>3

[0443] Wherein, refL[x][y] is the corresponding reference sample of the left column of the output sample, refT[x][y] is the corresponding reference sample of the upper row of the output sample, and p[x][y] (x=–1, y=–1..nTbH, and x=0..nTbW, y=–1) is the reference sample.

[0444] In step 1303, the device determines whether the value of the filter indication is true or false. If the value of the filter indication is false, step 1305a is performed. If the value of the filter indication is true, step 1305b is performed.

[0445] In step 1305a, the device generates output samples using the unfiltered values ​​of the reference samples.

[0446] In step 1305b, the device generates output samples according to planar mode using the filtered values ​​of the reference samples.

[0447] The above embodiments show detailed information on using different processes to perform intra-frame prediction according to the value of the filtering indicator.

[0448] Figure 14 An embodiment of a device 1400 is shown. The device 1400 may be Figure 1A The video decoder 30, or Figure 3 The decoder 30 may be Figure 1A The video encoder 20, or Figure 2 The encoder 20. The device 1400 can be used to implement the above-mentioned embodiments 1200, 1300 and other embodiments.

[0449] The intra-frame prediction apparatus 1400 includes an acquisition unit 1401, a determination unit 1402, and a generation unit 1403. The acquisition unit 1401 is configured to acquire a filtering indication, wherein the filtering indication indicates whether to use filtered values ​​or unfiltered values ​​of reference samples of a current decoding block. The determination unit 1402 is configured to determine whether the value of the filtering indication is true or false.

[0450] When the device is used in the intra-frame prediction sample generation stage, the generation unit 1403 is used to: when the value of the filtering indication is true, generate the prediction sample using the filtered value of the reference sample according to the planar mode; or when the value of the filtering indication is false, generate the prediction sample using the unfiltered value of the reference sample according to the planar mode.

[0451] When the device is used in the position-dependent intra prediction (PDPC) stage, the generation unit 1403 is used to: when the value of the filtering indication is true, use the filtered value of the reference sample to generate the output sample, or when the value of the filtering indication is false, use the unfiltered value of the reference sample to generate the output sample.

[0452] As described above, in conventional methods, the general intra-frame prediction process is very complex, including reference sample filtering. This embodiment provides a technical solution to this problem. For example, when the value of the filtering indication is false, the reference sample filtering stage can be completely eliminated or combined with other stages by using the unfiltered value of the reference sample.

[0453] Mathematical operators

[0454] The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are more precisely defined, and other operations such as exponentiation and real-valued division are defined. Numbering and counting conventions generally start at 0, for example, "first" is equivalent to the 0th, "second" is equivalent to the 1st, and so on.

[0455] Arithmetic operators

[0456] The following arithmetic operators are defined as follows:

[0457]

[0458] Logical operators

[0459] The following logical operators are defined as follows:

[0460] x&&y Boolean logical "AND" of x and y

[0461] x||y Boolean logical OR of x and y

[0462] ! Boolean logic "not"

[0463] x?y:z If x is true (TRUE) or not equal to 0, it returns the value of y; otherwise, it returns the value of z.

[0464] Relational operators

[0465] The following relational operators are defined as follows:

[0466] > greater than

[0467] > = greater than or equal to

[0468] <

[0469] <=less than or equal to

[0470] ===Equal

[0471] ! = not equal to

[0472] When a relational operator is applied to a syntax element or variable that has been assigned the value "na" (not applicable), the value "na" is a distinct value for the syntax element or variable. The value "na" is not equal to any other value.

[0473] Bitwise operators

[0474] The following bitwise operators are defined as follows:

[0475] & Bitwise AND. When operating on integer arguments, the operation is on the two's complement representation of the integer value. When operating on binary arguments, if the binary argument contains fewer bits than the other argument, the shorter argument is extended by adding more significant bits equal to 0.

[0476] | Bitwise OR. When operating on integer arguments, the operation is on the two's complement representation of the integer value. When operating on binary arguments, if the binary argument contains fewer bits than the other argument, the shorter argument is extended by adding more significant bits equal to 0.

[0477] ^ Bitwise XOR. When operating on integer arguments, the operation is on the two's complement representation of the integer value.

[0478] When operating on binary arguments, if the binary argument contains fewer bits than the other argument, the shorter argument is extended by adding more significant bits equal to 0.

[0479] x >> y Arithmetically shift the two's complement integer representation of x by y binary digits. This function is defined only when y is a non-negative integer value. The result of the shift is that the bit shifted into the most significant bit (MSB) is equal to the MSB of x before the shift operation.

[0480] x << y Arithmetically shift the two's complement integer representation of x by y binary digits. This function is defined only when y is a non-negative integer value. The result of the shift is that the bit shifted into the least significant bit (LSB) is equal to 0.

[0481] Assignment operators

[0482] The following arithmetic operators are defined as follows:

[0483] = Assignment operator

[0484] ++ Increment, i.e., x++ is equivalent to x = x + 1; when used in an array index, it is equal to the value of the variable before the increment operation.

[0485] –– Decrement, i.e., x–– is equivalent to x = x – 1; when used in an array index, it is equal to the value of the variable before the decrement operation.

[0486] += Add the specified value, e.g., x += 3 is equivalent to x = x + 3, x += (–3) is equivalent to x = x + (–3).

[0487] –= Subtract the specified amount, i.e., x –= 3 is equal to x = x – 3, x –= (–3) is equal to x = x – (–3).

[0488] Range Notation

[0489] The following notation is used to indicate ranges of values:

[0490] x=y..zx takes integer values ​​from y to z (including y and z), where x, y and z are all integers and z is greater than y.

[0491] Mathematical functions

[0492] The following mathematical functions are defined:

[0493]

[0494] Asin(x) is the trigonometric inverse sine function. It operates on the argument x, and for x in the range of –1.0 to 1.0 (inclusive), it produces an output value in the range of –π÷2 to π÷2 (inclusive) expressed in radians.

[0495] Atan(x) is the trigonometric inverse tangent function. It operates on the argument x and produces an output value in the range of –π÷2 to π÷2 (inclusive) expressed in radians.

[0496]

[0497] Ceil(x) is the smallest integer greater than or equal to x.

[0498] Clip1 Y (x)=Clip3(0,(1< <BitDepth Y )–1,x)

[0499] Clip1 C (x)=Clip3(0,(1< <BitDepth C )–1,x)

[0500]

[0501] Cos(x) trigonometric cosine function, operates on parameter x, in radians.

[0502] Floor(x) is the largest integer less than or equal to x.

[0503]

[0504] Ln(x) is the natural logarithm of x (logarithm to base e, where e is the constant for the base of natural logarithms, 2.718281828…).

[0505] Log2(x) is the base 2 logarithm of x.

[0506] Log10(x) is the base 10 logarithm of x.

[0507]

[0508] Round(x)=Sign(x)*Floor(Abs(x)+0.5)

[0509]

[0510] Sin(x) trigonometric sine function, operates on parameter x, in radians.

[0511]

[0512] Swap(x,y)=(y,x)

[0513] Tan(x) is the trigonometric tangent function, which operates on the parameter x in radians.

[0514] Operation priority order

[0515] When parentheses are not used to explicitly indicate precedence in an expression, the following rules apply:

[0516] – Operations with higher priority are evaluated before any operations with lower priority.

[0517] – Operations of the same priority are evaluated from left to right.

[0518] Table 7 below illustrates the priority of operations from highest to lowest. The higher the position in Table 7, the higher the priority.

[0519] For operators that are also used in the C programming language, the operator precedence order in this specification is the same as that in the C programming language.

[0520] Table 7: Operation priority from highest (top of Table 7) to lowest (bottom of Table 7)

[0521]

[0522] Text description of the logical operation

[0523] In the text, statements for logical operations are described in mathematical form as follows:

[0524] if(condition0)

[0525] statement0

[0526] elseif(condition1)

[0527] statement1 ...

[0529] else / *Remarks on remaining conditions* /

[0530] statement

[0531] It can be described as follows:

[0532] ...as follows / ...then:

[0533] – If condition 0 then statement 0

[0534] – Else if condition 1 then statement 1

[0535] –……

[0536] – Otherwise (information note for the remaining conditions), then statement n

[0537] Each "if...else, if...else, ..." statement in the text is introduced by "if..." followed by "...as follows:" or "...then:". The final condition of "if...else, if...else, ..." is always "else, ...". Statements with "if...else, if...else, ..." in between are identified by matching "...as follows:" or "...then" with the concluding clause "...else".

[0538] In the text, statements for logical operations are described in mathematical form as follows:

[0539] if(condition0a&&condition0b)

[0540] statement0

[0541] elseif(condition1a||condition1b)

[0542] statement1 ...

[0544] else

[0545] statement

[0546] It can be described as follows:

[0547] ...as follows / ...then:

[0548] – Statement 0 if all of the following are true:

[0549] –Condition 0a

[0550] – Condition 0b

[0551] – Otherwise, if one or more of the following conditions are true, then statement 1:

[0552] –Condition 1a

[0553] – Condition 1b

[0554] –……

[0555] – Otherwise, statement n

[0556] In the text, statements for logical operations are described in mathematical form as follows:

[0557] if(condition0)

[0558] statement0

[0559] if(condition1)

[0560] statement1

[0561] It can be described as follows:

[0562] When condition 0, then statement 0

[0563] When condition 1, statement 1

[0564] Although embodiments of the present invention are primarily described with respect to video decoding, it should be noted that embodiments of the decoding system 10, encoder 20, and decoder 30 (respectively, system 10), as well as other embodiments described herein, may also be used for still image processing or decoding, i.e., processing or decoding a single image in video decoding that is independent of any previous or subsequent images. In general, if image processing and decoding are limited to a single image 17, inter-frame prediction units 244 (encoder) and 344 (decoder) may not be available. All other functionalities (also referred to as tools or techniques) of the video encoder 20 and video decoder 30, such as residual calculation 204 / 304, transform 206, quantization 208, inverse quantization 210 / 310, (inverse) transform 212 / 312, segmentation 262 / 362, intra-frame prediction 254 / 354, and / or loop filtering 220 / 320, entropy coding 270, and entropy decoding 304, may also be used for still image processing.

[0565] Embodiments of the encoder 20 and decoder 30, etc., and the functions described herein in connection with the encoder 20 and decoder 30, etc., may be implemented using hardware, software, firmware, or any combination thereof. If implemented using software, the various functions may be stored or transmitted as one or more instructions or codes on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, corresponding to tangible media such as data storage media, or communication media including any medium that facilitates the transfer of computer programs from one place to another (e.g., according to a communication protocol). In this manner, computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media, or (2) communication media such as signals or carrier waves. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementing the techniques described in the present invention. A computer program product may include computer-readable media.

[0566] As an example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage device, flash memory or any other medium that can be used to store the required program code in the form of instructions or data structures and can be accessed by a computer. In addition, any connection can be appropriately defined as a computer-readable medium. For example, if a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL) or wireless technologies such as infrared, radio and microwave are used to transmit instructions from a website, server or other remote source, then the coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave are included in the definition of medium. However, it should be understood that the computer-readable storage medium and data storage medium do not include connections, carrier waves, signals or other transient media, but are actually directed to non-transient tangible storage media. As used herein, the terms disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs. Disks typically reproduce data magnetically, while optical discs typically reproduce data optically using lasers. Combinations of the above may also be included within the scope of computer-readable media.

[0567] Instructions may be executed by one or more processors such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the term "processor" as used herein may refer to any of the aforementioned structures or any other structures suitable for implementing the techniques described herein. Additionally, in some aspects, the various functions described herein may be provided within dedicated hardware and / or software modules for encoding and decoding, or incorporated into a combined codec. Furthermore, the techniques may be implemented entirely in one or more circuits or logic elements.

[0568] The techniques of the present invention can be implemented in a variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or a set of ICs (e.g., a chipset). The various components, modules, or units described herein are intended to emphasize the functional aspects of the apparatus for performing the disclosed techniques, but do not necessarily need to be implemented by different hardware units. In fact, as described above, the various units can be combined in a codec hardware unit in conjunction with appropriate software and / or firmware, or provided by a collection of interoperable hardware units (including one or more processors as described above).

Claims

1. A method for intra-frame prediction, characterized in that: The method comprises an intra-frame prediction sample generation stage, in which: Obtaining a filtering indication, wherein the filtering indication indicates using a filtered value or an unfiltered value of a reference sample of a current decoding block; generating prediction samples using the filtered values ​​of the reference samples according to planar mode when the value of the filtering indication is true; or generating prediction samples using the unfiltered values ​​of the reference samples according to planar mode when the value of the filtering indication is false; The method further comprises: Obtaining the filtered value of the reference sample by applying a filter to the reference sample; When the filter is [121], predV[x][y]=((nH–1–y)*((p[x–1][–1]+2*p[x][–1]+p[x+1][–1]+2)>>2)+(y+1)*p[– 1][nTbH])< <Log2(nW) predH[x][y]=((nW–1–x)*((p[–1][y–1]+2*p[–1][y]+p[–1][y+1]+2)>>2)+(x+1)*p[nTbW][– 1])< <Log2(nH) When the filter is [161], predV[x][y]=((nH–1–y)*((p[x–1][–1]+(p[x][–1]*6)+p[x+1][–1]+4)>>3)+(y+1)*p[– 1][nTbH])< <Log2(nW) predH[x][y]=((nW–1–x)*((p[–1][y–1]+(p[–1][y]*6)+p[–1][y+1]+4)>>3)+(x+1)*p[nTbW][–1])< <Log2(nH) Wherein, predV[x][y] is the vertical component of the predicted sample, predH[x][y] is the horizontal component of the predicted sample, p[x][y] is the reference sample, x=–1, y=–1..nTbH, and x=0..nTbW, y=–1.

2. The method according to claim 1, characterized in that The value of the filtering indication is true when one or more of the following conditions are true: The current block size is greater than N luma samples, where N is a power of 2 and greater than 2, i.e., 4, 8, 16, 32, 64, 128, etc. Intrasub-partition (ISP) is not applied to the current block; The current block is a luminance block.

3. The method according to claim 1 or 2, characterized in that The method further comprises a position-dependent intra prediction (PDPC) stage in which reference samples p[x][y] of the PDPC input are not filtered, where x=–1, y=–1..nTbH and x=0..nTbW, y=–1.

4. A method for intra-frame prediction, characterized in that: The method comprises a position-dependent intra prediction (PDPC) stage, During the PDPC phase: Obtaining a filtering indication, wherein the filtering indication indicates using a filtered value or an unfiltered value of a reference sample of a current decoding block; When the value of the filtering indication is true, generating an output sample using the filtered value of the reference sample; or generating output samples using the unfiltered values ​​of the reference samples when the value of the filtering indication is false; The method further comprises: During the PDPC phase: Obtaining the filtered value of the reference sample by applying a filter to the reference sample; When the filter is [121], refL[x][y]=(p[–1][y–1]+2*p[–1][y]+p[–1][y+1]+2)>>2 refT[x][y]=(p[x–1][–1]+2*p[x][–1]+p[x+1][–1]+2)>>2 When the filter is [161], refL[x][y]=(p[x–1][–1]+(p[x][–1]*6)+p[x+1][–1]+4)>>3 refT[x][y]=(p[–1][y–1]+(p[–1][y]*6)+p[–1][y+1]+4)>>3 Wherein, refL[x][y] is the corresponding reference sample of the left column of the output sample, refT[x][y] is the corresponding reference sample of the upper row of the output sample, p[x][y] is the reference sample, x=–1, y=–1..nTbH, and x=0..nTbW, y=–1.

5. The method according to claim 4, characterized in that The filter flag is true when one or more of the following conditions are true: The current block size is greater than N luma samples, where N is a power of 2 and greater than 2, i.e., 4, 8, 16, 32, 64, 128, etc. Intrasub-partition (ISP) is not applied to the current block; The current block is a luminance block.

6. The method according to claim 4 or 5, characterized in that The method further comprises an intra-frame prediction sample generation stage, In the intra-frame prediction sample generation stage: In planar mode, unfiltered reference samples are used to generate intra prediction samples.

7. A method for intra-frame prediction, characterized in that: The method comprises an intra-frame prediction sample generation stage, in which: Generate prediction samples using filtered values ​​of reference samples according to planar mode; The method further comprises: Obtaining the filtered value of the reference sample by applying a filter to the reference sample; When the filter is [121], predV[x][y]=((nH–1–y)*((p[x–1][–1]+2*p[x][–1]+p[x+1][–1]+2)>>2)+(y+1)*p[– 1][nTbH])< <Log2(nW) predH[x][y]=((nW–1–x)*((p[–1][y–1]+2*p[–1][y]+p[–1][y+1]+2)>>2)+(x+1)*p[nTbW][– 1])< <Log2(nH) When the filter is [161], predV[x][y]=((nH–1–y)*((p[x–1][–1]+(p[x][–1]*6)+p[x+1][–1]+4)>>3)+(y+1)*p[– 1][nTbH])< <Log2(nW) predH[x][y]=((nW–1–x)*((p[–1][y–1]+(p[–1][y]*6)+p[–1][y+1]+4)>>3)+(x+1)*p[nTbW][–1])< <Log2(nH) Wherein, predV[x][y] is the vertical component of the predicted sample, predH[x][y] is the horizontal component of the predicted sample, p[x][y] is the reference sample, x=–1, y=–1..nTbH, and x=0..nTbW, y=–1.

8. The method according to claim 7, characterized in that The method further comprises a PDPC stage in which reference samples p[x][y] of the PDPC input are not filtered, where x=−1, y=−1..nTbH and x=0..nTbW, y=−1.

9. A method for intra-frame prediction, characterized in that: The method comprises a position-dependent intra prediction (PDPC) stage, During the PDPC phase: Generate output samples using filtered values ​​of reference samples; The method further comprises: During the PDPC phase: Obtaining the filtered value of the reference sample by applying a filter to the reference sample; When the filter is [121], refL[x][y]=(p[–1][y–1]+2*p[–1][y]+p[–1][y+1]+2)>>2 refT[x][y]=(p[x–1][–1]+2*p[x][–1]+p[x+1][–1]+2)>>2 When the filter is [161], refL[x][y]=(p[x–1][–1]+(p[x][–1]*6)+p[x+1][–1]+4)>>3 refT[x][y]=(p[–1][y–1]+(p[–1][y]*6)+p[–1][y+1]+4)>>3 Wherein, refL[x][y] is the corresponding reference sample of the left column of the output sample, refT[x][y] is the corresponding reference sample of the upper row of the output sample, p[x][y] is the reference sample, x=–1, y=–1..nTbH, and x=0..nTbW, y=–1.

10. The method according to claim 9, characterized in that The method further comprises an intra-frame prediction sample generation stage, In the intra-frame prediction sample generation stage: In planar mode, unfiltered reference samples are used to generate intra prediction samples.

11. An encoder (20), characterized in that comprising processing circuitry for performing the method according to any one of claims 1 to 10.

12. A decoder (30), characterized in that comprising processing circuitry for performing the method according to any one of claims 1 to 10.

13. A computer program product, characterized in that The device comprises a program code for executing the method according to any one of claims 1 to 10.

14. A decoder, characterized in that include: one or more processors; A non-transitory computer-readable storage medium is coupled to the processor and stores a program to be executed by the processor, wherein when the processor executes the program, the decoder is configured to perform the method according to any one of claims 1 to 10.

15. An encoder, characterized in that include: one or more processors; A non-transitory computer-readable storage medium is coupled to the processor and stores a program to be executed by the processor, wherein when the processor executes the program, the encoder is configured to perform the method according to any one of claims 1 to 10.

Citation Information

Patent Citations

  • Processing Reference Samples Used For Intra-Prediction of a Picture Block

    US20180288413A1