Method, apparatus, and computer program for decoding using an integrated location-dependent predictive combination process.
The PDPC process in video encoding and decoding addresses redundancy challenges by optimizing intra-prediction directions and applying position-dependent checks, resulting in enhanced compression efficiency and reduced bandwidth/storage requirements.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2025-01-16
- Publication Date
- 2026-03-19
AI Technical Summary
Existing video encoding and decoding technologies face challenges in efficiently reducing redundancy and improving compression efficiency, particularly in intra-prediction and motion compensation, leading to high bandwidth and storage requirements.
Implementing a position-dependent prediction combination (PDPC) process for video encoding and decoding, which includes determining intra-prediction directions and applying a PDPC process based on the intra-prediction direction of current blocks, with early termination and fractional position checks, to enhance compression efficiency.
The PDPC process significantly reduces the bit requirements for video encoding and decoding, improving compression efficiency and reducing bandwidth and storage needs while maintaining video quality.
Smart Images

Figure 0007833573000070 
Figure 0007833573000071 
Figure 0007833573000072
Abstract
Description
[Technical Field]
[0001] Built-in by reference This application claims the benefit of U.S. Patent Application No. 15 / 931,225, “Integrated Location-Dependent Predictive Combination Process,” filed on 13 May 2020. This application claims the benefit of priority of U.S. Provisional Application No. 62 / 859,920, “Integrated Location-Dependent Predictive Combination Process,” filed on 11 June 2019, and U.S. Provisional Application No. 62 / 869,015, “Further Integration to Location-Dependent Predictive Combination Process,” filed on 30 June 2019. The entire disclosures of these prior applications are incorporated herein by reference in their entirety.
[0002] Technical field This disclosure describes embodiments generally related to video coding. [Background technology]
[0003] The background information provided herein is intended to provide an overview of the context of this disclosure. The work of the inventors named in this application, to the extent described in this background section, and aspects of this description that may otherwise not qualify as prior art at the time of filing, are not considered prior art to this disclosure, either expressly or implicitly.
[0004] Video encoding and decoding can be performed using picture-to-picture prediction with motion compensation. Uncompressed digital video can contain a series of pictures, each picture having spatial dimensions of, for example, 1920×1080 luminance samples and associated chrominance samples. The series of pictures can have a fixed or variable picture rate (also informally known as frame rate), for example, 60 pictures per second or 60Hz. Uncompressed video has considerable bitrate requirements. For example, 1080p60 4:2:0 video with 8 bits per sample (1920×1080 luminance sample resolution at a frame rate of 60Hz) requires a bandwidth of nearly 1.5 Gbit / s. One hour of such video requires more than 600 GB of storage space.
[0005] One purpose of video encoding and decoding can be to reduce the redundancy of the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage space requirements by more than two orders of magnitude, in some cases. Both lossless and lossy compression, as well as combinations thereof, can be used. Lossless compression is a technique in which an exact copy of the original signal can be reconstructed from the compressed original signal. When using lossy compression, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signals is small enough to make the reconstructed signal useful for its intended purpose. In the case of video, lossy compression is widely used. The amount of distortion that is acceptable depends on the application; for example, users of certain consumer streaming applications may tolerate higher distortion than users of television distribution applications. The achievable compression ratio can reflect the fact that higher acceptable / acceptable distortion can result in a higher compression ratio.
[0006] Video encoders and decoders can utilize techniques from several broad categories, including, for example, motion compensation, transformation, quantization, and entropy coding.
[0007] Video codec technology can include a technique known as intra coding. In intra coding, sample values are represented without referencing samples or other data from a previously reconstructed reference picture. In some video codecs, the picture is spatially divided into blocks of samples. If all blocks of samples are coded in intra mode, the picture can be an intra picture. Intra pictures, and their derivatives such as independent decoder refresh pictures, can be used to reset the decoder state and thus can be used as the first picture in an encoded video bitstream and video session, or as a still image. Samples in an intra block can be subjected to a transformation, and the transformation coefficients can be quantized before entropy coding. Intra prediction can be a technique that minimizes the sample values in the pre-transformation region. In some cases, a smaller DC value and smaller AC coefficients after transformation result in fewer bits being required at a given quantization step size to represent the block after entropy coding.
[0008] Traditional intra-encoding, such as that known from the MPEG-2 generation of encoding techniques, does not use intra-prediction. However, some newer video compression techniques include those that attempt to use, for example, surrounding sample data and / or metadata obtained during the encoding / decoding of spatially neighboring and preceding blocks of data in the decoding order. Such techniques will be referred to below as “intra-prediction” techniques. Note that in at least some cases, intra-prediction uses only reference data from the current picture being reconstructed, and not reference data from the reference picture.
[0009] Various forms of intra-prediction are possible. In a given video coding technique, if two or more such techniques are available, the techniques used can be coded in intra-prediction mode. In certain cases, a mode may have submodes and / or parameters, which can be coded individually or included in the mode codeword. The choice of codeword for a given mode / submode / parameter combination can affect the coding efficiency gain through intra-prediction, and the entropy coding technique used to convert the codeword into a bitstream can similarly affect it.
[0010] A mode of intra-prediction was introduced in H.264, refined in H.265, and further refined in newer coding techniques such as Joint Exploration Models (JEM), Versatile Video Coding (VVC), and Benchmark Sets (BMS). A predictor block can be formed using neighboring sample values belonging to already available samples. The sample values of neighboring samples are copied to the predictor block according to a certain direction. The reference to the direction used can be encoded in the bitstream or may be predicted itself.
[0011] Referring to Figure 1A, the lower right shows a subset of nine predictor directions known from the 33 possible predictor directions of H.265 (corresponding to 33 of the 35 intra-modes, or angular modes). The point where the arrows converge (101) represents the predicted sample. The arrows represent the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from the upper right sample(s) at an angle of 45 degrees from the horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from the lower left sample(s) of sample (101) at an angle of 22.5 degrees from the horizontal.
[0012] Continuing to refer to Figure 1A, a 4x4 sample square block (104) is depicted in the upper left (indicated by a thick dashed line). The square block (104) contains 16 samples, each labeled with "S" and its position in the Y dimension (e.g., row index) and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample (from the top) in the Y dimension and the first sample (from the left) in the X dimension. Similarly, sample S44 is the fourth sample in block (104) in both the Y and X dimensions. Since the block is 4x4 sample size, S44 is in the lower right. Furthermore, a reference sample is shown that follows a similar numbering scheme. The reference sample is labeled with R and its Y position (e.g., row index) and X position (column index) relative to block (104). In both H.264 and H.265, the predicted sample is a neighborhood of the block being reconstructed, and therefore there is no need to use negative values.
[0013] In-picture prediction can function by copying a reference sample value from a neighboring sample that is assigned by the predicted direction in which the signal is transmitted. For example, suppose the encoded video bitstream includes a signal transmission for this block indicating the predicted direction, which is aligned with arrow (102). That is, the sample is predicted from the upper right predicted sample(s) at an angle of 45 degrees from the horizontal. In that case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Then, sample S44 is predicted from reference sample R08.
[0014] In certain cases, especially when the direction is not divisible by 45 degrees, the values of multiple reference samples can be combined, for example, by interpolation, to calculate a reference sample.
[0015] With the advancement of video coding technology, the number of possible directions has increased. H.264 (2003) could represent nine different directions. This increased to 33 in H.265 (2013), and as of the time of this disclosure, JEM / VVC / BMS can support up to 65 directions. Experiments have been conducted to identify the most likely directions, and certain techniques in entropy coding are used to represent those more likely directions with a small number of bits, while accepting some penalty for less likely directions. Furthermore, the direction itself can sometimes be predicted from the neighboring directions used in neighboring, already decoded blocks.
[0016] Figure 1B shows a schematic diagram (105) illustrating 65 intra-prediction directions by JEM to show the number of prediction directions increasing over time.
[0017] The mapping of intra-predicted direction bits in an encoded video bitstream representing direction can vary from video coding technique to video coding technique, ranging from simple direct mapping of predicted direction to intra-predicted mode to complex adaptive schemes involving codewords, most probable modes, and similar techniques. However, in any case, there may be certain directions in video content that are statistically less likely than other directions. Since the goal of video compression is to reduce redundancy, in a well-functioning video coding technique, such less likely directions are represented by more bits than the more likely directions.
[0018] Motion compensation may be an irreversible compression technique and may be used to predict a newly reconstructed picture or part of a picture after blocks of sample data from a previously reconstructed picture or part of it (reference picture) have been spatially shifted in the direction indicated by a motion vector (MV). In some cases, the reference picture may be the same as the picture currently being reconstructed. The MV may have two or three dimensions, X and Y, where the third dimension is an indication of the reference picture used (which may indirectly be the time dimension).
[0019] In some video compression techniques, a motion vector (MV) applicable to a region of sample data can be predicted from other MVs, for example, from an MV related to another region of sample data that is spatially adjacent to the region being reconstructed and precedes that MV in the decoding order. This significantly reduces the amount of data required to encode the MV, thereby eliminating redundancy and increasing compression. MV prediction can work effectively because, for example, when encoding an input video signal derived from a camera (known as natural video), there is statistical certainty that regions larger than the region to which a single MV is applicable move in a similar direction, and therefore, in certain cases, can be predicted using similar motion vectors derived from neighboring MVs. As a result, the MV found for a given region will be similar to or identical to the MV predicted from the surrounding MVs, and it can be represented with fewer bits than would be used if the MV were encoded directly after entropy coding. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., MV) derived from the original signal (i.e., sample stream). In other cases, the MV prediction itself may be irreversible, for example, due to rounding errors when calculating the predictor from some surrounding MVs.
[0020] H.265 / HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016) describes various MV prediction mechanisms. Among the many MV prediction mechanisms provided by H.265, a technique hereinafter referred to as "spatial merge" is described in this specification.
[0021] Referring to FIG. 1C, the current block (101) can include samples found by the encoder during the motion search process that it is predictable from a previous block of the same size that has been spatially shifted. Instead of directly encoding the MV, the MV can be derived from metadata associated with one or more reference pictures, for example, from the latest reference picture (in decode order), using an MV associated with any of five surrounding samples denoted as A0, A1, and B0, B1, B2 (112 to 116 respectively). In H.265, MV prediction can use predictors from the same reference picture that neighboring blocks are using. SUMMARY OF THE INVENTION MEANS FOR SOLVING THE PROBLEM
[0022] Aspects of the present disclosure provide methods and apparatuses for video encoding / decoding. In some examples, a video decoding device includes a processing circuit.
[0023] According to aspects of the present disclosure, a method for video decoding in a decoder is provided. In this method, a processing circuit decodes prediction information for a current block within a current picture that is part of an encoded video sequence. The prediction information indicates an intra prediction direction for the current block that is one of (i) a diagonal intra prediction direction or (ii) a neighboring intra prediction direction adjacent to the diagonal intra prediction direction. The processing circuit determines a usage method of a position dependent prediction combination (PDPC) process according to the intra prediction direction of the current block. The same PDPC process is applied to both the diagonal intra prediction direction and the neighboring intra prediction direction. The processing circuit reconstructs the current block based on the use of the PDPC process in the current block.
[0024] According to aspects of the present disclosure, the diagonal intra prediction direction is one of a lower left intra prediction direction and an upper right intra prediction direction. In some embodiments, when the diagonal intra prediction direction is the lower left intra prediction direction, the mode index of the neighboring intra prediction direction is lower than the mode index of the horizontal intra prediction direction. In some embodiments, when the diagonal intra prediction direction is the upper right intra prediction direction, the mode index of the neighboring intra prediction direction is higher than the mode index of the vertical intra prediction direction.
[0025] According to aspects of the present disclosure, when the intra prediction direction is a neighboring intra prediction direction, the processing circuit determines whether the intra prediction direction points to a fractional position. In response to determining that the intra prediction points to a fractional position, the processing circuit determines an early termination of the PDPC process.
[0026] According to aspects of this disclosure, when a current sample in a current block is filtered by a PDPC process, the processing circuit determines whether the reference sample of the current sample is located within a predetermined range by row-by-row or column-by-column checks. In one embodiment, the column-by-column check depends on at least one of (i) the total number of available reference samples located to the left of the current block, (ii) the block height of the current block, and (iii) the horizontal coordinate value of the current sample. In one embodiment, the row-by-row check depends on at least one of (i) the total number of available reference samples located above the current block, (ii) the block width of the current block, and (iii) the vertical coordinate value of the current sample.
[0027] According to aspects of this disclosure, the angle of the intra-prediction direction is equal to or greater than a preset value. In one embodiment, if the intra-prediction direction is closer to the vertical intra-prediction direction than to the horizontal intra-prediction direction, the processing circuit performs a PDPC process on a first number of rows of samples in the current block, the first number being determined according to the preset value and the block size of the current block. In another embodiment, if the intra-prediction direction is closer to the horizontal intra-prediction direction than to the vertical intra-prediction direction, the processing circuit performs a PDPC process on a second number of rows of samples in the current block, the second number being determined according to the preset value and the block size of the current block.
[0028] Aspects of this disclosure also provide non-temporary computer-readable media that, when executed by a computer for video decoding, store instructions causing a computer to perform one or more of the above-described methods for video decoding. [Brief explanation of the drawing]
[0029] Further features, properties, and various advantages of the disclosed subject matter will become clearer from the detailed description and accompanying drawings below.
[0030] [Figure 1A] This is a schematic diagram of an exemplary subset of intra-predictive modes.
[0031] [Figure 1B] This is an illustrative diagram of an example of an intra-prediction direction.
[0032] [Figure 1C] This is a schematic diagram of the current block and its surrounding spatial merge candidates in one example.
[0033] [Figure 2] This is a schematic diagram of a simplified block diagram of a communication system according to one embodiment.
[0034] [Figure 3] This is a schematic diagram of a simplified block diagram of a communication system according to one embodiment.
[0035] [Figure 4] This is a schematic diagram of a simplified block diagram of a decoder according to one embodiment.
[0036] [Figure 5] This is a schematic diagram of a simplified block diagram of an encoder according to one embodiment.
[0037] [Figure 6] A block diagram of an encoder according to another embodiment is shown.
[0038] [Figure 7] A block diagram of a decoder according to another embodiment is shown.
[0039] [Figure 8A] The diagrams below illustrate exemplary intra-prediction directions and corresponding intra-prediction modes in several examples (e.g., VVC).
[0040] [Figure 8B]A table showing the angle intra-prediction modes and their corresponding predicted angles in several examples (e.g., VVC) is provided.
[0041] [Figure 9A] An exemplary weighting factor for a predicted sample at (0,0) in DC mode, according to one embodiment, is shown.
[0042] [Figure 9B] An exemplary weighting factor for a predicted sample at (1,0) in DC mode, according to one embodiment, is shown.
[0043] [Figure 10] A flowchart outlining an exemplary process according to one embodiment of this disclosure is shown.
[0044] [Figure 11] This is a schematic diagram of a computer system according to one embodiment. [Modes for carrying out the invention]
[0045] Video encoders and decoders
[0046] Figure 2 shows a simplified block diagram of a communication system (200) according to one embodiment of the present disclosure. The communication system (200) includes a plurality of terminal devices that can communicate with each other, for example, over a network (250). For example, the communication system (200) includes a first pair of terminal devices (210) and (220) interconnected over the network (250). In the example of Figure 2, the first pair of terminal devices (210) and (220) perform one-way transmission of data. For example, terminal device (210) may encode video data (for example, a stream of video pictures captured by terminal device (210)) for transmission to the other terminal device (220) over the network (250). The encoded video data can be transmitted in the form of one or more encoded video bitstreams. The terminal device (220) may receive encoded video data from the network (250), decode the encoded video data to restore the video picture, and display the video picture according to the restored video data. One-way data transmission can be common in media service applications and the like.
[0047] In another example, the communication system (200) includes a second pair of terminal devices (230) and (240) that perform bidirectional transmission of encoded video data, for example, during a video conference. For bidirectional transmission of data, in one example, each terminal device of terminal devices (230) and (240) may encode video data (for example, a stream of video pictures captured by the terminal device) for transmission over the network (250) to the other terminal device of terminal devices (230) and (240). Each terminal device of terminal devices (230) and (240) may receive encoded video data transmitted by the other terminal device of terminal devices (230) and (240), decode the encoded video data to restore the video pictures, and display the video pictures on an accessible display device according to the restored video data.
[0048] In the example in Figure 2, terminal devices (210), (220), (230), and (240) may be represented as servers, personal computers, and smartphones, respectively, but the principles of this disclosure are not limited thereto. Embodiments of this disclosure find applications in laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network (250) represents any number of networks that transmit encoded video data between terminal devices (210), (220), (230), and (240), including, for example, wired and / or wireless communication networks. Communication network (250) may exchange data over circuit-switched and / or packet-switched channels. Typical networks include telecommunication networks, local area networks, wide area networks, and / or the Internet. For the purposes of the present discussion, the architecture and topology of network (250) may not be important to the operation of this disclosure unless described below.
[0049] Figure 3 shows the arrangement of a video encoder and video decoder in a streaming environment as an example of an application for the disclosed subject matter. The disclosed subject matter may be equally applicable to other video-enabled applications, such as video conferencing, digital TV, and storage of compressed video on digital media including CDs, DVDs, and Memory Sticks.
[0050] The streaming system may include a video source (301), such as a digital camera, and may include a capture subsystem (313) that generates, for example, a stream (302) of uncompressed video pictures. In one example, the stream (302) includes samples captured by the digital camera. The stream (302), which is drawn as a thick line to emphasize its high data volume compared to encoded video data (304) (or encoded video bitstream), may be processed by an electronic device (320) including a video encoder (303) coupled to the video source (301). The video encoder (303) may include hardware, software, or a combination thereof to enable or realize aspects of the subject disclosed below. The encoded video data (304) (or encoded video bitstream (304)), which is drawn as a thin line to highlight its lower data volume compared to the video picture stream (302), can be stored in the streaming server (305) for future use. One or more streaming client subsystems, such as client subsystems (306) and (308) in Figure 3, can access the streaming server (305) to retrieve copies (307) and (309) of the encoded video data (304). The client subsystem (306) may include a video decoder (310) within an electronic device (330), for example. The video decoder (310) decodes the incoming copy (307) of the encoded video data and generates an outgoing stream (311) of the video picture that can be rendered on a display (312) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, encoded video data (304), (307), and (309) (for example, a video bitstream) can be encoded according to certain video encoding / compression standards.Examples of these standards include ITU-T Recommendation H.265. For example, a video coding standard under development is informally known as Multipurpose Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.
[0051] It should be noted that the electronic devices (320) and (330) may include other components (not shown). For example, electronic device (320) may include a video decoder (not shown), and electronic device (330) may also include a video encoder (not shown).
[0052] Figure 4 shows a block diagram of a video decoder (410) according to one embodiment of the present disclosure. The video decoder (410) may be included in an electronic device (430). The electronic device (430) may include a receiver (431) (e.g., a receiving circuit). The video decoder (410) can be used in place of the video decoder (310) in the example of Figure 3.
[0053] The receiver (431) may receive one or more encoded video sequences to be decoded by the video decoder (410); in the same or another embodiment, one encoded video sequence at a time, and the decoding of each encoded video sequence is independent of other encoded video sequences. The encoded video sequences may be received from a channel (401), which may be a hardware / software link to a storage device that stores encoded video data. The receiver (431) may receive the encoded video data together with other data, such as encoded audio data and / or auxiliary data streams, which may be transmitted in their respective usage entities (not shown). The receiver (431) can isolate the encoded video sequences from other data. As a measure against network jitter, a buffer memory (415) may be coupled between the receiver (431) and the entropy decoder / parser (420) (hereinafter "Parser"). In certain applications, the buffer memory (415) is part of the video decoder (410). In other applications, buffer memory (not shown) may be located outside the video decoder (410). In yet other applications, for example to counter network jitter, buffer memory (not shown) may be located outside the video decoder (410), and further, for example to handle playback timing, another buffer memory (415) may be located inside the video decoder (410). If the receiver (431) receives data from a storage / transfer device with sufficient bandwidth and controllability, or from an isochronous network, buffer memory (415) may not be required or may be small. For use in best-effort packet networks such as the Internet, buffer memory (415) may be required, may be relatively large, may be advantageously adaptive in size, and may be implemented at least partially outside the video decoder (410) in the operating system or similar element (not shown).
[0054] The video decoder (410) may include a parser (420) for reconstructing symbols (421) from the encoded video sequence. These categories of symbols may include information used to manage the operation of the video decoder (410) and potentially information for controlling rendering devices such as a renderer (412) (e.g., a display screen). The renderer may be coupled to an electronic device (430), rather than being an integral part of the electronic device (430), as shown in Figure 4. Control information for the rendering device(s) may be in the form of Supplementary Enhancement Information (SEI messages) or Video Usability Information (VUI) parameter set fragments (not shown). The parser (420) can parse / entropy decode the received encoded video sequence. The encoding of the encoded video sequence may follow video coding techniques or standards and may follow a variety of principles, including variable-length coding, Huffman coding, context-sensitive or non-context-sensitive arithmetic coding, etc. The parser (420) can extract from the encoded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder, based on at least one parameter corresponding to the group. Subgroups can include picture groups (GOP), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transform units (TU), prediction units (PU), and the like. The parser (420) can also extract information such as transformation coefficients, quantizer parameter values, and motion vectors from the encoded video sequence.
[0055] The parser (420) can perform an entropy decoding / parse operation on the video sequence received from the buffer memory (415), thereby generating a symbol (421).
[0056] The reconstruction of the symbol (421) can involve multiple different units, depending on the type of the encoded video picture or its parts (e.g., inter- and intra-picture, inter- and intra-block) and other factors. Which units are involved and how can be controlled by subgroup control information parsed from the encoded video sequence by the parser (420). The flow of such subgroup control information between the parser (420) and the multiple units described below is not depicted for clarity.
[0057] In addition to the functional blocks already described, the video decoder (410) can be conceptually divided into several functional units, as described below. In a practical implementation operating under commercial constraints, many of these units can interact closely with each other and be at least partially integrated. However, for the purpose of describing the subject matter being disclosed, the conceptual subdivision into functional units described below is appropriate.
[0058] The first unit is the scaler / inverse unit (451). The scaler / inverse unit (451) receives quantized transformation coefficients and control information from the parser (420) as symbols (singular or plural) (421). The control information includes which transformation to use, block size, quantization factor, quantization scaling matrix, etc. The scaler / inverse unit (451) can output a block containing sample values that can be input to the aggregater (455).
[0059] In some cases, the output samples of the scaler / inverse transform (451) may relate to intra-encoded blocks, i.e., blocks that do not use predictive information from previously reconstructed pictures but can use predictive information from previously reconstructed portions of the current picture. Such predictive information may be provided by an intra-picture predictive unit (452). In some cases, the intra-picture predictive unit (452) generates blocks of the same size and shape as the block being reconstructed, using surrounding already reconstructed information taken from the current picture buffer (458). The current picture buffer (458) buffers, for example, partially reconstructed current pictures and / or fully reconstructed current pictures. The tallyer (455) may, in some cases, add the predictive information generated by the intra-predictive unit (452) to the output sample information provided by the scaler / inverse transform unit (451) for each sample.
[0060] In other cases, the output samples of the scaler / inverse unit (451) may relate to intercoded and potentially motion-compensated blocks. In such cases, the motion-compensated prediction unit (453) may access the reference picture memory (457) to retrieve samples to be used for prediction. After motion-compensating the retrieved samples according to symbols (421) relating to the blocks, these samples can be added by the aggregater (455) to the output of the scaler / inverse unit (in this case, called residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (457) from which the motion-compensated unit (453) retrieves prediction samples can be controlled by motion vectors available to the motion-compensated unit (453) in the form of symbols (421). These symbols may have, for example, X, Y, and reference picture components. Motion compensation may include interpolation of sample values retrieved from the reference picture memory (457) when accurate motion vectors less than or equal to a sample are used, motion vector prediction mechanisms, etc.
[0061] The output samples from the tallyer (455) can be subjected to various loop filtering techniques within the loop filter unit (456). Video compression techniques may include in-loop filtering techniques. In-loop filtering techniques are controlled by parameters contained in the encoded video sequence (also called the encoded video bitstream) and made available to the loop filter unit (456) as symbols (421) from the parser (420), but can also respond to metadata obtained during decoding of the encoded picture or earlier portion (in decoding order) of the encoded video sequence, as well as to previously reconstructed and loop-filtered sample values.
[0062] The output of the loop filter unit (456) can be a sample stream, which can be output to the renderer (412) and can also be stored in the reference picture memory (457) for use in future interpicture predictions.
[0063] Once an encoded image is fully reconstructed, it can be used as a reference picture for future predictions. For example, once an encoded picture corresponding to the current picture is fully reconstructed and that encoded picture is identified as a reference picture (e.g., by the parser (420)), the current picture buffer (458) can become part of the reference picture memory (457), and a fresh current picture buffer can be reallocated before starting the reconstruction of subsequent encoded pictures.
[0064] A video decoder (410) can perform decoding operations according to a given video compression technique in a standard such as ITU-T Recommendation H.265. The encoded video sequence can conform to the syntax defined by the video compression technique or standard used, in the sense that the encoded video sequence conforms to the syntax and profile documented in the video compression technique or standard. Specifically, a profile can select certain tools from all the tools available in the video compression technique or standard, as tools that are only available for use under that profile. Conformance may also require that the complexity of the encoded video sequence be within the range defined by the level of the video compression technique or standard. In some cases, the level constrains 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 the Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management, which are signaled in the encoded video sequence.
[0065] In one embodiment, the receiver (431) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence(single or multiple). The additional data may be used by the video decoder (410) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may take the form of, for example, a temporal, spatial, or signal-to-noise ratio (SNR) enhancement layer, redundant slices, redundant pictures, forward error correction codes, etc.
[0066] Figure 5 shows a block diagram of a video encoder (503) according to one embodiment of the present disclosure. The video encoder (503) is included in an electronic device (520). The electronic device (520) includes a transmitter (540) (e.g., a transmitting circuit). The video encoder (503) can be used in place of the video encoder (303) in the example of Figure 3.
[0067] The video encoder (503) can receive video samples from a video source (501) (which is not part of the electronic device (520) in the example in Figure 5) that can capture video images to be encoded by the video encoder (503). In another example, the video source (501) is part of the electronic device (520).
[0068] The video source (501) can provide a source video sequence to be encoded by the video encoder (503) in the form of a digital video sample stream, which can be any preferred bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 YCrCB, RGB, ...), and any preferred sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media service system, the video source (501) may be a storage device that stores pre-prepared video. In a video conferencing system, the video source (501) may be a camera that captures local image information as a video sequence. The video data may be provided as a plurality of individual pictures that give motion when viewed in sequence. The picture itself may be organized as a spatial array of pixels, each pixel may contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art will readily understand the relationship between pixels and samples. The following description will focus on samples.
[0069] According to one embodiment, the video encoder (503) can encode and compress the pictures of a source video sequence in real time or under any other temporal constraints required by the application to obtain an encoded video sequence (543). Enforcing an appropriate encoding rate is one function of the controller (550). In some embodiments, the controller (550) controls and is functionally coupled to other functional units, such as those described below. Such couplings are not depicted for clarity. Parameters set by the controller (550) may include parameters related to rate control (picture skip, quantizer, lambda value of rate-distortion optimization technique, ...), picture size, picture group (GOP) layout, maximum motion vector tolerance reference area, etc. The controller (550) may be configured to have other preferred functions of the video encoder (503) optimized for certain system designs.
[0070] In some embodiments, the video encoder (503) is configured to operate in an encoding loop. In a drastically simplified explanation, in one example, the encoding loop may include a source encoder (530) (for example, responsible for generating symbols such as a symbol stream based on an input picture and a reference picture (arithmetic or plural) to be encoded) and a (local) decoder (533) embedded in the video encoder (503). The decoder (533) reconstructs the symbols to generate sample data in a similar manner to that a (remote) decoder would also generate (in the video compression techniques considered in the disclosed subject, any compression between the symbols and the encoded video bitstream is lossless). The reconstructed sample stream (sample data) is input to a reference picture memory (534). Since decoding the symbol stream yields bit-accurate results regardless of the decoder location (local or remote), the contents of the reference picture memory (534) are also bit-accurate between the local encoder and the remote encoder. In other words, the encoder's prediction unit "sees" the exact same sample values as the reference picture samples that the decoder "sees" when using the prediction during decoding. This fundamental principle of reference picture synchronization (and the resulting drift, for example, when synchronization cannot be maintained due to channel errors) is also used in several related techniques.
[0071] The operation of the “local” decoder (533) may be the same as that of the “remote” decoder, such as the video decoder (410), which has already been described in detail above in relation to Figure 4. However, referring to Figure 4 for a moment, since symbols are available and the encoding / decoding of symbols into an encoded video sequence by the entropy encoder (545) and parser (420) may be reversible, the entropy decoding unit of the video decoder (410), which includes the buffer memory (415) and parser (420), does not have to be fully implemented in the local decoder (533).
[0072] An observation that can be made at this point is that any decoder technique present within a decoder, other than pars / entropy decoding, must exist in substantially the same functional form within the corresponding encoder. Therefore, the subject matter disclosed focuses on decoder operation. The description of encoder techniques can be abbreviated, as it is the inverse of the comprehensively described decoder techniques. More detailed explanations are necessary only in certain areas, which are provided below.
[0073] During operation, in some examples, the source encoder (530) may perform motion-compensated predictive coding, predictively coding the input picture by referencing one or more previously coded pictures from a video sequence designated as “reference pictures”. In this way, the coding engine (532) codes the difference between the pixel blocks of the input picture and the pixel blocks of the reference picture(s) that may be selected as predictive references for the input picture.
[0074] The local video decoder (533) can decode the encoded video data of a picture that may be designated as a reference picture, based on the symbols generated by the source encoder (530). The operation of the encoding engine (532) can, advantageously, be a lossy process. When the encoded video data can be decoded by the video decoder (not shown in Figure 5), the reconstructed video sequence can typically be a copy of the source video sequence with some errors. The local video decoder (533) can replicate the decoding process that the video decoder may perform on the reference picture and have the reconstructed reference picture stored in the reference picture cache (534). In this way, the video encoder (503) can locally store a copy of the reconstructed reference picture that has common content (unless there are transmission errors) as the reconstructed reference picture that would be obtained by the far-end video decoder.
[0075] The predictor (535) can perform a predictive search on the encoding engine (532). That is, for a new picture to be encoded, the predictor (535) can search the reference picture memory (534) for sample data (as candidate reference pixel blocks) or certain metadata, such as reference picture motion vectors, block shapes, etc., that can act as appropriate predictive references for the new picture. The predictor (535) may operate on a sample block-by-pixel-block basis to find appropriate predictive references. Depending on the search results obtained by the predictor (535), the input picture may have predictive references drawn from multiple reference pictures stored in the reference picture memory (534).
[0076] The controller (550) may manage the encoding operation of the source encoder (530), including, for example, setting parameters and subgroup parameters used to encode video data.
[0077] The outputs of all the above functional units can undergo entropy coding in the entropy encoder (545). The entropy encoder (545) converts the symbols generated by the various functional units into coded video sequences by lossless compression of the symbols according to techniques such as Huffman coding, variable-length coding, and arithmetic coding.
[0078] The transmitter (540) may buffer the encoded video sequence generated by the entropy encoder (545) and prepare it for transmission over the communication channel (560). The communication channel (560) may be a hardware / software link to a storage device that stores the encoded video data. The transmitter (540) may merge the encoded video data from the video encoder (530) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).
[0079] The controller (550) may manage the operation of the video encoder (503). During encoding, the controller (550) may assign a certain encoded picture type to each encoded picture. The encoded picture type may affect the encoding technique that can be applied to each picture. For example, a picture may often be assigned as one of the following picture types:
[0080] An intra-picture (I-picture) can be encoded and decoded without using other pictures in the sequence as a source of prediction. Some video codecs allow different types of intra-pictures, including, for example, Independent Decoder Refresh ("IDR") pictures. Those skilled in the art will recognize these variations of I-pictures, as well as their respective uses and characteristics.
[0081] A prediction picture (P-picture) may be encoded and decoded using intra-prediction or inter-prediction, which uses up to one motion vector and reference index to predict the sample values for each block.
[0082] A bidirectional predictive picture (B-picture) may be encoded and decoded using intra-prediction or inter-prediction with up to two motion vectors and reference indices to predict the sample values of each block. Similarly, a multi-predictive picture may use three or more reference pictures and associated metadata for the reconstruction of a single block.
[0083] A source picture is typically divided spatially into multiple sample blocks (for example, blocks of 4x4, 8x8, 4x8, or 16x16 samples each), and each block can be encoded. Blocks can be predictively encoded by referencing other (already encoded) blocks, as determined by the encoding assignment applied to each picture in the block. For example, a block of picture I may be non-predictively encoded, or it may be predictively encoded by referencing an already encoded block of the same picture (spatial prediction or intra-prediction). A pixel block of picture P may be predictively encoded by referencing one previously encoded reference picture via spatial prediction or temporal prediction. A block of picture B may be predictively encoded by referencing one or two previously encoded reference pictures via spatial prediction or temporal prediction.
[0084] The video encoder (503) can perform encoding operations in accordance with a specified video encoding technique or standard, such as ITU-T Recommendation H.265. In this operation, the video encoder (503) can perform various compression operations, including predictive encoding operations that leverage temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to the syntax specified by the video encoding technique or standard used.
[0085] In one embodiment, the transmitter (540) may transmit additional data along with the encoded video. The source encoder (530) may include such data as part of the encoded 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, and the like.
[0086] Video may be captured as multiple source pictures (video pictures) in a temporal sequence. Intra-picture prediction (often abbreviated as intra-prediction) utilizes spatial correlations within a given picture, while inter-picture prediction utilizes (temporal or other) correlations between pictures. In one example, a particular picture to be encoded / decoded, called the current picture, is divided into blocks. If a block in the current picture is analogous to a reference block in a previously encoded and still-buffered reference picture in the video, that block in the current picture can be encoded by a vector called a motion vector. The motion vector points to a reference block in the reference picture and may have a third dimension to identify the reference picture if multiple reference pictures are used.
[0087] In some embodiments, a dual prediction technique can be used in picture-to-picture prediction. According to the dual prediction technique, two reference pictures are used, such as a first reference picture and a second reference picture, both of which precede the current picture in decoding order in the video (however, in display order, they may be past and future, respectively). A block in the current picture can be encoded 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. The block can be predicted by a combination of the first and second reference blocks.
[0088] Furthermore, to improve coding efficiency, merge mode techniques can be used in picture-to-picture prediction.
[0089] According to some embodiments of this disclosure, predictions such as inter-picture predictions and intra-picture predictions are performed in units of blocks. For example, according to the HEVC standard, pictures in a video-picture sequence are divided into coding tree units (CTUs) for compression, and those CTUs in a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU contains three coding tree blocks (CTBs), which are one lumen CTB and two chroma CTBs. Each CTU can be recursively quadtree-partitioned into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one 64x64 pixel CU, or four 32x32 pixel CUs, or sixteen 16x16 pixel CUs. In one example, each CU is parsed to determine a prediction type for that CU, such as an inter-prediction type or an intra-prediction type. A CU is divided into one or more prediction units (PUs) depending on its temporal and / or spatial predictability. Generally, each PU contains a lumen prediction block (PB) and two chroma PBs. In one embodiment, the prediction operation in encoding (encode / decode) is performed in units of prediction blocks. Using a lumen prediction block as an example of a prediction block, the prediction block contains a matrix of values (e.g., lumen values) for pixels, such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0090] Figure 6 shows a diagram of a video encoder (603) according to another embodiment of the present disclosure. The video encoder (603) is configured to receive a processing block (e.g., a prediction block) of sample values in the current video picture within a sequence of video pictures, and to encode the processing block into an encoded picture which is part of an encoded video sequence. In one example, the video encoder (603) is used instead of the video encoder (303) in the example of Figure 3.
[0091] In the HEVC example, the video encoder (603) receives a matrix of sample values for a processing block, such as a prediction block with 8x8 samples. The video encoder (603) determines, for example using rate-distortion optimization, which mode—intra-mode, inter-mode, or bi-prediction mode—best encodes the processing block. If the processing block is encoded in intra-mode, the video encoder (603) may use the intra-prediction technique to encode the processing block into an encoded picture; if the processing block is encoded in inter-mode or bi-prediction mode, the video encoder (603) may use the inter-prediction technique or the bi-prediction technique, respectively, to encode the processing block into an encoded picture. In some video encoding techniques, merge mode may be an inter-picture prediction submode in which the motion vector is derived from one or more motion vector predictors, but without benefit to encoded motion vector components outside of those predictors. In some other video encoding techniques, there may be motion vector components applicable to the target block. In one example, the video encoder (603) includes other components such as a mode determination module (not shown) for determining the mode of the processing block.
[0092] In the example in Figure 6, the video encoder (603) includes an interencoder (630), an intraencoder (622), a residual calculator (623), a switch (626), a residual encoder (624), a general controller (621), and an entropy encoder (625), all coupled together as shown in Figure 6.
[0093] The interencoder (630) is configured to receive a sample of the current block (e.g., a processing block), compare the block to one or more reference blocks in a reference picture (e.g., blocks in a previous and a later picture), generate interprediction information (e.g., a description of redundant information by the interencoding technique, motion vectors, merge mode information), and, based on the interprediction information, compute an interprediction result (e.g., a predicted block) using any preferred technique. In some examples, the reference picture is a decoded reference picture, decoded based on encoded video information.
[0094] The intra encoder (622) is configured to receive a sample of the current block (e.g., a processing block), and optionally compare the block to a block already encoded in the same picture to generate quantized coefficients after transformation, and optionally also generate intra prediction information (e.g., intra prediction direction information by one or more intra encoding techniques). In one example, the intra encoder (622) also calculates an intra prediction result (e.g., a predicted block) based on the intra prediction information and a reference block in the same picture.
[0095] The general controller (621) is configured to determine general control data and control other components of the video encoder (603) based on the general control data. For example, the general controller (621) determines the mode of a block and provides control signals to the switch (626) based on that mode. For example, if the mode is intra-mode, the general controller (621) controls the switch (626) to select the intra-mode result for use by the residual calculator (623), select the intra-prediction information, and control the entropy encoder (625) to include the intra-prediction information in the bitstream; if the mode is inter-mode, the general controller (621) controls the switch (626) to select the inter-prediction result for use by the residual calculator (623), select the inter-prediction information, and control the entropy encoder (625) to include the inter-prediction information in the bitstream.
[0096] The residual calculator (623) is configured to calculate the difference (residual data) between the received block and a prediction result selected from the intra-encoder (622) or inter-encoder (630). The residual encoder (624) is configured to encode the residual data based on the residual data to generate conversion coefficients. In one example, the residual encoder (624) is configured to convert the residual data from the spatial domain to the frequency domain to generate conversion coefficients. The conversion coefficients are then subjected to a quantization process to obtain quantized conversion coefficients. In various embodiments, the video encoder (603) also includes a residual decoder (628). The residual decoder (628) is configured to perform an inverse transform to generate decoded residual data. The decoded residual data can be suitably used by the intra-encoder (622) and inter-encoder (630). For example, an inter-encoder (630) can generate a decoded block based on decoded residual data and inter-prediction information, and an intra-encoder (622) can generate a decoded block based on decoded residual data and intra-prediction information. The decoded block is suitably processed to generate a decoded picture, which is buffered in a memory circuit (not shown) and can be used as a reference picture in some examples.
[0097] The entropy encoder (625) is configured to format the bitstream to include the encoded blocks. The entropy encoder (625) is configured to include various information according to a preferred standard such as the HEVC standard. For example, the entropy encoder (625) is configured to include general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other preferred information in the bitstream. Note that, according to the disclosed subject, residual information is not present when encoding blocks in either inter-mode or bi-prediction mode merge submodes.
[0098] Figure 7 shows a diagram of a video decoder (710) according to another embodiment of the present disclosure. The video decoder (710) is configured to receive an encoded picture, which is part of an encoded video sequence, and to decode the encoded picture to produce a reconstructed picture. In one example, the video decoder (710) is used instead of the video decoder (310) in the example of Figure 3.
[0099] In the example shown in Figure 7, the video decoder (710) includes an entropy decoder (771), an inter-decoder (780), a residual decoder (773), a reconfiguration module (774), and an intra-decoder (772) coupled together as shown in Figure 7.
[0100] An entropy decoder (771) may be configured to reconstruct from an encoded picture some kind of symbol representing the syntax elements that make up the encoded picture. Such symbols may include, for example, the mode in which the block is encoded (e.g., intra-mode, inter-mode, bi-prediction mode, merge sub-mode, or two of the latter in another sub-mode), prediction information (e.g., intra-prediction information or inter-prediction information) which can identify some kind of sample or metadata used for prediction by the intra-decoder (772) or inter-decoder (780), respectively, and residual information, for example, in the form of quantized transformation coefficients. In one example, if the prediction mode is inter or bi-prediction mode, inter-prediction information is provided to the inter-decoder (780); if the prediction type is intra-prediction type, intra-prediction information is provided to the intra-decoder (772). The residual information may undergo inverse quantization and be provided to the residual decoder (773).
[0101] The inter-decoder (780) is configured to receive inter-prediction information and generate inter-prediction results based on said inter-prediction information.
[0102] The intra decoder (772) is configured to receive intra prediction information and generate prediction results based on said intra prediction information.
[0103] The residual decoder (773) is configured to perform inverse quantization to extract the dequantized transformation coefficients, process the dequantized transformation coefficients, and convert the residual from the frequency domain to the spatial domain. The residual decoder (773) may also require certain control information (including quantizer parameters (QP)), which may be provided by the entropy decoder (771) (since this is only low-volume control information, no data path is drawn).
[0104] The reconstruction module (774) is configured to combine the residuals output by the residual decoder (773) and the prediction results (which may be output by the intra or interprediction module) in the spatial domain to form a reconstructed block, which may be part of a reconstructed picture, and which may be part of a reconstructed video. Note that other preferred operations, such as deblocking operations, may be performed to improve visual quality.
[0105] The video encoders (303), (503), (603), and video decoders (310), (410), (710) can be implemented using any preferred technique. In one embodiment, the video encoders (303), (503), (603), and video decoders (310), (410), (710) can be implemented using one or more integrated circuits. In another embodiment, the video encoders (303), (503), (603), and video decoders (310), (410), (710) can be implemented using one or more processors that execute software instructions.
[0106] Intraprediction in VVC
[0107] Figure 8A illustrates exemplary intra-prediction directions and corresponding intra-prediction modes in several examples (e.g., VVC). In Figure 8A, there are a total of 95 intra-prediction modes (modes -14 to 80), of which mode 0 is a planar mode (referred to as INTRA_PLANAR), mode 1 is a DC mode (referred to as INTRA_DC), and the other modes (modes -14 to -1 and modes 2 to 80) are angular (or directional) modes (also referred to as INTRA_ANGULAR). Of the angle (or direction) modes, mode 18 (referred to as INTRA_ANGULAR18) is the horizontal mode, mode 50 (referred to as INTRA_ANGULAR50) is the vertical mode, mode 2 (referred to as INTRA_ANGULAR2) is the diagonal mode pointing to the lower left, mode 34 (referred to as INTRA_ANGULAR34) is the diagonal mode pointing to the upper left, and mode 66 (referred to as INTRA_ANGULAR66) is the diagonal mode pointing to the upper right. Modes -14 to -1 and modes 67 to 80 are referred to as wide-angle intra prediction (WAIP) modes. Exemplary angle intra prediction modes and their corresponding intra prediction angles are shown in the table in Figure 8B.
[0108] Location-dependent predictive combination (PDPC) filtering process
[0109] According to aspects of this disclosure, the position-dependent prediction combination (PDPC) can be applied to the following intra-modes without signal transmission: planar, DC, WAIP mode, horizontal, vertical, lower-left angle mode (mode 2) and its eight adjacent angle modes (modes 3-10), and upper-right angle mode (mode 66) and its eight adjacent angle modes (modes 58-65).
[0110] In one embodiment, a predicted sample pred'[x][y] currently located at position (x,y) within the block is predicted using an intra-prediction mode (e.g., DC, planar, or angular mode) and a linear combination of a reference sample according to equation (1).
number
[0111] In one embodiment, if the intra-prediction mode is DC mode, the weighting factors may be calculated by equations (2) to (5).
number
[0112] In one embodiment, when the intra-prediction mode is planar mode, wTL is set to 0; when the intra-prediction mode is horizontal mode, wTL is set to equal to wT; and when the intra-prediction mode is vertical mode, wTL is set to equal to wL. The PDPC weighting factors can be calculated using addition and shift operations. The value of pred'[x][y] can be calculated in a single step using equation (1).
[0113] Figure 9A shows exemplary weighting factors for the predicted sample at (0,0) in DC mode. In the example in Figure 9A, the current block is a 4x4 block (width = height = 4), and therefore nScale is 0. Then wT is 32, wL is 32, and wTL is 4.
[0114] Figure 9B shows exemplary weighting factors for a predicted sample at (1,0) in DC mode. In the example in Figure 9B, the current block is a 4x4 block (width=height=4), and therefore nScale is 0. Then wT is 32, wL is 8, and wTL is 2.
[0115] In some embodiments, when the PDPC filtering process is applied to DC, planar, horizontal, and vertical intra-modes, additional boundary filters such as HEVC DC mode boundary filters or horizontal / vertical mode edge filters are not required.
[0116] Exemplary PDPC filtering process
[0117] In some examples, the input to the PDPC filtering process includes: • Intra predictive mode represented by preModeIntra; The current block width, represented as nTbW; The current block height represented by nTbH; The width of the reference sample represented by refW; The height of the reference sample represented by refH; The predicted samples are represented by predSamples[x][y], where x=0…nTbW-1 and y=0…nTbH-1; • Unfiltered reference (also called neighborhood) samples represented by p[x][y], where x=-1, y=-1…refH-1 and x=0…refW-1, y=-1; The color component of the current block, represented by cIdx.
[0118] Depending on the value of cIdx, the function clip1Cmp is set as follows: If cIdx is equal to 0, clip1Cmp is Clip1 Y Set to be equal to; Otherwise, clip1Cmp is Clip1 C It is set to be equal to.
[0119] Furthermore, the output of the PDPC filtering process is the corrected predicted sample 'predSamples'[x][y], where x=0…nTbW-1 and y=0…nTbH-1.
[0120] Next, the scaling factor nScale can be calculated by equation (6).
number
[0121] Furthermore, the reference sample array mainRef[x], x=0…refW may be defined as an array of unfiltered reference samples above the current block, and another reference sample array sideRef[y], y=0…refH may be defined as an array of unfiltered reference samples to the left of the current block. The reference sample arrays mainRef[x] and sideRef[y] may be derived from unfiltered reference samples according to equations (7) and (8), respectively.
number
[0122] Currently, for each position (x,y) within a block, the PDPC calculation can use the top reference sample labeled refT[x][y], the left reference sample labeled refL[x][y], and the corner reference sample p[-1,-1]. The corrected predicted sample may also be calculated by equation (9), and the result is preferably clipped according to the variable cIdx, which represents the color component.
number
[0123] The reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined based on the intra-prediction mode preModeIntra.
[0124] If the intra-prediction mode preModeIntra is equal to INTRA_PLANAR (e.g., 0, Planar mode, or Mode 0) or INTRA_DC (e.g., 1, DC mode, or Mode 1), the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (10) to (14).
number
[0125] Instead, if the intra-prediction mode preModeIntra is equal to INTRA_ANGULAR18 (e.g., 18, horizontal mode, or mode 18) or INTRA_ANGULAR50 (e.g., 50, vertical mode, or mode 50), the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL may be determined according to equations (15) to (19).
number
[0126] Instead, if the intra-prediction mode preModeIntra is equal to INTRA_ANGULAR2 (e.g., 2, or mode 2) or INTRA_ANGULAR66 (e.g., 66, or mode 66), the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL may be determined according to equations (20) to (24).
number
[0127] Alternatively, if the intra prediction mode preModeIntra is less than or equal to INTRA_ANGULAR10 (for example, 10 or mode 10), then for each position (x,y), the variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y] may be derived based on the variable invAngle, which is a function of the intra prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle values for each intra prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y].
[0128] The variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y] can be determined according to equations (25) to (28).
number
[0129] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (29) to (33).
number
[0130] Instead, if the intra prediction mode preModeIntra is INTRA_ANGULAR58 (e.g., 58, or mode 58) or greater, the variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y] can be derived based on the variable invAngle, which is a function of the intra prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle value for each intra prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y].
[0131] The variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y] may be determined according to equations (34) to (37).
number
[0132] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (38) to (42).
number
[0133] Instead, if the variable preModeIntra is between modes 11 and 57 and not mode 18 or mode 50, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL are all set to equal 0.
[0134] Finally, the filtered sample values, filtSamples[x][y], x=0…nTbW-1, y=0…nTbH-1, can be derived according to equation (43).
number
[0135] In some examples (for instance in VVC), when performing intra prediction with PDPC for an nTbW × nTbH transform block within an nCbW × nCbH current block, if the current block is not encoded in intra-subpartition (ISP) mode (i.e., IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT as shown in VVC draft v5), the upper available reference sample range (refW) is set to 2 × nTbW and the left available reference sample range (refH) is set to 2 × nTbH. If, instead, ISP is applied to the current block (i.e., IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT as shown in VVC draft v5), the upper available reference sample range (refW) is set to 2 × nCbW and the left available reference sample range (refH) is set to 2 × nCbH.
[0136] Improvement techniques for PDPC
[0137] In the section “Exemplary PDPC Filtering Processes” above, or in some related examples (e.g., those in VTM5.0), different PDPC processes may be applied to intra-encoded blocks having diagonal intra-prediction modes and modes adjacent to the diagonal intra-prediction modes. For example, a different PDPC process may be applied to mode 2 and its adjacent modes (e.g., mode index 10 or less). In another example, a different PDPC process may be applied to mode 66 and its adjacent modes (e.g., mode index 58 or more). However, the prediction processes for the diagonal prediction modes and their adjacent modes are similar, and there is no clear advantage in maintaining different PDPC processes for these modes. Thus, aspects of this disclosure provide improved techniques for PDPC processes.
[0138] The techniques or methods of this application may be used separately or in any combination in any order. In the following sections, PDPC may be used as a general term for a location-dependent boundary filtering process for a predicted sample, which applies a linear combination of the predicted sample and a reconstructed neighboring sample using location-dependent weighting, and it should be noted that the result may be used to replace the original predicted sample. Therefore, the PDPC process is not limited to the process described in the above section, “Exemplary PDPC Filtering Processes.”
[0139] Furthermore, in the following description, the diagonal intra-prediction modes may be modes 2 and 66 in Figure 8A, modes adjacent to mode 2 may have mode indices smaller than the horizontal modes (for example, intra-mode indices less than 18), and modes adjacent to mode 66 may have mode indices larger than the vertical modes (for example, intra-mode indices greater than 50).
[0140] According to aspects of this disclosure, the same PDPC process (e.g., the same range of available reference samples, the same weighting factors applied to each position) is applied to the diagonal intra-prediction mode and modes adjacent to the diagonal intra-prediction mode.
[0141] In one embodiment, the diagonal intra-prediction modes may be modes 2 and 66 in Figure 8A, and the modes adjacent to the diagonal intra-prediction modes may be modes -1 to -14, modes 3 to 10, modes 58 to 65, and modes 67 to 80 in Figure 8A.
[0142] In one embodiment, for blocks using the diagonal prediction mode, only a subset of the available neighboring reference samples may be used by the PDPC process, while for blocks using modes adjacent to the diagonal prediction mode, all available neighboring reference samples may be used by the PDPC process. For example, in the PDPC process for blocks predicted using the diagonal intra-prediction mode (e.g., modes 2 and 66 in VVC Draft v5), only refW-K upper neighboring reference samples and refH-K left neighboring reference samples are used, where refW and refH represent the total number of available upper and left reference samples, respectively (as defined in the section "General Intra-Sample Prediction" in VVC Draft v5 and also described in the section "Exemplary PDPC Filtering Processes" above), and K is a positive integer (e.g., 1, 2, 3, or 4).
[0143] In one embodiment, for diagonal modes (for example, modes 2 and 66 in VVC draft v5), all available upper and left reference samples are available for PDPC, except for the rightmost and bottommost samples.
[0144] Exemplary Modification of the PDPC Process
[0145] In some embodiments (for example, embodiments A to E below), the PDPC process can be modified as follows. [Examples]
[0146] Embodiment A
[0147] An example input for the PDPC filtering process includes: • Intra predictive mode represented by preModeIntra; The current block width, represented as nTbW; The current block height represented by nTbH; The width of the reference sample represented by refW; The height of the reference sample represented by refH; The predicted samples are represented by predSamples[x][y], where x=0…nTbW-1 and y=0…nTbH-1; • Unfiltered reference (also called neighborhood) samples represented by p[x][y], where x=-1, y=-1…refH-1 and x=0…refW-1, y=-1; The color component of the current block, represented by cIdx.
[0148] Depending on the value of cIdx, the function clip1Cmp is set as follows: If cIdx is equal to 0, clip1Cmp is Clip1 Y Set to be equal to; Otherwise, clip1Cmp is Clip1 C It is set to be equal to.
[0149] Furthermore, the output of the PDPC filtering process is the corrected predicted sample 'predSamples'[x][y], where x=0…nTbW-1 and y=0…nTbH-1.
[0150] Next, the scaling factor nScale can be calculated by equation (44).
number
[0151] Furthermore, the reference sample array mainRef[x], x=0…refW may be defined as an array of unfiltered reference samples above the current block, and another reference sample array sideRef[y], y=0…refH may be defined as an array of unfiltered reference samples to the left of the current block. The reference sample arrays mainRef[x] and sideRef[y] may be derived from unfiltered reference samples according to equations (45)~(46), respectively.
number
[0152] Currently, for each position (x,y) within a block, the PDPC calculation can use a top reference sample labeled refT[x][y], a left reference sample labeled refL[x][y], and a corner reference sample p[-1,-1]. In some examples, the modified predicted sample may also be calculated by equation (47), and the result is preferably clipped according to the variable cIdx, which represents the color component.
number
[0153] The reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined based on the intra-prediction mode preModeIntra.
[0154] If the intra-prediction mode preModeIntra is equal to INTRA_PLANAR (e.g., 0, Planar mode, or Mode 0) or INTRA_DC (e.g., 1, DC mode, or Mode 1), the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (48) to (52).
number
[0155] Instead, if the intra-prediction mode preModeIntra is equal to INTRA_ANGULAR18 (e.g., 18, horizontal mode, or mode 18) or INTRA_ANGULAR50 (e.g., 50, vertical mode, or mode 50), the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL may be determined according to equations (53) to (57).
number
[0156] Alternatively, if the intra-prediction mode preModeIntra is less than or equal to INTRA_ANGULAR10 (e.g., 10 or mode 10), then for each position (x,y), the variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y] may be derived based on the variable invAngle, which is a function of the intra-prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle values for each intra-prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL may be determined based on the variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y].
[0157] For example, the variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y] can be determined according to equations (58) to (61).
number
[0158] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (62) to (66).
number
[0159] Instead, if the intra prediction mode preModeIntra is INTRA_ANGULAR58 (e.g., 58, or mode 58) or greater, the variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y] can be derived based on the variable invAngle, which is a function of the intra prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle value for each intra prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y].
[0160] For example, the variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y] may be determined according to equations (67) to (70).
number
[0161] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (71) to (75).
number
[0162] Instead, if the variable preModeIntra is between modes 11 and 57 and not mode 18 or mode 50, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL are all set to equal 0.
[0163] Finally, the filtered sample values, filtSamples[x][y], x=0…nTbW-1, y=0…nTbH-1, can be derived according to equation (76).
number
[0164] The difference between Embodiment A and the above section “Exemplary PDPC Filtering Process” is that in Embodiment A, the same PDPC process is applied to the diagonal intra-prediction mode and the modes adjacent to the diagonal intra-prediction mode. In one example, the same PDPC process is applied to mode 2 and modes adjacent to mode 2 (for example, mode index 10 or less). In another example, the same PDPC process is applied to mode 66 and modes adjacent to mode 66 (for example, mode index 58 or more). [Examples]
[0165] Embodiment B
[0166] An example input for the PDPC filtering process includes: • Intra predictive mode represented by preModeIntra; The current block width, represented as nTbW; The current block height represented by nTbH; The width of the reference sample represented by refW; The height of the reference sample represented by refH; The predicted samples are represented by predSamples[x][y], where x=0…nTbW-1 and y=0…nTbH-1; • Unfiltered reference (also called neighborhood) samples represented by p[x][y], where x=-1, y=-1…refH-1 and x=0…refW-1, y=-1; The color component of the current block, represented by cIdx.
[0167] Depending on the value of cIdx, the function clip1Cmp is set as follows: If cIdx is equal to 0, clip1Cmp is Clip1 Y Set to be equal to; Otherwise, clip1Cmp is Clip1 C It is set to be equal to.
[0168] Furthermore, the output of the PDPC filtering process is the corrected predicted sample 'predSamples'[x][y], where x=0…nTbW-1 and y=0…nTbH-1.
[0169] Next, the scaling factor nScale can be calculated by equation (77).
number
[0170] Furthermore, the reference sample array mainRef[x], x=0…refW may be defined as an array of unfiltered reference samples above the current block, and another reference sample array sideRef[y], y=0…refH may be defined as an array of unfiltered reference samples to the left of the current block. The reference sample arrays mainRef[x] and sideRef[y] may be derived from unfiltered reference samples according to equations (78)~(79), respectively.
number
[0171] Currently, for each position (x,y) within a block, the PDPC calculation can use a top reference sample labeled refT[x][y], a left reference sample labeled refL[x][y], and a corner reference sample p[-1,-1]. In some examples, the modified predicted sample may also be calculated by equation (80), and the result is preferably clipped according to the variable cIdx, which represents the color component.
number
[0172] The reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined based on the intra-prediction mode preModeIntra.
[0173] If the intra-prediction mode preModeIntra is equal to INTRA_PLANAR (e.g., 0, Planar mode, or Mode 0) or INTRA_DC (e.g., 1, DC mode, or Mode 1), the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (81) to (85).
number
[0174] Instead, if the intra-prediction mode preModeIntra is equal to INTRA_ANGULAR18 (e.g., 18, horizontal mode, or mode 18) or INTRA_ANGULAR50 (e.g., 50, vertical mode, or mode 50), the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL may be determined according to equations (86) to (90).
number
[0175] Alternatively, if the intra prediction mode preModeIntra is less than or equal to INTRA_ANGULAR10 (for example, 10 or mode 10), then for each position (x,y), the variables dXPos[y], dXInt[y], and dX[x][y] may be derived based on the variable invAngle, which is a function of the intra prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle values for each intra prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dXPos[y], dXInt[y], and dX[x][y].
[0176] The variables dXPos[y], dXInt[y], and dX[x][y] can be determined according to equations (91) to (93).
number
[0177] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (94) to (98).
number
[0178] Instead, if the intra prediction mode preModeIntra is greater than or equal to INTRA_ANGULAR58 (e.g., 58, or mode 58), the variables dYPos[x], dYInt[x], and dY[x][y] can be derived based on the variable invAngle, which is a function of the intra prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle values for each intra prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dYPos[x], dYInt[x], and dY[x][y].
[0179] For example, the variables dYPos[x], dYInt[x], and dY[x][y] may be determined according to equations (99) to (101).
number
[0180] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (102) to (106).
number
[0181] Instead, if the variable preModeIntra is between modes 11 and 57 and not mode 18 or mode 50, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL are all set to equal 0.
[0182] Finally, the filtered sample values, filtSamples[x][y], x=0…nTbW-1, y=0…nTbH-1, can be derived according to equation (107).
number
[0183] The difference between Embodiment A and Embodiment B is that in Embodiment B, when the intra prediction mode preModeIntra is less than or equal to INTRA_ANGULAR10, dXFrac[y] (Equation (59)) is not calculated, and dXInt[y] may be calculated in a different way (i.e., Equation (60) vs. Equation (92)), and therefore refT[x][y] and wT[y] are calculated in a different way than in Embodiment A (i.e., Equation (63) vs. Equation (95), Equation (64) vs. Equation (96)). Similarly, if the intra prediction mode preModeIntra is INTRA_ANGULAR58 or higher, in Embodiment B, dYFrac[x] (equation (68)) is not calculated, and dYInt[x] may be calculated in a different way (i.e., equation (69) vs. equation (100)), and therefore refL[x][y] and wL[y] are calculated in a different way than in Embodiment A (i.e., equation (71) vs. equation (102), equation (74) vs. equation (105)). [Examples]
[0184] Embodiment C
[0185] An example input for the PDPC filtering process includes: • Intra predictive mode represented by preModeIntra; The current block width, represented as nTbW; The current block height represented by nTbH; The width of the reference sample represented by refW; The height of the reference sample represented by refH; The predicted samples are represented by predSamples[x][y], where x=0…nTbW-1 and y=0…nTbH-1; • Unfiltered reference (also called neighborhood) samples represented by p[x][y], where x=-1, y=-1…refH-1 and x=0…refW-1, y=-1; The color component of the current block, represented by cIdx.
[0186] Depending on the value of cIdx, the function clip1Cmp is set as follows: If cIdx is equal to 0, clip1Cmp is Clip1 Y Set to be equal to; Otherwise, clip1Cmp is Clip1 C It is set to be equal to.
[0187] Furthermore, the output of the PDPC filtering process is the corrected predicted sample 'predSamples'[x][y], where x=0…nTbW-1 and y=0…nTbH-1.
[0188] Next, the scaling factor nScale can be calculated by equation (108).
number
[0189] Furthermore, the reference sample array mainRef[x], x=0…refW may be defined as an array of unfiltered reference samples above the current block, and another reference sample array sideRef[y], y=0…refH may be defined as an array of unfiltered reference samples to the left of the current block. The reference sample arrays mainRef[x] and sideRef[y] may be derived from unfiltered reference samples according to equations (109)~(110), respectively.
number
[0190] For each position (x, y) within the current block, the PDPC calculation can use the reference sample above denoted as refT[x][y], the reference sample to the left denoted as refL[x][y], and the reference sample p[-1, -1] at the corner. In some examples, the modified predicted sample may be calculated by Equation (111), and the result is suitably clipped according to the variable cIdx indicating the color component. [Number]
[0191] The reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined based on the intra prediction mode preModeIntra.
[0192] When the intra prediction mode preModeIntra is equal to INTRA_PLANAR (e.g., 0, planar mode, or mode 0) or INTRA_DC (e.g., 1, DC mode, or mode 1), the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to Equations (112) to (116). [Number]
[0193] Otherwise, when the intra prediction mode preModeIntra is equal to INTRA_ANGULAR18 (e.g., 18, horizontal mode, or mode 18) or INTRA_ANGULAR50 (e.g., 50, vertical mode, or mode 50), the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to Equations (117) to (121).
number
[0194] Alternatively, if the intra-prediction mode preModeIntra is less than or equal to INTRA_ANGULAR10 (for example, 10 or mode 10), then for each position (x,y), the variables dXInt[y] and dX[x][y] may be derived based on the variable invAngle, which is a function of the intra-prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle values for each intra-prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dXInt[y] and dX[x][y].
[0195] The variables dXInt[y] and dX[x][y] can be determined according to equations (122) to (123).
number
[0196] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (124) to (128).
number
[0197] Instead, when the intra prediction mode preModeIntra is INTRA_ANGULAR58 (e.g., 58, or mode 58) or higher, the variables dYInt[x] and dY[x][y] can be derived based on the variable invAngle which is a function of the intra prediction mode preModeIntra. invAngle can be determined based on a look-up table that stores the corresponding invAngle values for each intra prediction mode, and then the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined based on the variables dYInt[x] and dY[x][y].
[0198] For example, the variables dYInt[x], and dY[x][y] may be determined according to equations (129) to (130). [Number]
[0199] Then, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (131) to (135). [Number]
[0200] Instead, when the variable preModeIntra is between modes 11 and 57 and is not either mode 18 or mode 50, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL are all set equal to 0.
[0201] Finally, the values of the filtered samples filtSamples[x][y], x = 0…nTbW-1, y = 0…nTbH-1 can be derived according to equation (136). [Number]
[0202] The difference between Embodiment B and Embodiment C is that in Embodiment C, when the intra prediction mode is INTRA_ANGULAR10 or less, dXPos[y] (Equation (91)) is not calculated, and dXInt[y] may be calculated in a different way (i.e., Equation (92) vs. Equation (122)). Similarly, when the intra prediction mode preModeIntra is INTRA_ANGULAR58 or more, in Embodiment C, dYPos[x] (Equation (99)) is not calculated, and dYInt[x] may be calculated in a different way (i.e., Equation (100) vs. Equation (129)).
Example
[0203] Embodiment D
[0204] Exemplary inputs to the PDPC filtering process include the following: · The intra prediction mode represented by preModeIntra; · The width of the current block represented by nTbW; · The height of the current block represented by nTbH; · The width of the reference samples represented by refW; · The height of the reference samples represented by refH; · The predicted samples represented by predSamples[x][y], where x = 0…nTbW-1, y = 0…nTbH-1; · The unfiltered reference (also referred to as neighborhood) samples represented by p[x][y], where x = -1, y = -1…refH-1 and x = 0…refW-1, y = -1; s · The color component of the current block represented by cIdx.
[0205] Depending on the value of cIdx, the function clip1Cmp is set as follows: · When cIdx is equal to 0, clip1Cmp is Clip1 YSet to be equal to; Otherwise, clip1Cmp is Clip1 C It is set to be equal to.
[0206] Furthermore, the output of the PDPC filtering process is the corrected predicted sample 'predSamples'[x][y], where x=0…nTbW-1 and y=0…nTbH-1.
[0207] Next, the scaling factor nScale can be calculated by equation (137).
number
[0208] Furthermore, the reference sample array mainRef[x], x=0…refW may be defined as an array of unfiltered reference samples above the current block, and another reference sample array sideRef[y], y=0…refH may be defined as an array of unfiltered reference samples to the left of the current block. The reference sample arrays mainRef[x] and sideRef[y] may be derived from unfiltered reference samples according to equations (138)~(139), respectively.
number
[0209] Currently, for each position (x,y) within a block, the PDPC calculation can use the reference sample at the top labeled refT[x][y], the reference sample on the left labeled refL[x][y], and the reference sample p[-1,-1] at the corner. The corrected predicted sample may also be calculated by equation (140), and the result is preferably clipped according to the variable cIdx, which represents the color component.
number
[0210] The reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined based on the intra-prediction mode preModeIntra.
[0211] If the intra-prediction mode preModeIntra is equal to INTRA_PLANAR (e.g., 0, Planar mode, or Mode 0) or INTRA_DC (e.g., 1, DC mode, or Mode 1), the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (141) to (145).
number
[0212] Instead, if the intra-prediction mode preModeIntra is equal to INTRA_ANGULAR18 (e.g., 18, horizontal mode, or mode 18) or INTRA_ANGULAR50 (e.g., 50, vertical mode, or mode 50), the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL may be determined according to equations (146) to (150).
number
[0213] Instead, if the intra prediction mode preModeIntra is equal to INTRA_ANGULAR2 (for example, 2 or mode 2), then for each position (x,y), the variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y] may be derived based on the variable invAngle, which is a function of the intra prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle values for each intra prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y].
[0214] The variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y] can be determined according to equations (151) to (154).
number
[0215] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (155) to (159).
number
[0216] Alternatively, if the intra prediction mode preModeIntra is less than or equal to INTRA_ANGULAR10 (for example, 10 or mode 10), then for each position (x,y), the variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y] may be derived based on the variable invAngle, which is a function of the intra prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle values for each intra prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y].
[0217] The variables dXPos[y], dXFrac[y], dXInt[y], and dX[x][y] can be determined according to equations (160) to (163).
number
[0218] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (164) to (168).
number
[0219] Instead, if the intra-prediction mode preModeIntra is equal to INTRA_ANGULAR66 (e.g., 66, or mode 66), the variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y] can be derived based on the variable invAngle, which is a function of the intra-prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle value for each intra-prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y].
[0220] The variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y] may be determined according to equations (169) to (172).
number
[0221] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (173) to (177).
number
[0222] Instead, if the intra prediction mode preModeIntra is INTRA_ANGULAR58 (e.g., 58, or mode 58) or greater, the variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y] can be derived based on the variable invAngle, which is a function of the intra prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle value for each intra prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y].
[0223] For example, the variables dYPos[x], dYFrac[x], dYInt[x], and dY[x][y] may be determined according to equations (178) to (181).
number
[0224] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (182) to (186).
number
[0225] Instead, if the variable preModeIntra is between modes 11 and 57 and not mode 18 or mode 50, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL are all set to equal 0.
[0226] Finally, the filtered sample values, filtSamples[x][y], x=0…nTbW-1, y=0…nTbH-1, can be derived according to equation (187).
number
[0227] Embodiment D is similar to Embodiment A, but describes a modified PDPC process that differs for Mode 2 and Mode 66. [Examples]
[0228] Embodiment E
[0229] An example input for the PDPC filtering process includes: • Intra predictive mode represented by preModeIntra; The current block width, represented as nTbW; The current block height represented by nTbH; The width of the reference sample represented by refW; The height of the reference sample represented by refH; The predicted samples are represented by predSamples[x][y], where x=0…nTbW-1 and y=0…nTbH-1; • Unfiltered reference (also called neighborhood) samples represented by p[x][y], where x=-1, y=-1…refH-1 and x=0…refW-1, y=-1; The color component of the current block, represented by cIdx.
[0230] Depending on the value of cIdx, the function clip1Cmp is set as follows: If cIdx is equal to 0, clip1Cmp is Clip1 Y Set to be equal to; Otherwise, clip1Cmp is Clip1 C It is set to be equal to.
[0231] Furthermore, the output of the PDPC filtering process is the corrected predicted sample 'predSamples'[x][y], where x=0…nTbW-1 and y=0…nTbH-1.
[0232] Next, the scaling factor nScale can be calculated by equation (188).
number
[0233] Furthermore, the reference sample array mainRef[x], x=0…refW may be defined as an array of unfiltered reference samples above the current block, and another reference sample array sideRef[y], y=0…refH may be defined as an array of unfiltered reference samples to the left of the current block. The reference sample arrays mainRef[x] and sideRef[y] may be derived from unfiltered reference samples according to equations (189)~(190), respectively.
number
[0234] Currently, for each position (x,y) within a block, the PDPC calculation can use a top reference sample labeled refT[x][y], a left reference sample labeled refL[x][y], and a corner reference sample p[-1,-1]. In some examples, the modified predicted sample may also be calculated by equation (191), and the result is preferably clipped according to the variable cIdx, which represents the color component.
number
[0235] The reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined based on the intra-prediction mode preModeIntra.
[0236] If the intra-prediction mode preModeIntra is equal to INTRA_PLANAR (e.g., 0, Planar mode, or Mode 0) or INTRA_DC (e.g., 1, DC mode, or Mode 1), the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (192) to (196).
number
[0237] Instead, if the intra-prediction mode preModeIntra is equal to INTRA_ANGULAR18 (e.g., 18, horizontal mode, or mode 18) or INTRA_ANGULAR50 (e.g., 50, vertical mode, or mode 50), the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined according to equations (197) to (201).
number
[0238] Alternatively, if the intra-prediction mode preModeIntra is less than or equal to INTRA_ANGULAR10 (e.g., 10 or mode 10), then for each position (x,y), the variables dXInt[y] and dX[x][y] may be derived based on the variable invAngle, which is a function of the intra-prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle values for each intra-prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL may be determined based on the variables dXInt[y] and dX[x][y].
[0239] For example, the variables dXInt[y] and dX[x][y] can be determined according to equations (202)~(203).
number
[0240] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (204) to (208).
number
[0241] Instead, if the intra-prediction mode preModeIntra is greater than or equal to INTRA_ANGULAR58 (e.g., 58, or mode 58), the variables dYInt[x] and dY[x][y] can be derived based on the variable invAngle, which is a function of the intra-prediction mode preModeIntra. invAngle can be determined based on a lookup table that stores the corresponding invAngle values for each intra-prediction mode, and then the reference samples refT[x][y], refL[x][y], and weighting factors wL, wT, and wTL can be determined based on the variables dYInt[x] and dY[x][y].
[0242] For example, the variables dYInt[x] and dY[x][y] may be determined according to equations (209) to (210).
number
[0243] Next, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL can be determined according to equations (211) to (215).
number
[0244] Instead, if the variable preModeIntra is between modes 11 and 57 and not mode 18 or mode 50, the reference samples refT[x][y], refL[x][y], and the weighting factors wL, wT, and wTL are all set to equal 0.
[0245] Finally, the filtered sample values, filtSamples[x][y], x=0…nTbW-1, y=0…nTbH-1, can be derived according to equation (216).
number
[0246] The difference between Embodiment C and Embodiment E is that in Embodiment E, refT[x][y] may be calculated in a different way when the intra prediction mode is INTRA_ANGULAR10 or less (i.e., equation (125) versus equation (205)). Similarly, refL[x][y] may be calculated in a different way when the intra prediction mode preModeIntra is INTRA_ANGULAR58 or greater (i.e., equation (131) versus equation (211)).
[0247] Early termination of the PDPC process
[0248] According to embodiments of the present disclosure, for intra-prediction modes adjacent to diagonal intra-prediction modes such as modes -1 to -14, modes 3 to 10, modes 58 to 65, and modes 67 to 80 in Figure 8A, the PDPC process may have an early termination, the early termination depending on the fractional position pointed to by the intra-prediction direction on the lateral reference sample used in the PDPC process.
[0249] In one embodiment, the assignment of reference sample values used in the PDPC process is modified as follows:
[0250] For intra-predictive modes adjacent to mode 2, equation (30) is modified to equation (217).
number
[0251] For intra-predictive modes adjacent to mode 66, equation (38) is modified to equation (218).
number
[0252] Reference sample testing
[0253] In some related embodiments (for example, in VVC), a sample-by-sample check is required for the current sample in the PDPC process to determine whether the reference sample of the current sample falls within a specified range. If the reference sample is not within the specified range, the PDPC weighting factor is set to 0 for the current sample, as described, for example, in equations (30), (31), (38), and (41). However, this sample-by-sample check may be undesirable, particularly for software optimization using Single Instruction Multiple Data (SIMD) techniques.
[0254] According to some embodiments, the sample-by-sample check in the PDPC process used to determine whether a reference sample is within the range of available reference samples is replaced with a row-by-row or column-by-column check. In one embodiment, the check conditions depend only on the number of available left reference samples, the predicted block height, and the horizontal coordinate values of the current sample to be filtered by the PDPC process. In another embodiment, the check conditions depend only on the number of available upper reference samples, the predicted block width, and the vertical coordinate values of the current sample to be filtered by the PDPC process.
[0255] In one embodiment, for vertical-like intra-predictions (i.e., the prediction direction is closer to the vertical intra-prediction direction than the horizontal prediction direction), the inspection is performed column by column, and the inspection conditions depend on at least one of the number of available left reference samples, the prediction block height, and the horizontal coordinate values of the current sample filtered by the PDPC process.
[0256] In one embodiment, for horizontal intra-prediction (i.e., the prediction direction is closer to the horizontal intra-prediction direction than the vertical prediction direction), the inspection is performed row by row, and the inspection conditions depend on at least one of the number of available upper reference samples, the prediction block width, and the vertical coordinate values of the current sample filtered by the PDPC process.
[0257] According to some embodiments, the PDPC process has an intra-prediction angle of 2 in intra-prediction mode. k The intra-predictive mode is applied when the value is greater than or equal to a preset value such as / 32, where k is a non-negative integer such as 3 or 4.
[0258] In one embodiment, for vertical intra-prediction (i.e., the prediction direction is closer to the vertical intra-prediction direction than the horizontal prediction direction), the first (width / (2) of the current block 5-k ))(or min(width, height) / (2 5-k Only the )) column is processed by the PDPC process.
[0259] In one embodiment, for horizontal intra-predictions (i.e., the prediction direction is closer to the horizontal intra-prediction direction than the vertical prediction direction), the first (height / (2) of the current block 5-k ))(or min(width, height) / (2 5-k Only the )) rows are processed by the PDPC process.
[0260] Figure 10 shows a flowchart illustrating an exemplary process (1000) according to one embodiment of the present disclosure. In various embodiments, process (1000) is performed by processing circuits, such as processing circuits in terminal devices (210), (220), (230) and (240), a processing circuit that performs the function of a video encoder (303), a processing circuit that performs the function of a video decoder (310), a processing circuit that performs the function of a video decoder (410), a processing circuit that performs the function of an intra prediction module (452), a processing circuit that performs the function of a video encoder (503), a processing circuit that performs the function of a predictor (535), a processing circuit that performs the function of an intra encoder (622), and a processing circuit that performs the function of an intra decoder (772). In some embodiments, process (1000) is implemented by software instructions, and so the processing circuit performs process (1000) when it executes software instructions.
[0261] Process (1000) may generally begin in step (S1010), where process (1000) decodes prediction information about the current block in the current picture, which is part of the encoded video sequence. The prediction information indicates the intra-prediction direction for the current block, which is either (i) a diagonal intra-prediction direction, or (ii) a neighboring intra-prediction direction adjacent to the diagonal intra-prediction direction. Process (1000) then proceeds to step (S1020).
[0262] In step (S1020), process (1000) determines how to use a position-dependent prediction combination (PDPC) process depending on the intra-prediction direction of the current block. The same PDPC process is applied to both the diagonal intra-prediction direction and the neighboring intra-prediction direction. Process (1000) then proceeds to step (S1030).
[0263] In step (S1030), process (1000) reconfigures the current block based on the use of the PDPC process on the current block.
[0264] After reconfiguring the block, process (1000) will terminate.
[0265] In some embodiments, the diagonal intraprediction direction is either the lower-left or upper-right prediction direction. In some embodiments, when the diagonal intraprediction direction is the lower-left prediction direction, the mode index of the neighboring intraprediction direction is lower than the mode index of the horizontal intraprediction direction. In some embodiments, when the diagonal intraprediction direction is the upper-right prediction direction, the mode index of the neighboring intraprediction direction is higher than the mode index of the vertical intraprediction direction.
[0266] In one embodiment, if the intra-prediction direction is a nearby intra-prediction direction, process (1000) determines whether the intra-prediction direction points to a fractional position. In response to the determination that the intra-prediction points to a fractional position, process (1000) decides to terminate the PDPC process early.
[0267] In some embodiments, if the current sample in the current block is filtered by the PDPC process, the process (1000) determines whether the reference sample of the current sample is located within a predetermined range, according to a row-by-row or column-by-column check. In some embodiments, the column-by-column check depends on at least one of (i) the total number of available reference samples located to the left of the current block, (ii) the block height of the current block, and (iii) the horizontal coordinate value of the current sample. In some embodiments, the row-by-row check depends on at least one of (i) the total number of available reference samples located above the current block, (ii) the block width of the current block, and (iii) the vertical coordinate value of the current sample.
[0268] In some embodiments, the angle of the intra-prediction direction is greater than or equal to a preset value. In one embodiment, if the intra-prediction direction is closer to the vertical intra-prediction direction than to the horizontal intra-prediction direction, process (1000) performs the PDPC process on a first number of columns of samples in the current block, the first number being determined according to the preset value and the block size of the current block. In another embodiment, if the intra-prediction direction is closer to the horizontal intra-prediction direction than to the vertical intra-prediction direction, process (1000) performs the PDPC process on a second number of rows of samples in the current block, the second number being determined according to the preset value and the block size of the current block.
[0269] The techniques described above can be implemented as computer software using computer-readable instructions and can be physically stored on one or more computer-readable media. For example, Figure 11 shows a computer system (1100) suitable for carrying out certain embodiments of the disclosed subject matter.
[0270] Computer software can be coded using any suitable machine code or computer language, and can be subjected to assembly, compilation, linking, or similar mechanisms to create code containing instructions that can be executed directly or through interpretation, microcode execution, etc., by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc.
[0271] The instructions can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, game consoles, and Internet of Things devices.
[0272] The components shown in Figure 11 for the computer system (1100) are illustrative and not intended to imply any limitation on the scope of use or functionality of computer software implementing embodiments of the present disclosure. The configuration of the components should not be construed as having any dependence or requirement on any one or combination of components shown in the exemplary embodiments of the computer system (1100).
[0273] The computer system (1100) may include certain types of human interface input devices. Such human interface input devices may respond to input from one or more human users through, for example, tactile input (e.g., keystrokes, swipes, data glove movements), voice input (e.g., voice, clapping), visual input (e.g., gestures), or olfactory input (not shown). The human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as sound (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still image camera), or video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).
[0274] The input human interface device may include one or more of the following (only one of each is shown): a keyboard (1101), a mouse (1102), a trackpad (1103), a touchscreen (1110), a data glove (not shown), a joystick (1105), a microphone (1106), a scanner (1107), and a camera (1108).
[0275] The computer system (1100) may also include certain types of human interface output devices. Such human interface output devices may stimulate the senses of one or more human users, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include tactile output devices (e.g., tactile feedback by touchscreen (1110), data glove (not shown), or joystick (1105); however, there may also be tactile feedback devices that do not function as input devices), audio output devices (e.g., speakers (1109), headphones (not shown)), visual output devices (e.g., screens (1110) including CRT screens, LCD screens, plasma screens, and OLED screens; each may or may not have touchscreen input functionality, each may or may not have tactile feedback functionality, and some of them may output two-dimensional visual output or higher-than-three-dimensional output by means such as stereoscopic output; virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown). These output devices (such as a screen (1110)) can be connected to the system bus (1148) via a graphics adapter (1150).
[0276] The computer system (1100) may also include human-accessible storage devices and associated media, such as optical media including CD / DVD ROM / RW (1120) along with CD / DVD or similar media (1121), thumb drives (1122), removable hard drives or solid-state drives (1123), legacy magnetic media such as tapes and floppy disks (not shown), and specialized ROM / ASIC / PLD-based devices such as security dongles (not shown).
[0277] Those skilled in the art should also understand that the term “computer-readable medium” as used in relation to the subject matter currently disclosed does not include a transmission medium, carrier wave, or other transient signal.
[0278] The computer system (1100) may also include a network interface (1154) to one or more communication networks (1155). The one or more communication networks (1155) may be, for example, wireless, wired, or optical. The one or more communication networks (1155) may further be local, wide-area, metropolitan, automotive, and industrial, real-time, latency-tolerant, etc. Examples of the one or more communication networks (1155) include cellular networks including Ethernet®, Wi-Fi, GSM, 3G, 4G, 5G, LTE, etc., wide-area digital networks for wired or wireless TV including cable television, satellite television, and terrestrial television, and automotive and industrial networks including CANBus. Certain networks typically require an external network interface adapter that is attached to some kind of general-purpose data port or peripheral bus (1149) (for example, a USB port on the computer system (1100)). Others are typically integrated into the core of the computer system (1100) by mounting to a system bus, as described later (for example, an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (1100) can communicate with other entities. Such communication may be one-way, receive-only (e.g., broadcast television), one-way transmit-only (e.g., CANbus to certain CANbus devices), or bidirectional to other computer systems using local or wide-area digital networks, for example. Certain protocols and protocol stacks can be used on each of these networks and network interfaces as described above.
[0279] The aforementioned human interface device, human-accessible storage device, and network interface can be mounted on the core (1140) of the computer system (1100).
[0280] The core (1140) may include one or more central processing units (CPUs) (1141), graphics processing units (GPUs) (1142), specialized programmable processing units in the form of field-programmable gate arrays (FPGAs) (1143), hardware accelerators (1144) for certain tasks, etc. These devices may be connected via a system bus (1148) along with read-only memory (ROM) (1145), random access memory (1146), internal mass storage devices (1147) such as internal non-user-accessible hard drives and solid-state drives (SSDs). In some computer systems, the system bus (1148) may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (1148) or via a peripheral bus (1149). Architectures for the peripheral bus include PCI, USB, etc.
[0281] A CPU (1141), GPU (1142), FPGA (1143), and accelerator (1144) can execute certain instructions that can be combined to form the aforementioned computer code. This computer code can be stored in ROM (1145) or RAM (1146). Temporary data can also be stored in RAM (1146), while persistent data can be stored, for example, in internal mass storage (1147). High-speed storage and retrieval to any of the memory devices can be enabled through the use of cache memory that can be closely associated with one or more CPUs (1141), GPUs (1142), mass storage (1147), ROM (1145), RAM (1146), etc.
[0282] Computer-readable media may have computer code on them for performing various computer-implemented operations. The media and computer code may be specifically designed and constructed for the purposes of this disclosure, or they may be of a type that is well known and available to those skilled in the computer software field.
[0283] As an example, and not an limitation, a computer system having an architecture (1100), specifically a core (1140), can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be user-accessible mass storage as described above, as well as media related to certain types of storage of the core (1140) of a non-temporary nature, such as mass storage (1147) or ROM (1145) within the core. Software implementing various embodiments of this disclosure can be stored in such devices and executed by the core (1140). The computer-readable media can include one or more memory devices or chips, depending on the specific needs. The software can cause the core (1140) and specifically the processor (including a CPU, GPU, FPGA, etc.) within it to execute certain processes or specific parts described herein, including defining data structures stored in RAM (1146) and modifying such data structures according to processes defined by the software. Additionally or alternatively, a computer system may provide functionality as a result of logic wired or otherwise embodied within a circuit (e.g., an accelerator (1144)), which may operate in place of or in conjunction with software for performing a particular process or a particular part of a particular process as described herein. References to software include logic, and vice versa as appropriate. References to computer-readable media may, as appropriate, include circuits for storing software for execution (e.g., integrated circuits (ICs)), circuits for embodying logic for execution, or both. This disclosure encompasses any preferred combination of hardware and software.
[0284] While this disclosure has described several exemplary embodiments, there are many modifications, substitutions, and alternative equivalents that fall within the scope of this disclosure. Therefore, those skilled in the art will understand that many systems and methods can be devised that embody the principles of this disclosure and thus fall within the spirit and scope of this disclosure, even if they are not expressly shown or described herein.
[0285] Appendix A: Acronyms AMVP: Advanced Motion Vector Prediction ASIC: Application-Specific Integrated Circuit ATMVP: Alternative / Advanced Temporal Motion Vector Prediction BDOF: Bi-directional Optical Flow BIO: Bi-directional Optical Flow BMS: Benchmark Set BV: Block Vector CANBus: Controller Area Network Bus CB: Coding Block CBF: Coded Block Flag CCLM: Cross-Component Linear Mode / Model CD: Compact Disc CPR: Current Picture Referencing CPU: Central Processing Unit CRT:Cathode Ray Tube CTB: Coding Tree Block CTU: Coding Tree Units CU: Coding Unit DPB: Decoder Picture Buffer DVD: Digital Video Disc FPGA: Field Programmable Gate Area GOP: Group of Pictures GPU: Graphics Processing Unit GSM: Global System for Mobile communications HDR: High Dynamic Range HEVC: High Efficiency Video Coding HRD: Hypothetical Reference Decoder IBC: Intra Block Copy IC: Integrated Circuit ISP: Intra Sub-Partitions JEM: Joint Exploration Model JVET: Joint Video Exploration Team LAN: Local Area Network LCD: Liquid-Crystal Display LTE: Long-Term Evolution MPM: Most Probable Mode MTS: Multiple Transform Selection MV: Motion Vector OLED: Organic Light-Emitting Diode PB: Prediction Blocks PCI: Peripheral Component Interconnect PDPC: Position Dependent Prediction Combination PLD: Programmable Logic Device PU: Prediction Unit RAM: Random Access Memory ROM: Read-Only Memory SBT: Sub-block Transform SCC: Screen Content Coding SDR: Standard Dynamic Range SEI: Supplementary Enhancement Information SNR: Signal Noise Ratio SSD: Solid-state Drive TU: Transform Unit USB: Universal Serial Bus VPDU: Visual Process Data Unit VUI: Video Usability Information VVC:Versatile Video Coding WAIP: Wide-Angle Intra Prediction
Claims
1. A method of video decoding performed by a decoder, the method being: A step of decoding predictive information about the current block in the current picture contained in the encoded video sequence, wherein the predictive information indicates the intra-predictive mode of the current block; The steps include determining a location-dependent prediction combination (PDPC) process according to the intra-prediction mode of the current block indicated by the aforementioned prediction information; Currently, the block is being reconfigured based on the determined PDPC process. The process includes steps such as applying the same PDCP process to an intra-prediction mode adjacent to a diagonally adjacent intra-prediction mode, If the current block's intra prediction mode is INTRA_ANGULAR10 or less, - The left reference sample used in the aforementioned PDCP process is set to 0. - Whether the reference sample used in the PDCP process is set to 0 or to a value taken from the reference sample row above the current block is determined on a row-by-row basis, not on a sample-by-sample basis, i.e., based solely on the vertical coordinate y, and not on the horizontal coordinate x. method.
2. The PDPC process is performed on a first number of samples in the current block, based on the fact that the intra-prediction direction of the intra-prediction mode is closer to the vertical intra-prediction direction than to the horizontal intra-prediction direction. The PDPC process is performed on a second number of rows of samples in the current block, based on the fact that the intra-prediction direction is closer to the horizontal intra-prediction direction than the vertical intra-prediction direction. The method according to claim 1.
3. The method according to claim 1 or 2, wherein the intra prediction direction of the intra prediction mode is one of the diagonal intra prediction direction or a neighboring intra prediction direction adjacent to the diagonal intra prediction direction, and the diagonal intra prediction direction is one of the lower left prediction direction and the upper right prediction direction.
4. The method according to claim 3, wherein, based on the diagonal intra prediction direction being the lower left intra prediction direction, the mode index of the nearby intra prediction direction is smaller than the mode index of the horizontal intra prediction direction.
5. The method according to claim 3, wherein, based on the diagonal intra-prediction direction being the upper right intra-prediction direction, the mode index of the nearby intra-prediction direction is greater than the mode index of the vertical intra-prediction direction.
6. Based on the fact that the intra prediction direction of the aforementioned intra prediction mode is the nearby intra prediction direction, Determine whether the aforementioned intra-prediction direction points to a fractional position; The further includes determining early termination of the PDPC process in response to the determination that the intra-predicted direction points to a fractional position. The method according to any one of claims 1 to 5.
7. If the current sample in the current block is filtered by the PDPC process, This further includes determining whether the current sample's reference sample falls within a predefined range, according to a row-by-row or column-by-column check. The method according to any one of claims 1 to 6.
8. The method according to claim 7, wherein the inspection for each column depends on at least one of (i) the total number of available reference samples located to the left of the current block, (ii) the block height of the current block, and (iii) the horizontal coordinate values of the current sample.
9. The method according to claim 7 or 8, wherein the row-by-row inspection depends on at least one of (i) the total number of available reference samples located above the current block, (ii) the block width of the current block, and (iii) the vertical coordinate values of the current sample.
10. The method according to claim 2, wherein the angle of the intra prediction direction in the intra prediction mode is greater than or equal to a preset value.
11. The first number is determined according to the preset value and the block size of the current block; The second number is determined according to the preset value and the block size of the current block. The method according to claim 10.
12. An apparatus configured to perform the method described in any one of claims 1 to 11.
13. A computer program for causing at least one processor to perform the method described in any one of claims 1 to 11.
Citation Information
Patent Citations
Constrained position dependent intra prediction combination (PDPC)
US20180176587A1