Directional Nearest Neighbor Prediction Mode

The DNNP mode in video coding improves compression efficiency by selecting optimal predictors among top, left, and top-left reference samples based on difference thresholds and signs, addressing suboptimal intra-prediction in complex edge directions.

JP2025533823AActive Publication Date: 2025-10-09TENCENT AMERICA LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2025519508
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-10-05
Filing Date
2023-10-06
Publication Date
2025-10-09
Estimated Expiration
2043-10-06

AI Technical Summary

Technical Problem

Existing video coding technologies face challenges in efficiently utilizing spatial redundancy for intra-prediction, particularly in handling complex edge directions in video blocks, leading to suboptimal compression efficiency.

Method used

The introduction of a directional nearest neighbor prediction (DNNP) mode in video encoding/decoding, where a processing circuit selects a predicted value for a current block based on differences between reference samples, using thresholds and signs to determine the best predictor among top, left, or top-left values, and optionally incorporates additional reference samples for improved accuracy.

Benefits of technology

Enhances video compression efficiency by accurately predicting sample values, reducing data volume, and improving image quality by better exploiting spatial redundancy in video blocks.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025533823000001_ABST
    Figure 2025533823000001_ABST
Patent Text Reader

Abstract

Aspects of the present disclosure include methods and devices for video coding. One of the devices includes a processing circuit that receives a bitstream of a current block in a current picture. The current block is coded in directional nearest neighbor prediction (DNNP) mode. The processing circuit selects a predicted value for a sample in the current block from the top-left value, the top value, or the left value based on one or more difference values ​​between respective paired values ​​of (i) a top-left value associated with an top-left reference sample that is an upper-left neighbor of the current block, (ii) a top value associated with an top reference sample that is an upper-left neighbor of the sample in the current block, and (iii) a left value associated with a left reference sample that is a left neighbor of the sample in the current block. The processing circuit reconstructs the current block using the selected predicted value for the sample in the current block.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This disclosure describes aspects generally related to video coding. [Background technology]

[0002] [Incorporated by reference] This application claims the benefit of priority to U.S. Patent Application No. 18 / 377,277, filed October 5, 2023, entitled "DIRECTIONAL NEAREST NEIGHBOR PREDICTION MODE." This U.S. patent application claims the benefit of priority to U.S. Provisional Application No. 63 / 414,312, filed October 7, 2022, entitled "Directional nearest neighbor prediction mode." The disclosures of the prior applications are incorporated herein by reference in their entireties. [Background technology] The background art discussion provided herein is intended to generally present the context for the present disclosure. The inventors' work, to the extent described in this background art section, as well as aspects of the discussion that are not admitted as prior art at the time of filing, are not admitted expressly or impliedly as prior art to the present disclosure.

[0003] Image / video compression can help transmit image / video data across different devices, storage, and networks with minimal image quality degradation. In some examples, video codec technology can compress video based on spatial and temporal redundancy. In one example, a video codec can use a technique called intra-prediction, which can compress images based on spatial redundancy. For example, intra-prediction can use reference data from a current picture being reconstructed for sample prediction. In another example, a video codec can use a technique called inter-prediction, which can compress images based on temporal redundancy. For example, inter-prediction can predict samples in a current picture from a previously reconstructed picture using motion compensation. Motion compensation can be indicated by a motion vector (MV). Summary of the Invention

[0004] Aspects of the present disclosure include methods and apparatuses for video encoding / decoding. In some examples, the apparatus for video decoding includes a processing circuit. The processing circuit receives a bitstream of a current block in a current picture. In response to the current block being encoded in a directional nearest neighbor prediction (DNNP) mode, the processing circuit selects a predicted value of a sample in the current block from a top-left value, a top value, or a left value based on whether (i) the absolute value |Δ1| is greater than N0 multiplied by the absolute value |Δ2|, or (ii) the absolute value |Δ2| is greater than N1 multiplied by the absolute value |Δ1|. Δ1 is a difference between the left value and the top-left value, and Δ2 is a difference between the top value and the top-left value. The top-left value is associated with an top-left reference sample of the current block, the top value is associated with an above reference sample of a sample in the same column as the sample, and the left value is associated with a left reference sample of a sample in the same row as the sample. N0 is a first positive integer, and N1 is a second positive integer. The processing circuitry reconstructs the current block using the selected predictors for the samples in the current block.

[0005] In one aspect, the top-left value is a value of the top-left reference sample of the current block, the top value is a value of the above reference sample of the sample, and the left value is a value of the left reference sample. The processing circuit selects a prediction sample from the top-left reference sample, the above reference sample of the sample, and the left reference sample of the current block based on (i) whether the absolute value |Δ1| is greater than N0 multiplied by the absolute value |Δ2|, or (ii) whether the absolute value |Δ2| is greater than N1 multiplied by the absolute value |Δ1|.

[0006] In one aspect, the processing circuit derives the upper value using the upper reference sample and at least one reference sample from among (i) the left adjacent sample of the above reference sample, (ii) the right adjacent sample of the above reference sample, (iii) the upper right reference sample of the current block, or (iv) the lower left reference sample of the current block.

[0007] In one example, the at least one reference sample includes a left neighbor of the top reference sample and a right neighbor of the top reference sample, and the processing circuit derives the top value as (i) an average or (ii) a median of the value of the top reference sample, the value of the left neighbor of the top reference sample, and the value of the right neighbor of the top reference sample.

[0008] In one example, the at least one reference sample includes an upper-right reference sample of the current block and a lower-left reference sample of the current block, and the processing circuit derives the upper value as (i) an average or (ii) a median of the value of the upper reference sample, the value of the upper-right reference sample of the current block, and the value of the lower-left reference sample of the current block.

[0009] In one aspect, the processing circuit derives the left value using a left reference sample and at least one reference sample from (i) an upper neighbor of the left reference sample, (ii) a lower neighbor of the left reference sample, (iii) an upper right reference sample of the current block, or (iv) a lower left reference sample of the current block.

[0010] In one example, the at least one reference sample includes an upper neighbor of the left reference sample and a lower neighbor of the left reference sample, and the processing circuit derives the left value as (i) an average or (ii) a median of the value of the left reference sample, the value of the upper-neighbor sample of the left reference sample, and the value of the lower-neighbor sample of the left reference sample.

[0011] In one example, the at least one reference sample includes an upper-right reference sample of the current block and a lower-left reference sample of the current block, and the processing circuitry includes deriving the left value as (i) an average or (ii) a median of the value of the left reference sample, the value of the upper-right reference sample of the current block, and the value of the lower-left reference sample of the current block.

[0012] In one example, the processing circuitry derives the top-left value using the top-left reference sample, the right neighbor of the top-left reference sample, and the bottom neighbor of the top-left reference sample.

[0013] In one example, the processing circuit derives the top-left value as (i) the average or (ii) the median of the value of the top-left reference sample, the value of the right neighbor of the top-left reference sample, and the value of the bottom neighbor of the top-left reference sample.

[0014] In one example, N0 is greater than or equal to 2. In response to the absolute value |Δ1| being greater than N0 multiplied by the absolute value |Δ2|, the processing circuit selects the left value as the predicted value for the sample in the current block.

[0015] In one example, N1 is greater than or equal to 2. In response to the absolute value |Δ2| being greater than N1 multiplied by the absolute value |Δ1|, the processing circuit selects the upper value as the predicted value for the sample in the current block.

[0016] In one example, N0 is greater than or equal to 2, and N1 is greater than or equal to 2. In response to the absolute value |Δ1| being not greater than N0 multiplied by the absolute value |Δ2| and the absolute value |Δ2| being not greater than N1 multiplied by the absolute value |Δ1|, the processing circuit selects a predicted value for the sample in the current block based on whether the values ​​Δ1 and Δ2 have opposite signs. In response to the values ​​Δ1 and Δ2 having opposite signs, the processing circuit selects the top-left value as the predicted value for the sample in the current block. In response to the values ​​Δ1 and Δ2 having the same sign, the processing circuit selects the top value as the predicted value for the sample in the current block in response to the absolute value |Δ1| being less than the absolute value |Δ2|, and selects the left value as the predicted value for the sample in the current block in response to the absolute value |Δ1| being not less than the absolute value |Δ2|.

[0017] In one example, N0 is 1. In response to the absolute value |Δ1| being greater than the absolute value |Δ2|, the processing circuit selects the left value as the predicted value for the sample in the current block. In response to the absolute value |Δ1| not being greater than the absolute value |Δ2|, the processing circuit selects the top value as the predicted value for the sample in the current block.

[0018] In one aspect, the bitstream includes a flag signaled for the current block that indicates whether the DNNP mode applies to the current block.

[0019] In one aspect, neighboring blocks of the current block are coded using DNNP modes. In response to deriving the intra-prediction mode of the current block based on at least the neighboring blocks, the processing circuit maps the DNNP modes of the neighboring blocks to an intra-prediction mode that is one of DC mode, planar mode, planar V mode, planar H mode, smooth mode, smooth H mode, smooth V mode, or angular mode.

[0020] In one aspect, the current block is a chroma block coded in a chroma intra prediction mode. The processing circuit derives the chroma intra prediction mode of the current block from the intra prediction mode of a co-located luma block of the current block by deriving the chroma intra prediction mode of the current block as one of DC mode, planar mode, planar V mode, planar H mode, smooth mode, smooth H mode, smooth V mode, or angular mode depending on whether the intra prediction mode of the co-located luma block is DNNP mode.

[0021] In one example, the bitstream includes a signaled high-level syntax element that indicates whether DNNP mode is enabled at the corresponding high level.

[0022] In one aspect, the current block is coded in a directional nearest neighbor prediction (DNNP) mode. The processing circuit selects a predicted value for the sample in the current block from the top-left value, the top value, or the left value based on one or more difference values ​​between each pair of values: (i) a top-left value associated with a top-left reference sample that is a top-left neighbor of the current block, (ii) a top value associated with a top reference sample that is a top neighbor of the sample in the current block, and (iii) a left value associated with a left reference sample that is a left neighbor of the sample in the current block.

[0023] Aspects of the present disclosure also provide a non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform any of the methods for video decoding / encoding. [Brief explanation of the drawings]

[0024] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Figure 1] FIG. 1 is a schematic diagram of an exemplary block diagram of a communication system (100). [Figure 2] FIG. 2 is a schematic diagram of an exemplary block diagram of a decoder. [Figure 3] FIG. 2 is a schematic diagram of an exemplary block diagram of an encoder. [Figure 4] 1 illustrates intra-prediction modes according to aspects of the present disclosure. [Figure 5] 1 illustrates an example of reference samples for wide-angle intra prediction according to aspects of the present disclosure. [Figure 6] 10 illustrates another example of reference samples for wide-angle intra prediction according to aspects of the present disclosure. [Figure 7] 1 illustrates discontinuities for orientations greater than 45° according to one embodiment of the present invention. [Figure 8] 1 illustrates an example of a PAETH prediction mode according to one aspect of the present disclosure. [Figure 9] 1 illustrates prediction of samples in a current block using reference samples, according to one aspect of the present disclosure. [Figure 10] 1 illustrates an example of predicting a sample using a reference sample and neighbors of the reference sample, according to one aspect of the present disclosure. [Figure 11] 1 shows a flowchart outlining a process according to some aspects of the present disclosure. [Figure 12] 1 shows a flowchart outlining another process according to some aspects of the present disclosure. [Figure 13] 1 shows a flowchart outlining a process according to some aspects of the present disclosure. [Figure 14] FIG. 1 is a schematic diagram of a computer system according to one aspect. DETAILED DESCRIPTION OF THE INVENTION

[0025] 1 illustrates a block diagram of a video processing system 100 in accordance with some examples. The video processing system 100 is an example of an application of the disclosed subject matter, a video encoder and a video decoder in a streaming environment. The disclosed subject matter is equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, streaming services, and storage of compressed video on digital media, including CDs, DVDs, memory sticks, etc.

[0026] The video processing system (100) includes a capture subsystem (113) that may include a video source (101), such as a digital camera, that creates a stream of uncompressed video pictures (102). In one example, the stream of video pictures (102) includes samples captured by the digital camera. The stream of video pictures (102), shown as a thick line to emphasize its high data volume compared to the encoded video data (104) (or coded video bitstream), may be processed by an electronic device (120) that includes a video encoder (103) coupled to the video source (101). The video encoder (103) may include hardware, software, or a combination thereof for enabling or implementing aspects of the disclosed subject matter, as described in more detail below. The encoded video data (104) (or coded video bitstream), shown as a thin line to emphasize its low data volume compared to the stream of video pictures (102), may be stored on a streaming server (105) for future use. One or more streaming client subsystems, such as the client subsystems (106) and (108) of FIG. 1, can access the streaming server (105) to retrieve copies (107) and (109) of the encoded video data (104). The client subsystem (106) can include a video decoder (110), for example, within an electronic device (130). The video decoder (110) decodes an input copy (107) of the encoded video data and creates an output stream (111) of video pictures that can be rendered on a display (112) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (104), (107), and (109) (e.g., a video bitstream) can be encoded according to several video coding / compression standards. Examples of these standards include ITU-T Recommendation H.265.In one example, a video coding standard under development is informally known as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.

[0027] It should be noted that the electronic devices (120) and (130) may include other components (not shown). For example, the electronic device (120) may include a video decoder (not shown), and the electronic device (130) may include a video encoder (not shown).

[0028] 2 shows an example block diagram of a video decoder (210). The video decoder (210) may be included in an electronic device (230). The electronic device (230) may include a receiver (231) (e.g., a receiving circuit). The video decoder (210) may be used in place of the video decoder (110) in the example of FIG. 1.

[0029] The receiver (231) can receive one or more coded video sequences contained in a bitstream, for example, to be decoded by the video decoder (210). In one aspect, one coded video sequence is received at a time, and the decoding of each coded video sequence is independent of the decoding of other coded video sequences. The coded video sequences may be received from a channel (201), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (231) can receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, which may be forwarded to respective using entities (not shown). The receiver (231) can separate the coded video sequences from other data. To address network jitter, a buffer memory (215) may be coupled between the receiver (231) and the entropy decoder / parser (220) (hereinafter, "parser (220)"). In some applications, the buffer memory (215) is part of the video decoder (210). In other embodiments, it may be external to the video decoder (210) (not shown). In still other embodiments, a buffer memory (not shown) may exist external to the video decoder (210), for example, to deal with network jitter, and a separate buffer memory (215) may exist internal to the video decoder (210), for example, to handle playback timing. When the receiver (231) is receiving data from a store-and-forward device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (215) may not be necessary or may be small. For use in best-effort packet networks such as the Internet, the buffer memory (215) may be required and may be relatively large, advantageously adaptively sized, and implemented at least in part within an operating system or similar element (not shown) external to the video decoder (210).

[0030] The video decoder (210) may include a parser (220) that reconstructs symbols (221) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (210) and, potentially, information for controlling a rendering device, such as a rendering device (212) (e.g., a display screen) that is not an integral part of the electronic device (230) but may be coupled to the electronic device (230), as shown in FIG. 2. The control information for the rendering device may be in the form of a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (220) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (220) can extract a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder from the coded video sequence based on at least one parameter corresponding to the group. The subgroups can include Groups of Pictures (GOPs), pictures, tiles, slices, macroblocks, Coding Units (CUs), blocks, Transform Units (TUs), Prediction Units (PUs), etc. The parser (220) can also extract information from the coded video sequence, such as transform coefficients, quantization parameter values, motion vectors, etc.

[0031] The parser (220) can perform entropy decoding / parsing operations on the video sequence received from the buffer memory (215) to create symbols (221).

[0032] The reconstruction of the symbols (221) can involve several different units, depending on the type of coded video picture or portion thereof (e.g., inter-picture and intra-picture, inter-block and intra-block, etc.), as well as other factors. Which units are involved and how they are involved can be controlled by subgroup control information parsed from the coded video sequence by the parser (220). The flow of such subgroup control information between the parser (220) and the following units is not shown for clarity.

[0033] In addition to the functional blocks already mentioned, the video decoder (210) may be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate:

[0034] The first unit is a scalar / inverse transform unit (251), which receives quantized transform coefficients as symbols (221) from the parser (220), as well as control information including which transform to use, block size, quantization coefficients, quantization scaling matrices, etc. The scalar / inverse transform unit (251) can output blocks containing sample values, which can be input to an aggregator (255).

[0035] In some cases, the output samples of the scaler / inverse transform unit (251) may relate to intra-coded blocks. Intra-coded blocks are blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by the intra-picture prediction unit (252). In some cases, the intra-picture prediction unit (252) generates blocks of the same size and shape as the block being reconstructed using surrounding, already reconstructed information fetched from the current picture buffer (258). The current picture buffer (258), for example, buffers partially reconstructed and / or fully reconstructed current pictures. The aggregator (255) optionally adds, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (252) to the output sample information provided by the scaler / inverse transform unit (251).

[0036] In other cases, the output samples of the scalar / inverse transform unit (251) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion-compensated prediction unit (253) may access the reference picture memory (257) to fetch samples used for prediction. After motion-compensating the fetched samples according to the symbols (221) associated with the block, these samples may be added by the aggregator (255) to the output of the scalar / inverse transform unit (251) (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (257) from which the motion-compensated prediction unit (253) fetches prediction samples may be controlled by motion vectors available to the motion-compensated prediction unit (253) in the form of symbols (221), which may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values ​​fetched from the reference picture memory (257) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.

[0037] The output samples of the aggregator (255) can be subjected to various loop filtering techniques in a loop filter unit (256). Video compression techniques can include in-loop filtering techniques controlled by parameters contained in the coded video sequence (also called a coded video bitstream) and made available to the loop filter unit (256) as symbols (221) from the parser (220). Video compression can also depend on meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, or on previously reconstructed and loop-filtered sample values.

[0038] The output of the loop filter unit (256) may be a sample stream that may be output to the rendering device (212) and stored in a reference picture memory (257) for use in future inter-picture prediction.

[0039] Once a coded picture is fully reconstructed, it can be used as a reference picture for future prediction. For example, once the coded picture corresponding to the current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (220)), the current picture buffer (258) can become part of the reference picture memory (257), and a new current picture buffer can be reallocated before reconstruction of the next coded picture begins.

[0040] Video decoder 210 can perform decoding operations according to a given video compression technology or standard (e.g., ITU-T Rec. H.265). A coded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that the coded video sequence conforms to both the syntax of the video compression technology or standard and the profile documented in the video compression technology or standard. Specifically, a profile may select some tools from all tools available in the video compression technology or standard as the only tools available for use under that profile. Also, a requirement for compliance may be that the complexity of the coded video sequence be within boundaries defined by the level of the video compression technology or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further constrained through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled in the coded video sequence.

[0041] In one aspect, the receiver (231) may receive additional (redundant) data along with the coded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder (210) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0042] 3 shows an example block diagram of a video encoder (303). The video encoder (303) is included in an electronic device (320). The electronic device (320) includes a transmitter (340) (e.g., a transmission circuit). The video encoder (303) can be used in place of the video encoder (103) in the example of FIG. 1.

[0043] The video encoder (303) can receive video samples from a video source (301) (not part of the electronic device (320) in the example of FIG. 3) that can capture video images to be coded by the video encoder (303). In another example, the video source (301) is part of the electronic device (320).

[0044] The video source (301) provides a source video sequence, which can be coded by the video encoder (303) in the form of a digital video sample stream that can be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g., Y CrCB 4:2:0, Y CrCB 4:4:4). In a media delivery system, the video source (301) can be a storage device that stores previously prepared video. In a videoconferencing system, the video source (301) can be a camera that captures local image information as a video sequence. The video data can be provided as multiple individual pictures that, when viewed sequentially, create motion. The pictures themselves can be organized as a spatial array of pixels, each of which can contain one or more samples depending on the sampling structure, color space, etc., in use. The following discussion focuses on samples.

[0045] According to one aspect, the video encoder (303) can code and compress pictures of a source video sequence into a coded video sequence (343) in real time, or under any other time constraints as needed. Enforcing the appropriate encoding rate is one function of the controller (350). In some aspects, the controller (350) controls and is operatively coupled to other functional units as described below. This coupling is not shown for clarity. Parameters set by the controller (350) can include rate control-related parameters (picture skip, quantizer, lambda value for rate-distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (350) can be configured to have other appropriate functionality associated with the video encoder (303) optimized for a particular system design.

[0046] In some aspects, the video encoder (303) is configured to operate in a coding loop. As a simplified explanation, in one example, the coding loop may include a source coder (330) (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be coded and one or more reference pictures) and a (local) decoder (333) embedded in the video encoder (303). The decoder (333) reconstructs the symbols to create sample data in a manner similar to that of a (remote) decoder. The reconstructed sample stream (sample data) is input to a reference picture memory (334). Because decoding of the symbol stream produces bit-exact results independent of the location (local or remote) of the decoder, the contents in the reference picture memory (334) are also bit-exact between the local encoder and the remote encoder. In other words, the predictive portion of the encoder "sees" the exact same sample values ​​as the decoder would "see" when using prediction during decoding. This basic principle of reference picture synchronism (and the resulting drift if synchronism cannot be maintained, eg due to channel errors) is also used in several related techniques.

[0047] The operation of the "local" decoder (333) may be the same as a "remote" decoder, such as the video decoder (210) already described in detail above in connection with Figure 2. However, briefly referring also to Figure 2, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (345) and parser (220) may be lossless, the entropy decoding portion of the video decoder (210), including the buffer memory (215) and parser (220), may not be fully implemented in the local decoder (333).

[0048] In one aspect, decoder technology, excluding parsing / entropy decoding, present in a decoder is present in the corresponding encoder in the same or substantially the same functional form. Therefore, the disclosed subject matter focuses on decoder operation. A description of the encoder technology can be omitted, as it is the reverse of the decoder technology, which is comprehensively described. In certain areas, more detailed descriptions are provided below.

[0049] In operation, in some examples, the source coder (330) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as “reference pictures.” In this manner, the coding engine (332) codes differences between pixel blocks of the input picture and pixel blocks of reference pictures that may be selected as predictive references for the input picture.

[0050] The local video decoder (333) can decode coded video data of pictures that may be designated as reference pictures based on symbols created by the source coder (330). The operation of the coding engine (332) can advantageously be a lossy process. When the coded video data is decoded in a video decoder (not shown in FIG. 3), the reconstructed video sequence may generally be a replica of the source video sequence with some errors. The local video decoder (333) can replicate the decoding process that may be performed on the reference pictures by the video decoder and store the reconstructed reference pictures in the reference picture memory (334). In this way, the video encoder (303) can locally store copies of reconstructed reference pictures that have common content with reconstructed reference pictures obtained by the far-end video decoder (in the absence of transmission errors).

[0051] The predictor (335) can perform the prediction search for the coding engine (332). That is, for a new picture to be coded, the predictor (335) can search the reference picture memory (334) for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture motion vectors and block shapes, that can serve as suitable prediction references for the new picture. The predictor (335) may operate on a sample block-by-pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (335), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (334).

[0052] The controller (350) can manage the coding operations of the source coder (330), including, for example, setting the parameters and subgroup parameters used to encode the video data.

[0053] The output of all the aforementioned functional units is entropy coded in an entropy coder (345), which converts the symbols produced by the various functional units into a coded video sequence by applying lossless compression to the symbols according to techniques such as Huffman coding, variable length coding, or arithmetic coding.

[0054] The transmitter (340) may buffer the coded video sequence created by the entropy coder (345) for transmission over a communication channel (360), which may be a hardware / software link to a storage device that stores the coded video data. The transmitter (340) may merge the coded video data from the video encoder (303) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).

[0055] The controller (350) may manage the operation of the video encoder (303). During coding, the controller (350) may assign each coded picture a particular coded picture type, which may affect the coding technique that may be applied to the respective picture. For example, pictures may often be assigned as one of the following picture types:

[0056] Intra-pictures (I-pictures) can be coded and decoded without using other pictures in the sequence as a source of prediction. Some video codecs allow different types of intra-pictures, including, for example, Independent Decoder Refresh (“IDR”) pictures.

[0057] Predictive pictures (P pictures) may be coded and decoded using intra- or inter-prediction, which uses motion vectors and reference indices to predict the sample values ​​of each block.

[0058] Bidirectionally predicted pictures (B pictures) can be coded and decoded using intra- or inter-prediction, which uses two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, multi-predicted pictures can use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0059] A source picture is generally spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to the block's respective picture. For example, blocks of an I-picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra prediction). Pixel blocks of a P-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.

[0060] The video encoder (303) may perform coding operations in accordance with a predetermined video coding technique or standard, such as ITU-T Rec. H.265. In doing so, the video encoder (303) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard being used.

[0061] In one aspect, the transmitter (340) may transmit additional data along with the encoded video. The source coder (330) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.

[0062] Video may be captured as multiple source pictures (video pictures) in a time sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or otherwise) between pictures. In one example, a particular picture being encoded / decoded, called the current picture, is partitioned into blocks. When a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, the block in the current picture may be coded by a vector called a motion vector. A motion vector points to a reference block within the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.

[0063] In some aspects, bi-prediction techniques may be used in inter-picture prediction. According to bi-prediction techniques, two reference pictures, such as a first reference picture and a second reference picture, are used, both of which are earlier in decoding order than a current picture in a video (but may be in the past and future, respectively, in display order). A block in the current picture may be coded by a first motion vector pointing to a first reference block in the first reference picture and a second motion vector pointing to a second reference block in the second reference picture. A block may be predicted by a combination of the first reference block and the second reference block.

[0064] Furthermore, a merge mode technique can be used in inter-picture prediction to improve coding efficiency.

[0065] According to some aspects of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed in units of blocks. For example, according to the HEVC standard, pictures in a sequence of video pictures are partitioned into coding tree units (CTUs) for compression, and the CTUs in a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU may be recursively quadtree partitioned into one or more coding units (CUs). For example, a 64x64 pixel CTU may be partitioned into one CU of 64x64 pixels, four CUs of 32x32 pixels, or 16 CUs of 16x16 pixels. In one example, each CU is analyzed to determine the prediction type of the CU, such as an inter-prediction type or an intra-prediction type. A CU is divided into one or more prediction units (PUs) according to temporal and / or spatial predictability. Generally, each PU includes a luma prediction block (PB) and two chroma PBs. In one aspect, prediction operations in coding (encoding / decoding) are performed in prediction block units. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values ​​(e.g., luma values) of 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.

[0066] It should be noted that the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using any suitable technique. In one aspect, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more integrated circuits. In another aspect, the video encoders (103) and (303) and the video decoders (110) and (210) may be implemented using one or more processors executing software instructions.

[0067] Various intra-prediction modes for intra prediction may be used in video coding such as HEVC and VVC. Figure 4 shows intra-prediction modes (e.g., 35 intra-prediction modes as used in HEVC and 67 intra-prediction modes as used in VVC) according to some aspects of the present disclosure. In an example such as HEVC, there are 35 intra-prediction modes, including 33 directional intra-prediction modes (also referred to as directional intra-modes), a planar mode (e.g., mode 0), and a DC mode (e.g., mode 1), indicated by solid lines in Figure 4. The intra-prediction modes may be signaled by three most probable modes (MPM) and 32 remaining modes.

[0068] To capture any edge direction represented in natural video, several directional intra modes are extended from 33 to 65 (indicated by solid lines in FIG. 4). The 33 and 65 directional intra modes correspond, for example, to the directional intra modes of HEVC and VVC, respectively. The new directional modes not in HEVC are indicated as dotted arrows in FIG. 4, while the planar and DC modes remain the same. In some aspects, the denser directional intra prediction modes may be applied to all block sizes and to both luma and chroma intra prediction.

[0069] In some aspects, such as VVC, some angular intra-prediction modes are adaptively replaced with wide-angle intra-prediction modes for non-square blocks.

[0070] In embodiments such as HEVC, intra-coded blocks have a square shape, and the length of each side of the intra-coded block is a power of two. In an HEVC example, all intra-coded blocks have a square shape, and the length of each side is a power of two. Therefore, no division operations are required to generate an intra predictor using DC mode. In embodiments such as VVC, blocks may have a rectangular shape, and block-by-block division operations may be used in common cases. In one example, to avoid division operations for DC prediction, only the longer side is used to calculate the average of non-square blocks.

[0071] To keep the complexity of MPM list generation low, an intra-mode coding method using six MPMs can be used by considering two available adjacent intra-modes. Three aspects can be considered to construct the MPM list: (i) default intra-mode, (ii) adjacent intra-mode, and (iii) derived intra-mode.

[0072] The unified 6-MPM list can be used for intra blocks, whether or not Multiple Reference Line (MRL) and Intra Subpartition (ISP) coding tools are applied. The MPM list can be constructed based on the intra modes of the left neighboring block and the above neighboring block. The mode of the left neighboring block is denoted as Left, and the mode of the above neighboring block (or above block) is denoted as Above. The unified MPM list can be constructed as follows: - When no neighboring blocks are available, the intra mode is set to Planar by default.

[0073] - If both left and top modes are non-angle modes: - MPM list → {Planar, DC, V, H, V-4, V+4} - If one of the left and up modes is an angular mode and the other is a non-angular mode, then:

[0074] - Set Mode Max as the larger mode on the left and top.

[0075] - MPM list → {Planar, Max, Max-1, Max+1, Max-2, Max+2} - If left and top are both angled and left and top are different: - Set Mode Max as the larger mode on the left and top.

[0076] - Set Mode Min as the smaller mode on the left and top.

[0077] - If Max-Min is equal to 1: - MPM List → {Planar, Left, Top, Min-1, Max+1, Min-2} - Else, if Max-Min is greater than or equal to 62: - MPM List → {Planar, Left, Top, Min+1, Max-1, Min+2} - Else, if Max-Min equals 2: - MPM List → {Planar, Left, Top, Min+1, Min-1, Max+1} - Otherwise: - MPM List → {Planar, Left, Top, Min-1, -Min+1, Max-1} - If left and top are both angular and the same: - MPM List → {Planar, Left, Left-1, Left+1, Left-2, Left+2} Additionally, the first bin of the MPM index codeword may be CABAC context coded. A total of three contexts may be used depending on whether the current intra block is MRL-enabled, ISP-enabled, or a regular intra block.

[0078] During the MPM list (e.g., 6 MPM list) generation process, pruning may be used to remove duplicate modes, so that only unique modes may be included in the MPM list. A truncated binary code (TBC) may be used for entropy coding of the 61 non-MPM modes.

[0079] In one aspect, such as VVC, wide-angle intra prediction may be applied to non-square blocks, etc. In one aspect, a conventional angular intra prediction direction may be defined from 45 degrees to −135 degrees in a clockwise direction. In VVC, some conventional angular intra prediction modes may be adaptively replaced with wide-angle intra prediction modes for non-square blocks. The replaced modes may be signaled using the original mode indexes, which are remapped to wide-angle mode indexes after parsing. The total number of intra prediction modes (e.g., 67) may remain unchanged, and the intra-mode coding method may remain unchanged. Figures 5-6 show example reference samples for wide-angle intra prediction according to aspects of the present disclosure. To support these prediction directions, an above reference of length 2W+1 and a left reference of length 2H+1 may be defined.

[0080] The number of modes replaced in the wide direction mode may depend on the aspect ratio of the block. The replaced intra prediction modes are shown in Table 1.

[0081] [Table 1] FIG. 7 illustrates discontinuities in the case of directions greater than 45° according to one embodiment of the present invention. Referring to FIG. 7, two vertically adjacent prediction samples (701)-(702) may use two non-adjacent reference samples (711)-(712) in the case of wide-angle intra prediction. Therefore, a low-pass reference sample filter and side smoothing can be applied to the wide-angle prediction to reduce the adverse effect of the increased gap Δpα. Eight modes in the wide-angle mode can satisfy the condition, i.e., the wide-angle mode represents a non-fractional offset, and the eight modes include modes indicated by mode numbers [−14, −12, −10, −6, 72, 76, 78, 80]. When a block is predicted using one of these modes [−14, −12, −10, −6, 72, 76, 78, 80], the samples in the reference buffer can be directly copied without applying interpolation. This modification can reduce the number of samples to be smoothed. Furthermore, the above method aligns the design of non-fractional modes in conventional prediction and wide-angle modes.

[0082] In one example, 4:2:2 and 4:4:4 chroma formats may be supported, as well as 4:2:0 chroma formats, such as in VVC. The chroma derivation mode (DM) derivation table for the 4:2:2 chroma format was initially ported from HEVC, which extends some entries from 35 to 67 to align with the extension of intra-prediction modes. Because the HEVC specification does not support prediction angles below -135 degrees and above 45 degrees, luma intra-prediction modes in the range of 2 to 5 may be mapped to 2. Therefore, the chroma DM derivation table for the 4:2:2 chroma format may be updated by replacing some values ​​in the mapping table entries to more accurately convert prediction angles for chroma blocks.

[0083] A 4-tap interpolation filter (IF) and reference sample smoothing may be applied, for example, in VVC. A 4-tap intra interpolation filter may be utilized to improve directional intra prediction accuracy. In HEVC, a 2-tap linear interpolation filter is used to generate intra prediction blocks in directional prediction modes (i.e., excluding planar predictor and DC predictor). In VVC, two sets of 4-tap IFs can replace the low-precision linear interpolation (e.g., 2-tap linear IF) used in HEVC, where one is a DCT-based interpolation filter (DCTIF) and the other is a 4-tap smoothing interpolation filter (SIF). The DCTIFs may be constructed in the same manner as those used for chroma component motion compensation in both HEVC and VVC. The SIFs may be obtained by convolving a 2-tap linear interpolation filter with a ∇ / 4 filter.

[0084] Depending on the intra prediction mode, the following reference sample processing can be performed:

[0085] Directional intra prediction modes may be classified into one of the following groups: - Group A: Vertical mode or horizontal mode indicated by index (HOR_IDX, VER_IDX), - Group B: Directional modes representing non-fractional angles (-14, -12, -10, -6, 2, 34, 66, 72, 76, 78, 80) and planar modes; - Group C: remaining directional modes; - if the directional intra prediction mode is classified as belonging to group A, no filter is applied to the reference sample to generate the predicted sample; - Otherwise, the mode is in group B, the mode is a directional mode, and if all of the following conditions are true, a [1,2,1] reference sample filter is applied to the reference sample (depending on the Mode Dependent Intra Smoothing (MDIS) condition) to further copy these filtered values ​​to the intra predictor according to the selected direction, but no interpolation filter is applied: - refIdx equals 0 (no MRL is used) - TU size is greater than 32 - Luma (e.g., a block is a luma block) - No ISP block (i.e. the block is not an ISP block) - Otherwise, if the mode is classified as belonging to group C, the MRL index is equal to 0 (MRL is not used), and the current block is not an ISP block, then only the intra reference sample interpolation filter is applied to the reference samples to generate predicted samples that fall at fractional or integer positions between the reference samples according to the selected direction (no reference sample filtering is performed). The interpolation filter type is determined as follows: - Set minDistVerHor to Min(Abs(predModeIntra-50),Abs(predModeIntra-18)) - Set nTbS to (Log2(W)+Log2(H))>>1.

[0086] - Set intraHorVerDistThres[nTbS] as specified in Table 2 below.

[0087] - If minDistVerHor is greater than intraHorVerDistThres[nTbS], SIF is used for interpolation. - Otherwise, DCTIF is used for interpolation.

[0088] [Table 2] Non-directional intra prediction may be applied to predict a block. Figure 8 illustrates an example PAETH prediction mode according to one aspect of the present disclosure. The PAETH prediction mode is a non-directional intra prediction mode. Referring to Figure 8, the PAETH prediction mode may predict each sample (e.g., a current pixel) (801) from an above reference sample (T) of the sample (801), a left reference sample (L) of the sample (801), and an above-left reference sample (TL) of the sample (801). Among the reference samples TL, T, and L, one reference sample having a value closest to the value of (Tv0+Lv0-TLv0) may be selected as a predicted sample. Tv0, Lv0, and TLv0 may represent the values ​​of the reference samples T, L, and TL, respectively.

[0089] In some aspects, related techniques including intra-prediction, such as those used in the VVC standard, have limited modes without interpolation. In some examples, for texture patterns with non-horizontal and non-vertical edges, related techniques including intra-prediction modes have limitations in modeling sharp textures. In some examples, these challenges may be overcome by the directional nearest neighbor prediction (DNNP) mode described in this disclosure.

[0090] Aspects of the present disclosure include a directional nearest neighbor prediction (DNNP) mode for image and video coding. The DNNP mode can be used for intra prediction. The DNNP mode may be an intra prediction mode.

[0091] In this disclosure, a high-level syntax element may refer to any of the flags or syntax elements in a video parameter set (VPS), sequence parameter set (SPS), picture parameter set (PPS), adaptation parameter set (APS), slice header, picture header, tile header, or CTU header.

[0092] According to one aspect of the present disclosure, a DNNP mode is proposed. In the DNNP mode, predicted values ​​of samples in a current block can be determined (e.g., selected) from values ​​associated with respective reference samples based on at least a first difference between a first pair of values ​​associated with the respective reference samples and a second pair of values ​​associated with the respective reference samples. The reference samples can include neighboring reconstructed samples of the current block.

[0093] In one aspect, the values ​​associated with each reference sample may include a top-left value TLv, a top value Tv, and a left value Lv. In one example, the top-left value TLv refers to the value of a reference sample located in the top-left neighbor of the current block, the top value Tv refers to the value of a reference sample located in the top neighbor of the current block, and the left value Lv refers to the value of a reference sample located in the left neighbor of the current block. The top-left value TLv may be associated with the top-left reference sample of the current block, the top value Tv may be associated with the top reference sample of the sample in the same column as the sample, and the left value Lv may be associated with the left reference sample of the sample in the same row as the sample. In one example, the top-left reference sample of the current block is the top-left neighbor of the current block, the top reference sample of the sample refers to the top neighbor of the current block, and the left reference sample of the sample refers to the left neighbor of the current block. In one example, the first pair of values ​​includes a top-left value TLv and a left value Lv, and the first difference is a value Δ1 (also referred to as a value α) (e.g., Δ1 = α = Lv - TLv, and Lv = TLv + Δ1 = TLv + α). The value Δ1 may be the difference (e.g., the first difference) between the left value Lv and the top-left value TLv. The second pair of values ​​may include a top-left value TLv and a top value Tv, and the second difference is a value Δ2 (also referred to as a value b) (e.g., Δ2 = b = Tv - TLv, and Tv = TLv + Δ2 = TLv + b). The value Δ2 may be the difference between the top value Tv and the top-left value TLv.

[0094] According to one aspect of the present disclosure, in DNNP mode, a predicted value of a sample in a current block can be determined (e.g., selected) from the top-left value TLv, the top value Tv, or the left value Lv based on a value Δ1 (e.g., a first difference between a first pair of values) and a value Δ2 (e.g., a second difference between a second pair of values). In an example of DNNP mode, a predicted value of a sample in a current block can be selected from the top-left value TLv, the top value Tv, or the left value Lv based on the absolute value |Δ1| and the absolute value |Δ2|, for example, based on whether the absolute value |Δ1| is greater than N0 multiplied by the absolute value |Δ2| or whether the absolute value |Δ2| is greater than N1 multiplied by the absolute value |Δ1|. N0 is a first positive integer, and N1 is a second positive integer.

[0095] 9 illustrates prediction of a sample (902) (marked with an X) in a current block (901) using reference samples including an upper-left reference sample (911) of the current block (901), a top reference sample (913) (also referred to as an upper reference sample) of the sample (902), and a left reference sample (912) according to one embodiment of the present disclosure. In one example, the upper reference sample (913) is in the same column as the sample (902). In one example, the left reference sample (912) is in the same row as the sample (902).

[0096] In one aspect, the DNNP mode selects a predicted sample from a particular sample of the reference samples (e.g., (911) to (913)) based on the difference (e.g., Δ1 and Δ2) between some pairs (e.g., the first pair Lv and TLv and the second pair Tv and TLv) of the reference samples (e.g., (911) to (913)).

[0097] In the first scenario, the top left value TLv is the value TLv0 of the top left reference sample (911) of the current block (901), the top value Tv is the value Tv0 of the top reference sample (913) of sample (902), and the left value Lv is the value Lv0 of the left reference sample (912). In the first scenario, for example, for a sample (902) (marked with an X) of a current block (901), a predicted sample is selected using an upper-left sample (also called an upper-left reference sample) (911) having a value TLv0, a left sample (also called a left reference sample) (912) having a value of (TLv0+a) or Lv0, and an upper sample (also called an upper reference sample) (913) having a value of (TLv0+b) or Tv0, where a is the difference (i.e., the sample value difference) between the left sample (912) and the upper-left sample (911), and b is the difference (i.e., the sample value difference) between the upper sample (913) and the upper-left sample (911). The predicted value (902) of the sample (marked with an X) is selected from the values ​​TLv0, TLv0+a, and TLv0+b based on a and b. A predicted sample may be selected for the sample (902) from the upper-left reference sample (911) of the current block (901), the above reference sample (913) of the sample (902), and the left reference sample (912) based on whether (i) the absolute value |Δ1| is greater than N0 multiplied by the absolute value |Δ2|, or (ii) the absolute value |Δ2| is greater than N1 multiplied by the absolute value |Δ1|. The value of the predicted sample may be a predicted value of the sample (902).

[0098] In the second scenario, the derivation of the values ​​TLv, (TLv+a) (which is Lv), and (TLv+b) (which is Tv) may differ from that described above. Multiple reference samples may be used to derive TLv, (TLv+a) (which is Lv), or (TLv+b) (which is Tv). For example, as shown in FIG. 10, in addition to the top-left reference sample (911), the top reference sample (913), and the left reference sample (912), immediate neighboring reference samples are also considered.

[0099] FIG. 10 shows an example of prediction of a sample (902) using an upper-left reference sample (911) of a current block (901), an upper reference sample (913) of the sample (902), a left reference sample (912), and other reference samples (e.g., neighbors of the upper-left reference sample (911), the upper reference sample (913), and / or the left reference sample (912)). In one example, a top left value TLv is derived based on the values ​​of the upper-left reference sample (911) and at least another reference sample. In one example, a top value Tv is derived based on the values ​​of the top reference sample (913) and at least another reference sample. In one example, a left value Lv is derived based on the values ​​of the left reference sample (912) and at least another reference sample.

[0100] In one example, the value at the position of the above reference sample (913), as well as the left neighbor E and right neighbor F of the above reference sample (913), and / or the top right sample G (also referred to as the top right reference sample) of the current block (901) and the bottom left sample H (also referred to as the bottom left reference sample) of the current block (901) are used to generate a top value Tv, which is (TLv+b). For example, the average of the three values ​​is used as the top value Tv, which is (TLv+b). In another example, the median of the three values ​​is used as Tv, which is (TLv+b). In one example, the three values ​​include the values ​​of the reference sample (913), E, ​​and F. In one example, the three values ​​include the values ​​of the reference sample (913), G, and H.

[0101] For example, the upper value Tv is derived using the value of the upper reference sample (913) and at least one reference sample from among (i) the left neighbor E of the upper reference sample (913), (ii) the right neighbor F of the upper reference sample (913), (iii) the upper-right reference sample G of the current block (901), or (iv) the lower-left reference sample H of the current block (901). In one example, the at least one reference sample includes the left neighbor E of the upper reference sample (913) and the right neighbor F of the upper reference sample (913), and the upper value Tv is derived as (i) the average or (ii) median of the value of the upper reference sample (913), the value of the left neighbor E of the upper reference sample (913), and the value of the right neighbor F of the upper reference sample (913).

[0102] In one example, the at least one reference sample includes an upper right reference sample G of the current block (901) and a lower left reference sample H of the current block (901), and the upper value Tv is derived as (i) the average value or (ii) the median value of the value of the upper reference sample (913), the value of the upper right reference sample G, and the value of the lower left reference sample H.

[0103] In one example, the value at the position of the left reference sample (912), as well as the upper neighbors C and D of the left reference sample (912), and / or the upper right sample G (also referred to as the upper right reference sample) of the current block (901) and the lower left sample H (also referred to as the lower left reference sample) of the current block (901) are used to generate a left value Lv, which is (TLv+α). The upper neighbor C can be located directly above the left reference sample (912); for example, the upper neighbor C and the left reference sample (912) can be in the same column and two adjacent rows. The lower neighbor D can be located directly below the left reference sample (912); for example, the lower neighbor D and the left reference sample (912) can be in the same column and two adjacent rows. For example, the average of the three values ​​is used as the left value Lv, which is (TLv+α). In another example, the median of the three values ​​is used as the left value Lv, and the left value Lv is (TLv+a). In one example, the three values ​​include the values ​​of the reference sample (912), C, and D. In one example, the three values ​​include the values ​​of the reference sample (912), G, and H.

[0104] For example, the left value Lv is derived using the value of the left reference sample (912) and at least one reference sample from among (i) the upper neighbor C of the left reference sample (912), (ii) the lower neighbor D of the left reference sample (912), (iii) the upper-right reference sample G of the current block (901), or (iv) the lower-left reference sample H of the current block (901). In one example, the at least one reference sample includes the upper neighbor C of the left reference sample (912) and the lower neighbor D of the left reference sample (912), and the left value Lv is derived as (i) the average value or (ii) the median value of the value of the left reference sample (912), the value of the upper neighbor C, and the value of the lower neighbor D.

[0105] In one example, the at least one reference sample includes an upper right reference sample G of the current block (901) and a lower left reference sample H of the current block (901), and the left value Lv is derived as (i) the average or (ii) the median of the value of the left reference sample (912), the value of the upper right reference sample G, and the value of the lower left reference sample H.

[0106] In another aspect, the value at the location of the top-left reference sample (911), as well as the right neighbor B of the top-left reference sample (911) and the bottom neighbor A of the top-left reference sample (911) are used to generate (e.g., derive) the top-left value TLv.

[0107] The top-left value TLv may be derived as (i) the average or (ii) median of the value of the top-left reference sample (911), the value of the right neighbor B of the top-left reference sample (911), and the value of the bottom neighbor A of the top-left reference sample (911). For example, the average of three values ​​(e.g., including the values ​​of the reference sample (911), A, and B) is used as the top-left value TLv. In another example, the median of the three values ​​is used as the top-left value TLv.

[0108] The following explanation may apply to both scenarios described above: (i) a first scenario in which the top-left value TLv is the value of the top-left reference sample (911), the top value Tv is the value of the top reference sample (913), and the left value Lv is the value of the left reference sample (912), and (ii) a second scenario in which the top-left value TLv, the top value Tv, and / or the left value Lv are derived as described in FIG. 10.

[0109] In one aspect, when N0 is equal to or greater than 2 and the absolute value |Δ1| is greater than N0 multiplied by the absolute value |Δ2|, the left value Lv associated with the left reference sample (912) may be selected as a predicted value for the sample (902) in the current block (901). In an example of a first scenario, the left reference sample (912) is selected as a predicted sample for the sample (902) in the current block (901), and the predicted value or left value Lv is Lv0. In an example of a second scenario, the left value Lv is derived as described in FIG.

[0110] In one example, N1 is greater than or equal to 2, and if the absolute value |Δ2| (which is the absolute value of b) is greater than N1 multiplied by the absolute value |Δ1| (which is the absolute value of a), then the upper value Tv associated with the upper reference sample (913) may be selected as a predicted value for the sample (902) in the current block (901). In a first example scenario, the upper reference sample (913) is selected as a predicted sample for the sample (902) in the current block (901), and the predicted value or upper value Tv is Tv0. In a second example scenario, the upper value Tv is derived as described in FIG. 10.

[0111] In one example, when N0 is greater than or equal to 2, N1 is greater than or equal to 2, the absolute value |Δ1| is not greater than N0 multiplied by the absolute value |Δ2|, and the absolute value |Δ2| is not greater than N1 multiplied by the absolute value |Δ1|, a predicted value of a sample (902) in a current block (901) may be selected based on whether the values ​​Δ1 and Δ2 have opposite signs. In an example of the first scenario, a predicted sample having a predicted value of a sample (902) in a current block (901) may be selected based on whether the values ​​Δ1 and Δ2 have opposite signs.

[0112] If the signs of Δ1 and Δ2 are opposite, the top-left value TLv is selected as the predicted value for the sample 902 in the current block 901. In an example of a first scenario, the top-left reference sample (911) may be selected as the predicted sample for the sample (902) in the current block (901), and the predicted value is the value TLv0 of the top-left reference sample (911). In an example of a second scenario, the top-left value TLv is derived as described in FIG. 10. If the signs of Δ1 and Δ2 are the same, the top value Tv may be selected as the predicted value for the sample 902 in the current block 901 if the absolute value |Δ1| is smaller than the absolute value |Δ2|, and the left value Lv may be selected as the predicted value for the sample 902 in the current block 901 if the absolute value |Δ1| is not smaller than the absolute value |Δ2|. In the first scenario, the top value Tv is Tv0 and the left value Lv is Lv0. In the second scenario, the top value Tv and the left value Lv can be derived as shown in FIG.

[0113] In one embodiment, N0 is 1. If the absolute value |Δ1| is greater than the absolute value |Δ2|, the left value Lv is selected as the predicted value for the sample 902 in the current block 901. If the absolute value |Δ1| is not greater than the absolute value |Δ2|, the upper value Tv is selected as the predicted value for the sample 902 in the current block 901. In a first scenario, the upper value Tv is Tv0 and the left value Lv is Lv0. In a second scenario, the upper value Tv and the left value Lv can be derived as shown in FIG. 10.

[0114] As described above, the DNNP mode selects a predicted sample from a particular reference sample (e.g., (911) to (913)) based on the difference (e.g., Δ1 and Δ2) between some pairs (e.g., the first pair Lv and TLv and the second pair Tv and TLv) of the reference sample (e.g., (911) to (913)). When the current block (901) is coded in the DNNP mode, the predicted sample for the sample (902) in the current block (901) can be selected from the upper-left reference sample (911) of the current block (901), the upper reference sample (913) of the sample (902) in the same column as the sample (902), or the left reference sample (912) of the sample (902) in the same row as the sample (902), based on the difference between the pairs of reference samples (911) to (913).

[0115] As described above, for sample (902), a predicted sample is selected using the top left sample (911) having value TLv0, the left sample (912) valued as (TLv0+a), and the top sample (913) valued as (TLv0+b). The predicted value for sample (902) is selected from the values ​​TLv0, TLv0+a, and TLv0+b based on a and b.

[0116] In one example, in a first scenario, TLv=TLv0, Tv=Tv0, and Lv=Lv0, the value a (which is the value Δ1) is Lv0-TLv0, and the value b (which is the value Δ2) is Tv0-TLv0.

[0117] In one example, the predicted sample value (also called the predicted value) for sample (902) (marked with an X) is derived as follows: If the absolute value of a (absolute value |Δ1|) is greater than N0 multiplied by the absolute value of b (absolute value |Δ2|), the predicted sample is set to the left sample (912) and is given a value as TLv+a. N0 can be a predefined variable or a signaled variable. In one example, the value of N0 includes, but is not limited to, 2.

[0118] If the absolute value of b (absolute value |Δ2|) is greater than N1 multiplied by the absolute value of a (absolute value |Δ1|), the predicted sample is set as the upper sample (913) and is given a value as TLv+b. N1 is a predetermined or signaled variable. In one example, the value of N1 includes, but is not limited to, 2.

[0119] - Otherwise (e.g., |Δ1| is not greater than N0 × |Δ2| and |Δ2| is not greater than N1 × |Δ1|), the following applies: When a (or Δ1) and b (Δ2) have opposite signs, the predicted sample value is set as TLv.

[0120] Otherwise, when a (or Δ1) and b (Δ2) have the same sign, the predicted sample value is set as |a|<|b|?(TLv+b):(TLv+a), where |·| is the absolute value operator. When the value Δ1 (equal to a) and the value Δ2 (equal to b) have the same sign, (i) if |Δ1| (equal to |a|) is smaller than |Δ2| (equal to |b|), the upper reference sample (913) may be selected as the predicted sample of the sample (902) in the current block (901), and the predicted value is set as the value Tv (equal to TLv+b) of the upper reference sample (913); (ii) if |Δ1| (equal to |a|) is smaller than |Δ2| (equal to |b|), the left reference sample (912) may be selected as the predicted sample of the sample (902) in the current block (901), and the predicted value is set as the value Lv (equal to TLv+a) of the left reference sample (912).

[0121] As described above, in DNNP mode, the predicted value of the sample (902) in the current block (901) can be selected from the upper-left value TLv, the upper value Tv, or the left value Lv based on whether (i) |Δ1| is greater than N0 × |Δ2| or (ii) |Δ2| is greater than N1 × |Δ1|. In one example, N0 is 1, and the predicted value of the sample (902) can be selected from TLv, Tv, or Lv based on whether |Δ1| is greater than |Δ2|. If the absolute value |Δ1| is greater than the absolute value |Δ2|, the left reference sample (912) can be selected as the predicted sample for the sample (902) in the current block (901). If the absolute value |Δ1| is not greater than the absolute value |Δ2|, the upper reference sample (903) is selected as the predicted sample for the sample (902) in the current block (901).

[0122] Thus, in one example, the predicted sample value for sample X (marked with X) (902) is derived as follows:

[0123] If the absolute value of a(|Δ1|) is greater than the absolute value of b(|Δ2|), the predicted sample is set as the left sample (912).

[0124] Otherwise, the predicted sample is set as the upper sample (913).

[0125] In one aspect, a flag is signaled for a coded block (e.g., the current block (901)) to indicate whether the DNNP mode is applied. In one example, one flag (also referred to as a DNNP flag) is signaled for a coded block (e.g., the current block (901)) to indicate whether the DNNP mode is applied. For example, the bitstream is signaled for the current block (901) and includes a flag (DNNP flag) indicating whether the DNNP mode is applied to the current block (901).

[0126] In one example, a flag (e.g., a DNNP flag) is signaled before a regular intra-prediction mode. The regular intra-prediction mode can include an angular mode, a planar mode, a DC mode, and / or the like. In one example, the regular intra-prediction mode includes an angular mode, a planar mode, a DC mode, as described in this disclosure or used in VVC (or HEVC).

[0127] In one example, a flag (e.g., a DNNP flag) is signaled after a decoder-side intra mode derivation (DIMD) mode flag and / or a template based intra mode derivation (TIMD) mode flag.

[0128] In one example, the flag is entropy coded using a context model that depends on the values ​​of DNNP mode flags (e.g., DNNP flags) of neighboring blocks of the current block (901). In one example, only neighboring blocks that are intra-predicted can have DNNP flags.

[0129] In one example, the DNNP mode is signaled as one of the regular intra prediction modes. That is, the total number of regular intra prediction modes increases by one (DNNP mode). For example, based on VVC, the total number of regular intra prediction modes increases from 67 to 68. The 68 regular intra prediction modes include the DNNP mode. The DNNP can be one of the most probable modes (MPM) or one of the non-MPM modes.

[0130] In one example, the DNNP mode is signaled as a sub-mode under a specific intra prediction mode. The specific intra prediction mode may be any known intra prediction mode, such as one of a normal intra prediction mode, a DIMD mode, etc. That is, when a specific intra mode (which is a specific intra prediction mode) is signaled as true, one additional flag is signaled indicating whether the current block is coded using the specific intra mode or the DNNP mode. In one example, the specific intra prediction mode is a DC mode. In another example, the specific intra prediction mode is one of a horizontal prediction mode or a vertical prediction mode.

[0131] In one aspect, when the intra prediction mode (e.g., MPM or MPM list) of the current block (901) is derived using the intra prediction mode of a neighboring block, and the neighboring block (e.g., one of the neighboring blocks) is coded using the DNNP mode, the DNNP mode of the neighboring block is mapped (e.g., converted) to one of the normal intra prediction modes. For example, the neighboring block of the current block (901) is coded using the DNNP mode. When the intra prediction mode of the current block (901) is derived based on at least the neighboring blocks, the DNNP mode of the neighboring block can be mapped to one of the normal intra prediction modes, such as DC mode, planar mode, planar V mode, planar H mode, smooth mode, smooth H mode, smooth V mode, or angular mode. Planar V mode and planar mode may be intra prediction modes that are variations of planar mode.

[0132] In one aspect, such as AV1, non-directional intra modes include smooth predictors such as Smooth V (or Smooth_V) mode, Smooth H (or SMOOTH_H) mode, and Smooth mode, which predict blocks using quadratic interpolation in the vertical or horizontal direction, or an average thereof, after approximating the right edge and bottom edge as the rightmost pixel in the top edge and the bottom pixel in the left edge.

[0133] In one example, the DNNP mode is mapped to the DC mode. For example, neighboring blocks of the current block (901) are used to derive the MPM list of the current block (901). If one of the neighboring blocks of the current block (901) is coded using the DNNP mode, the MPM list of the current block (901) includes the DC mode converted from the DNNP mode.

[0134] In one example, the DNNP mode is mapped to one of a horizontal mode and a vertical prediction mode. For example, if the DNNP prediction is from the left side of the current block (901), the prediction mode (which is the DNNP mode) is mapped to a horizontal prediction mode, and for example, the MPM list of the current block (901) includes a horizontal prediction mode. If the DNNP prediction is from the top side of the current block (901), the prediction mode (which is the DNNP mode) is mapped to a vertical prediction mode, and therefore, for example, the MPM list of the current block (901) includes a vertical prediction mode.

[0135] In one example, the DNNP mode is mapped to one of the planar mode, the planar V mode, and the planar H mode.

[0136] In one example, a current block (901) is coded in DNNP mode. The MPM lists of neighboring blocks of the current block (901) can be derived based on the DNNP mode of the current block (901). The DNNP mode of the current block (901) can be mapped to one of the normal intra prediction modes (e.g., DC mode, planar mode, planar V mode, planar H mode, or angular mode), and the MPM lists of the neighboring blocks include one of the normal intra prediction modes.

[0137] In one aspect, the intra prediction mode of the co-located luma block is used to derive the chrominance intra prediction mode, and when the intra prediction mode of the co-located luma block is a DNNP mode, the derived mode (DM) is derived as one of the normal intra prediction modes.

[0138] In one example, the DM mode is derived as a DC mode.

[0139] In one example, the DM mode is derived as one of a horizontal prediction mode and a vertical prediction mode. For example, if the DNNP prediction is from the left, the prediction mode is mapped to a horizontal prediction mode, and if the DNNP prediction is from the top, the prediction mode is mapped to a vertical prediction mode.

[0140] In one example, the DM mode is derived as one of a planar mode, a planar V mode, and a planar H mode.

[0141] For example, the current block (901) is a chroma block coded in a chroma intra prediction mode. The chroma intra prediction mode of the current block (901) may be derived from the intra prediction mode of the co-located luma block of the current block (901). In one example, if the intra prediction mode of the co-located luma block is DNNP mode, the chroma intra prediction mode of the current block (901) may be derived as one of the common intra prediction modes, such as DC mode, planar mode, planar V mode, planar H mode, smooth mode, smooth H mode, smooth V mode, or an angular mode.

[0142] In one example, the bitstream includes a signaled high-level syntax element or flag that indicates whether DNNP mode is enabled at the corresponding high level.

[0143] In one aspect, a high-level syntax element or flag at the sequence level (e.g., signaled in a sequence parameter set (SPS)), picture level (e.g., signaled in a picture parameter set (PPS) or picture header), or slice / tile / tile group level, etc., may be signaled to indicate whether DNNP mode is enabled at the corresponding level.

[0144] 11 shows a flowchart outlining a process (1100) according to one embodiment of the present disclosure. The process (1100) may be used in a video decoder. In various aspects, the process (1100) is performed by a processing circuit, such as a processing circuit that performs the functions of the video decoder (110), a processing circuit that performs the functions of the video decoder (210), or the like. In some aspects, the process (1100) is implemented with software instructions, and thus, the processing circuit performs the process (1100) when it executes the software instructions. The process begins at (S1101) and proceeds to (S1110).

[0145] At (S1110), a bitstream of a current block in a current picture is received.

[0146] In (S1120), when the current block is coded in a directional nearest neighbor prediction (DNNP) mode, as illustrated in FIGS. 10 to 11, a predicted value of a sample in the current block may be selected from the top-left value TLv, the top value Tv, or the left value Lv based on whether (i) the absolute value |Δ1| is greater than N0 multiplied by the absolute value |Δ2|, or (ii) the absolute value |Δ2| is greater than N1 multiplied by the absolute value |Δ1|. The value Δ1 may be the difference between the left value and the top-left value. The value Δ2 may be the difference between the top value and the top-left value. As illustrated in FIGS. 10 to 11, the top-left value may be associated with the top-left reference sample of the current block, the top value may be associated with the top reference sample of a sample in the same column as the sample, and the left value may be associated with the left reference sample of a sample in the same row as the sample. N0 is a first positive integer, and N1 is a second positive integer.

[0147] In step S1130, the current block can be reconstructed using the predicted values ​​selected for the samples in the current block.

[0148] Then, the process proceeds to (S1199) and ends.

[0149] The process 1100 may be adapted as appropriate. Steps of the process 1100 may be modified and / or omitted. Additional steps may be added. Any suitable order of performance may be used.

[0150] 12 shows a flowchart outlining a process (1200) according to one aspect of the present disclosure. The process (1200) may be used in a video encoder. In various aspects, the process (1200) is performed by a processing circuit, such as a processing circuit performing the functions of the video encoder (103), a processing circuit performing the functions of the video encoder (303), or the like. In some aspects, the process (1200) is implemented with software instructions, and thus, the processing circuit performs the process (1200) when it executes the software instructions. The process begins at (S1201) and proceeds to (S1210).

[0151] In (S1210), when the current block is coded in a directional nearest neighbor prediction (DNNP) mode as described in FIGS. 10 and 11, a predicted value of a sample in the current block can be selected from the top-left value, the top value, or the left value based on whether (i) the absolute value |Δ1| is greater than N0 multiplied by the absolute value |Δ2|, or (ii) the absolute value |Δ2| is greater than N1 multiplied by the absolute value |Δ1|. The value Δ1 may be the difference between the left value and the top-left value, and the value Δ2 may be the difference between the top value and the top-left value. As described in FIGS. 10 and 11, the top-left value may be associated with the top-left reference sample of the current block, the top value may be associated with the top reference sample of the sample in the same column as the sample, and the left value may be associated with the left reference sample of the sample in the same row as the sample. N0 is a first positive integer, and N1 is a second positive integer.

[0152] In step S1220, the current block can be encoded using the predicted values ​​selected for the samples in the current block.

[0153] Then, this process proceeds to (S1299) and ends.

[0154] Process 1200 may be adapted as appropriate. Steps of process 1200 may be modified and / or omitted. Additional steps may be added. Any suitable order of performance may be used.

[0155] 13 shows a flowchart outlining a process (1300) according to one embodiment of the present disclosure. The process (1300) may be a variation of the process (1100). The process (1300) may be used in a video decoder. In various aspects, the process (1300) is performed by a processing circuit, such as a processing circuit that performs the functions of the video decoder (110), a processing circuit that performs the functions of the video decoder (210), or the like. In some aspects, the process (1300) is implemented with software instructions, and thus, the processing circuit performs the process (1300) when it executes the software instructions. The process begins at (S1301) and proceeds to (S1310).

[0156] At (S1310), a bitstream of a current block in a current picture is received, and the current block is coded in directional nearest neighbor prediction (DNNP) mode.

[0157] In (S1320), as described in Figures 9 and 10, a predicted value for the sample in the current block is selected from the top-left value, the top value, or the left value based on one or more difference values ​​between each pair of values: (i) a top-left value associated with a top-left reference sample that is the top-left neighbor of the current block, (ii) a top value associated with a top reference sample that is the top neighbor of the sample in the current block, and (iii) a left value associated with a left reference sample that is the left neighbor of the sample in the current block.

[0158] In step S1330, the current block is reconstructed using the predicted values ​​selected for the samples in the current block.

[0159] Then, this process proceeds to (S1399) and ends.

[0160] Process 1300 may be adapted as appropriate. Steps of process 1300 may be modified and / or omitted. Additional steps may be added. Any suitable order of performance may be used.

[0161] The aspects in this disclosure may be used separately or combined in any order. Furthermore, each of the methods (or aspects), encoders, and decoders may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium.

[0162] The techniques described above may be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, Figure 14 illustrates a computer system (1400) suitable for implementing certain aspects of the disclosed subject matter.

[0163] Computer software can be coded using any suitable machine code or computer language, which can be assembled, compiled, linking, or similar mechanisms to produce code containing instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., directly, or via interpretation, microcode execution, etc.

[0164] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, and the like.

[0165] 14 for computer system 1400 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing aspects of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 1400.

[0166] The computer system 1400 may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users through, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), olfactory input (not shown), etc. The human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still image camera), and video (e.g., two-dimensional video, three-dimensional video, including stereoscopic video).

[0167] The input human interface devices may include one or more (only one of each is shown) of a keyboard (1401), a mouse (1402), a trackpad (1403), a touchscreen (1410), a data glove (not shown), a joystick (1405), a microphone (1406), a scanner (1407), and a camera (1408).

[0168] The computer system (1400) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen (1410), data gloves (not shown), or joystick (1405), although some haptic feedback devices may not function as input devices), audio output devices (such as speakers (1409), headphones (not shown)), visual output devices (such as screens (1410), including CRT screens, LCD screens, plasma screens, and OLED screens, each with or without touchscreen input capability and each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output or more than three-dimensional output through means such as stereoscopic output), virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), and printers (not shown).

[0169] The computer system (1400) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (1420) with media (1421) such as CDs / DVDs, thumb drives (1422), removable hard drives or solid-state drives (1423), legacy magnetic media such as tape and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).

[0170] Those skilled in the art will also appreciate that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not encompass transmission media, carrier waves, or other transitory signals.

[0171] The computer system (1400) may also include an interface (1454) to one or more communication networks (1455). The networks may be, for example, wireless, wired, or optical. The networks may further be local, wide-area, metropolitan, vehicular, industrial, real-time, delay-tolerant, etc. Examples of networks include local area networks such as Ethernet, WLAN, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., television wired or wireless wide-area digital networks including cable television, satellite television, and terrestrial broadcast television, and vehicular and industrial networks including CANbus. Some networks generally require an external network interface adapter attached to some general-purpose data port or peripheral bus (1449) (e.g., a USB port on the computer system (1400)), while other networks are generally integrated into the core of the computer system (1400) by attachment to a system bus (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system), as described below. The computer system 1400 can communicate with other entities using any of these networks. Such communication can be one-way receive-only (e.g., broadcast TV), one-way transmit-only (e.g., from the CANbus to a specific CANbus device), or two-way, for example, to other computer systems using local or wide-area digital networks. Certain protocols and protocol stacks can be used over each of these networks and network interfaces, as described above.

[0172] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be attached to the core (1440) of the computer system (1400).

[0173] The core (1440) may include one or more central processing units (CPUs) (1441), graphics processing units (GPUs) (1442), dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) (1443), hardware accelerators for specific tasks (1444), graphics adapters (1450), etc. These devices, along with read-only memory (ROM) (1445), random access memory (1446), and internal mass storage devices (1447) such as internal non-user-accessible hard drives or SSDs, may be connected via a system bus (1448). In some computer systems, the system bus (1448) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (1448) or via a peripheral bus (1449). In one example, a screen (1410) may be connected to the graphics adapter (1450). Peripheral bus architectures include PCI, USB, etc.

[0174] The CPU (1441), GPU (1442), FPGA (1443), and accelerator (1444) can execute certain instructions, which in combination can constitute the aforementioned computer code. The computer code can be stored in ROM (1445) or RAM (1446). Also, transient data can be stored in RAM (1446), while persistent data can be stored in, for example, internal mass storage device (1447). Rapid storage and retrieval from any of the memory devices can be enabled through the use of cache memory, which can be closely associated with one or more of the CPU (1441), GPU (1442), mass storage device (1447), ROM (1445), RAM (1446), etc.

[0175] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.

[0176] By way of example and not limitation, the architecture (1400), and in particular a computer system having a core (1440), can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be user-accessible mass storage devices, as introduced above, as well as media associated with specific storage devices of the core (1440) that are non-transitory in nature, such as the core's internal mass storage device (1447) or ROM (1445). Software embodying various aspects of the present disclosure can be stored in such devices and executed by the core (1440). The computer-readable media can include one or more memory devices or chips, depending on particular needs. The software can cause the core (1440), and in particular the processor (including a CPU, GPU, FPGA, etc.) therein, to perform specific processes or portions of specific processes described herein, including defining data structures stored in RAM (1446) and modifying such data structures in accordance with the software-defined processes. Additionally, or alternatively, a computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (1444)), which may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software may encompass logic, where appropriate, and vice versa. References to computer-readable media may encompass, where appropriate, circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both. The present disclosure encompasses any appropriate combination of hardware and software.

[0177] The use of "at least one" or "one" in this disclosure is intended to include any one or combination of the listed elements. For example, reference to at least one of A, B, or C; at least one of A, B, and C; at least one of A, B, and / or C; and at least one of A through C is intended to include A only, B only, C only, or any combination thereof. Reference to one of A or B, and one of A and B is intended to include A or B or (A and B). The use of "one of" does not exclude any combination of the listed elements, where applicable, such as when the elements are not mutually exclusive.

[0178] While this disclosure has described several exemplary aspects, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and therefore are within the spirit and scope of the present disclosure.

Claims

1. 1. A method of video decoding, comprising: receiving a bitstream of a current block in a current picture, the current block being coded in a directional nearest neighbor prediction (DNNP) mode; selecting a predicted value for the sample in the current block from a top-left value, an upper value, or a left value, the selection being based on one or more difference values ​​between respective paired values ​​of (i) the top-left value associated with a top-left reference sample that is a top-left neighbor of the current block, (ii) the top value associated with a top reference sample that is a top neighbor of the sample in the current block, and (iii) the left value associated with a left reference sample that is a left neighbor of the sample in the current block; reconstructing the current block using the selected predictor for the samples in the current block; A method comprising:

2. the one or more difference values ​​include a value Δ1 that is a difference between the left value and the top-left value, and a value Δ2 that is a difference between the top value and the top-left value; The reference sample is in the same column as the sample. the left reference sample is in the same row as the sample; selecting the predicted value includes selecting the predicted value for the sample in the current block from the top-left value, the top value, or the left value based on whether (i) an absolute value |Δ1| is greater than N0 multiplied by an absolute value |Δ2|, or (ii) the absolute value |Δ2| is greater than N1 multiplied by the absolute value |Δ1|, where N0 is a first positive integer and N1 is a second positive integer. The method of claim 1.

3. the top-left value is a value of the top-left reference sample of the current block, the top value is a value of the top reference sample of the sample, and the left value is a value of the left reference sample; the selecting includes selecting a predicted sample from the top-left reference sample, the above reference sample, and the left reference sample of the current block based on whether (i) the absolute value |Δ1| is greater than N0 multiplied by the absolute value |Δ2|, or (ii) whether the absolute value |Δ2| is greater than N1 multiplied by the absolute value |Δ1|, and a value of the predicted sample is the predicted value. The method of claim 2.

4. 2. The method of claim 1, further comprising: deriving the upper value using the above reference sample and at least one reference sample from among (i) a left neighbor of the above reference sample, (ii) a right neighbor of the above reference sample, (iii) an upper-right reference sample of the current block, or (iv) a lower-left reference sample of the current block.

5. the at least one reference sample includes the left neighbor of the above reference sample and the right neighbor of the above reference sample; deriving the upper value includes deriving the upper value as (i) an average or (ii) a median of a value of the upper reference sample, a value of the left neighbor of the upper reference sample, and a value of the right neighbor of the upper reference sample. The method of claim 4.

6. the at least one reference sample includes the top-right reference sample of the current block and the bottom-left reference sample of the current block; deriving the upper value includes deriving the upper value as (i) an average or (ii) a median of a value of the top reference sample, a value of the top-right reference sample of the current block, and a value of the bottom-left reference sample of the current block. The method of claim 4.

7. 2. The method of claim 1, further comprising: deriving the left value using the left reference sample and at least one of the following reference samples: (i) an upper neighbor of the left reference sample, (ii) a lower neighbor of the left reference sample, (iii) an upper-right reference sample of the current block, or (iv) a lower-left reference sample of the current block.

8. the at least one reference sample includes the upper neighbor of the left reference sample and the lower neighbor of the left reference sample; deriving the left value includes deriving the left value as (i) an average or (ii) a median of a value of the left reference sample, a value of the above neighbor of the left reference sample, and a value of the below neighbor of the left reference sample. The method of claim 7.

9. the at least one reference sample includes the top-right reference sample of the current block and the bottom-left reference sample of the current block; Deriving the left value includes deriving the left value as (i) an average or (ii) a median of a value of the left reference sample, a value of the upper-right reference sample of the current block, and a value of the lower-left reference sample of the current block. The method of claim 7.

10. deriving the top-left value using the top-left reference sample, a right neighbor of the top-left reference sample, and a bottom neighbor of the top-left reference sample. The method of claim 1.

11. deriving the top-left value includes deriving the top-left value as (i) an average value or (ii) a median value of a value of the top-left reference sample, a value of the right neighbor of the top-left reference sample, and a value of the bottom neighbor of the top-left reference sample. The method of claim 10.

12. N0 is 2 or more, the selecting includes selecting the left value as the predicted value for the sample in the current block in response to the absolute value |Δ1| being greater than N0 multiplied by the absolute value |Δ2|. The method of claim 2.

13. N1 is 2 or more, the selecting includes selecting the upper value as the predicted value for the sample in the current block in response to the absolute value |Δ2| being greater than N1 multiplied by the absolute value |Δ1|. The method of claim 2.

14. N0 is 2 or more, N1 is 2 or more, In response to the absolute value |Δ1| being not greater than N0 multiplied by the absolute value |Δ2| and the absolute value |Δ2| being not greater than N1 multiplied by the absolute value |Δ1|, the selecting includes selecting the predicted value for the sample in the current block based on whether the value Δ1 and the value Δ2 have opposite signs. The method of claim 2.

15. The selection is selecting the top-left value as the predicted value for the sample in the current block in response to the value Δ1 and the value Δ2 having opposite signs; In response to the value Δ1 and the value Δ2 having the same sign, the selecting comprises: selecting the upper value as the predicted value for the sample in the current block in response to the absolute value |Δ1| being less than the absolute value |Δ2|; selecting the left value as the predicted value for the sample in the current block in response to the absolute value |Δ1| being not less than the absolute value |Δ2|; 15. The method of claim 14, comprising:

16. N0 is 1, The selecting comprises: selecting the left value as the predicted value for the sample in the current block in response to the absolute value |Δ1| being greater than the absolute value |Δ2|; selecting the upper value as the predicted value for the sample in the current block in response to the absolute value |Δ1| not being greater than the absolute value |Δ2|; The method of claim 2 , comprising:

17. 2. The method of claim 1, wherein the bitstream includes one of a signaled high-level syntax element indicating whether the DNNP mode is enabled at a corresponding high level and a flag signaled for the current block indicating whether the DNNP mode applies to the current block.

18. Neighboring blocks of the current block are coded using the DNNP mode, In response to deriving an intra-prediction mode of the current block based on at least the neighboring blocks, the method includes mapping the DNNP mode of the neighboring blocks to an intra-prediction mode, the intra-prediction mode being one of a DC mode, a planar mode, a planar V mode, a planar H mode, a smooth mode, a smooth H mode, a smooth V mode, or an angular mode. The method of claim 1.

19. the current block is a chroma block coded in a chroma intra prediction mode, The method comprises: deriving a chrominance intra-prediction mode of the current block from an intra-prediction mode of a co-located luma block of the current block, the deriving comprising: by deriving the chrominance intra prediction mode of the current block as an intra prediction mode that is one of a DC mode, a planar mode, a planar V mode, a planar H mode, a smooth mode, a smooth H mode, a smooth V mode, or an angular mode, in response to the intra prediction mode of the co-located luma block being a DNNP mode. The method of claim 1.

20. 1. An apparatus for video decoding, comprising: a processing circuit, the processing circuit comprising: receiving a bitstream of a current block in a current picture, the current block being coded in a directional nearest neighbor prediction (DNNP) mode; selecting a predicted value for the sample in the current block from a top-left value, an upper value, or a left value, the selection being made based on one or more difference values ​​between respective paired values ​​of (i) the top-left value associated with a top-left reference sample that is a top-left neighbor of the current block, (ii) the top value associated with a top reference sample that is a top neighbor of the sample in the current block, and (iii) the left value associated with a left reference sample that is a left neighbor of the sample in the current block; reconstructing the current block using the selected predictor for the samples in the current block; 20. An apparatus configured to:

Citation Information

Patent Citations

  • METHOD AND APPARATUS FOR VIDEO CODING - Patent application

    JP2022526400A

  • Image encoding method and image decoding method

    WO2009090884A1