Method and apparatus for interaction between intra-predictive mode and block difference pulse code modulation mode

By associating intra-prediction mode values with BDPCM direction flags, the method addresses inefficiencies in representing intra-prediction modes, enhancing video decoding efficiency and compression performance.

JP7897300B2Active Publication Date: 2026-07-29TENCENT AMERICA LLC
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
TENCENT AMERICA LLC
Filing Date
2024-12-18
Publication Date
2026-07-29

AI Technical Summary

Technical Problem

Existing video coding techniques face inefficiencies in representing intra-prediction modes, particularly when using block differential pulse code modulation (BDPCM) mode, leading to suboptimal compression and increased bit usage for less likely prediction directions.

Method used

The method involves determining whether a block is coded in BDPCM mode and associating it with an intra-prediction mode value based on a BDPCM direction flag, allowing for more efficient restoration of subsequent blocks using the associated intra-prediction mode value.

Benefits of technology

This approach enhances video decoding efficiency by reducing bit usage for less likely intra-prediction directions, improving compression performance and overall video coding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007897300000010
    Figure 0007897300000010
  • Figure 0007897300000011
    Figure 0007897300000011
  • Figure 0007897300000012
    Figure 0007897300000012
Patent Text Reader

Abstract

To provide a method and apparatus of interaction between an intra prediction mode and a block differential pulse-code modulation mode.SOLUTION: A method of video decoding performed in a video decoder includes a step of determining whether a first block associated with a second block is coded with a block differential pulse code modulation (BDPCM) mode. The method further includes a step of, in response to determining that the first block is coded with the BDPCM mode, associating the first block with an intra prediction mode value based on a BDPCM directional flag. The method further includes a step of determining an inter prediction mode value for the second block using the intra prediction mode value associated with the first block. The method further includes a step of reconstructing the second block using the determined intra prediction mode value.SELECTED DRAWING: Figure 1A
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] Cross-reference of related applications This application claims priority to U.S. Patent Application No. 16 / 862,221, “METHOD AND APPARATUS FOR INTERACTION BETWEEN INTRA PREDICTION MODE AND BLOCK DIFFERENTIAL PULSE-CODE MODULATION MODE,” filed on 29 April 2020, which in turn claims priority to U.S. Provisional Application No. 62 / 841,003, “INTERACTION BETWEEN INTRA PREDICTION MODE AND BLOCK DIFFERENTIAL PULSE-CODE MODULATION MODE,” filed on 30 April 2019. The full disclosures of the prior applications are incorporated herein by reference.

[0002] This disclosure generally describes embodiments related to video coding. [Background technology]

[0003] The background information provided herein is intended to provide an overall context for this disclosure. The work of the inventors named herein, to the extent described in this background section, and any aspect of the 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 coding and decoding can be performed using interpicture 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 chromaticity 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 60Hz frame rate) 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 coding and decoding may be to reduce the redundancy of the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage space requirements, sometimes by more than two orders of magnitude. Both lossless and lossy compression, as well as combinations thereof, can be employed. Lossless compression refers to a technique that allows an exact copy of the original signal to be restored from the compressed original signal. With lossy compression, the restored signal may not be identical to the original signal, but the distortion between the original and restored signals is small enough to make the restored signal useful for its intended purpose. For video, lossy compression is widely adopted. The amount of distortion that can be tolerated depends on the application; for example, users of a particular consumer streaming application may tolerate higher distortion than users of a television distribution application. The feasible compression ratio can reflect that the greater the tolerance / tolerance of distortion, the higher the compression ratio can be.

[0006] Video encoders and video decoders can utilize techniques from several broad categories, including, for example, motion compensation, transformation, quantization, and entropy coding.

[0007] Video codec techniques may include a technique known as intra coding. In intra coding, sample values ​​are represented without referencing other data from the sample or a previously restored reference picture. In some video codecs, the picture is spatially subdivided into blocks of samples. When 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 therefore can be used as the first picture in the coded video bitstream and video session, or as a still image. Samples in intra blocks may be subjected to transformations, and the transformation coefficients can be quantized before entropy coding. Intra prediction may be a technique to minimize the sample values ​​in the pre-transformation region. In some cases, the smaller the post-transformation DC value and the smaller the AC coefficient, the fewer bits are required at a given quantization step size to represent the block after entropy coding.

[0008] For example, traditional intra-coding, as known from MPEG-2 generation coding techniques, does not use intra-prediction. However, some newer video compression techniques include, for example, techniques that try from surrounding sample data and / or metadata acquired during the encoding / decoding of spatially adjacent and preceding blocks of data in the decoding order. Such techniques will hereafter be referred to as “intra-prediction” techniques. It should be noted that, at least in some cases, intra-prediction uses only reference data from the current picture being restored, and not reference data from the reference picture.

[0009] Many different forms of intra-prediction can exist. When two or more of these techniques can be used in a given video coding technique, the techniques in use can be coded in intra-prediction mode. In some cases, a mode may have submodes and / or parameters, which can be coded individually or included in a mode codeword. The choice of codeword for a given combination of mode / submode / parameters can affect the coding efficiency gain via intra-prediction, and therefore can also affect the entropy coding technique used to convert the codeword into a bitstream.

[0010] Certain modes of intra-prediction were introduced with H.264, improved in H.265, and further refined with newer coding techniques such as Joint Search Models (JEM), Versatile Video Coding (VVC), and Benchmark Sets (BMS). Predictor blocks 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 direction. References to the direction in use may be coded within the bitstream or predicted themselves.

[0011] Referring to Figure 1A, the lower right shows a subset of nine predictor directions known from the 33 possible predictor directions in H.265 (corresponding to 33 of the 35 intra-modes, or angular modes). The point where the arrows converge (101) represents the sample being predicted. The arrows indicate the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from one or more samples to the upper right at an angle of 45 degrees from the horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from one or more samples to the lower left of sample (101) at an angle of 22.5 degrees from the horizontal.

[0012] Referring further to Figure 1A, a 4x4 sample square block (104) is depicted in the upper left (shown in bold dashed lines). The square block (104) contains 16 samples, each labeled "S", 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 both the Y and X dimensions of block (104). Since the block size is 4x4 samples, S44 is in the lower right. Furthermore, a reference sample is shown that follows a similar numbering scheme. The reference sample is labeled R relative to block (104), its Y position (e.g., row index), and its X position (column index). In both H.264 and H.265, the predicted sample is adjacent to the block being reconstructed, and therefore negative values ​​do not need to be used.

[0013] Intra-picture prediction can function by copying reference sample values ​​from adjacent samples so that they are filled in by the signaled prediction direction. For example, suppose an encoded video bitstream is predicted for this block from one or more prediction samples to the upper right at a 45-degree angle from the horizontal, including signaling that indicates a prediction direction corresponding to arrow (102). Then samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Sample S44 is then predicted from reference sample R08.

[0014] In some cases, to calculate the reference sample, especially when the direction is not evenly divisible by 45 degrees, the values ​​of multiple reference samples may be combined, for example, through interpolation.

[0015] The number of possible directions has increased as video coding techniques have advanced. H.264 (2003) could represent nine different directions. This increased to 33 in H.265 (2013), and JEM / VVC / BMS can support up to 65 directions as of this disclosure. Experiments have been conducted to identify the most likely directions, and several techniques in entropy coding are used to represent those likely directions with a small number of bits, accepting certain penalties for less likely directions. Furthermore, the direction itself can sometimes be predicted from the adjacent directions used in adjacent, already decoded blocks.

[0016] The intra-predictive modes used in HEVC are shown in Figure 1B. HEVC has a total of 35 intra-predictive modes, of which mode 10 is the horizontal mode, mode 26 is the vertical mode, and modes 2, 18, and 34 are the diagonal modes. The intra-predictive modes are signaled by three most probable modes (MPMs) and 32 remaining modes.

[0017] Figure 1C shows the intra-prediction modes used in VVC. VVC has a total of 95 intra-prediction modes, as shown in Figure 1C, with mode 18 being the horizontal mode, mode 50 being the vertical mode, and modes 2, 34, and 66 being the diagonal modes. Modes 1-14 and modes 67-80 are called wide-angle intra-prediction (WAIP) modes.

[0018] The mapping of intra prediction direction bits within a coded video bitstream representing directions can vary depending on video coding techniques and can range from a simple direct mapping of prediction directions to complex adaptive schemes including intra prediction modes, codewords, MPMs, and similar techniques. However, in all cases, there may exist some directions that are statistically less likely to occur within the video content than some other directions. Since the purpose of video compression is to reduce redundancy, in a well-functioning video coding technique, those less likely directions are represented by more bits than the more likely directions. SUMMARY OF THE INVENTION MEANS FOR SOLVING THE PROBLEM

[0019] According to an exemplary embodiment, a method of video decoding executed in a video decoder includes determining whether a first block associated with a second block is coded in a block differential pulse code modulation (BDPCM) mode. The method further includes associating the first block with an intra prediction mode value based on a BDPCM direction flag in response to determining that the first block is coded in the BDPCM mode. The method further includes determining an intra prediction mode value for the second block using the intra prediction mode value associated with the first block. The method further includes restoring the second block using the determined intra prediction mode value.

[0020] According to an exemplary embodiment, a video decoder for video decoding includes a processing circuit configured to determine whether a first block associated with a second block is encoded in a block differential pulse code modulation (BDPCM) mode. In response to determining that the first block is encoded in the BDPCM mode, the processing circuit is further configured to associate the first block with an intra prediction mode value based on a BDPCM direction flag. The processing circuit is further configured to use the intra prediction mode value associated with the first block to determine an intra prediction mode value for the second block. The processing circuit is further configured to use the determined intra prediction mode value to restore the second block.

[0021] According to an exemplary embodiment, a non - transitory computer - readable medium stores instructions that, when executed by a processor in a video decoder, cause the processor to execute a method including determining whether a first block associated with a second block is encoded in a block differential pulse code modulation (BDPCM) mode. The method further includes, in response to determining that the first block is encoded in the BDPCM mode, associating the first block with an intra prediction mode value based on a BDPCM direction flag. The method further includes using the intra prediction mode value associated with the first block to determine an intra prediction mode value for the second block. The method further includes using the determined intra prediction mode value to restore the second block.

[0022] Further features, properties, and various advantages of the disclosed subject matter will become more apparent from the following detailed description of the invention and the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0023] [Figure 1A] It is a schematic diagram of an exemplary subset of intra prediction modes. [Figure 1B] It is a diagram of an exemplary intra prediction direction. [Figure 1C] This is an example diagram of the intra-prediction direction. [Figure 2] This is a schematic diagram of a simplified block diagram of a communication system (200) according to one embodiment. [Figure 3] This is a schematic diagram of a simplified block diagram of a communication system (300) according to one embodiment. [Figure 4] This is a schematic diagram of a simplified block diagram of a decoder according to one embodiment. [Figure 5] This is a schematic diagram of a simplified block diagram of an encoder according to one embodiment. [Figure 6] This is a block diagram of an encoder according to another embodiment. [Figure 7] This is a block diagram of a decoder according to another embodiment. [Figure 8] This is a schematic diagram of the current block and its surrounding adjacent blocks. [Figure 9] This is a diagram illustrating one embodiment of the process performed by the decoder. [Figure 10] This is a schematic diagram of a computer system according to one embodiment of the present disclosure. [Modes for carrying out the invention]

[0024] 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, for example, a plurality of terminal devices that can communicate with each other 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 unidirectional transmission of data. For example, terminal device (210) can encode video data (for example, a stream of video pictures captured by terminal device (210)) for transmission to other terminal devices (220) over the network (250). The encoded video data can be transmitted in the form of one or more encoded video bitstreams. Terminal device (220) can receive the encoded video data from the network (250), decode the encoded video data to restore the video pictures, and display the video pictures according to the restored video data. Unidirectional data transmission is common in applications such as media serving.

[0025] In another example, the communication system (200) includes a second pair of terminal devices (230) and (240) that perform bidirectional transmission of coded video data, which may occur, for example, during a video conference. In the case of bidirectional transmission of data, in one example, each of the terminal devices (230) and (240) can code video data (for example, a stream of video pictures captured by the terminal device) for transmission to the other terminal device (230) and (240) over the network (250). Each of the terminal devices (230) and (240) can also receive coded video data transmitted by the other terminal device (230) and (240), decode the coded video data to restore the video pictures, and display the video pictures on an accessible display device according to the restored video data.

[0026] In the example in Figure 2, terminal devices (210), (220), (230), and (240) may be represented as a server, a personal computer, and a smartphone, but the principles of this disclosure are not limited thereto. Embodiments of this disclosure find applications using laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network (250) represents any number of networks that transmit coded video data between terminal devices (210), (220), (230), and (240), including, for example, wired and / or wireless communication networks. Communication networks (250) can exchange data over circuit-switched channels and / or packet-switched channels. Typical networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. The architecture and topology of network (250) may not be important to the operation of this disclosure for the purposes of this description unless described below herein.

[0027] Figure 3 shows an example of the arrangement of a video encoder and video decoder in a streaming environment as an application for the disclosed subject. The disclosed subject may be equally applicable to other video-enabled applications, such as video conferencing, digital television, and storing compressed video on digital media including CDs, DVDs, and memory sticks.

[0028] The streaming system may include, for example, a capture subsystem (313) which may include a video source (301), such as a digital camera, that creates a stream (302) of uncompressed video pictures. In one example, the stream (302) of video pictures includes a sample captured by the digital camera. The stream (302) of video pictures, depicted as a thick line to emphasize the large amount of data compared to encoded video data (304) (or encoded video bitstream), can be processed by an electronic device (320) which includes 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 implement aspects of the disclosed subject, as will be described in more detail below. The encoded video data (304) (or encoded video bitstream (304)), depicted as a thin line to emphasize the small amount of data compared to the stream (302), can be stored in a streaming server (305) for future use. One or more streaming client subsystems, such as client subsystems (306) and (308) in Figure 3, can access a streaming server (305) to retrieve copies (307) and (309) of encoded video data (304). Client subsystem (306) may, for example, include a video decoder (310) within an electronic device (330). The video decoder (310) decodes an input copy (307) of the encoded video data and creates an output stream (311) of a video picture that can be rendered on a display (312) (e.g., a display screen) or other rendering device (without rendering). In some streaming systems, the encoded video data (304), (307), and (309) (e.g., video bitstreams) can be encoded according to specific video coding / compression standards. Examples of such 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.

[0029] It should be noted that 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).

[0030] 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) (for example, a receiving circuit). The video decoder (410) can be used in place of the video decoder (310) in the example of Figure 3.

[0031] The receiver (431) can receive one or more coded video sequences to be decoded by the video decoder (410), in the same or different embodiments, one coded video sequence at a time, and the decoding of each coded video sequence is independent of other coded video sequences. Coded video sequences may be received from a channel (401), which may be a hardware / software link to a storage device that stores coded video data. The receiver (431) can receive coded video data together with other data that may be transferred to their respective usage entities (not described), such as coded audio data and / or auxiliary data streams. The receiver (431) can isolate coded video sequences from other data. To counteract network jitter, a buffer memory (415) may be coupled between the receiver (431) and the entropy decoder / parser (420) (hereinafter, "Parser (420)"). In certain applications, the buffer memory (415) is part of the video decoder (410). In other applications, it may be located outside the video decoder (410) (not described). In yet other applications, for example, to counteract network jitter, a buffer memory (not described) may exist outside the video decoder (410), and in addition, for example, to handle playout timing, another buffer memory (415) may exist inside the video decoder (410). When the receiver (431) is receiving data from a store / forward device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (415) may not be required or may be small. For use in best-effort packet networks such as the Internet, the buffer memory (415) may be required, may be relatively large, may be advantageously adaptive in size, and may be at least partially implemented in the operating system or a similar element (not described) outside the video decoder (410).

[0032] The video decoder (410) may include a parser (420) to reconstruct symbols (421) from the coded video sequence. These categories of symbols include information used to manage the operation of the video decoder (410), and potentially information for controlling rendering devices, such as a rendering device (412) (e.g., a display screen) which, while not an integral part of the electronic device (430), can be coupled to the electronic device (430) as shown in Figure 4. The control information for rendering devices may be in the form of supplemental extension information (SEI messages) or parameter set fragments (not depicted) of video usability information (VUI). The parser (420) can parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow video coding techniques or standards and may follow various principles, including variable-length coding, Huffman coding, arithmetic coding, with or without context sensitivity. The parser (420) can extract from the coded 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 a group. Subgroups can include picture groups (GOP), pictures, tiles, slices, macroblocks, coding units (CU), blocks, transform units (TU), predictive units (PU), and so on. The parser (420) can also extract information from the coded video sequence such as transform coefficients, quantizer parameter values, and motion vectors.

[0033] The parser (420) can perform an entropy decoding / parsing operation on the video sequence received from buffer memory (415) in order to create symbols (421).

[0034] The reconstruction of symbol (421) may involve multiple different units, depending on the type of coded video picture or part thereof (such as between and within pictures, between and within blocks), as well as other factors. How each unit is involved can be controlled by subgroup control information parsed from the video sequence coded by the parser (420). The flow of such subgroup control information between the parser (420) and the following multiple units is not depicted for clarity.

[0035] In addition to the functional blocks already described, the video decoder (410) can be conceptually subdivided into several functional units, as described below. In actual implementations operating under commercial constraints, many of these units can interact closely with each other and integrate with each other at least partially. However, the following conceptual subdivision into functional units is appropriate for describing the disclosed subject matter.

[0036] The first unit is the scaler / inverse unit (451). The scaler / inverse unit (451) receives control information from the parser (420) as symbols (421), including the quantization conversion coefficients, which conversion to use, block size, quantization coefficients, and quantization scaling matrix. The scaler / inverse unit (451) can output a block containing sample values ​​that can be input to the aggregator (455).

[0037] In some cases, the output samples of the scaler / inverse transform (451) may relate to intra-coded blocks, i.e., blocks that do not use predictive information from previously restored pictures but can use predictive information from previously restored portions of the current picture. Such predictive information can be provided by the intra-picture predictive unit (452). In some cases, the intra-picture predictive unit (452) generates a block of the same size and shape as the block being restored, using already restored surrounding information fetched from the current picture buffer (458). The current picture buffer (458) buffers, for example, partially restored current pictures and / or fully restored current pictures. The aggregator (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) on a sample-by-sample basis.

[0038] In other cases, the output samples of the scaler / inverse unit (451) may be associated with an intercoded and potentially motion-compensated block. In such cases, the motion-compensated prediction unit (453) can access the reference picture memory (457) to fetch samples to be used for prediction. After motion-compensating the fetched samples according to the symbols (421) associated with the block, these samples can be added to the output of the scaler / inverse unit (451) by the aggregator (455) to generate output sample information (in this case, called residual samples or residual signals). The address in the reference picture memory (457) from which the motion-compensated prediction unit (453) fetches the predicted samples can be controlled by motion vectors available to the motion-compensated prediction unit (453) in the form of symbols (421), which may have X, Y, and reference picture components, for example. Motion compensation may also include interpolation of sample values ​​fetched from the reference picture memory (457) when the exact motion vectors of the subsamples are used, motion vector prediction mechanisms, etc.

[0039] The output samples of the aggregator (455) can undergo various loop filtering techniques in the loop filter unit (456). The video compression technique may include in-loop filtering techniques, which are controlled by parameters contained in the coded video sequence (also called coded video bitstream) and made available to the loop filter unit (456) as symbols (421) from the parser (420), but can also respond to previously restored and loop-filtered sample values, as well as metadata obtained during decoding of earlier parts (in decoding order) of the coded picture or coded video sequence.

[0040] The output of the loop filter unit (456) can be a sample stream that can be output to the rendering device (412) as well as stored in reference picture memory (457) for use in future interpicture prediction.

[0041] A particular coded picture, once fully restored, can be used as a reference picture for future predictions. For example, once the coded picture corresponding to the current picture is fully restored and the coded 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 any unused current picture buffer can be reallocated before starting the restoration of the next coded picture.

[0042] The video decoder (410) can perform decoding operations according to a specified video compression technique within a standard such as ITU-T Rec.H.265. The coded video sequence can conform to the syntax specified by the video compression technique or standard being used, in the sense that the coded video sequence adheres to both the syntax of the video compression technique or standard and the documented profile within the video compression technique. Specifically, a profile can select several tools from all the tools available in the video compression technique or standard as the only tools available for use under that profile. Furthermore, compliance requires that the complexity of the coded video sequence is within the range defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum recovery sample rate (measured, for example, in megasamples per second), maximum reference picture size, etc. The limitations set by the level may, in some cases, be further restricted by the virtual reference decoder (HRD) specification and metadata for HRD buffer management communicated within the coded video sequence.

[0043] 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. The additional data may be used by the video decoder (410) to properly decode the data and / or to more accurately restore the original video data. The additional data may take the form of, for example, extension layers of time, space, or signal-to-noise ratio (SNR), redundant slices, redundant pictures, forward error correction codes, etc.

[0044] 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.

[0045] The video encoder (503) can capture video images encoded by the video encoder (503) and can receive video samples from a video source (501) which is not part of the electronic device (520) in the example in Figure 5. In another example, the video source (501) is part of the electronic device (520).

[0046] The video source (501) can provide a source video sequence encoded by a video encoder (503) in the form of a digital video sample stream, which can be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (501) may be a storage device that stores previously 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 number of separate pictures that convey motion when viewed in sequence. The pictures themselves 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.

[0047] According to one embodiment, the video encoder (503) can encode and compress pictures of a source video sequence into an encoded video sequence (543) in real time or under any other time constraints required by the application. Performing an appropriate coding speed is one function of the controller (550). In some embodiments, the controller (550) controls and is functionally coupled to other functional units, as described below. For simplicity, the couplings are not depicted. Parameters set by the controller (550) may include rate control-related parameters (picture skip, quantizer, lambda value of rate distortion optimization technique, ...), picture size, picture group (GOP) layout, maximum motion vector search range, etc. The controller (550) may be configured to have other appropriate functions related to the video encoder (503) optimized for a particular system design.

[0048] In some embodiments, the video encoder (503) is configured to operate in a coding loop. For the most simplified explanation, in one example, the coding loop may include a source coder (530) (which is involved in creating symbols, such as a symbol stream, based on, for example, an input picture to be coded and a reference picture), as well as a (local) decoder (533) built into the video encoder (503). The decoder (533) deconstructs the symbols to create sample data in a similar manner to how a (remote) decoder also creates (since any compression between the symbols and the coded video bitstream is reversible in the video compression techniques considered in the disclosed subject). The deconstructed sample stream (sample data) is fed into a reference picture memory (534). Since decoding the symbol stream leads to bit-accurate results regardless of the decoder's location (local or remote), the contents in the reference picture memory (534) are also bit-accurate between the local encoder and the remote encoder. In other words, the predictive part of the encoder "sees" the exact same sample values ​​as the reference picture samples that the decoder "sees" when using the predictions during decoding. This fundamental principle of reference picture synchronization (and the resulting drift when synchronization cannot be maintained, for example, due to channel errors) is also used in several related techniques.

[0049] The operation of the “local” decoder (533) may be the same as that of a “remote” decoder, such as the video decoder (410), which has already been described in detail above with reference to Figure 4. However, referring again briefly to Figure 4, since symbols are available and the encoding / decoding of symbols to the encoded video sequence by the entropy coder (545) and parser (420) may be reversible, the entropy decoding portion of the video decoder (410), including the buffer memory (415), and the parser (420) may not be fully implemented in the local decoder (533).

[0050] An observation that can be made at this point is that any decoder techniques other than parsing / entropy decoding present in the decoder must also be present in substantially the same functional form within the corresponding encoder. Therefore, the subject matter disclosed will focus on the operation of the decoder. A description of the encoder techniques can be omitted, as it is the inverse of the comprehensively described decoder techniques. More detailed explanations are necessary only in specific areas and are provided below.

[0051] During operation, in some examples, the source coder (530) can 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 that may be selected as the predictive criterion for the input picture.

[0052] The local video decoder (533) can decode the coded video data of a picture that may be designated as a reference picture based on symbols created by the source coder (530). The operation of the coding engine (532) may, advantageously, be a lossy process. When coded video data can be decoded by a video decoder (not shown in Figure 5), the restored video sequence may typically be a replica of the source video sequence with some errors. The local video decoder (533) can replicate the decoding process that may be performed by the video decoder on the reference picture so that the restored reference picture is stored in the reference picture cache (534). In this way, the video encoder (503) can locally store a copy of the restored reference picture that has common content as the restored reference picture obtained by the far-end video decoder (without transmission errors).

[0053] The predictor (535) can perform a predictive search for the coding engine (532). That is, for a new picture to be coded, the predictor (535) can search the reference picture memory (534) for sample data (as candidate reference pixel blocks) or reference picture motion vectors, block shapes, and other specific metadata that can serve as appropriate predictive criteria for the new picture. The predictor (535) can operate on sample blocks pixel by pixel to find appropriate predictive criteria. In some cases, the input picture may have predictive criteria drawn from multiple reference pictures stored in the reference picture memory (534), as determined by the search results obtained by the predictor (535).

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

[0055] The outputs of all the aforementioned functional units can undergo entropy coding within the entropy coder (545). The entropy coder (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.

[0056] The transmitter (540) can buffer the coded video sequence created by the entropy coder (545) and prepare it for transmission over the communication channel (560), which may be a hardware / software link to a storage device that stores the coded video data. The transmitter (540) can merge the coded video data from the video coder (503) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).

[0057] The controller (550) can manage the operation of the video encoder (503). During coding, the controller (550) can assign a specific coded picture type to each coded picture, which may affect the coding technique that can be applied to each picture. For example, a picture may often be assigned as one of the following picture types:

[0058] An intra-picture (I-picture) can be a picture that can be coded and decoded without using any other pictures in the sequence as a source of prediction. Some video codecs enable various types of intra-pictures, including, for example, Independent Decoder Refresh ("IDR") pictures. Those skilled in the art are familiar with their variations of I-pictures, as well as their respective uses and characteristics.

[0059] A predictive picture (P-picture) can be a picture that can be coded and decoded using intra-prediction or inter-prediction, which uses at most one motion vector and reference index to predict the sample values ​​of each block.

[0060] A bidirectional predictive picture (B-picture) can be a picture that can be coded and decoded using intra-prediction or inter-prediction, which uses at most two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, multiple predictive pictures can use three or more reference pictures and associated metadata to reconstruct a single block.

[0061] A source picture is typically spatially subdivided into multiple sample blocks (for example, blocks of 4x4, 8x8, 4x8, or 16x16 samples each), and each block is coded. Blocks can be predictively coded by referencing other (already coded) blocks, as determined by the coding assignment applied to each picture in the block. For example, blocks in picture I can be coded non-predictively, or they can be coded predictively by referencing already coded blocks in the same picture (spatial prediction or intra-prediction). Pixel blocks in picture P can be coded predictively by referencing one previously coded reference picture, either via spatial prediction or temporal prediction. Blocks in picture B can be coded predictively by referencing one or two previously coded reference pictures, either via spatial prediction or temporal prediction.

[0062] The video encoder (503) can perform coding operations in accordance with a given video coding technique or standard, such as ITU-T Rec.H.265. In this operation, the video encoder (503) can perform various compression operations, including predictive coding operations that utilize temporal and spatial redundancy in the input video sequence. Thus, the coded video data can conform to the syntax specified by the video coding technique or standard being used.

[0063] In one embodiment, the transmitter (540) may transmit additional data along with the encoded video. The source coder (530) may include such data as part of the encoded video sequence. The additional data may include time / space / SNR extension layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, and the like.

[0064] Video may be captured as multiple source pictures (video pictures) in a time series. Intra-picture prediction (often abbreviated as intra-prediction) utilizes spatial correlations within a given picture, while inter-picture prediction utilizes (time or other) correlations between pictures. In one example, a particular picture being encoded / decoded, called the current picture, is divided into blocks. When a block in the current picture is analogous to a reference block in a reference picture that has been previously coded and is still buffered in the video, the block in the current picture can be coded 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.

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

[0066] Furthermore, to improve coding efficiency, merge mode techniques can be used in interpicture prediction.

[0067] According to some embodiments of this disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed in units of blocks. For example, according to the HEVC standard, pictures in a sequence of video pictures are divided into coding tree units (CTUs) for compression, and the CTUs in a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU 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 analyzed to determine the prediction type of the CU, such as inter-prediction type or intra-prediction type. The CU is divided into one or more prediction units (PUs) depending on its temporal and / or spatial predictability. Generally, each PU includes one lumar prediction block (PB) and two chroma PBs. In one embodiment, the prediction operation in coding (encoding / decoding) is performed in units of prediction blocks. Using a lumar prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values ​​(e.g., lumar values) such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.

[0068] 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 a coded picture which is part of a coded video sequence. In one example, the video encoder (603) is used instead of the video encoder (303) in the example of Figure 3.

[0069] In the HEVC example, the video encoder (603) receives a matrix of sample values ​​for a processing block, such as an 8x8 sample prediction block. The video encoder (603) determines whether the processing block is best coded using intra-mode, inter-mode, or bi-prediction mode, for example, using rate-distortion optimization. When the processing block is coded in intra-mode, the video encoder (603) can encode the processing block into a coded picture using the intra-prediction technique, and when the processing block is coded in inter-mode or bi-prediction mode, the video encoder (603) can encode the processing block into a coded picture using the inter-prediction technique or the bi-prediction technique, respectively. In certain video coding techniques, the merge mode may be an inter-picture prediction submode where the motion vectors are derived from one or more motion vector predictors, without the benefit of coded motion vector components outside the predictors. In certain other video coding 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), to determine the mode of the processing block.

[0070] In the example shown in Figure 6, the video encoder (603) includes an interencoder (630), an intraencoder (622), a residual computer (623), a switch (626), a residual encoder (624), a general-purpose controller (621), and an entropy encoder (625), all coupled together as shown in Figure 6.

[0071] 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 the previous and subsequent pictures), generate interprediction information (e.g., a description of redundant information, motion vectors, and merge mode information by the intercoding technique), and compute an interprediction result (e.g., a predicted block) based on the interprediction information using any appropriate technique. In some examples, the reference picture is a decoded reference picture decoded based on encoded video information.

[0072] 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 an already coded block in the same picture, generate quantization coefficients after the transformation, and optionally also generate intra prediction information (e.g., intra prediction direction information using one or more intra coding techniques). In one example, the intra encoder (622) also computes an intra prediction result (e.g., a prediction block) based on the intra prediction information and reference block in the same picture.

[0073] The general-purpose controller (621) is configured to determine general-purpose control data and to control other components of the video encoder (603) based on the general-purpose control data. For example, the general-purpose controller (621) determines the mode of a block and provides control signals to the switch (626) based on the mode. For example, when the mode is intra-mode, the general-purpose controller (621) controls the switch (626) to select intra-mode results for use by the residual computer (623), controls the entropy encoder (625) to select intra-prediction information, and includes the intra-prediction information in the bitstream. When the mode is inter-mode, the general-purpose controller (621) controls the switch (626) to select inter-prediction results for use by the residual computer (623), controls the entropy encoder (625) to select inter-prediction information, and includes the inter-prediction information in the bitstream.

[0074] The residual computer (623) is configured to calculate the difference (residual data) between the receiving block and the prediction result selected from the intra-encoder (622) or inter-encoder (630). The residual encoder (624) is configured to operate on the residual data to encode the residual data and 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 and generate conversion coefficients. The conversion coefficients are then quantized 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 and generate decoded residual data. The decoded residual data can be appropriately used by the intra-encoder (622) and inter-encoder (630). For example, an interencoder (630) can generate a decoded block based on decoded residual data and interprediction information, and an intraencoder (622) can generate a decoded block based on decoded residual data and intraprediction information. The decoded block is appropriately 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.

[0075] 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 an appropriate 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 appropriate information in the bitstream. Note that, according to the disclosed subject, residual information is not present when coding blocks in either inter-mode or bi-prediction mode merge submodes.

[0076] 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 restored picture. In one example, the video decoder (710) is used instead of the video decoder (310) in the example of Figure 3.

[0077] In the example shown in Figure 7, the video decoder (710) includes an entropy decoder (771), an interdecoder (780), a residual decoder (773), a restoration module (774), and an intradecoder (772) coupled together as shown in Figure 7.

[0078] The entropy decoder (771) can be configured to reconstruct from the coded picture specific symbols representing the syntactic elements that make up the coded picture. Such symbols can include, for example, the mode in which the block is coded (e.g., intra-mode, inter-mode, bi-prediction mode, merge sub-mode, or the latter two of another sub-mode), prediction information (e.g., intra-prediction information or inter-prediction information), which can identify specific samples or metadata used for prediction by the intra decoder (772) or inter-decoder (780), and residual information, such as the form of quantization transformation coefficients. For example, when the prediction mode is inter-mode or bi-prediction mode, inter-prediction information is provided to the inter-decoder (780), and when the prediction type is intra-prediction type, intra-prediction information is provided to the intra decoder (772). The residual information can undergo inverse quantization and be provided to the residual decoder (773).

[0079] The interdecoder (780) is configured to receive interprediction information and generate interprediction results based on the interprediction information.

[0080] The intra decoder (772) is configured to receive intra prediction information and generate prediction results based on the intra prediction information.

[0081] The residual decoder (773) is configured to perform inverse quantization to extract inverse quantization conversion coefficients, process these coefficients, and convert the residuals from the frequency domain to the spatial domain. The residual decoder (773) may also require certain control information (to include quantizer parameters (QP)), which may be provided by the entropy decoder (771) (the data path is not depicted as this may only contain a small amount of control information).

[0082] Note that the restoration module (774) combines the residual output by the residual decoder (773) and the prediction results (possibly output by the inter-prediction module or intra-prediction module) in the spatial domain to form a restored block which may be part of the restored picture, and similarly the restored picture may be part of the restored video, and other appropriate operations such as deblocking operations can be performed to improve the appearance.

[0083] It should be noted that the video encoders (303), (503), and (603), as well as the video decoders (310), (410), and (710), can be implemented using any suitable technique. In one embodiment, the video encoders (303), (503), and (603), as well as the video decoders (310), (410), and (710), can be implemented using one or more integrated circuits. In another embodiment, the video encoders (303), (503), and (503), as well as the video decoders (310), (410), and (710), can be implemented using one or more processors that execute software instructions.

[0084] According to some embodiments, the size of the most likely mode (MPM) list is set to equal 6 for both adjacent baselines (e.g., zero baselines) and non-adjacent baselines (e.g., non-zero baselines). The positions of adjacent modes used to derive six MPM candidates may also be the same for adjacent and non-adjacent baselines shown in Figure 8. In Figure 8, Block A and Block B represent the coding units currently adjacent above and to the left of Block 800, and the variables candIntraPredModeA and candIntraPredModeB indicate the relevant intra-prediction modes for Blocks A and B, respectively. The variables candIntraPredModeA and candIntraPredModeB may initially be set to equal INTRA_PLANAR. If Block A (or B) is marked as available, candIntraPredModeA (or candIntraPredModeB) may be set to equal the actual intra-prediction mode for Block A (or B).

[0085] The MPM candidate derivation process may differ for adjacent and non-adjacent baselines. For example, for a zero baseline, if the modes of two adjacent blocks are planar mode or DC mode, default modes are used to construct the MPM list, with the first two candidates being planar mode and DC mode, and the remaining four modes being angular modes (e.g., angular default mode). For a non-zero baseline, if the modes of two adjacent blocks are planar mode or DC mode, six angular default modes may be used to construct the MPM list. One embodiment of the MPM list derivation process is shown in Appendix 1, where candModeList[x], where x=0..5, represents six MPM candidates, and IntraLumaRefLineIdx[xCb][yCb] represents the baseline index of the predicted block, where IntraLumaRefLineIdx[xCb][yCb] can be 0, 1, or 3. In some examples, a unified intra-mode coding technique is implemented where planar mode is placed as the first MPM.

[0086] Block Differential Pulse Code Modulation (BPDCM) is an intracoding tool that uses the Differential Pulse Code Modulation (DPCM) technique at the block level. In some embodiments, the bdpcm_flag is transmitted at the CU level whenever it is a lumane intraCU with 32 or fewer dimensions. This flag indicates whether intracoding or DPCM is being used. This flag may be encoded using a single CABAC context.

[0087] In some embodiments, BDPCM uses a LOCO-I median edge detector (used in JPEG-LS). For a current pixel X having pixel A as the left neighbor, pixel B as the upper neighbor, and C as the upper-left neighbor, the predicted P(X) is: Formula (1): P(X)=min(A,B) if C≧max(A,B) max(A,B) if C≦min(A,B) If A+BC is not the case It may be determined by [the relevant factor].

[0088] The predictor can use the unfiltered reference pixels when predicting from the top row and left column of the CU. The predictor can then use the reconstructed pixels for the remaining CUs. The pixels may be processed in raster scan order within the CU. The prediction error may be quantized in the spatial domain after rescaling in the same manner as the transform skip quantizer. Each pixel may be reconstructed by adding the inversely quantized prediction error to the prediction. Thus, the reconstructed pixels may be used to predict the next pixel in raster scan order. The amplitude and sign of the quantized prediction error may be encoded separately.

[0089] In some embodiments, cbf_bdpcm_flag is coded. If this flag is equal to 0, all amplitudes in a block may be coded as 0. If this flag is equal to 1, all amplitudes in a block may be coded individually in raster scan order. To keep complexity low, in some examples, the amplitudes may be limited to a maximum of 31 (including both ends). The amplitudes may be coded using unary binarization with three contexts for the first bin, then one context for each additional bin up to the twelfth bin, and one context for all remaining bins. The codes may be coded in bypass mode for each zero residual.

[0090] In some embodiments, to maintain the consistency of normal intra-mode prediction, the first mode in the MPM list is associated with a (non-transmitted) block DPCM CU and is available for MPM generation for subsequent blocks. The deblocking filter may be deactivated at the boundary between two BDPCM blocks because neither block typically uses transformation steps that involve blocking artifacts. In some embodiments, the BDPCM uses no steps other than those disclosed herein. For example, the BPDCM uses no transformations whatsoever.

[0091] According to some embodiments, the BDPCM method uses the reconstructed samples to predict rows or columns of a CU line by line. The signaled BDPCM direction may indicate whether vertical or horizontal prediction is used. The reference pixels used may be unfiltered samples. The prediction error may be quantized in the spatial domain. The pixels may be reconstructed by adding the inversely quantized prediction error to the prediction.

[0092] In some embodiments, quantized residual domain BDPCM may be performed as an alternative to BDPCM. The signaling and prediction directions used in quantized residual BDPCM may be the same as those used in BPCM. Intra-prediction may be performed on the entire block by sample copies of the same prediction direction (horizontal or vertical) as the intra-prediction. The residuals may be quantized, and the delta between the quantized residual and the quantized predictor (horizontal or vertical) value of the quantized residual may be coded, which can be illustrated in the embodiments disclosed below.

[0093] For a block with size M (rows) × N (columns), r i,j Let 0≦i≦M-1 and 0≦j≦N-1 be the predicted residuals after performing intra-prediction horizontally (copying the pixel value of the left neighbor across the predicted block line for each line) or vertically (copying the upper neighbor line to each line within the predicted block) using unfiltered samples from the upper or left block boundary samples. i,j ), 0≦i≦M-1, 0≦j≦N-1, residual r i,j The quantized version is shown, and the residual is the difference between the original block value and the predicted block value. Then, BDPCM is applied to the quantized residual sample, and the element

[0094]

number

[0095] Modified M×N array having

[0096]

number

[0097] This is obtained. In some examples, when vertical BDPCM is signaled, Formula (2):

[0098]

number

[0099] That is the case.

[0100] In some examples, a similar rule applies to horizontal prediction, and the residual quantized sample is: Formula (3):

[0101]

number

[0102] It may be obtained by [this method].

[0103] Residual quantization sample

[0104]

number

[0105] This can be sent to the decoder. On the decoder side, in some examples, the above calculation is reversed to get Q(r i,j ), generates 0≦i≦M-1, 0≦j≦N-1. In some embodiments, for vertical prediction, Formula (4):

[0106]

number

[0107] That is the case.

[0108] In some embodiments, in the case of horizontal prediction, Formula (5):

[0109]

number

[0110] That is the case.

[0111] Inverse quantization residual Q -1 (Q(r i,j The predictor may be added to the intrablock predictor to generate the reconstructed sample value. One advantage of this method is that the inverse DPCM may be performed on the fly during the parsing of the coefficients by adding the predictor when the coefficients are parsed, or it may be performed after parsing. Thus, the division into two parallel processing blocks, 4×N blocks and N×4 blocks, can be eliminated.

[0112] In some embodiments, a BDPCM-encoded block is associated with an intra-predictive mode, which is the first MPM (i.e., MPM0). Consequently, when deriving the MPM list, if an adjacent block is coded in BDPCM mode, its associated intra-predictive mode (i.e., MPM0) is used. In addition, when a chroma block is coded using DM mode and a lumen block located at the same location is coded using BDPCM mode, the intra-predictive mode associated with the lumen block located at the same location (i.e., MPM0) is used as the intra-predictive mode for the current chroma block.

[0113] Table 1 (below) shows one embodiment of the syntax and semantics of the BDPCM method.

[0114] [Table 1]

[0115] In some embodiments, a variable bdpcm_flag[x0][y0] equal to 1 specifies that bdpcm_dir_flag is located within a coding unit containing a ruma coding block at position (x0, y0). In some embodiments, a bdpcm_dir_flag[x0][y0] equal to 0 specifies that the prediction direction used in the bdpcm block is horizontal, otherwise the prediction direction is vertical.

[0116] As those skilled in the art will understand, BDPCM contributes to significant coding gain on screen video content, which is typically characterized by strong edges. However, when BDPCM is used with MPM or DM modes, BDPCM coded blocks are always associated with planar modes, which can be detrimental to coding gain on screen video content. Embodiments of this disclosure address these drawbacks.

[0117] The embodiments of this disclosure may be used separately or combined in any order. Furthermore, each of the methods, encoders, and decoders according to the embodiments of this disclosure may be implemented by processing circuits (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored in a non-temporary computer-readable medium. According to embodiments of this disclosure, the term block may be interpreted as a prediction block, a coding block, or a coding unit (i.e., CU).

[0118] According to some embodiments, when bdpcm_dir_flag is equal to 0, horizontal prediction is used for BDPCM residual prediction, and when bdpcm_dir_flag is equal to 1, vertical prediction is used for BDPCM residual prediction. However, in other embodiments, the reverse approach is also applied when the prediction directions of bdpcm_dir_flag equal to 0 and 1 are swapped.

[0119] In some embodiments, the horizontal intra-prediction mode is represented using HOR_IDX, where in VVC, HOR_IDX corresponds to the intra-prediction mode INTRA_ANGULAR18, and in HEVC, HOR_IDX corresponds to the intra-prediction mode INTRA_ANGULAR10. In some embodiments, the vertical intra-prediction mode is represented using VER_IDX, where in VVC, VER_IDX corresponds to the intra-prediction mode INTRA_ANGULAR50, and in HEVC, VER_IDX corresponds to the intra-prediction mode INTRA_ANGULAR26.

[0120] According to some embodiments, when deriving the most likely intra-predictive mode, if an adjacent block is coded by a BDPCM mode, the adjacent block is associated with an intra-predictive mode ipm derived using the value of bdpcm_dir_flag applied to this BDPCM-coded adjacent block, as follows: Formula (6): ipm=bdpcm_dir_flag==0?HOR_IDX:VER_IDX Here, HOR_IDX and VER_IDX represent the horizontal and vertical intra-prediction modes, respectively. A bdpcm_dir_flag equal to 0 indicates that horizontal prediction is used for BDPCM residual prediction, and a bdpcm_dir_flag equal to 1 indicates that vertical prediction is used for BDPCM residual prediction. After a value is assigned to the intra-prediction mode value ipm, this intra-prediction mode value is considered the intra-prediction mode of the adjacent block and is used to derive the most likely intra-prediction mode for the current block.

[0121] Appendix 2 shows one embodiment of the MPM list derivation process, in which the bolded portion shows how the intra-prediction mode for a BDPCM coding block is determined based on bdpcm_dir_flag. Exemplary inputs to this process may include (i) a lumen position (xCb, yCb) specifying the top-left sample of the current lumen coding block relative to the top-left lumen sample of the current picture, (ii) a variable cbWidth specifying the width of the current coding block in the lumen sample, and (iii) a variable cbHeight specifying the height of the current coding block in the lumen sample. In this process of Appendix 2, the lumen intra-prediction mode IntraPredModeY[xCb][yCb] is derived.

[0122] Table 2 specifies the values ​​and associated names of the intraprediction modes IntraPredModeY[xCb][yCb]. In Table 2, in some examples, the intraprediction modes INTRA_LT_CCLM, INTRA_L_CCLM, and INTRA_T_CCLM are applicable only to the chroma component.

[0123] [Table 2]

[0124] According to some embodiments, when deriving the intra-prediction mode of a chroma block while a chroma block located in the same place as the chroma block is coded using BDPCM mode, if the chroma block is predicted using DM mode, the intra-prediction mode used to perform this intra-prediction mode of the chroma block is derived as follows: Formula (7):dm=bdpcm_dir_flag==0?HOR_IDX:VER_IDX Here, HOR_IDX and VER_IDX represent the horizontal and vertical intra-prediction modes, respectively. A bdpcm_dir_flag equal to 0 indicates that horizontal prediction is used for BDPCM residual prediction, and a bdpcm_dir_flag equal to 1 indicates that vertical prediction is used for BDPCM residual prediction. Therefore, after the value dm is assigned, this value is used as the intra-prediction mode for the chroma block.

[0125] According to some embodiments, the context used to entropy code bdpcm_dir_flag depends on the value of bdpcm_dir_flag of the adjacent block, and / or whether the adjacent block is coded by horizontal intra-prediction mode or vertical intra-prediction mode.

[0126] In one embodiment, only the values of bdpcm_dir_flag and bdpcm_flag of adjacent blocks are used to derive the context applied to entropy coding of the bdpcm_dir_flag of the current block. In one example, two adjacent blocks are used (i.e., the left is block A in FIG. 8 and the upper is block B in FIG. 8), and the context value (ctx) is derived as follows. Equation (8): dpcm_left = dpcm_flag left ?(bdpcm_dir_flag left ?1:2):0 Equation (9): dpcm_top = dpcm_flag top ?(bdpcm_dir_flag top ?1:2):0 Equation (10): ctx = dpcm_left * 3 + dpcm_top Here, dpcm_flag left and dpcm_flag top respectively refer to the dpcm_flag of the left and upper adjacent blocks, and bdpcm_dir_flag left and bdpcm_dir_flag top respectively refer to the bdpcm_dir_flag of the left and upper adjacent blocks. After ctx is assigned, this value may be used as an index for selecting one of a plurality of context models.

[0127] In addition to the examples so far, nine contexts may be grouped in a predefined manner, resulting in fewer contexts being applied. For example, ctx = 8 and ctx = 7 in the previous example may be merged, and only one context may be used for both of these ctx values.

[0128] In some embodiments, two adjacent blocks (i.e., left and upper) are used, and the context value (ctx) is derived as follows, where dpcm_flag left and dpcm_flag topThese refer to the dpcm_flag of the adjacent block to the left and above, respectively, and bdpcm_dir_flag left and bdpcm_dir_flag top These refer to the bdpcm_dir_flag of the adjacent block to the left and above, respectively. Equation (11): dpcm_left = dpcm_flag left ?(bdpcm_dir_flag left ?1:2):0 Equation (12): dpcm_top = dpcm_flag top ?(bdpcm_dir_flag top ?1:2):0 Equation (13): ctx=(dpcm_left==dpcm_top)?dpcm_left:0

[0129] Figure 9 shows one embodiment of a process performed by a decoder, such as a video decoder (710). The process may begin with a step (S900) of determining whether a first block associated with a second block is coded in BDPCM mode. In some examples, the first block may be a block that is a spatial neighbor of the second block, located in the same picture as the first block. In other examples, the first block may be a rumor block, and the second block may be a chroma block, with the rumor block located in the same location as the chroma block.

[0130] If the first block is coded in BDPCM mode, the process proceeds from step (S900) to step (S902), where the first block is associated with an intra-prediction mode value based on the BDPCM direction flag. For example, bdpcm_flag may indicate that the block is coded in BDPCM mode, and bdpcm_dir_flag may be used to determine whether to use the horizontal or vertical direction. The process proceeds to step (S904), where the intra-prediction mode value for the second block is determined using the intra-prediction mode value associated with the first block. For example, based on the BDPCM direction flag, the intra-prediction mode value may be one of a horizontal intra-prediction mode value and a vertical intra-prediction mode value. Furthermore, if the first block is a spatial neighbor of the second block, the intra-prediction mode value of the first block may be used to create an MPM list, which is used to derive the intra-prediction mode value of the second block. Furthermore, if the second block is a chroma block predicted using DM mode, and the first block is a ruma block located in the same location, the intra-prediction mode value of the second block may be determined based on the intra-prediction mode value of the first block.

[0131] The process proceeds to step (S906), where the second block is restored using the determined intra-predicted mode value for the second block. The process shown in Figure 9 may terminate after step (S906) is completed. Furthermore, returning to step (S900), if the first block is not coded in BDPCM mode, the process shown in Figure 9 may terminate.

[0132] 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 10 shows a computer system (1000) suitable for implementing some embodiments of the disclosed subject matter.

[0133] Computer software can be coded using any suitable machine language or computer language that can undergo assembly, compilation, linking, or similar mechanisms to create code that contains instructions that can be executed directly or via interpretation, microcode execution, etc., by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc.

[0134] Instructions can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, and Internet of Things devices.

[0135] The components shown in Figure 10 for the computer system (1000) are essentially illustrative and do not imply any limitations on the scope or functionality of computer software implementing embodiments of this 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 (1000).

[0136] The computer system (1000) may include certain human interface input devices. Such human interface input devices can respond to input from one or more human users, for example, via tactile input (such as keystrokes, swipes, or data glove movements), audio input (such as voices or clapping), visual input (such as gestures), or olfactory input (not depicted). The human interface devices can also be used to capture certain media that are not necessarily directly related to conscious human input, such as audio (such as voices, music, or ambient sounds), images (such as scanned images or photographic images taken from a still image camera), or video (such as two-dimensional video or three-dimensional video, including stereoscopic video).

[0137] Input human interface devices may include one or more of the following: keyboard (1001), mouse (1002), trackpad (1003), touchscreen (1010), data glove (not shown), joystick (1005), microphone (1006), scanner (1007), and camera (1008) (only one of each is depicted).

[0138] The computer system (1000) may also include certain 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 via a touchscreen (1010), data glove (not shown), or joystick (1005), although there may also be tactile feedback devices that do not function as input devices), audio output devices (such as speakers (1009), headphones (not depicted)), visual output devices (such as screens (1010), including CRT screens, LCD screens, plasma screens, and OLED screens, each with or without touchscreen input functionality, each with or without tactile feedback functionality, some of which may be capable of outputting two-dimensional visual output or three-dimensional or more output via means such as stereographic output, virtual reality glasses (not depicted), holographic displays, and smoke tanks (not depicted)), and printers (not depicted).

[0139] The computer system (1000) may also include human-accessible storage devices and associated media such as optical media including CD / DVD ROM / RW (1020) having CD / DVD or similar media (1021), thumb drives (1022), removable hard drives or solid-state drives (1023), legacy magnetic media such as tapes and floppy disks (not described), and special ROM / ASIC / PLD-based devices such as security dongles (not described).

[0140] 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 transmission media, carrier waves, or other transient signals.

[0141] The computer system (1000) may also include interfaces to one or more communication networks. These networks may be, for example, wireless, wired, or optical. Networks may further be local, wide-area, metropolitan, vehicle and industrial, real-time, or latency-tolerant. Examples of networks include local area networks such as Ethernet and wireless LANs; cellular networks such as GSM, 3G, 4G, 5G, and LTE; wired or wireless wide-area digital networks for television, including cable TV, satellite TV, and terrestrial broadcast TV; and vehicle and industrial networks such as CANBus. Certain networks typically require external network interface adapters attached to specific general-purpose data ports or peripheral buses (1049) (e.g., USB ports on the computer system (1000)), while other networks are typically integrated into the core of the computer system (1000) by being attached to system buses as described below (e.g., 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 (1000) can communicate with other entities. Such communications can be unidirectional (e.g., broadcast TV), unidirectional (e.g., CANbus to a specific CANbus device), or bidirectional (e.g., with other computer systems using local or wide-area digital networks). Specific protocols and protocol stacks can be used with each of these networks and network interfaces described above.

[0142] The aforementioned human interface device, human-accessible storage device, and network interface can be attached to the core (1040) of the computer system (1000).

[0143] The core (1040) may include one or more specialized programmable processing units, such as one or more central processing units (CPUs) (1041), graphics processing units (GPUs) (1042), field-programmable gate areas (FPGAs) (1043), and hardware accelerators for specific tasks (1044). These devices may be connected via a system bus (1048) along with read-only memory (ROM) (1045), random access memory (1046), and internal mass storage (1047) such as hard drives and SSDs that are not accessible to the internal user. In some computer systems, the system bus (1048) 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 (1048) or via a peripheral bus (1049). Architectures for peripheral buses include PCI, USB, etc.

[0144] The CPU (1041), GPU (1042), FPGA (1043), and accelerator (1044) can, in combination, execute certain instructions that can constitute the aforementioned computer code. This computer code can be stored in ROM (1045) or RAM (1046). Transition data can also be stored in RAM (1046), while persistent data can be stored, for example, in internal mass storage (1047). High-speed storage and retrieval of any of the memory devices can be enabled using cache memory, which can be closely associated with one or more CPUs (1041), GPUs (1042), mass storage (1047), ROM (1045), RAM (1046), etc.

[0145] Computer-readable media may contain computer code for performing various computer implementation 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 persons skilled in computer software technology.

[0146] As an example, and not as an limitation, a computer system (1000) having an architecture, specifically a core (1040), 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 may be user-accessible mass storage as described above, as well as media associated with specific storage of the core (1040) of a non-transient nature, such as core internal mass storage (1047) or ROM (1045). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (1040). The computer-readable media may include one or more memory devices or chips, depending on the specific needs. The software can cause the core (1040), and specifically the processor (including a CPU, GPU, FPGA, etc.) therein, to execute specific processes or specific parts of specific processes described herein, including defining data structures stored in RAM (1046) and modifying such data structures according to processes defined by the software. In addition, or as an alternative, a computer system may provide functionality as a result of logic wired or otherwise embodied within a circuit (e.g., an accelerator (1044)) that can operate in place of or in conjunction with software to perform a particular process or a particular part of a particular process described herein. If necessary, a reference to software may encompass logic, and vice versa. If necessary, a reference to a computer-readable medium may encompass a circuit (such as an integrated circuit (IC)) that stores software for execution, a circuit that embodies logic for execution, or both. This disclosure encompasses any suitable combination of hardware and software.

[0147] While this disclosure describes several exemplary embodiments, there are many variations, substitutions, and alternative equivalents that fall within the scope of this disclosure. Those skilled in the art will therefore understand that numerous systems and methods embodying the principles of this disclosure, and thus falling within its spirit and scope, can be devised, although these are not expressly illustrated or described herein.

[0148] (1) A video decoding method performed in a video decoder, the method comprising: determining whether a first block associated with a second block is coded in block-difference pulse code modulation (BDPCM) mode; in response to the determination that the first block is coded in BDPCM mode, associating the first block with an intra-predictive mode value based on a BDPCM direction flag; determining an intra-predictive mode value for a second block using the intra-predictive mode value associated with the first block; and restoring the second block using the determined intra-predictive mode value.

[0149] (2) The method according to feature (1), wherein the BDPCM direction flag is one of (i) a first value associated with the horizontal intra-predictive direction mode and (ii) a second value associated with the vertical intra-predictive direction mode.

[0150] (3) The method according to feature (2), wherein the total number of intra prediction modes is 67, the horizontal intra prediction direction mode is associated with angle mode 18, and the vertical intra prediction direction mode is associated with angle mode 50.

[0151] (4) The method according to any one of features (1) to (3), wherein the step of determining whether the first block is coded in BDPCM mode is based on the value of a BDPCM flag indicating the presence of a BDPCM direction flag.

[0152] (5) The method according to any one of features (1) to (4), wherein the first block and the second block are included in the same picture, and the first block is spatially adjacent to the second block.

[0153] (6) The method according to feature (5), wherein the step of deriving a candidate list for a second block using a most likely mode (MPM) derivation process further includes the step of determining whether the first block is coded in BDPCM mode, and the step of determining an intra predictive mode value for the second block further includes the step of using the derived candidate list.

[0154] (7) The method according to feature (6), wherein the candidate list includes a first candidate intra-prediction mode value (Mode1) corresponding to the intra-prediction mode value of the first block, and a second candidate intra-prediction mode value (Mode2) and a third candidate intra-prediction mode value (Mode3) determined according to a predetermined offset from the first candidate intra-prediction mode value and modulo M calculation, where M is a power of 2.

[0155] (8) The method according to any one of features (1) to (7), wherein the second block is a chroma block and the first block is a ruma block located in the same place as the chroma block.

[0156] (9) The method according to feature (8), comprising the steps of determining whether the second block is coded in direct copy mode (DM), and determining whether the first block is coded in BDPCM mode in response to the determination that the second block is coded in direct copy mode.

[0157] (10) A video decoder for video decoding, comprising a processing circuit configured to determine whether a first block associated with a second block is coded in block difference pulse code modulation (BDPCM) mode, associate the first block with an intra-predictive mode value based on a BDPCM direction flag in response to determining that the first block is coded in BDPCM mode, determine an intra-predictive mode value for the second block using the intra-predictive mode value associated with the first block, and restore the second block using the determined intra-predictive mode value.

[0158] (11) The video decoder according to feature (10), wherein the BDPCM direction flag is one of (i) a first value associated with the horizontal intra predictive direction mode and (ii) a second value associated with the vertical intra predictive direction mode.

[0159] (12) The video decoder according to feature (11), wherein the total number of intra-prediction modes is 67, the horizontal intra-prediction direction mode is associated with angle mode 18, and the vertical intra-prediction direction mode is associated with angle mode 50.

[0160] (13) A video decoder according to any one of features (10) to (12), wherein the determination of whether the first block is coded in BDPCM mode is based on the value of a BDPCM flag indicating the presence of a BDPCM direction flag.

[0161] (14) A video decoder according to any one of features (10) to (13), wherein the first block and the second block are contained in the same picture, and the first block is spatially adjacent to the second block.

[0162] (15) The video decoder according to feature (14), wherein the processing circuit further comprises deriving a candidate list for a second block using a most likely mode (MPM) derivation process, the derivation of which includes determining whether the first block is coded in BDPCM mode, and determining an intra predictive mode value for the second block further includes using the derived candidate list.

[0163] (16) The video decoder according to feature (15), wherein the candidate list includes a first candidate intra-prediction mode value (Mode1) corresponding to the intra-prediction mode value of the first block, and a second candidate intra-prediction mode value (Mode2) and a third candidate intra-prediction mode value (Mode3) determined according to a predetermined offset from the first candidate intra-prediction mode value and modulo M calculation, where M is a power of 2.

[0164] (17) A video decoder according to any one of feature (10), wherein the second block is a chroma block and the first block is a ruma block located in the same position as the chroma block.

[0165] (18) The video decoder according to feature (17), wherein the processing circuit is further configured to determine whether the second block is coded in direct copy mode (DM), and in response to the determination that the second block is coded in direct copy mode, to determine whether the first block is coded in BDPCM mode.

[0166] (19) A non-temporary computer-readable medium storing instructions causing the video decoder to perform a method, when executed by a processor in the video decoder, that includes the steps of: determining whether a first block associated with a second block is coded in block-differential pulse code modulation (BDPCM) mode; associating the first block with an intra-predictive mode value based on a BDPCM direction flag in response to the determination that the first block is coded in BDPCM mode; determining an intra-predictive mode value for the second block using the intra-predictive mode value associated with the first block; and restoring the second block using the determined intra-predictive mode value.

[0167] (20) The non-temporary computer-readable medium according to feature 19, wherein the BDPCM direction flag is one of (i) a first value associated with the horizontal intra-predictive direction mode and (ii) a second value associated with the vertical intra-predictive direction mode. Appendix 1 -If candIntraPredModeB is equal to candIntraPredModeA and candIntraPredModeA is greater than INTRA_DC, then candModeList[x] for x=0..5 is derived as follows: -If IntraLumaRefLineIdx[xCb][yCb] is equal to 0, the following applies: candModeList[0]=candIntraPredModeA(A1_4) candModeList[1]=INTRA_PLANAR(A1_5) candModeList[2]=INTRA_DC(A1_6) candModeList[3]=2+((candIntraPredModeA+61)%64)(A1_7) candModeList[4]=2+((candIntraPredModeA-1)%64)(A1_8) candModeList[5]=2+((candIntraPredModeA+60)%64)(A1_9) -If not (IntraLumaRefLineIdx[xCb][yCb] is not equal to 0), the following applies: candModeList[0]=candIntraPredModeA(A1_10) candModeList[1]=2+((candIntraPredModeA+61)%64)(A1_11) candModeList[2]=2+((candIntraPredModeA-1)%64)(A1_12) candModeList[3]=2+((candIntraPredModeA+60)%64)(A1_13) candModeList[4]=2+(candIntraPredModeA%64)(A1_14) candModeList[5]=2+((candIntraPredModeA+59)%64)(A1_15) -If not, and candIntraPredModeB is not equal to candIntraPredModeA, and candIntraPredModeA or candIntraPredModeB is greater than INTRA_DC, then the following applies: -The variables minAB and maxAB are derived as follows: minAB=candModeList[(candModeList[0]>candModeList[1])?1:0](A1_16) maxAB=candModeList[(candModeList[0]>candModeList[1])?0:1](A1_17) -If both candIntraPredModeA and candIntraPredModeB are greater than INTRA_DC, candModeList[x] for x=0..5 is derived as follows: candModeList[0]=candIntraPredModeA(A1_18) candModeList[1]=candIntraPredModeB(A1_19) -If IntraLumaRefLineIdx[xCb][yCb] is equal to 0, the following applies: candModeList[2]=INTRA_PLANAR(A1_20) candModeList[3]=INTRA_DC(A1_21) If -maxAB-minAB is in the range of 2 to 62, the following applies: candModeList[4]=2+((maxAB+61)%64)(A1_22) candModeList[5]=2+((maxAB-1)%64)(A1_23) -Otherwise, the following applies: candModeList[4]=2+((maxAB+60)%64)(A1_24) candModeList[5]=2+((maxAB)%64)(A1_25) -If not (IntraLumaRefLineIdx[xCb][yCb] is not equal to 0), the following applies: If -maxAB-minAB is equal to 1, the following applies: candModeList[2]=2+((minAB+61)%64)(A1_26) candModeList[3]=2+((maxAB-1)%64)(A1_27) candModeList[4]=2+((minAB+60)%64)(A1_28) candModeList[5]=2+(maxAB%64)(A1_29) -If not, and maxAB-minAB is equal to 2, then the following applies: candModeList[2]=2+((minAB-1)%64)(A1_30) candModeList[3]=2+((minAB+61)%64)(A1_31) candModeList[4]=2+((maxAB-1)%64)(A1_32) candModeList[5]=2+((minAB+60)%64)(A1_33) -If not, and maxAB-minAB is greater than 61, the following applies: candModeList[2]=2+((minAB-1)%64)(A1_34) candModeList[3]=2+((maxAB+61)%64)(A1_35) candModeList[4]=2+(minAB%64)(A1_36) candModeList[5]=2+((maxAB+60)%64)(A1_37) -Otherwise, the following applies: candModeList[2]=2+((minAB+61)%64)(A1_38) candModeList[3]=2+((minAB-1)%64)(A1_39) candModeList[4]=2+((maxAB+61)%64)(A1_40) candModeList[5]=2+((maxAB-1)%64)(A1_41) -If not (candIntraPredModeA or candIntraPredModeB is greater than INTRA_DC), then candModeList[x] for x=0..5 is derived as follows: -If IntraLumaRefLineIdx[xCb][yCb] is equal to 0, the following applies: candModeList[0]=candIntraPredModeA(A1_42) candModeList[1]=candIntraPredModeB(A1_43) candModeList[2]=1-minAB(A1_44) candModeList[3]=2+((maxAB+61)%64)(A1_45) candModeList[4]=2+((maxAB-1)%64)(A1_46) candModeList[5]=2+((maxAB+60)%64)(A1_47) -If not (IntraLumaRefLineIdx[xCb][yCb] is not equal to 0), the following applies: candModeList[0]=maxAB(A1_48) candModeList[1]=2+((maxAB+61)%64)(A1_49) candModeList[2]=2+((maxAB-1)%64)(A1_50) candModeList[3]=2+((maxAB+60)%64)(A1_51) candModeList[4]=2+(maxAB%64)(A1_52) candModeList[5]=2+((maxAB+59)%64)(A1_53) -Otherwise, the following applies: -If IntraLumaRefLineIdx[xCb][yCb] is equal to 0, the following applies: candModeList[0]=candIntraPredModeA(A1_54) candModeList[1]=(candModeList[0]==INTRA_PLANAR)?INTRA_DC:(A1_55) INTRA_PLANAR candModeList[2]=INTRA_ANGULAR50(A1_56) candModeList[3]=INTRA_ANGULAR18(A1_57) candModeList[4]=INTRA_ANGULAR46(A1_58) candModeList[5]=INTRA_ANGULAR54(A1_59) -If not (IntraLumaRefLineIdx[xCb][yCb] is not equal to 0), the following applies: candModeList[0]=INTRA_ANGULAR50(A1_60) candModeList[1]=INTRA_ANGULAR18(A1_61) candModeList[2]=INTRA_ANGULAR2(A1_62) candModeList[3]=INTRA_ANGULAR34(A1_63) candModeList[4]=INTRA_ANGULAR66(A1_64) candModeList[5]=INTRA_ANGULAR26(A1_65) Appendix 2 IntraPredModeY[xCb][yCb] is derived by the following ordered steps: 1. Adjacent positions (xNbA, yNbA) and (xNbB, yNbB) are set to be equal to (xCb-1, yCb+cbHeight-1) and (xCb+cbWidth-1, yCb-1), respectively. 2. If X is replaced by either A or B, the variable candIntraPredModeX is derived as follows: - The availability derivation process for the block is invoked with inputs (xCb, yCb) equal to position (xCurr, yCurr) and adjacent position (xNbY, yNbY) equal to (xNbX, yNbX), and the output is assigned to availableX. - The candidate intra-prediction mode candIntraPredModeX is derived as follows: -If one or more of the following conditions are true, candIntraPredModeX will be set to equal INTRA_PLANAR. - The variable availableX is equal to FALSE. -CuPredMode[xNbX][yNbX] is not equal to MODE_INTRA, and ciip_flag[xNbX][yNbX] is not equal to 1. -pcm_flag[xNbX][yNbX] is equal to 1. -X is equal to B, and yCb-1 is less than ((yCb >> CtbLog2SizeY) << CtbLog2SizeY). - Otherwise, candIntraPredModeX is set equal to IntraPredModeY[xNbX][yNbX]. 3. The variables ispDefaultMode1 and ispDefaultMode2 are defined as follows. - If IntraSubPartitionsSplitType is equal to ISP_HOR_SPLIT, ispDefaultMode1 is set equal to INTRA_ANGULAR18 and ispDefaultMode2 is set equal to INTRA_ANGULAR5. - Otherwise, ispDefaultMode1 is set equal to INTRA_ANGULAR50 and ispDefaultMode2 is set equal to INTRA_ANGULAR63. 4. candModeList[x] for x = 0..5 is derived as follows. - If candIntraPredModeB is equal to candIntraPredModeA and candIntraPredModeA is greater than INTRA_DC, candModeList[x] for x = 0..5 is derived as follows. - If IntraLumaRefLineIdx[xCb][yCb] is equal to 0 and IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT, the following applies. candModeList[0]=candIntraPredModeA(A2_9) candModeList[1]=INTRA_PLANAR(A2_10) candModeList[2]=INTRA_DC(A2_11) candModeList[3]=2+((candIntraPredModeA+61)%64)(A2_12) candModeList[4]=2+((candIntraPredModeA-1)%64)(A2_13) candModeList[5]=2+((candIntraPredModeA+60)%64)(A2_14) -If not (IntraLumaRefLineIdx[xCb][yCb] is not equal to 0, or IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT), then the following applies: candModeList[0]=candIntraPredModeA(A2_15) candModeList[1]=2+((candIntraPredModeA+61)%64)(A2_16) candModeList[2]=2+((candIntraPredModeA-1)%64)(A2_17) -If any of the following conditions are true, -IntraSubPartitionsSplitType is equal to ISP_HOR_SPLIT, and candIntraPredModeA is less than INTRA_ANGULAR34, -IntraSubPartitionsSplitType is equal to ISP_VER_SPLIT, and candIntraPredModeA is INTRA_ANGULAR34 or greater. -IntraLumaRefLineIdx[xCb][yCb] is equal to 0. The following applies: candModeList[3]=2+((candIntraPredModeA+60)%64)(A2_18) candModeList[4]=2+(candIntraPredModeA%64)(A2_19) candModeList[5]=2+((candIntraPredModeA+59)%64)(A2_20) -Otherwise, the following applies: candModeList[3]=ispDefaultMode1(A2_21) candModeList[4]=ispDefaultMode2(A2_22) candModeList[5]=INTRA_PLANAR(A2_23) - If not, and candIntraPredModeB is not equal to candIntraPredModeA, and candIntraPredModeA or candIntraPredModeB is greater than INTRA_DC, then the following applies: -The variables minAB and maxAB are derived as follows: minAB=Min(candIntraPredModeA, candIntraPredModeB)(A2_24) maxAB=Max(candIntraPredModeA, candIntraPredModeB)(A2_25) -If both candIntraPredModeA and candIntraPredModeB are greater than INTRA_DC, then candModeList[x] where x=0..5 is derived as follows. candModeList[0]=candIntraPredModeA(A2_26) candModeList[1]=candIntraPredModeB(A2_27) -If IntraLumaRefLineIdx[xCb][yCb] is equal to 0 and IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT, the following applies: candModeList[2]=INTRA_PLANAR(A2_28) candModeList[3]=INTRA_DC(A2_29) If -maxAB-minAB is in the range of 2 to 62, the following applies: candModeList[4]=2+((maxAB+61)%64)(A2_30) candModeList[5]=2+((maxAB-1)%64)(A2_31) -Otherwise, the following applies: candModeList[4]=2+((maxAB+60)%64)(A2_32) candModeList[5]=2+((maxAB)%64)(A2_33) -If not (IntraLumaRefLineIdx[xCb][yCb] is not equal to 0, or IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT), then the following applies: -If IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT and abs(candIntraPredModeB-ispDefaultMode1) is less than abs(candIntraPredModeA-ispDefaultMode1), then the following applies: candModeList[0]=candIntraPredModeB(A2_34) candModeList[1]=candIntraPredModeA(A2_35) If -maxAB-minAB is equal to 1, the following applies: candModeList[2]=2+((minAB+61)%64)(A2_36) candModeList[3]=2+((maxAB-1)%64)(A2_37) candModeList[4]=2+((minAB+60)%64)(A2_38) candModeList[5]=2+(maxAB%64)(A2_39) -If not, and maxAB-minAB is equal to 2, then the following applies: candModeList[2]=2+((minAB-1)%64)(A2_40) candModeList[3]=2+((minAB+61)%64)(A2_41) candModeList[4]=2+((maxAB-1)%64)(A2_42) candModeList[5]=2+((minAB+60)%64)(A2_43) -If not, and maxAB-minAB is greater than 61, the following applies: candModeList[2]=2+((minAB-1)%64)(A2_44) candModeList[3]=2+((maxAB+61)%64)(A2_45) candModeList[4]=2+(minAB%64)(A2_46) candModeList[5]=2+((maxAB+60)%64)(A2_47) -Otherwise, the following applies: candModeList[2]=2+((minAB+61)%64)(A2_48) candModeList[3]=2+((minAB-1)%64)(A2_49) candModeList[4]=2+((maxAB+61)%64)(A2_50) candModeList[5]=2+((maxAB-1)%64)(A2_51) -If not (candIntraPredModeA or candIntraPredModeB is greater than INTRA_DC), the candModeList[x] for x=0..5 are derived as follows. -If IntraLumaRefLineIdx[xCb][yCb] is equal to 0 and IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT, the following applies: candModeList[0]=candIntraPredModeA(A2_52) candModeList[1]=candIntraPredModeB(A2_53) candModeList[2]=1-minAB(A2_54) candModeList[3]=2+((maxAB+61)%64)(A2_55) candModeList[4]=2+((maxAB-1)%64)(A2_56) candModeList[5]=2+((maxAB+60)%64)(A2_57) -If not, and IntraLumaRefLineIdx[xCb][yCb] is not equal to 0, then the following applies: candModeList[0]=maxAB(A2_58) candModeList[1]=2+((maxAB+61)%64)(A2_59) candModeList[2]=2+((maxAB-1)%64)(A2_60) candModeList[3]=2+((maxAB+60)%64)(A2_61) candModeList[4]=2+(maxAB%64)(A2_62) candModeList[5]=2+((maxAB+59)%64)(A2_63) -If not (IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT), the following applies: candModeList[0]=INTRA_PLANAR(A2_64) candModeList[1]=maxAB(A2_65) candModeList[2]=2+((maxAB+61)%64)(A2_66) candModeList[3]=2+((maxAB-1)%64)(A2_67) candModeList[4]=2+((maxAB+60)%64)(A2_68) candModeList[5]=2+(maxAB%64)(A2_69) -Otherwise, the following applies: -If IntraLumaRefLineIdx[xCb][yCb] is equal to 0 and IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT, the following applies: candModeList[0]=candIntraPredModeA(A2_70) candModeList[1]=(candModeList[0]==INTRA_PLANAR)?INTRA_DC:(A2_71) INTRA_PLANAR candModeList[2]=INTRA_ANGULAR50(A2_72) candModeList[3]=INTRA_ANGULAR18(A2_73) candModeList[4]=INTRA_ANGULAR46(A2_74) candModeList[5]=INTRA_ANGULAR54(A2_75) -If not, and IntraLumaRefLineIdx[xCb][yCb] is not equal to 0, then the following applies: candModeList[0]=INTRA_ANGULAR50(A2_76) candModeList[1]=INTRA_ANGULAR18(A2_77) candModeList[2]=INTRA_ANGULAR2(A2_78) candModeList[3]=INTRA_ANGULAR34(A2_79) candModeList[4]=INTRA_ANGULAR66(A2_80) candModeList[5]=INTRA_ANGULAR26(A2_81) -If not, and IntraSubPartitionsSplitType is equal to ISP_HOR_SPLIT, then the following applies: candModeList[0]=INTRA_PLANAR(A2_82) candModeList[1]=INTRA_ANGULAR18(A2_83) candModeList[2]=INTRA_ANGULAR25(A2_84) candModeList[3]=INTRA_ANGULAR10(A2_85) candModeList[4]=INTRA_ANGULAR65(A2_86) candModeList[5]=INTRA_ANGULAR50(A2_87) -If not, and IntraSubPartitionsSplitType is equal to ISP_VER_SPLIT, then the following applies: candModeList[0]=INTRA_PLANAR(A2_88) candModeList[1]=INTRA_ANGULAR50(A2_89) candModeList[2]=INTRA_ANGULAR43(A2_90) candModeList[3]=INTRA_ANGULAR60(A2_91) candModeList[4]=INTRA_ANGULAR3(A2_92) candModeList[5]=INTRA_ANGULAR18(A2_93) 5. IntraPredModeY[xCb][yCb] is derived by applying the following procedure. -If bdpcm_flag[xCb][yCb] is equal to 1, IntraPredModeY[xCb][yCb] is set to equal to bdpcm_dir_flag[xCb][yCb]==0?INTRA_ANGULAR18:INTRA_ANGULAR50. - Otherwise, if intra_luma_mpm_flag[xCb][yCb] is equal to 1, then IntraPredModeY[xCb][yCb] is set to equal to candModeList[intra_luma_mpm_idx[xCb][yCb]]. -Otherwise, IntraPredModeY[xCb][yCb] is derived by applying the following ordered steps: 1. For i=0..4 and j=(i+1)..5 ​​for each i, if candModeList[i] is greater than candModeList[j], both values ​​are swapped as follows: (candModeList[i],candModeList[j])=Swap(candModeList[i],candModeList[j])(A2_94) 2. IntraPredModeY[xCb][yCb] is derived by the following ordered steps: i.IntraPredModeY[xCb][yCb] is set to be equal to intra_luma_mpm_remainder[xCb][yCb]. ii. For i equal to 0 to 5, if IntraPredModeY[xCb][yCb] is greater than or equal to candModeList[i], the value of IntraPredModeY[xCb][yCb] is incremented by 1. The variables IntraPredModeY[x][y], where x = xCb..xCb + cbWidth - 1 and y = yCb..yCb + cbHeight - 1, are set to be equal to IntraPredModeY[xCb][yCb]. [Explanation of Symbols]

[0168] 101 Point where the arrows converge 102 Arrow 103 Arrow 104 square blocks 200 Communication Systems 210 Terminal devices 220 terminal devices 230 terminal devices 240 terminal devices 250 Networks 300 Communication Systems 301 Video Sources 302 Video picture stream 303 Video Encoder 304 Video Data 305 Streaming Server 306 Client Subsystem 307 Copy of video data 308 Client Subsystem 309 Copy of video data 310 Video Decoder 311 Video picture output stream 312 displays 313 Capture Subsystem 320 Electronic Devices 330 Electronic Devices 401 Channel 410 Video Decoder 412 rendering devices 415 buffer memory 420 Parser 421 Symbols 430 Electronic Devices 431 Receiver 451 Scaler / Inverse Unit 452 IntraPicture Prediction Units 453 Motion Compensation Prediction Unit 455 Aggregator 456 Loop Filter Unit 457 Reference Picture Memory 458 Current picture buffer 501 Video Sources 503 Video Encoder 520 Electronic Devices 530 Source Coder 532 Coding Engine 533 Local Decoder 534 Reference Picture Memory 535 Predictors 540 Transmitter 543 Video Sequences 545 Entropy Coder 550 Controller 560 Communication Channel 603 Video Encoder 621 General Controller 622 Intra Encoder 623 Residual Calculator 624 Residual Encoder 625 Entropy Encoder 626 Switch 628 Residual Decoder 630 Inter Encoder 710 Video Decoder[[ID=​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​1046 Random Access Memory (RAM) 1047 Internal large-capacity storage 1048 System Bus 1049 Local buses 1050 Graphics Adapter 1054 Network Interface

Claims

1. A video decoding method performed in a video decoder, The steps include receiving a BDPCM flag (bdpcm_flag) from the encoded video bitstream, which indicates whether BDPCM is applied to each position in the current block, If the BDPCM flag is equal to 1, the step of determining whether BDPCM is applied to the position in the current block based on the value of the variable (bdpcm_flag[x][y]) corresponding to each position in the current block, The steps include receiving a BDPCM direction flag from the encoded video bitstream in response to determining that BDPCM is applied to the position in the current block, A step of determining the intra-prediction mode value for each position in the current block based on the BDPCM direction flag, If the value of the variable corresponding to each of the aforementioned positions is equal to 1, then the intra-prediction mode value for each of the aforementioned positions is determined to be 50, indicating that it is in the vertical mode. If the value of the variable corresponding to each of the aforementioned positions is equal to 0, then the intra-prediction mode value is determined to be 18, indicating that it is in horizontal mode. At least one of the variables corresponding to each of the aforementioned positions is equal to the value of the current block position (x0, y0), Steps and The steps include: decoding the current block using the intra-predicted mode value determined above; Methods that include...

2. The method according to claim 1, further comprising the step of restoring and decoding other blocks contained in the same picture and spatially adjacent to the current block.

3. A step of deriving a candidate list for the other blocks using a most likely mode (MPM) derivation process, the step of determining whether a BDPCM is applicable to each of the positions in the current block, It further includes, The step of determining the intra prediction mode value further includes the step of using the derived candidate list. The method according to claim 2.

4. The aforementioned list of candidates A first candidate intra-prediction mode value (Mode1) corresponding to the intra-prediction mode value of the current block, and A second candidate intra-prediction mode value (Mode2) and a third candidate intra-prediction mode value (Mode3) are determined according to a predetermined offset from the first candidate intra-prediction mode value and modulo M calculation. The method according to claim 3, wherein M is a power of 2.

5. The aforementioned current block is a Ruma block, The method according to any one of claims 1 to 3, further comprising the step of decoding a chroma block located in the same location as the ruma block.

6. The steps include determining whether the aforementioned Ruma block is coded in direct copy mode (DM), In response to the determination that the Ruma block is coded in the direct copy mode, the step is to determine whether the BDPCM is applied to the current block at each of the locations. The method according to claim 5, further comprising:

7. The method according to claim 1, wherein the reception of the BDPCM flag is performed when the values ​​of the variables indicating the width and height of the current block are each 32 or less.

8. A video decoder for video decoding, A processing circuit, From the encoded video bitstream, receive the BDPCM flag (bdpcm_flag) which indicates whether BDPCM is applied to each position in the current block, If the BDPCM flag is equal to 1, it is determined that BDPCM is applied to the position in the current block based on the value of the variable (bdpcm_flag[x][y]) corresponding to each position in the current block, In response to determining that BDPCM is applied to the position in the current block, the BDPCM direction flag is received from the encoded video bitstream, Based on the BDPCM direction flag, the intra-predicted mode value for each position (x,y) in the current block is determined, If the value of the variable corresponding to each of the aforementioned positions is equal to 1, the intra-prediction mode value is determined to be 50, indicating that it is the vertical mode. If the value of the variable corresponding to each of the aforementioned positions is equal to 0, then the intra-prediction mode value is determined to be 18, indicating that it is in horizontal mode. At least one of the variables corresponding to each of the aforementioned positions is equal to the value of the current block position (x0, y0), That thing, The current block is decoded using the intra-predicted mode value determined above. A video decoder comprising a processing circuit configured to perform the following.

9. A video encoding method performed in a video encoder, The video bitstream is signaled with a BDPCM flag (bdpcm_flag) indicating whether BDPCM is applied to each position in the current block, If the BDPCM flag is equal to 1, the step of deciding to apply BDPCM to the position in the current block based on the value of the variable (bdpcm_flag[x][y]) corresponding to each position in the current block, In response to the decision to apply BDPCM to the position in the current block, the video bitstream is further signaled with a BDPCM direction flag. A step of determining the intra-prediction mode value for each position in the current block based on the BDPCM direction flag, If the value of the variable corresponding to each of the aforementioned positions is equal to 1, the intra-prediction mode value corresponding to each of the aforementioned positions is determined to be 50, indicating that it is a vertical mode. If the value of the variable corresponding to each of the aforementioned positions is equal to 0, the intra-prediction mode value is determined to be 18, indicating that it is in horizontal mode. At least one of the variables corresponding to each of the aforementioned positions is equal to the value of the current block position (x0, y0), Steps and The steps include: encoding the current block using the determined intra-prediction mode value; Methods that include...

10. A video encoder for video encoding, A processing circuit, The video bitstream is signaled with a BDPCM flag (bdpcm_flag) indicating whether to apply BDPCM to each position in the current block, If the BDPCM flag is equal to 1, it is decided to apply the BDPCM to the position in the current block based on the value of the variable (bdpcm_flag[x][y]) corresponding to each position in the current block, In response to the decision to apply BDPCM to the position in the current block, the video bitstream is further signaled with a BDPCM direction flag. Based on the BDPCM direction flag, the intra-predicted mode value for each position in the current block is determined, If the value of the variable corresponding to each of the aforementioned positions is equal to 1, the intra-prediction mode value corresponding to each of the aforementioned positions is determined to be 50, indicating that it is a vertical mode. If the value of the variable corresponding to each of the aforementioned positions is equal to 0, the intra-prediction mode value is determined to be 18, indicating that it is in horizontal mode. At least one of the variables corresponding to each of the aforementioned positions is equal to the value of the current block position (x0, y0), That thing, The current block is encoded using the intra-predicted mode value determined above. A video encoder comprising a processing circuit configured to perform the following.

11. A video encoding method performed in a video encoder, The video bitstream is signaled with a BDPCM flag (bdpcm_flag) indicating whether BDPCM is applied to each position in the current block, If the BDPCM flag is equal to 1, the step of deciding to apply BDPCM to the position in the current block based on the value of the variable (bdpcm_flag[x][y]) corresponding to each position in the current block, In response to the decision to apply BDPCM to the position in the current block, the video bitstream is further signaled with a BDPCM direction flag. A step of determining the intra-prediction mode value for each position in the current block based on the BDPCM direction flag, If the value of the variable corresponding to each of the aforementioned positions is equal to 1, the intra-prediction mode value corresponding to each of the aforementioned positions is determined to be 50, indicating that it is a vertical mode. If the value of the variable corresponding to each of the aforementioned positions is equal to 0, the intra-prediction mode value is determined to be 18, indicating that it is in horizontal mode. At least one of the variables corresponding to each of the aforementioned positions is equal to the value of the current block position (x0, y0), Steps and The steps include: encoding the current block using the determined intra-prediction mode value; The steps include transmitting the encoded bitstream and Methods that include...

12. A video encoding method performed in a video encoder, The video bitstream is signaled with a BDPCM flag (bdpcm_flag) indicating whether BDPCM is applied to each position in the current block, If the BDPCM flag is equal to 1, the step of deciding to apply BDPCM to the position in the current block based on the value of the variable (bdpcm_flag[x][y]) corresponding to each position in the current block, In response to the decision to apply BDPCM to the position in the current block, the video bitstream is further signaled with a BDPCM direction flag. A step of determining the intra-prediction mode value for each position in the current block based on the BDPCM direction flag, If the value of the variable corresponding to each of the aforementioned positions is equal to 1, the intra-prediction mode value corresponding to each of the aforementioned positions is determined to be 50, indicating that it is a vertical mode. If the value of the variable corresponding to each of the aforementioned positions is equal to 0, the intra-prediction mode value is determined to be 18, indicating that it is in horizontal mode. At least one of the variables corresponding to each of the aforementioned positions is equal to the value of the current block position (x0, y0), Steps and The steps include: encoding the current block using the determined intra-prediction mode value; The steps include storing the encoded bitstream in a storage medium and Methods that include...