Intra-prediction mode derivation for coding a block
By deriving and utilizing a second intra prediction mode from a predefined region for video coding blocks, the method addresses inefficiencies in conventional methods, enhancing encoding and decoding efficiency through improved spatial redundancy reduction.
Patent Information
- Application Number
- JP2025515399
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-01-08
- Filing Date
- 2024-01-09
- Publication Date
- 2025-09-11
- Estimated Expiration
- 2044-01-09
AI Technical Summary
Existing video coding technologies face challenges in efficiently deriving intra prediction modes for coding blocks, particularly when conventional methods fail to account for spatial redundancy effectively.
The method involves deriving a second intra prediction mode for a current block from multiple intra prediction modes, using a predefined region that includes current and previously coded coding tree units, and storing this mode for use in constructing a most probable mode list for other blocks, while also selecting appropriate transforms based on the derived mode.
This approach enhances video encoding and decoding efficiency by improving intra prediction accuracy and reducing data redundancy, thereby optimizing compression and reconstruction processes.
Smart Images

Figure 2025530337000001_ABST
Abstract
Description
[Technical Field]
[0001]
[0001] INCORPORATION BY REFERENCE This application claims the benefit of priority to U.S. Provisional Application No. 63 / 437,972, entitled "Intra Prediction Mode Derivation for Coding Blocks Coded by Unconventional Intra Prediction Mode," filed January 9, 2023, which claims the benefit of priority to U.S. Patent Application No. 18 / 407,090, entitled "INTRA PREDICTION MODE DERIVATION FOR CODING BLOCKS," filed January 8, 2024. The disclosures of the prior applications are incorporated herein by reference in their entireties.
[0002] TECHNICAL FIELD
[0002] This disclosure describes aspects generally related to video coding. [Background technology]
[0003] The background art description provided herein is intended to present the context for the present disclosure as a whole. Work of the currently named inventors, to the extent described in this background art section as well as in aspects of this specification, that may not have qualified as prior art at the time of filing is not admitted, either expressly or implicitly, as prior art to the present disclosure.
[0004]
[0004] Image / video compression can help transmit image / video data across different devices, storages, and networks with minimal quality degradation. In some examples, video codec technology can compress video based on spatial and temporal redundancy. In one example, video codecs 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, video codecs 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 [Means for solving the problem]
[0005] 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 coded information of a current block in a current picture. The current block is coded using a first intra prediction mode different from multiple intra prediction modes, including a DC mode, a planar mode, and an angular intra prediction mode. The processing circuit selects a candidate block in the current picture coded using the first intra prediction mode different from the multiple intra prediction modes. If the candidate block is located within a predefined region, the processing circuit derives a second intra prediction mode for the candidate block from the multiple intra prediction modes. The second intra prediction mode is associated with the current block. The processing circuit performs at least one of (i) selecting a transform for the current block based on the second intra prediction mode associated with the current block and reconstructing the current block according to the selected transform, or (ii) constructing a most probable mode (MPM) for another block using the derived second intra prediction mode associated with the current block.
[0006] In one example, the other block is a neighboring block of the current block.
[0007]
[0007] In one example, the predefined region includes one or more of: (i) a current coding tree unit (CTU) and (ii) at least one previously coded CTU.
[0008] In one example, the predefined region is updated for blocks that are coded after the current block is coded.
[0009]
[0009] In one example, the size of the area of the predefined region is fixed.
[0010] In one example, the processing circuit stores the derived second intra-prediction mode in a buffer of the current picture. When the current picture is a reference picture of another picture, the processing circuit uses the stored second intra-prediction mode to build an MPM list for another block in the other picture.
[0011] In one example, the processing circuitry stores the second intra-prediction mode derived in units of M×N, where M and N may be positive integers.
[0012] In one example, the processing circuitry selects a transform that is a secondary transform, and the primary transform type is not selected based on the derived second intra-prediction mode.
[0013]
[0013] In one example, the first intra prediction mode is one of an intra block copy (IBC) mode, an intra template matching (IntraTMP) mode, a matrix-based intra prediction (MIP) mode, and a palette mode.
[0014] In one aspect, the current block is coded by one of an IBC mode and an IntraTMP mode. The processing circuit derives the second intra-prediction mode associated with the current block from a plurality of intra-prediction modes, including a DC mode, a planar mode, and an angular intra-prediction mode, by (i) checking at least one candidate block position in a predefined order, and (ii) determining the second intra-prediction mode associated with the current block according to the intra-prediction mode associated with one of the at least one candidate block position. The at least one candidate block position can be associated with a reference block indicated by a block vector (BV) associated with one of the IBC mode and the IntraTMP mode.
[0015]
[0015] In one example, when the first candidate block position of the at least one candidate block position does not have an associated intra-prediction mode that is one of a plurality of intra-prediction modes, the processing circuit skips the first candidate block position of the at least one candidate block position.For example, when the first candidate block position of the at least one candidate block position is located outside a predefined region (for example, the predefined region described above), the first candidate block position of the at least one candidate block position does not have an associated intra-prediction mode that is one of a plurality of intra-prediction modes.
[0016]
[0016] In one example, if a first candidate block position of at least one candidate block position is located outside a predefined region, the processing circuit replaces the first candidate block position of the at least one candidate block position with a position within the predefined region.
[0017] 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 a method for video decoding / encoding.
[0018]
[0018] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Brief explanation of the drawings]
[0019] [Figure 1] FIG. 1 is a schematic diagram of an exemplary block diagram of a communication system (100). [Figure 2]
[0020] FIG. 2 is a schematic diagram of an exemplary block diagram of a decoder. [Figure 3]
[0021] FIG. 2 is a schematic diagram of an exemplary block diagram of an encoder. [Figure 4]
[0022] FIG. 1 illustrates intra-prediction modes (e.g., 35 intra-prediction modes such as those used in HEVC) according to one aspect of the present disclosure. [Figure 5]
[0023] FIG. 10 illustrates intra-prediction modes according to one aspect of the present disclosure. [Figure 6]
[0024] FIG. 10 illustrates an example of an intra-block copy (IBC) mode according to an example of the present disclosure. [Figure 7]
[0025] FIG. 1 illustrates an example of an intra-template matching prediction (IntraTMP) mode according to one aspect of the present disclosure. [Figure 8]
[0026] FIG. 1 illustrates an example of a matrix-based intra-prediction (MIP) mode according to one aspect of the present disclosure. [Figure 9]
[0027] FIG. 10 illustrates an example mapping from intra-prediction modes to secondary transform sets according to one aspect of this disclosure. [Figure 10]
[0028] FIG. 10 illustrates an example of candidate block positions used to derive an intra-prediction mode for a current block according to one aspect of the present disclosure. [Figure 11]
[0029] FIG. 10 illustrates an example of candidate block positions used to derive an intra-prediction mode for a current block according to one aspect of the present disclosure. [Figure 12]
[0030] 1 is a flowchart outlining a decoding process according to some aspects of the present disclosure. [Figure 13]
[0031] 1 is a flowchart outlining an encoding process according to some aspects of the present disclosure. [Figure 14]
[0032] 1 is a flowchart outlining a decoding process according to some aspects of the present disclosure. [Figure 15]
[0033] 1 is a flowchart outlining an encoding process according to some aspects of the present disclosure. [Figure 16]
[0034] FIG. 1 is a schematic diagram of a computer system according to one aspect. DETAILED DESCRIPTION OF THE INVENTION
[0020]
[0035] 1 shows a block diagram of a video processing system 100 in some examples. The video processing system 100 is an example application of the disclosed subject matter, a video encoder and video decoder in a streaming environment. The disclosed subject matter may be equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, streaming services, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0021]
[0036] The video processing system (100) includes a capture subsystem (113), which may include a video source (101), such as a digital camera, that creates a stream of video pictures (102), which may be uncompressed. In one example, the stream of video pictures (102) includes samples taken by the digital camera. The stream of video pictures (102) is shown as a thick line to emphasize its large amount of data compared to the encoded video data (104) (or coded video bitstream), which 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 to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video data (104) (or coded video bitstream), which is shown as a thin line to emphasize its small amount of data 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 Figure 1, can access the streaming server (105) to obtain copies (107) and (109) of the encoded video data (104). The client subsystem (106) can include, for example, a video decoder (110) in an electronic device (130). The video decoder (110) decodes the incoming copy (107) of the encoded video data and creates an outgoing 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 a particular video coding / compression standard. 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), and the disclosed subject matter may be used in the context of VVC.
[0022]
[0037] 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 similarly include a video encoder (not shown).
[0023]
[0038] 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.
[0024]
[0039] The receiver (231) may receive one or more coded video sequences, for example, included in a bitstream 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) may receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, that may be forwarded to respective consuming entities (not shown). The receiver (231) may 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 / analyzer (220) (hereinafter "analyzer (220)"). In certain applications, the buffer memory (215) is part of the video decoder (210). In other applications, the buffer memory (215) can be external to the video decoder (210) (not shown). In still other applications, there may be a buffer memory (not shown) external to the video decoder (210), for example, to deal with network jitter, plus another buffer memory (215) internal to the video decoder (210), for example, to handle playout timing. If 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 needed or may be small.For use with best-effort packet networks such as the Internet, a buffer memory (215) may be required, which may be relatively large and advantageously be adaptively sized, and may be implemented at least in part in an operating system or similar element (not shown) external to the video decoder (210).
[0025]
[0040] The video decoder (210) may include a parser (220) for reconstructing symbols (221) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (210) and, possibly, information for controlling a rendering device, such as a render 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 conform to a video coding technique or standard and may follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context dependency, etc. The analyzer (220) may extract from the coded video sequence a set of subgroup parameters for at least one of a subgroup of pixels in a video decoder based on at least one parameter corresponding to the group. A subgroup may include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. The analyzer (220) may also extract transform coefficients, quantization parameter values, motion vectors, etc. from the coded video sequence information.
[0026]
[0041] The analyzer (220) may perform entropy decoding / analysis operations on the video sequence received from the buffer memory (215) to produce symbols (221).
[0027]
[0042] The reconstruction of the symbols (221) may involve several different units, depending on the type of coded video picture or portion thereof (inter-picture and intra-picture, inter-block and intra-block, etc.) and other factors. Which units are involved and how may be controlled by subgroup control information parsed by the parser (220) from the coded video sequence. For clarity, the flow of such subgroup control information between the parser (220) and the following units is not shown.
[0028]
[0043] 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 adequate.
[0029]
[0044] The first unit is the scalar / inverse transform unit (215). The scalar / inverse transform unit (251) receives quantized transform coefficients and control information from the analyzer (220) as symbols (221), 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 that can be input to the aggregator (255).
[0030]
[0045] 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 may 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 a block 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 the partially reconstructed and / or fully reconstructed current picture. The aggregator (255) may add, 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).
[0031]
[0046] In other cases, the output samples of the scalar / inverse transform unit (251) may relate to an inter-coded, possibly motion-compensated, block. In such cases, the motion-compensated prediction unit (253) may access a reference picture memory (257) to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols (221) related to the block, these samples may be added by an 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 a motion vector, which may be available to the motion-compensated prediction unit (253) in the form of a symbol (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 exact motion vectors are in use, motion vector prediction mechanisms, etc.
[0032]
[0047] The output samples of the aggregator (255) may be subjected to various loop filtering techniques in a loop filter unit (256). Video compression techniques may include in-loop filtering techniques controlled by parameters included 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 analyzer (220). Video compression may also be responsive to meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, as well as to previously reconstructed, loop-filtered sample values.
[0033]
[0048] The output of the loop filter unit (256) can be a sample stream that can be output to the render device (212) and stored in a reference picture memory (257) for use in future inter-picture prediction.
[0034]
[0049] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the analyzer (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 beginning reconstruction of the next coded picture.
[0035]
[0050] The video decoder (210) may perform decoding operations in accordance with a predetermined video compression technology or standard, such as 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 that the coded video sequence conforms to both the syntax of the video compression technology or standard and a profile as described in the video compression technology or standard. Specifically, a profile may select certain tools as the only tools available under that profile among all tools available in the video compression technology or standard. Compliance may also require that the complexity of the coded video sequence be within a range 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.
[0036]
[0051] In one aspect, the receiver (231) may receive additional (redundant) data along with the encoded 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 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.
[0037]
[0052] 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 transmitting circuit). The video encoder (303) may be used in place of the video encoder (103) in the example of FIG. 1.
[0038]
[0053] The video encoder (303) may receive video samples from a video source (301) (not part of the electronic device (320) in the example of FIG. 3) that may 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).
[0039]
[0054] The video source (301) may provide a source video sequence to be coded by the video encoder (303) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 Y CrCB, RGB, etc.), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (301) may be a storage device that stores previously prepared video. In a video conferencing system, the video source (301) may be a camera that captures local image information as a video sequence. The video data may be provided as multiple individual pictures that, when viewed in sequence, impart motion. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples, depending on the sampling structure, color space, etc., in use. The following discussion focuses on samples.
[0040]
[0055] According to one aspect, the video encoder (303) may 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 an appropriate coding rate is one of the functions of the controller (350). In some aspects, the controller (350) controls and is operatively coupled to other functional units as described below. For clarity, coupling is not shown. Parameters set by the controller (350) may include rate control-related parameters (picture skip, quantizer, lambda value for rate-distortion optimization techniques, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (350) may be configured with other suitable functions related to the video encoder (303) optimized for a particular system design.
[0041]
[0056] In some aspects, the video encoder (303) is configured to operate within a coding loop. In a simplified 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 a reference picture) 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 used by the (remote) decoder. The reconstructed sample stream (sample data) is input to a reference picture memory (334). Because decoding the symbol stream produces bit-exact results regardless of the location of the decoder (local or remote), the contents of the reference picture memory (334) are also bit-exact between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact sample values for reference picture samples that the decoder would "see" when using prediction during decoding. This basic principle of reference picture synchronism (and the resulting drift when synchronism cannot be maintained, for example due to channel errors) is used in several related technologies as well.
[0042]
[0057] 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, with brief reference also to Figure 2, because symbols are available and the encoding / decoding of the 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).
[0043]
[0058] In one aspect, decoder techniques other than analysis / entropy decoding present in the decoder are present in the corresponding encoder in the same or nearly the same functional form. Therefore, the disclosed subject matter focuses on the operation of the decoder. Descriptions of encoder techniques may be omitted, as they are the opposite of the decoder techniques described comprehensively. Only in certain areas will more detailed descriptions be provided below.
[0044]
[0059] In some examples, in operation, 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.
[0045]
[0060] The local video decoder (333) may 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) may 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 typically be a copy of the source video sequence, with some errors. The local video decoder (333) may replicate the decoding process that may be performed by the video decoder on the reference pictures and store the reconstructed reference pictures in the reference picture memory (334). In this way, the video encoder (303) may locally store copies of reconstructed reference pictures that have common content as reconstructed reference pictures obtained by the far-end video decoder (without transmission errors).
[0046]
[0061] The predictor (335) may perform a predictive search for the coding engine (332). That is, for a new picture to be coded, the predictor (335) may 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 pixel 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).
[0047]
[0062] The controller (350) may manage the coding operations of the source coder (330), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0048]
[0063] The output of all the aforementioned functional units may be subjected to entropy coding in an entropy coder (345), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable length coding, or arithmetic coding.
[0049]
[0064] The transmitter (340) may buffer the coded video sequence created by the entropy coder (345) and prepare it for transmission over a communication channel (360), which may be a hardware / software link to a storage device that stores the encoded 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).
[0050]
[0065] 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:
[0051]
[0066] Intra-pictures (I-pictures) may be coded and decoded without using any other picture in the sequence as a source of prediction. Some video codecs allow various types of intra-pictures, including, for example, Independent Decoder Refresh ("IDR") pictures.
[0052]
[0067] 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.
[0053]
[0068] Bidirectionally predicted pictures (B pictures) may 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 to reconstruct a single block.
[0054]
[0069] 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 or intra prediction). Pixel blocks of a P-picture may be predictively coded via spatial or temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be predictively coded via spatial or temporal prediction with reference to one or two previously coded reference pictures.
[0055]
[0070] 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.
[0056]
[0071] 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.
[0057]
[0072] Video may be captured as multiple source pictures (video pictures) in a temporal sequence. Intra-picture prediction (often shortened to intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or other) 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 in the reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are in use.
[0058]
[0073] 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 precede the current picture in video decoding order (but may be 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.
[0059]
[0074] Furthermore, to improve coding efficiency, merge mode techniques may be used in inter-picture prediction.
[0060]
[0075] According to some aspects of the present disclosure, prediction, such as inter-picture prediction or intra-picture prediction, is performed on a block-by-block basis. 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 within a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU includes three coding tree blocks (CTBs), each consisting of one luma CTB and two chroma CTBs. Each CTU may be recursively quadtree-decomposed 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 CU's prediction type, 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 units of prediction blocks. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of values (e.g., luma values) for pixels of 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0061]
[0076] 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.
[0062]
[0077] In video coding such as HEVC and VVC, various intra prediction modes may be used for intra prediction. FIG. 4 illustrates intra prediction modes (e.g., 35 intra prediction modes such as those used in HEVC) according to one aspect of the present disclosure. In one example, there are 35 intra prediction modes (e.g., 35 intra prediction modes in total) such as those in HEVC. Referring to FIG. 4, among the 35 intra prediction modes, mode 0 is a planar mode (e.g., Intra_Planar), mode 1 is a DC mode (e.g., Intra_DC), mode 10 is a horizontal mode, mode 26 is a vertical mode, and modes 2, 18, and 34 are diagonal modes. The planar modes are sometimes referred to as planar intra prediction modes. In the example illustrated in FIG. 4, the intra prediction modes include angular intra prediction modes (e.g., modes 2 to 34) and non-angular intra prediction modes (e.g., modes 0 to 1). Intra-prediction modes may be signaled by three most probable modes (MPMs) and 32 remaining modes.
[0063]
[0078] FIG. 5 illustrates intra-prediction modes, such as intra-prediction modes defined in VVC, according to one embodiment of the present disclosure. Referring to FIG. 5, in one example of VVC, there are 95 intra-prediction modes (e.g., a total of 95 intra-prediction modes). In one example, the 95 intra-prediction modes are represented by modes −14 to 80. For example, mode 18 is a horizontal mode, mode 50 is a vertical mode, and modes 2, 34, and 66 are diagonal modes. Modes −1 to −14 and modes 67 to 80 may be referred to as wide-angle intra-prediction (WAIP) modes. In the example illustrated in FIG. 5, the intra-prediction modes include angular intra-prediction modes (e.g., modes −14 to −1, modes 2 to 80) and non-angular intra-prediction modes (e.g., modes 0 to 1). Mode 0 is a planar mode, and mode 1 is a DC mode.
[0064]
[0079] Examples of intra block copy modes (also called IntraBC modes or IBC modes), such as those used in HEVC and VVC, are described below.
[0065]
[0080] FIG. 6 illustrates an example of an IBC mode according to an example of this disclosure. The reference block used to predict the current CU (601) may be indicated by the block vector (BV) associated with the current CU (601). Each square (600) may represent a CTU. The gray shaded areas represent areas or regions that have already been coded, and the white, unshaded areas represent areas or regions to be coded. The current CTU (600(6)) being reconstructed includes the current CU (601), the coded area (602), and the area to be coded (603). In one example, the area (603) is coded after coding the current CU (601).
[0066]
[0081] For example, in HEVC, the gray shaded area excluding the two CTUs (600(1) to 400(2)) located to the upper right of the current CTU (600(6)) can be used as a reference area in IBC mode to enable wavefront parallel processing (WPP). A BV permitted in HEVC can point to a block within the reference area (e.g., the gray shaded area excluding the two CTUs (600(1) to 400(2))). For example, a BV (605) permitted in HEVC points to a reference block (611).
[0067]
[0082] In one example, in VVC, in addition to the current CTU (600(6)), only the left adjacent CTU (600(3)) to the left of the current CTU (600(6)) is permitted as a reference area in IBC mode. In one example, the reference area used in IBC mode in VVC is within the dotted area (615) and contains coded samples. For example, the BV (606) permitted in VVC points to the reference block (612).
[0068]
[0083] In IBC mode BV coding, reference to the reconstructed area can be performed via 2D BVs, which are similar to the MVs used in inter prediction. Prediction and coding of BVs can reuse prediction and coding of MVs in the inter prediction process. In some examples, the luma BVs are integer resolution rather than 1 / 4 (or 1 / 4 pel) precision of the MVs used in regular inter-coded CTUs.
[0069]
[0084] 7 illustrates an example of an intra-template matching prediction (IntraTMP) mode according to one embodiment of the present disclosure. In one embodiment, such as in Enhanced Compression Model (ECM) software, IntraTMP is a special intra-prediction mode that can copy a best predicted block (e.g., a matching block (721)) from a reconstructed portion of a current frame (or current picture), and the template (e.g., an L-shaped template) (720) of the best predicted block can match the current template (710) of a current block (711) (e.g., a current PU or current CU). In a predefined search range, the encoder can search for a template most similar to the current template in the reconstructed portion of the current frame and use the corresponding block as the predicted block. The encoder can signal the use of IntraTMP mode, and the same prediction operation can be performed at the decoder side.
[0070]
[0085] The prediction signal may be generated by matching the current template (710) with a template of another block within a predefined search area, such as an L-shaped causal neighborhood of the current block (711). The example search area shown in Figure 7 can include multiple CTUs (or superblocks). Referring to Figure 7, the search area may include the current CTU R1 (e.g., a portion of the current CTU R1), the upper-left CTU R2, the upper CTU R3, and the left CTU R4. The cost function may include any suitable cost function, such as sum of absolute difference (SAD).
[0071]
[0086] Within each region, the decoder can search for the template with the smallest cost (e.g., smallest SAD) relative to the current template and can use the block associated with the template with the smallest cost as the predicted block.
[0072]
[0087] The dimensions of the region indicated by (SearchRange_w, SearchRange_h) can be set proportional to the block dimensions (BlkW, BlkH) to have a fixed number of SAD comparisons per pixel. SearchRange_w=a×BlkW Equation (1) SearchRange_h=a×BlkH Equation (2) is.
[0073]
[0088] The parameter "a" can be a constant that controls the tradeoff between gain and complexity. In one example, "a" is 5.
[0074]
[0089] In one example, to speed up the template matching process, the search range (search range of all search regions) is subsampled by a factor of 2, thereby reducing the template matching search by a factor of 4. After the best match (or initial best match) is found, a refinement process can be performed. The refinement is performed via a second template matching search around the best match (or initial best match) using the reduced range. The reduced range is defined as min(BlkW,BlkH) / 2.
[0075]
[0090] The intra template matching tool may be enabled for CUs with width and height sizes less than or equal to 64. The maximum CU size (e.g., 64) for intra template matching may be configurable.
[0076]
[0091] The intra template matching prediction mode may be signaled at the CU level through a dedicated flag when decoder-side intra mode derivation (DIMD) is not currently used for the CU.
[0077]
[0092] In one example, for an IntraTMP coded block, an implicit transform selection method may be applied when selecting a primary transform. The horizontal transform type is DST7 if the block width is between 4 and 16, otherwise the horizontal transform type is DCT2. The vertical transform type is DST7 if the block height is between 4 and 16, otherwise the vertical transform type is DCT2. When selecting a secondary transform, an IntraTMP coded block (e.g., an IntraTMP mode) may be mapped to a planar mode (e.g., an intra-prediction mode Planar), and a secondary transform set associated with the planar mode is applied to the IntraTMP coded block.
[0078]
[0093] VVC also includes a matrix-based intra prediction (MIP) mode. To predict samples for a rectangular block of width W and height H, MIP takes as input one line of H reconstructed adjacent boundary samples located to the left of the block and one line of W reconstructed adjacent boundary samples located above the block. If reconstructed samples are not available, they are generated in the same way as in conventional intra prediction.
[0079]
[0094] The generation of the prediction signal is based on the following steps. (a) Among the boundary samples, four samples when W=H=4 and eight samples in all other cases are extracted by averaging. (b) A matrix-vector multiplication followed by an offset addition is performed using the averaged samples as input. The result is a downsized prediction signal for a sub-sampled set of samples in the original block. (c) Predictions at the remaining positions are generated from the predictions for the subsampled set by linear interpolation, which can be a single-step linear interpolation in each direction.
[0080]
[0095] The matrices and offset vectors used to generate the prediction signal can be taken from three sets of matrices S0, S1, and S2. Set S0 contains 18 matrices
[0081]
number
[0082]
number
[0083]
number
[0084]
number
[0085]
number
[0086]
number
[0087]
number
[0088]
number
[0089]
[0096] FIG. 8 shows an example of MIP for an 8x8 block according to one embodiment of the present disclosure. For an 8x8 block, MIP takes four averages along each axis of the boundary. The resulting eight input samples enter a matrix-vector multiplication. The matrix is taken from set S1. This results in 16 samples at odd positions in the prediction block. Therefore, a total of (8·16) / (8·8)=2 multiplications are performed per sample. After adding the offset, the samples are vertically interpolated using the reduced top boundary. Horizontal interpolation follows using the original left boundary. In this case, the interpolation process does not require any multiplications.
[0090]
[0097] Regarding MIP mode signaling, for each CU in intra mode, a flag is sent in the bitstream indicating whether MIP mode applies to the corresponding PU. If MIP mode applies, the MIP mode index predmode may be signaled using an MPM list containing three MPMs.
[0091]
[0098] In video coding, palette mode may be used. Palette mode may be used in VCC and the screen content coding (SCC) extension in HEVC. Palette mode may be applied to coding screen content, such as screen capture content, computer-generated content, etc. In one aspect, screen content uses a smaller number of color values for samples in a local area than non-screen content. Thus, sample values in a palette-coded block may be mapped to a reduced set of colors, e.g., a palette table for the block, and each sample may be represented by an index into the palette table or an index indicating an "escape" color. For the "escape" color, the quantized sample value may be coded directly.
[0092]
[0099] A transform, such as a linear transform, a binary transform, etc., may be applied to the block. In one example, the transform includes a combination of a linear transform and a binary transform. In one example, the transform includes a non-separable transform. In one example, the transform includes a separable transform.
[0093]
[0100] The secondary transform may be performed in VVC, etc. In some examples, a low-frequency non-separable transform (LFNST) may be applied between the forward primary transform and quantization at the encoder side, and between the inverse quantization and the inverse primary transform at the decoder side, such as in VVC. In the LFNST, a reduced secondary transform (RST) method may be used.
[0094]
[0101] The application of a non-separable transform that can be used in LENST can be explained as follows, using a 4x4 input block (or input matrix) X as an example (shown in Equation (3)). As shown in Equations 3-4, to apply a 4x4 non-separable transform (e.g., LFNST), the 4x4 input block X is divided into the vectors
[0095]
number
[0096]
number
[0097]
[0102] Non-separable transformations are
[0098]
number
[0099]
number
[0100]
number
[0101]
[0103] The LFNST transforms (also called transform kernels, transform cores, or transform matrices) may be selected as described below. In one embodiment, multiple transform sets may be used, and one or more non-separable transform matrices (or kernels) may be included in each of the multiple transform sets in the LFNST. A transform set may be selected from multiple transform sets, and a non-separable transform matrix may be selected from one or more non-separable transform matrices in a transform set.
[0102]
[0104] Table 1 shows an example mapping from intra-prediction modes to multiple transform sets according to one embodiment of the present disclosure. The mapping indicates the relationship between the intra-prediction modes and multiple transform sets. Relationships such as those shown in Table 1 can be predefined and stored in the encoder and decoder.
[0103] [Table 1]
[0104]
[0105] Referring to Table 1, the multiple transform sets include four transform sets, for example, transform sets 0 to 3, represented by transform set indices (e.g., Tr.set indexes) of 0 to 3, respectively. An index (e.g., an intra-prediction mode index or IntraPredMode) may indicate an intra-prediction mode, and a transform set index may be obtained based on this index and Table 1. Thus, the transform set may be determined based on the intra-prediction mode. In one example, if one of three cross component linear model (CCLM) modes (e.g., INTRA_LT_CCLM, INTRA_T_CCLM, or INTRA_L_CCLM) is used for the current block (e.g., 81<=IntraPredMode<=83), transform set 0 is selected for the current block.
[0105]
[0106] As described above, each transform set may include one or more non-separable transform matrices. One of the one or more non-separable transform matrices may be selected, for example, by an explicitly signaled LFNST index. The LFNST index may be signaled in the bitstream once per intra-coded CU, for example, after signaling the transform coefficients. For each transform set, a selected non-separable secondary transform candidate may be specified by an explicitly signaled LFNST index.
[0106]
[0107] In one embodiment, LFNST is restricted to be applicable only when all coefficients outside the first coefficient subgroup are insignificant, and the coding of the LFNST index may depend on the position of the last significant coefficient. The LFNST index may be context coded. In one example, the context coding of the LFNST index is independent of the intra prediction mode, and only the first bin is context coded. LFNST may be applied to both the luma and chroma components for intra-coded CUs in intra slices or inter slices. If the dual tree is enabled, the LFNST indexes for the luma and chroma components may be signaled separately. For inter slices (e.g., if the dual tree is disabled), a single LFNST index may be signaled and used for both the luma and chroma components.
[0107]
[0108] Considering that CUs larger than 64x64 are implicitly partitioned (TU tiling) due to the existing maximum transform size limitation (e.g., 64x64), the LFNST index search may increase the data buffer by four times for a certain number of decoding pipeline stages. Therefore, in some examples, the maximum size allowed for LFNST is limited to 64x64. In one example, LFNST is enabled only when using DCT2. In one example, LFNST index signaling is placed before MTS index signaling.
[0108]
[0109] In one example, in the use of scaling matrices for perceptual quantization, it is not clear that a scaling matrix specified for a primary matrix can also be useful for the LFNST coefficients. For this reason, in some examples, the use of a scaling matrix for the LENST coefficients is not permitted. In one example, in single-tree partitioning mode, chroma LFNST is not applied.
[0109]
[0110] In one aspect, such as in ECM, the LFNST design in VVC is extended as follows. The number of LFNST sets (S) and candidates (C) is expanded to S=35 and C=3, and the LFNST set (lfnstTrSetIdx) for a given intra mode (predModeIntra) is derived according to the following formula: If predModeIntra<0, lfnstTrSetIdx is equal to 2 For predModelIntra in [0,34], lfnstTrSetIdx=predModeIntra For predModeIntra of [35,66], lfnstTrSetIdx=68-predModeIntra To demonstrate the LFNST kernel set, three different kernels, LFNST4, LFNST8, and LFNST16, are defined, which apply to 4×N / N×4 (N≧4), 8×N / N×8 (N≧8), and M×N (M,N≧16), respectively.
[0110]
[0111] 9 illustrates an example of mapping from intra prediction modes to secondary transform sets according to one aspect of the present disclosure. As shown in FIG. 9, a table such as Table 2 is used to illustrate the mapping from intra prediction modes (denoted as intra prediction modes in Table 2) to secondary transform sets, such as LFNST sets indicated by respective LFNST set indices (denoted as lfnstTrSetIdx) in Table 2.
[0111]
[0112] In related art, when applying transforms to IBC-coded or IntraTMP-coded blocks, the same secondary transforms as applied to planar mode are applied. However, because IBC-coded or IntraTMP-coded blocks may have directionality, sharing the same transform set as used for planar mode may not be optimal. According to one aspect of the present disclosure, a secondary transform set may be selected for an IBC-coded or IntraTMP-coded block based on characteristics (e.g., directionality) of the respective IBC-coded or IntraTMP-coded block.
[0112]
[0113] In this disclosure, the first plurality of prediction modes may include IBC mode, IntraTMP mode, MIP mode, palette mode, etc. The first plurality of prediction modes may be referred to in this disclosure as first plurality of intra-prediction modes because, when a current block in a current picture is predicted using one of the first plurality of intra-prediction modes (e.g., IBC mode, IntraTMP mode, MIP mode, or palette mode), samples in the current block may be predicted, for example, using reference samples in the current picture. In one example, when a current block in a current picture is predicted using one of the first plurality of prediction modes (e.g., IBC mode, IntraTMP mode, MIP mode, or palette mode), samples in the current block are predicted without using reference samples in another picture.
[0113]
[0114] The second plurality of intra prediction modes may include DC mode, planar, and angular intra prediction modes, as described with reference to FIGS.
[0114]
[0115] In one aspect, each of the second plurality of intra-prediction modes is referred to as a conventional intra-prediction mode (CIPM), such as those shown in Figures 4-5. Each of the first plurality of intra-prediction modes is referred to as an unconventional intra-prediction mode (UIPM), such as those shown in Figures 6-8. In one example, an intra-prediction mode not included in the second plurality of intra-prediction modes (e.g., a prediction mode that predicts a current block in a current picture using reference samples in the current picture) is referred to as a first intra-prediction mode or UIPM in the first plurality of intra-prediction modes. UIPM may include, but is not limited to, IBC mode, IntraTMP mode, MIP mode, and / or palette mode.
[0115]
[0116] In one aspect, when a current block is coded in an intra prediction mode that is not in the second plurality of intra prediction modes, a second intra prediction mode (e.g., a CIPM such as planar mode, DC mode, or angular intra prediction mode) that is in the second plurality of intra prediction modes can be determined, and the second intra prediction mode can be associated with the current block.
[0116]
[0117] According to one aspect of the present disclosure, when a current block is coded in a first intra prediction mode (e.g., UIPM) in a first plurality of intra prediction modes, such as IntraTMP mode, IBC mode, MIP mode, palette mode, etc., a second intra prediction mode (e.g., CIPM, such as planar mode, DC mode, or angular intra prediction mode) in a second plurality of intra prediction modes can be determined (e.g., derived), and the second intra prediction mode can be associated with the current block.
[0117]
[0118] The second intra-prediction mode associated with the current block may be used in constructing a most probable mode (MPM) list for another block (e.g., a neighboring block of the current block). The second intra-prediction mode associated with the current block may be used in transform selection for the current block.
[0118]
[0119] When the current block is coded using a non-conventional intra prediction mode (UIPM), such as IntraTMP mode, IBC mode, MIP mode, or palette mode, a conventional intra prediction mode (CIPM), such as one of planar mode, DC mode, and / or angular intra prediction mode, is derived and associated with the current block, and this associated intra mode (e.g., CIPM) may be further used for MPM list construction of neighboring blocks and transform selection for the current block.
[0119]
[0120] In one aspect, a regular intra mode (e.g., CIPM, such as angular intra prediction mode) is derived only for a set of selected blocks coded by UIPM and used for MPM list construction of other blocks or transform selection of the current block. In one example, the set of selected blocks coded by UIPM is referred to as candidate blocks.
[0120]
[0121] In one example, the selection of a block (associated with an intra-prediction mode) (e.g., a block may refer to a set of blocks coded by UIPM) depends on whether the block is located within a predefined region, such as an area covered by a current CTU and / or several previously coded CTUs. In one example, the predefined region includes one or more of (i) the current CTU and (ii) at least one previously coded CTU. In one example, one or more of (i) the current CTU and (ii) at least one previously coded CTU includes the predefined region.
[0121]
[0122] In one aspect, the current block is coded in a first intra prediction mode (e.g., UIPM) that is different from a plurality of intra prediction modes (e.g., a second plurality of intra prediction modes or CIPM) including DC mode, planar mode, and angular intra prediction mode. A candidate block (e.g., one of a set of selected blocks coded by UIPM) coded by an intra prediction mode (e.g., UIPM) that is different from the plurality of intra prediction modes may be selected. In one example, the candidate block is selected when the candidate block is located within a predefined region. If the candidate block is located within the predefined region, a second intra prediction mode (e.g., CIPM) may be derived for the candidate block from the plurality of intra prediction modes, and the second intra prediction mode is associated with the candidate block.
[0122]
[0123] The second intra-prediction mode associated with the candidate block may be associated with the current block and may be used in (i) selecting a transform for the current block and / or (ii) constructing an MPM list for another block. At least one of (i) selecting a transform for the current block based on the second intra-prediction mode (e.g., CIPM) associated with the current block and reconstructing the current block according to the selected transform, and (ii) constructing an MPM list for another block (e.g., one of the other blocks) using the derived second intra-prediction mode may be performed.
[0123]
[0124] In one example, the selection of a block (associated with an intra-prediction mode) depends on whether the block is located within a predefined region, and the predefined region is updated after each block is coded. In one example, the predefined region is updated for another block that is coded after the current block is coded.
[0124]
[0125] In one example, the selection of a block (associated with an intra-prediction mode) depends on whether the block is located within a predefined region, and the area size of the predefined region is a fixed value, for example, N×64×64, or N×128×128, where N can be a positive integer such as 1, 2, 3, etc. In one example, the size (e.g., width, height, or area size) of the predefined region is fixed.
[0125]
[0126] In another example, a second intra-prediction mode (e.g., CIPM) is derived for a current block coded in a first intra-prediction mode (e.g., UIPM) only if the current block is one of a set of selected blocks coded by UIPM. The selection of the block may depend on whether the block is located within a predefined region, such as the predefined region described above.
[0126]
[0127] In another aspect, when deriving a CIPM for an IntraTMP-coded block and / or an IBC-coded block, a block vector (BV) associated with the IntraTMP mode and / or the IBC mode is given, and several candidate block positions are checked in a predefined order to fetch an intra-prediction mode (e.g., CIPM) within the reconstructed region. FIG. 10 illustrates an example of candidate block positions used to derive a CIPM for a current block (1002) according to one aspect of the present disclosure. The current block (1002) is within a current CTU (1001). The current block (1002) may be coded in one of the IBC mode and the IntraTMP mode. A BV (1004) associated with one of the IntraTMP mode and the IBC mode may indicate a reference block (1003). Candidate block positions 0-5 may be associated with the reference block (1003). In one example, candidate block positions 0-5 are checked in a predefined order to obtain a CIPM.
[0127]
[0128] In one aspect, a second intra-prediction mode (e.g., CIPM) associated with a current block (1002) (e.g., an IntraTMP-coded block or an IBC-coded block) may be derived from CIPM (e.g., multiple intra-prediction modes including DC mode, planar mode, and angular intra-prediction mode) such that at least one candidate block position (e.g., candidate block positions 0-5) may be checked in a predefined order. The at least one candidate block position may be associated with a reference block (1003) indicated by a BV (1004) associated with one of the IBC mode and the IntraTMP mode. The second intra-prediction mode (e.g., CIPM) associated with the current block (1002) may be determined based on the at least one candidate block position, such as according to the intra-prediction mode associated with one of the at least one candidate block positions. At least one of (i) selecting a transform for the current block (1002) based on the second intra-prediction mode associated with the current block and reconstructing the current block (1002) according to the selected transform, or (ii) constructing an MPM list for another block using the derived second intra-prediction mode associated with the current block (1002) can be performed.
[0128]
[0129] In one example, one (e.g., candidate block position 2) of at least one candidate block position (e.g., candidate block positions 0-5) is associated with CIPM, and the CIPM associated with the one of the at least one candidate block positions (e.g., candidate block position 2) can be determined as the second intra-prediction mode associated with the current block (1002). In one example, a previously coded block includes reconstructed samples located at one of the at least one candidate block positions, and the previously coded block is coded with CIPM, so that CIPM is associated with one of the at least one candidate block positions. In one example, the previously coded block includes reconstructed samples located at one of the at least one candidate block positions, and the previously coded block is coded with UIPM, and the CIPM associated with the previously coded block is derived as described in this disclosure. In one example, the CIPM associated with the previously coded block is associated with one of the at least one candidate block positions.
[0129]
[0130] In one example, each of a plurality of positions in the at least one candidate block position is associated with a respective CIPM, and the CIPMs associated with the plurality of positions may be used to determine a second intra-prediction mode associated with the current block (1002). In one example, one of the CIPMs associated with the plurality of positions may be determined as the second intra-prediction mode associated with the current block (1002). In one example, the CIPM most frequently associated with the plurality of positions may be determined as the second intra-prediction mode associated with the current block (1002).
[0130]
[0131] According to one aspect of the present disclosure, when a first candidate block position of at least one candidate block position does not have an associated intra-prediction mode (e.g., CIPM) that is one of a plurality of intra-prediction modes, the first candidate block position of at least one candidate block position may be skipped (e.g., without being checked). When a first candidate block position (e.g., candidate block position 0, 1, 4, or 5 in FIG. 10) of at least one candidate block position (e.g., candidate block positions 0-5) is located outside a predefined region (e.g., current CTU(1001)), as described above, the first candidate block position of at least one candidate block position does not have an associated intra-prediction mode (e.g., CIPM) that is one of a plurality of intra-prediction modes and may be skipped. Referring to FIG. 10, candidate block positions 0, 1, 4, and 5 are skipped because they are located outside a predefined region (e.g., current CTU(1001)). Therefore, only candidate block positions 2 and 3 are checked to obtain the CIPM of the current block (1002).
[0131]
[0132] In one aspect, when a candidate block position does not have an associated CIPM, for example, when the candidate block position is outside the predefined region described above, the candidate block position is skipped and the next candidate block position is checked to find a valid CIPM. For example, referring to FIG. 10, when a current block (1002) is coded in an IntraTMP mode (e.g., one of IntraTMP mode and IBC mode) using a BV (1004) derived by template matching, for example, a reference block (1003) is identified by the BV (1004), and several candidate positions (shown by shaded blocks labeled 0, 1, . . . , 5, for example) are checked in a predefined order (e.g., from 0 to 5). Because positions (e.g., candidate block positions) 0, 1, 4, and 5 are outside the current CTU (e.g., a predefined region), only positions 2 and 3 are checked to fetch the CIPM for the current block (1002).
[0132]
[0133] FIG. 11 shows an example of candidate block positions used to derive a CIPM for a current block (1002) according to one embodiment of the present disclosure. The current block (1002) and current CTU (1001) in FIG. 11 are similar to or identical to the current block (1002) and current CTU (1001) described in FIG. 10. The current block (1002) may be coded in one of the IBC mode and the IntraTMP mode. A BV (1104) associated with one of the IntraTMP mode and the IBC mode may indicate a reference block (1103). Candidate block positions 0' to 5' may be associated with the reference block (1103). According to one aspect of the present disclosure, when a first candidate block position (e.g., candidate block position 4′) of at least one candidate block position (e.g., candidate block positions 0′ to 5′) is located outside a predefined region, the first candidate block position of the at least one candidate block position can be replaced with a position (e.g., candidate block position 0′) within the predefined region, such as that shown in FIG. 11 .
[0133]
[0134] In one example, when a candidate block position (e.g., candidate block position 4') is outside a region (e.g., a predefined region), for example, when reference block 4' (e.g., candidate block position 4' or a reference block associated with candidate block position 4') is outside a permitted region (e.g., a predefined region), an operation may be processed such that a position within the permitted region (e.g., candidate block position 0') is used to replace it (e.g., candidate block position 4'). In this example, reference block 0' (e.g., candidate block position 0' or a reference block associated with candidate block 0') may be used to replace reference block 4'.
[0134]
[0135] In one aspect, the derived CIPM of the current block is stored in a buffer of the current picture P0. When another picture (P1) uses the current picture P0 as a reference picture, this stored derived intra mode (e.g., the derived CIPM) can be used to construct an MPM list of the block in the other picture P1. For example, the derived second intra prediction mode (e.g., the derived CIPM) is stored in a buffer of the current picture P0. When the current picture P0 is a reference picture of another picture P1, the MPM list of the block in the other picture P1 is constructed using the stored second intra prediction mode. In one example, the derived second intra prediction mode (e.g., the derived CIPM) is stored in an M×N unit, where M and N are positive integers.
[0135]
[0136] In one aspect, the derived CIPM is stored in units of M×N. Exemplary values of M and N can include, but are not limited to, 8×4, 4×8, 8×8, etc. For example, M×N can include, but is not limited to, 8×4, 4×8, 8×8, etc.
[0136]
[0137] In one aspect, the transform set of the current block may be determined according to the derived second intra-prediction mode (e.g., the derived CIPM). For example, the transform set of the current block may be determined according to the derived second intra-prediction mode (e.g., the derived CIPM) using mapping information or related information, such as a lookup table, that maps the second plurality of intra-prediction modes to respective transform sets. In one example, the transform set of the current block is a secondary transform set. A mapping between the second plurality of intra-prediction modes indicated by a mode number (IntraPredMode) and transform sets including a low-frequency non-separable transform (LFNST) set indicated by an LFNST set index (e.g., 0 to 3 in Table 1, 0 to 34 in Table 2) is indicated in a lookup table, such as Table 1 or Table 2. Once the transform set is determined, a transform may be selected from the determined transform set.
[0137]
[0138] In one example, the selected transform is a secondary transform. In one example, the primary transform type is not selected based on the derived second intra-prediction mode (e.g., the derived CIPM).
[0138]
[0139] In one aspect, when selecting a transform type, the derived normal intra-prediction mode (e.g., the derived CIPM) is used only to select the secondary transform, and the primary transform type is not selected based on the derived normal intra-prediction mode.
[0139]
[0140] 12 is a flowchart outlining a process (1200) according to one embodiment of the present disclosure. The process (1200) is used in a video decoder. In various aspects, the process (1200) 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), etc. In some aspects, the process (1200) is implemented by software instructions, such that the processing circuit performs the process (1200) when it executes the software instructions. The process starts at (S1201) and proceeds to (S1210).
[0140]
[0141] In (S1210), coded information of a current block in a current picture may be received. The current block may be coded in a first intra prediction mode different from a plurality of intra prediction modes, including a DC mode, a planar mode, and an angular intra prediction mode.
[0141]
[0142] In one example, the plurality of intra prediction modes is a second plurality of intra prediction modes. In one example, the plurality of intra prediction modes includes CIPM.
[0142]
[0143] In one example, the first intra prediction mode is one of an IBC mode, an IntraTMP mode, an MIP mode, and a palette mode. In one example, the first intra prediction mode is one of a first plurality of intra prediction modes. In one example, the first intra prediction mode is UIPM.
[0143]
[0144] In (S1220), a candidate block in the current picture coded by an intra prediction mode (eg, UIPM) different from the plurality of intra prediction modes can be selected.
[0144]
[0145] In (S1230), when the candidate block is located within the predefined region as described above, a second intra-prediction mode (e.g., one of the second plurality of intra-prediction modes or CIPM) can be derived for the candidate block from the plurality of intra-prediction modes. The second intra-prediction mode can be associated with the current block.
[0145]
[0146] In one example, the predefined region includes one or more of: (i) a current coding tree unit (CTU) and (ii) at least one previously coded CTU.
[0146]
[0147] In one example, the predefined region is updated for blocks that are coded after the current block is coded.
[0147]
[0148] In one example, the area size of the predefined region is fixed.
[0148]
[0149] In (S1240), at least one of (i) selecting a transform for the current block based on the second intra-prediction mode associated with the current block and reconstructing the current block according to the selected transform, or (ii) constructing an MPM list for another block using the derived second intra-prediction mode associated with the current block, may be performed.
[0149]
[0150] The transform that is the secondary transform is selected based on the derived second intra prediction mode, as described above with reference to Tables 1-2. The primary transform type is not selected based on the derived second intra prediction mode.
[0150]
[0151] In one example, the other block is a neighboring block of the current block.
[0151]
[0152] In one example, the other block is a block in another picture different from the current picture.
[0152]
[0153] The process then proceeds to (S1299) and ends.
[0153]
[0154] The process 1200 may be adapted as desired. Steps of the process 1200 may be modified and / or omitted. Additional steps may be added. Any suitable order of performance may be used.
[0154]
[0155] In one example, the derived second intra-prediction mode is stored in a buffer of the current picture. When the current picture is a reference picture of another picture, the second intra-prediction mode stored in the buffer of the current picture can be used to construct an MPM list of another block in the other picture.
[0155]
[0156] In one example, the derived second intra-prediction mode is stored in units of M×N, as described above, where M and N may be positive integers.
[0156]
[0157] 13 is a flowchart outlining a process (1300) according to one embodiment of the present disclosure. The process (1300) may be used in a video encoder. In various embodiments, the process (1300) 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 one embodiment, the process (1300) is implemented by software instructions, such that the processing circuit performs the process (1300) when it executes the software instructions. The process starts at (S1301) and proceeds to (S1310).
[0157]
[0158] In step S1310, a candidate block in the current picture is selected for a current block in the current picture that is coded using a first intra prediction mode different from the plurality of intra prediction modes. The candidate block is coded using an intra prediction mode different from the plurality of intra prediction modes, as described in FIG. 12 .
[0158]
[0159] In (S1320), when the candidate block is located within the predefined region as described in (S1230), a second intra-prediction mode can be derived for the candidate block from the plurality of intra-prediction modes. The second intra-prediction mode can be associated with the current block.
[0159]
[0160] In (S1330), as described in (S1240), at least one of (i) selecting a transform for the current block based on the second intra-prediction mode associated with the current block and reconstructing the current block according to the selected transform, or (ii) constructing an MPM list for another block using the derived second intra-prediction mode associated with the current block, may be performed.
[0160]
[0161] The process then proceeds to (S1399) and ends.
[0161]
[0162] Process 1300 may be adapted as desired. Steps of process 1300 may be modified and / or omitted. Additional steps may be added. Any suitable order of performance may be used.
[0162]
[0163] 14 is a flowchart outlining a process (1400) according to one embodiment of the present disclosure. The process (1400) may be used in a video decoder. In various embodiments, the process (1400) is performed by a processing circuit, such as a processing circuit performing the functions of the video decoder (110), a processing circuit performing the functions of the video decoder (210), or the like. In one embodiment, the process (1400) is implemented with software instructions, such that the processing circuit performs the process (1400) when it executes the software instructions. The process starts at (S1401) and proceeds to (S1410).
[0163]
[0164] At (S1410), coded information of a current block in a current picture is received. The current block may be coded in a first intra prediction mode, which is one of an intra block copy (IBC) mode and an intra template matching (IntraTMP) mode.
[0164]
[0165] In (S1420), a second intra prediction mode (e.g., CIPM) associated with the current block may be derived from a plurality of intra prediction modes (e.g., a second plurality of intra prediction modes) including DC mode, planar mode, and angular intra prediction mode. For example, at least one candidate block position (e.g., one or more of candidate block positions 0 to 5) may be checked in a predefined order as described above. The at least one candidate block position may be associated with a reference block (e.g., reference block (1003)) indicated by a BV (e.g., BV (1004)) associated with one of the IBC mode and the IntraTMP mode. The second intra prediction mode associated with the current block may be determined according to the intra prediction mode associated with one of the at least one candidate block positions, as described above (e.g., FIGS. 10-11).
[0165]
[0166] In one example, when the first candidate block position of the at least one candidate block position does not have an associated intra-prediction mode that is one of a plurality of intra-prediction modes, the first candidate block position of the at least one candidate block position is skipped. For example, referring to Figure 10, when the first candidate block position of the at least one candidate block position (e.g., candidate block position 4) is located outside a predefined region (e.g., CTU (1001)), the first candidate block position of the at least one candidate block position does not have an associated intra-prediction mode that is one of a plurality of intra-prediction modes.
[0166]
[0167] In one example, the predefined region includes one or more of: (i) a current coding tree unit (CTU) and (ii) at least one previously coded CTU.
[0167]
[0168] In one example, the predefined region is updated for blocks that are coded after the current block is coded.
[0168]
[0169] In one example, the area size of the predefined region is fixed.
[0169]
[0170] In one example, referring to FIG. 11, when the first candidate block position (e.g., candidate block position 4′) of at least one candidate block position is located outside a predefined region (e.g., CTU(1001)), the first candidate block position of the at least one candidate block position is replaced with a position within the predefined region (e.g., candidate block position 0′).
[0170]
[0171] In (S1430), as described in (S1240), at least one of (i) selecting a transform for the current block based on the second intra-prediction mode associated with the current block and reconstructing the current block according to the selected transform, or (ii) constructing an MPM list for another block using the derived second intra-prediction mode associated with the current block, may be performed.
[0171]
[0172] The transform that is the secondary transform is selected based on the derived second intra prediction mode, as described above with reference to Tables 1-2. The primary transform type is not selected based on the derived second intra prediction mode.
[0172]
[0173] In one example, the other block is a neighboring block of the current block.
[0173]
[0174] In one example, the other block is a block in another picture different from the current picture.
[0174]
[0175] Process 1400 may be adapted as desired. Steps of process 1400 may be modified and / or omitted. Additional steps may be added. Any suitable order of performance may be used.
[0175]
[0176] In one example, the derived second intra-prediction mode is stored in a buffer of the current picture. When the current picture is a reference picture of another picture, the second intra-prediction mode stored in the buffer of the current picture can be used to construct an MPM list of another block in the other picture.
[0176]
[0177] In one example, the derived second intra-prediction mode is stored in units of M×N, as described above, where M and N may be positive integers.
[0177]
[0178] 15 is a flowchart outlining a process (1500) according to one embodiment of the present disclosure. The process (1500) may be used in a video encoder. In various embodiments, the process (1500) 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 one embodiment, the process (1500) is implemented by software instructions, such that the processing circuit performs the process (1500) when it executes the software instructions. The process starts at (S1501) and proceeds to (S1510).
[0178]
[0179] In (S1510), for a current block coded in a first intra prediction mode that is one of an intra block copy (IBC) mode and an intra template matching (IntraTMP) mode, as described in (S1420), a second intra prediction mode associated with the current block may be derived from a plurality of intra prediction modes, including a DC mode, a planar mode, and an angular intra prediction mode. For example, at least one candidate block position is checked in a predefined order. The second intra prediction mode associated with the current block is determined according to the intra prediction mode associated with one of the at least one candidate block positions. The at least one candidate block position may be associated with a reference block indicated by a BV associated with one of the IBC mode and the IntraTMP mode.
[0179]
[0180] In (S1520), as described in (S1240), at least one of (i) selecting a transform for the current block based on the second intra-prediction mode associated with the current block and reconstructing the current block according to the selected transform, or (ii) constructing an MPM list for another block using the derived second intra-prediction mode associated with the current block, may be performed.
[0180]
[0181] The process then proceeds to (S1599) and ends.
[0181]
[0182] Process 1500 may be adapted as desired. Steps of process 1500 may be modified and / or omitted. Additional steps may be added. Any suitable order of performance may be used.
[0182]
[0183] The aspects and / or examples in this disclosure may be used separately or in combination in any order. 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.
[0183]
[0184] 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 16 illustrates a computer system (1600) suitable for implementing certain aspects of the disclosed subject matter.
[0184]
[0185] Computer software may be coded using any suitable machine code or computer language that may be subject to assembly, compilation, linking, or similar mechanisms to produce code containing instructions that may be executed directly by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., or that may be executed through interpretation, microcode execution, etc.
[0185]
[0186] 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.
[0186]
[0187] 16 for computer system (1600) 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 relating to any one or combination of components shown in the exemplary embodiment of computer system (1600).
[0187]
[0188] The computer system (1600) 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), or olfactory input (not shown). Human interface devices may also be used to capture certain media that do not necessarily involve direct 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).
[0188]
[0189] The input human interface devices may include one or more (only one of each is shown) of a keyboard (1601), a mouse (1602), a trackpad (1603), a touchscreen (1610), a data glove 1204 (not shown), a joystick (1605), a microphone (1606), a scanner (1607), and a camera (1608).
[0189]
[0190] The computer system (1600) 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 (1610), data gloves (not shown), or joystick (1605), although haptic feedback devices that do not function as input devices may also be present), audio output devices (such as speakers (1609), headphones (not shown)), visual output devices (such as screens (1610), 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 three-dimensional or higher-dimensional output through means such as stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0190]
[0191] The computer system (1600) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (1620) with CD / DVD or similar media (1621), thumb drives (1622), removable hard drives or solid state drives (1623), legacy magnetic media (not shown) such as tape and floppy disks, and specialized ROM / ASIC / PLD-based devices (not shown) such as security dongles.
[0191]
[0192] Additionally, those skilled in the art will understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.
[0192]
[0193] The computer system (1600) may also include an interface (1654) to one or more communication networks (1655). The network may be, for example, a wireless network, a wired network, or an optical network. The network may further be a local network, a wide area network, a metropolitan network, a vehicular and industrial network, a real-time network, a delay-tolerant network, etc. Examples of networks include local area networks such as Ethernet and wireless LAN; cellular networks including GSM, 3G, 4G, 5G, LTE, etc.; wired or wireless wide area digital TV networks including cable TV, satellite TV, and terrestrial broadcast TV; and vehicular and industrial networks including CAN Bus. Certain networks typically require an external network interface adapter attached to a particular general-purpose data port or peripheral bus (1649) (e.g., a USB port on the computer system (1600)), while other networks are typically integrated into the core of the computer system (1600) by attaching 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 (1600) 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., CANbus to a specific CANbus device), or two-way with other computer systems using local or wide-area digital networks. For each of these networks and network interfaces described above, specific protocols and protocol stacks may be used.
[0193]
[0194] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be attached to the core (1640) of the computer system (1600).
[0194]
[0195] The core (1640) may include one or more central processing units (CPUs) (1641), graphics processing units (GPUs) (1642), specialized programmable processing units (1643) in the form of field programmable gate areas (FPGAs) (1643), hardware accelerators for specific tasks (1644), graphics adapters (1650), etc. These devices may be connected through a system bus (1648), along with read-only memory (ROM) (1645), random access memory (RAM) (1646), and internal mass storage (1647) such as an internal hard drive or SSD that is not user accessible. In some computer systems, the system bus (1648) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus (1648) or through a peripheral bus (1649). In one example, a screen 1610 can be connected to a graphics adapter 1650. Architectures for peripheral buses include PCI, USB, etc.
[0195]
[0196] The CPU (1641), GPU (1642), FPGA (1643), and accelerator (1644) can execute specific instructions that, in combination, may constitute the aforementioned computer code. That computer code may be stored in ROM (1645) or RAM (1646). Persistent data may be stored, for example, in internal mass storage (1647), while transient data may also be stored in RAM (1646). Rapid storage and retrieval from any of the memory devices may be enabled through the use of cache memory, which may be closely associated with one or more of the CPU (1641), GPU (1642), mass storage (1647), ROM (1645), RAM (1646), etc.
[0196]
[0197] The computer-readable medium may have computer code thereon 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.
[0197]
[0198] By way of example and not limitation, a computer system (1600) having the architecture, and in particular the core (1640), 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 the user-accessible mass storage introduced above, as well as media associated with specific storage of the core (1640) that is non-transitory in nature, such as the core's internal mass storage (1647) or ROM (1645). Software implementing various aspects of the present disclosure can be stored in such devices and executed by the core (1640). The computer-readable media can include one or more memory devices or chips, depending on particular needs. The software can cause the core (1640), and in particular the processor (including a CPU, GPU, FPGA, etc.) therein, to perform particular processes or particular portions of particular processes described herein, including defining data structures stored in RAM (1646) 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 being hardwired or otherwise embodied in circuitry (e.g., accelerator (1644)) that can operate in place of or together 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 circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, where appropriate. The present disclosure encompasses any suitable combination of hardware and software.
[0198]
[0199] The use of "at least one of" or "one of" in this disclosure is intended to include any one of the listed elements or combinations thereof. 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, when applicable, such as when the elements are not mutually exclusive.
[0199]
[0200] 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 many systems and methods that, while not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure.
Claims
1. 1. A method of video decoding, comprising: receiving coded information of a current block in a current picture, the current block being coded in a first intra-prediction mode different from a plurality of intra-prediction modes including a DC mode, a planar mode, and an angular intra-prediction mode; selecting a candidate block in the current picture coded by an intra-prediction mode different from the plurality of intra-prediction modes; deriving a second intra-prediction mode from the plurality of intra-prediction modes for the candidate block in response to the candidate block being located within a predefined region, the second intra-prediction mode being associated with the current block; performing at least one of: (i) selecting a transform for the current block based on the second intra-prediction mode associated with the current block, and reconstructing the current block according to the selected transform; or (ii) constructing a most probable mode (MPM) list for another block using the derived second intra-prediction mode associated with the current block; A method comprising:
2. The method of claim 1 , wherein the predefined region includes one or more of: (i) a current coding tree unit (CTU) and (ii) at least one previously coded CTU.
3. The method of claim 1 , wherein the predefined region is updated for blocks that are coded after the current block is coded.
4. The method of claim 1 , wherein the area of the predefined region is fixed in size.
5. storing the derived second intra-prediction mode in a buffer for the current picture; 2. The method of claim 1, wherein the performing step comprises, in response to the current picture being a reference picture of another picture, constructing the MPM list for the another block in the another picture using the stored second intra prediction mode.
6. The method of claim 1 , wherein the other block is a neighboring block of the current block.
7. The method of claim 1 , further comprising: storing the derived second intra-prediction mode in units of M×N, where M and N are positive integers.
8. The performing step comprises:
2. The method of claim 1, comprising selecting the transform to be a secondary transform, wherein a primary transform type is not selected based on the derived second intra-prediction mode.
9. 2. The method of claim 1, wherein the first intra-prediction mode is one of an intra-block copy (IBC) mode, an intra-template matching (IntraTMP) mode, a matrix-based intra-prediction (MIP) mode, and a palette mode.
10. 1. A method of video decoding, comprising: receiving coded information of a current block in a current picture, the current block being coded in a first intra prediction mode, the first intra prediction mode being one of an intra block copy (IBC) mode and an intra template matching (IntraTMP) mode; checking at least one candidate block location in a predefined order, wherein the at least one candidate block location is associated with a reference block indicated by a block vector (BV) associated with one of the IBC mode and the IntraTMP mode; determining the second intra-prediction mode associated with the current block according to an intra-prediction mode associated with one of the at least one candidate block positions; By doing deriving the second intra-prediction mode associated with the current block from a plurality of intra-prediction modes, including a DC mode, a planar mode, and an angular intra-prediction mode; performing at least one of (i) selecting a transform for the current block based on the second intra-prediction mode associated with the current block and reconstructing the current block according to the selected transform, or (ii) constructing a most probable mode (MPM) list for another block using the derived second intra-prediction mode; A method comprising:
11. The checking step 11. The method of claim 10, comprising: skipping a first candidate block position of the at least one candidate block position in response to the first candidate block position not having an associated intra-prediction mode that is one of the plurality of intra-prediction modes.
12. 12. The method of claim 11, wherein, in response to the first of the at least one candidate block positions being located outside a predefined region, the first of the at least one candidate block positions does not have the associated intra-prediction mode being one of the plurality of intra-prediction modes.
13. 13. The method of claim 12, wherein the predefined region includes one or more of: (i) a current coding tree unit (CTU) and (ii) at least one previously coded CTU.
14. The method of claim 12 , wherein the predefined region is updated for blocks that are coded after the current block is coded.
15. The checking step 11. The method of claim 10, comprising, in response to a first of the at least one candidate block location being located outside a predefined region, replacing the first of the at least one candidate block location with a location within the predefined region.
16. 16. The method of claim 15, wherein the predefined region includes one or more of: (i) a current coding tree unit (CTU) and (ii) at least one previously coded CTU.
17. The method of claim 15 , wherein the predefined region is updated for another block that is coded after the current block is coded.
18. storing the derived second intra-prediction mode in a buffer for the current picture; 11. The method of claim 10, wherein the performing step comprises, in response to the current picture being a reference picture of another picture, building the MPM list for the another block in the other picture using the stored second intra prediction mode.
19. The method of claim 10 , further comprising storing the derived second intra-prediction mode in units of M×N, where M and N are positive integers.
20. The performing step comprises:
11. The method of claim 10, comprising selecting the transform to be a secondary transform, wherein a primary transform type is not selected based on the derived second intra-prediction mode.
Citation Information
Patent Citations
Video processing method, device, storage medium, and recording medium
JP2022527362A
Encoder, decoder, and corresponding method for reconciling matrix-based intra prediction and quadratic transform core selection
JP2022529030A
Image encoding / decoding method and device for performing MIP and LFNST, and bitstream transmission method
JP2022532114A
Method and apparatus for intra-predictive coding of video data - Patents.com
JP2022539737A
Palette mode encoding in prediction processing
JP2022543009A