Improvement of MPM list construction
The MPM list construction method optimizes video decoding by determining probable intra modes from neighbor blocks, addressing inefficiencies in existing intra-prediction methods and enhancing compression efficiency.
Patent Information
- Application Number
- KR1020237021184
- Authority / Receiving Office
- KR · KR
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-09-14
- Filing Date
- 2022-09-16
- Publication Date
- 2026-11-03
- Estimated Expiration
- 2042-09-16
AI Technical Summary
Existing video coding technologies face inefficiencies in intra-prediction due to the use of less likely directions requiring more bits, leading to suboptimal compression ratios and increased data requirements.
A method and apparatus for video decoding that constructs a list of Most Probable Modes (MPM) by analyzing neighbor blocks within the same Coding Tree Unit (CTU) to determine the most probable intra modes for a current block, using a sequence of conditions to populate the MPM list.
Enhances video coding efficiency by reducing the number of bits required to represent less likely intra-prediction directions, thereby improving compression ratios and reducing data volume.
Smart Images

Figure R1020237021184_ABST
Abstract
Description
Technology Field
[0001] Integration by reference
[0002] The present application claims the benefit of priority to U.S. Provisional Application No. 63 / 253,976, "Method and Apparatus for Constructing Most Probable Mode (MPM) List," filed October 8, 2021, and the benefit of priority to U.S. Patent Application No. 17 / 944,999, "IMPROVEMENT ON MPM LIST CONSTRUCTION," filed September 14, 2022. The disclosures of these prior applications are incorporated into the present application by reference in their entirety.
[0003] The present disclosure describes embodiments generally related to video coding. Background Technology
[0004] The background description provided in this specification is generally intended to provide the context of the present disclosure. Within the scope of the works described in this background section, the works of the currently named inventors and aspects of the description that may not be recognized as prior art at the time of filing are not recognized as prior art of the present disclosure, either expressly or impliedly.
[0005] Video coding and decoding are performed using inter-picture prediction along with motion compensation. Uncompressed digital video may contain a series of pictures, each having a spatial dimension of, for example, 1920×1080 luminance samples (also called luminance samples) and associated chrominance samples (also called chroma samples). The series of pictures may have, for example, 60 pictures per second or a fixed or variable picture rate of 60 Hz (informally known as the frame rate). Uncompressed video has specific bitrate requirements. For example, 1080p60 4:2:0 video with 8 bits per sample (1920×1080 luminance sample resolution at a 60 Hz frame rate) requires a bandwidth close to 1.5 Gbit / s. One hour of such video requires more than 600 GB of storage space.
[0006] One objective 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 and / or storage requirements by more than double orders of magnitude in some cases. Both lossless compression and lossy compression, as well as combinations thereof, can be used. Lossless compression refers to a technique that can reconstruct an exact copy of the original signal from the compressed original signal. When using lossy compression, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signals is small enough to make the reconstructed signal useful for the intended application. For video, lossy compression is widely employed. The amount of acceptable distortion varies depending on the application. For example, users of certain consumer streaming applications may tolerate higher distortion than users of movie or television distribution applications. The achievable compression ratio may reflect the following: the higher the acceptable / tolerated distortion, the higher the compression ratio can be.
[0007] Video encoders and decoders can utilize techniques from a wide range of categories, including, for example, motion compensation, transform, quantization, and entropy coding.
[0008] Video codec technology may include a technique known as intra coding. In intra coding, sample values are represented without reference to samples of a previously reconstructed reference picture or other data. In some video codecs, a picture is spatially subdivided into blocks of samples. If all blocks of samples are coded in intra mode, the picture may be an intra picture. Derivations such as the intra picture and the independent decoder refresh picture can be used to reset the decoder state and thus serve as the first picture of the coded video bitstream and video session, or as a still image. Samples from an intra block can be derived for a transform, and the transform coefficients can be quantized before entropy coding. Intra prediction may be a technique that minimizes sample values in the pre-transform domain. In some cases, the smaller the DC value after conversion and the smaller the AC coefficient, the fewer bits are required at a given quantization step size to represent the block after entropy coding.
[0009] For example, conventional intra-coding, such as that known from MPEG-2 generative coding techniques, does not use intra-prediction. However, some newer video compression techniques include techniques that attempt to utilize metadata and / or surrounding sample data acquired during the encoding and / or decoding of spatially adjacent and decoder-order preceding data blocks, for example. These techniques will be referred to as "intra-prediction" techniques. Note that, at least in some cases, intra-prediction uses only reference data from the current picture being reconstructed, rather than from the reference picture.
[0010] There may be many different forms of intra-prediction. If one or more of these techniques are available in a given video coding technique, the technique in use can be coded in an 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. Which codeword is used for a given combination of mode, submode, and / or parameter can affect the coding efficiency gain through intra-prediction, and thus can also affect the entropy coding technique used to convert the codeword into a bitstream.
[0011] Intra prediction in specific modes was introduced with H.264, improved in H.265, and further enhanced in newer coding techniques such as the joint exploration model (JEM), versatile video coding (VVC), and benchmark set (BMS). A predictor block can be formed using neighbor sample values belonging to already available samples. Sample values from neighbor samples can be copied to the predictor block based on direction. References to the direction in use can be encoded in the bitstream or predicted itself.
[0012] Referring to FIG. 1, a subset of the nine known predictor directions out of the 33 possible predictor directions of H.265 (corresponding to the 33 angle modes of the 35 intra modes) is shown in the lower right. The point where the arrows converge (101) indicates the predicted sample. The arrows indicate the direction in which the sample is being predicted. For example, arrow (102) indicates that the sample (101) is predicted to the upper right at a 45-degree angle in the horizontal direction from the sample or samples. Likewise, arrow (103) indicates that the sample (101) is predicted to the lower left of the sample (101) at a 22.5-degree angle in the horizontal direction from the sample or samples.
[0013] Referring still to FIG. 1, a square block (104) of 4×4 samples (indicated by a bold dashed line) is shown in the upper left corner. The square block (104) contains 16 samples, each labeled "S", a position in the Y dimension (e.g., row index) and a position in the X dimension (e.g., column index). For example, sample S21 is the second sample in the Y dimension (from the top) and the first sample in the X dimension (from the left). Likewise, sample S44 is the fourth sample of the block (104) in both the Y and X dimensions. Since the block is 4×4 samples in size, S44 is located in the lower right corner. Additional reference samples following a similar numbering scheme are shown. The reference samples are labeled R, a Y position (e.g., row index) and an X position (column index) relative to the block (104). In both H.264 and H.265, the predicted sample is adjacent to the block being rebuilt, so there is no need to use negative values.
[0014] Intra-picture prediction can be performed by copying a reference sample value from an appropriate neighbor sample by the signaled prediction direction. For example, assume that the coded video bitstream includes signaling indicating a prediction direction corresponding to the arrow (102) for this block. That is, samples are predicted at a 45-degree angle in the horizontal direction toward the upper right of the prediction sample or samples. In this case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Then, sample S44 is predicted from reference sample R08.
[0015] In some cases, to calculate reference samples, especially when the direction cannot be divided equally into 45 degrees, the values of multiple reference samples may be combined through interpolation, for example.
[0016] The number of possible directions has increased as video coding technology has advanced. In H.264 (2003), nine different directions could be represented. In H.265 (2013), this increased to 33, and at the time of its release, JEM / VVC / BMS could support up to 65 directions. Experiments were conducted to identify the most likely direction, and specific techniques in entropy coding use such the most likely direction to encode it with a small number of bits, accepting a certain penalty for less likely directions. Additionally, the direction itself can sometimes be predicted from the neighboring direction used in a neighboring block that has already been decoded.
[0017] FIG. 2 illustrates a schematic diagram (201) showing 65 intra-predicted directions according to JEM to explain the number of predicted directions increasing over time.
[0018] The mapping of intra-predicted direction bits within a coded video stream representing direction can vary depending on the video coding technique, ranging from, for example, simple direct mapping of predicted directions to complex adaptive methods involving intra-predicted modes, codewords, and most likely modes, as well as similar techniques. However, in all cases, there may be specific directions within the video content that are statistically less likely to occur than other specific directions. Since the goal of video compression is to reduce redundancy, in a well-designed video coding technique, less likely directions may be represented by a larger number of bits than more likely directions.
[0019] The aspects of the present disclosure provide a method and apparatus for video encoding / decoding. In some examples, the apparatus for video decoding includes a processing circuit.
[0020] According to one aspect of the present disclosure, a video decoding method performed in a video decoder is provided.
[0021] In the above video decoding method, coded information of a current block and a neighbor block of the current block can be received from a coded video bitstream. The neighbor block may include a first block and a second block. Each of the first blocks may be adjacent to one of the top side, above-left corner, and above-right corner of the current block. Each of the second blocks may be adjacent to one of the left and bottom-left corners of the current block. It may be determined whether one or more first blocks of the neighbor block and the current block are in the same coding tree unit (CTU). Based on the fact that one or more first blocks of the neighbor block and the current block are in the same CTU, each intra mode associated with each of the one or more first blocks may be added to a list of most probable modes (MPM) for the current block based on a sequence of conditions. The sequence of conditions may correspond to the order in which each intra mode is determined to be added to the MPM list. Each intra mode associated with each of the second blocks of the neighboring blocks can be added to the MPM list based on the sequence of conditions. The current block can be reconstructed based on the MPM list.
[0022] In some embodiments, based on the fact that the height of the current block is greater than or equal to the width of the current block, the intra mode of the top block among the one or more first blocks may be added to the MPM list according to a second condition in the sequence of conditions. The top block may be adjacent to the top side of the current block. The second condition may include that the top block is intra-coded. According to a fourth condition in the sequence of conditions, the propagated intra mode of the top block among the one or more first blocks may be added to the MPM list. The fourth condition may include that the top block is inter-coded. The propagated intra mode of the top block may be obtained based on the neighbor blocks of the top block.
[0023] In some embodiments, according to a tenth condition in the sequence of conditions, the propagated intra mode of the upper right block among the one or more first blocks may be added to the MPM list. The upper right block is adjacent to the upper right corner of the current block. The tenth condition may include that the upper right block is intercoded. The propagated intra mode of the upper right block may be obtained based on the neighbor blocks of the upper right block. According to an eleventh condition in the sequence of conditions, the propagated intra mode of the upper left block among the one or more first blocks may be added to the MPM list. The upper left block may be adjacent to the upper left corner of the current block. The eleventh condition may include that the upper left block is intercoded. The propagated intra mode of the upper left block may be obtained based on the neighbor blocks of the upper left block.
[0024] In some embodiments, based on the fact that the height of the current block is greater than or equal to the width of the current block, the intra mode of the left block among the second blocks may be added to the MPM list according to a third condition in the sequence of conditions. The left block may be adjacent to the left of the current block. The third condition may include that the left block among the second blocks is intra-coded.
[0025] In some embodiments, in response to the height of the current block being smaller than the width of the current block, the propagated intra mode of the top block among the one or more first blocks may be added to the MPM list according to a fifth condition in the sequence of conditions. The fifth condition may include that the top block is intercoded. The propagated intra mode of the top block may be obtained based on the neighbor blocks of the top block.
[0026] In some embodiments, a condition in the sequence of conditions in which a propagated intra mode of one of the neighboring blocks is added to the MPM list may follow a condition in the sequence of conditions in which an intra mode of one of the neighboring blocks is added to the MPM list.
[0027] In some embodiments, in response to the height of the current block being greater than or equal to the width of the current block, the intra mode of the top block among the one or more first blocks may be added to the MPM list according to a second condition in the sequence of conditions. The second condition may include that the top block is intra-coded. According to a third condition in the sequence of conditions, the propagated intra mode of the top block among the one or more first blocks may be added to the MPM list. The third condition may include that the top block is inter-coded. The propagated intra mode of the top block may be obtained based on the neighbor blocks of the top block.
[0028] In some embodiments, according to an eighth condition in the sequence of conditions, the intra mode of the upper right block among the one or more first blocks may be added to the MPM list, and the eighth condition may include that the upper right block is intra-coded. According to a ninth condition in the sequence of conditions, the propagated intra mode of the upper right block among the one or more first blocks may be added to the MPM list, and the ninth condition may include that the upper right block is inter-coded. The propagated intra mode of the upper right block may be obtained based on the neighbor blocks of the upper right block. According to a tenth condition in the sequence of conditions, the intra mode of the upper left block among the one or more first blocks may be added to the MPM list, and the tenth condition may include that the upper left block is intra-coded. According to the eleventh condition in the sequence of the above conditions, the propagated intra mode of the upper-left block among the one or more first blocks may be added to the MPM list, and the eleventh condition may include that the upper-left block is intercoded. The propagated intra mode of the upper-left block may be obtained based on the neighbor blocks of the upper-left block.
[0029] In some embodiments, in response to the height of the current block being greater than or equal to the width of the current block, the intra mode of the left block of the second block may be added to the MPM list according to a fourth condition in the sequence of conditions, and the fourth condition may include that the left block of the second block is intra-coded. According to a fifth condition in the sequence of conditions, the propagated intra mode of the left block of the second block may be added to the MPM list, and the fifth condition may include that the left block of the second block is inter-coded. The propagated intra mode of the left block may be obtained based on the neighbor blocks of the left block.
[0030] In some embodiments, according to a sixth condition in the sequence of conditions, the intra mode of the bottom-left block of the second block may be added to the MPM list, and the sixth condition may include that the bottom-left block of the second block is intra-coded. According to a seventh condition in the sequence of conditions, the propagated intra mode of the bottom-left block of the second block may be added to the MPM list, and the seventh condition may include that the bottom-left block of the second block is inter-coded. The propagated intra mode of the bottom-left block may be obtained based on the neighboring block of the bottom-left block. The bottom-left block may be adjacent to the bottom-left corner of the current block.
[0031] According to another aspect of the present disclosure, a video decoding method performed in a video decoder is provided. In the video decoding method, coded information of a current block and a neighbor block of the current block may be received from a coded video bitstream. The neighbor block may include a first block and a second block. Each of the first blocks may be adjacent to one of the top side, the top-left corner, and the top-right corner of the current block. Each of the second blocks may be adjacent to one of the left and bottom-left corners of the current block. Each corresponding position may be determined in each of the neighbor blocks. A corresponding intra mode of the neighbor block may be determined based on the corresponding position and a universal intra mode map. The universal intra mode map may include a plurality of units, and each of the corresponding positions may be associated with each unit of the universal intra mode map and may correspond to each corresponding intra mode associated with each unit. A list of most probable modes (MPM) for the current block may be generated based on the corresponding intra modes of the neighbor blocks and a sequence of conditions. The sequence of the above conditions may indicate the order in which each of the above intra modes is added to the MPM list. Based on the MPM list, the current block may be reconstructed.
[0032] In some embodiments, in response to the height of the current block being greater than or equal to the width of the current block, a corresponding intra mode of the upper block among the first blocks may be added to the MPM list according to a second condition in the sequence of conditions, the second condition may include that the upper block exists. The upper block may be adjacent to the uppermost side of the current block. A corresponding intra mode of the left block among the second blocks may be added to the MPM list according to a third condition in the sequence of conditions, the third condition may include that the left block exists. The left block may be adjacent to the left side of the current block.
[0033] In some embodiments, in response to the height of the current block being smaller than the width of the current block, a corresponding intra mode of the left block among the second blocks may be added to the MPM list according to a second condition in the sequence of conditions, and the second condition may include that the left block exists. A corresponding intra mode of the top block among the first blocks may be added to the MPM list according to a third condition in the sequence of conditions, and the third condition may indicate that the top block exists.
[0034] In some embodiments, according to a sixth condition in the sequence of conditions, the corresponding intra mode of the lower-left block among the second blocks may be added to the MPM list, and the sixth condition may include that the lower-left block exists. The lower-left block may be adjacent to the lower-left corner of the current block.
[0035] According to the seventh condition in the sequence of conditions above, the intra mode corresponding to the upper right block among the first blocks may be added to the MPM list, and the seventh condition may include that the upper right block exists. The upper right block may be adjacent to the upper right corner of the current block. According to the eighth condition in the sequence of conditions above, the intra mode corresponding to the upper left block among the first blocks may be added to the MPM list, and the eighth condition may include that the upper left block exists. The upper left block may be adjacent to the upper left corner of the current block.
[0036] In one embodiment, each of the plurality of units of the universal intra-mode map may be initialized to a default intra-mode, and one or more of the default intra-modes of the universal intra-mode map may be replaced with the corresponding intra-mode.
[0037] In another embodiment, one or more of the plurality of units of the universal intra-mode map may be filled with the corresponding intra-mode, and the remaining units of the plurality of units of the universal intra-mode map may be filled with the default intra-mode.
[0038] According to another aspect of the present disclosure, an apparatus is provided. The apparatus includes a processing circuit. The processing circuit may be configured to perform any one of the video decoding methods described above.
[0039] The aspects of the present disclosure also provide a computer-readable non-transient medium storing instructions, wherein when the instructions are executed by a computer for video decoding, the computer causes the computer to perform any one of the decoding methods described above. Brief explanation of the drawing
[0040] Additional features, nature, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. Figure 1 is a schematic diagram of an exemplary subset of intra-prediction modes. Figure 2 is an example of an exemplary intra-prediction direction. FIG. 3 is a schematic diagram of a simplified block diagram of a communication system (300) according to one embodiment. FIG. 4 is a schematic diagram of a simplified block diagram of a communication system (400) according to one embodiment. FIG. 5 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment. FIG. 6 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment. FIG. 7 illustrates a block diagram of an encoder according to another embodiment. FIG. 8 illustrates a block diagram of a decoder according to another embodiment. FIG. 9 illustrates neighboring coding units of the current coding unit in intra-mode coding according to some embodiments of the present invention. FIG. 10a is a first exemplary universal intramode map according to some embodiment of the present invention. FIG. 10b is a second exemplary universal intramode map according to some embodiment of the present invention. FIG. 11a is a first exemplary example of constructing a list of most likely modes (MPM) according to some embodiments of the present invention. FIG. 11b is a second exemplary example of constructing a list of most likely modes (MPM) according to some embodiments of the present invention. FIG. 12 illustrates a flowchart schematically illustrating a first exemplary decoding process according to some embodiments of the present disclosure. FIG. 13 illustrates a flowchart schematically illustrating a second exemplary decoding process according to some embodiments of the present invention. FIG. 14 illustrates a flowchart schematically illustrating a first exemplary encoding process according to some embodiments of the present disclosure. FIG. 15 illustrates a flowchart schematically illustrating a second exemplary encoding process according to some embodiments of the present disclosure. FIG. 16 is a schematic diagram of a computer system according to one embodiment. Specific details for implementing the invention
[0041] FIG. 3 illustrates a simplified block diagram of a communication system (300) according to one embodiment of the present disclosure. The communication system (300) includes a plurality of terminal devices capable of communicating with each other, for example, through a network (350). For example, the communication system (300) includes a first pair of terminal devices (310, 320) interconnected through the network (350). In the example of FIG. 3, the first pair of terminal devices (310, 320) performs unidirectional transmission of data. For example, the terminal device (310) may encode video data (e.g., a stream of video pictures captured by the terminal device (310)) for transmission to another terminal device (320) through the network (350). The encoded video data may be transmitted in the form of one or more coded video bitstreams. The terminal device (320) receives coded video data from the network (350), decodes the coded video data to restore a video picture, and can display the video picture according to the restored video data. Unidirectional data transmission may be common in media serving applications, etc.
[0042] In another example, the communication system (300) includes a second pair of terminal devices (330, 340) that perform bidirectional transmission of coded video data, which may occur, for example, during a picture conference. For bidirectional transmission of data, in one example, each terminal device of the pair of terminal devices (330, 340) may code video data (e.g., a stream of video pictures captured by the terminal device) for transmission to another terminal device of the pair of terminal devices (330, 340) via a network (350). Each terminal device of the pair of terminal devices (330, 340) may also receive coded video data transmitted by another terminal device of the pair of terminal devices (330, 340), decode the coded video data to restore the video, and display the video picture on an accessible display device according to the restored video data.
[0043] In the example of FIG. 3, the terminal devices (310, 320, 330, 340) may be exemplified as servers, personal computers, and smartphones, but the principles of the present disclosure may not be limited to such. Embodiments of the present disclosure find applications with laptop computers, tablet computers, media players, and / or dedicated picture conferencing equipment. The network (350) represents any number of networks that transmit coded video data between terminal devices (310, 320, 330, 340), including, for example, wired and / or wireless communication networks. The communication network (350) may exchange data over circuit-switched and / or packet-switched channels. Representative networks include communication networks, local area networks, wide area networks, and / or the Internet. For the purposes of this discussion, the architecture and topology of the network (350) may not be important to the operation of the present disclosure unless described below.
[0044] FIG. 4 illustrates the placement of a video encoder and a video decoder in a streaming environment as an example of an application to the disclosed subject. The disclosed subject may be similarly applied to other video enabled applications, such as, for example, picture conferencing, digital TV, CD, DVD, memory stick, etc., and storage of compressed video on digital media.
[0045] A streaming system may include a capture subsystem (413) which may include, for example, a digital camera, a video source (401) that generates a stream (402) of uncompressed video pictures. In one example, the stream (402) of video pictures includes samples captured by a digital camera. The stream (402) of video pictures, indicated by a bold line to emphasize a high data volume compared to encoded video data (404) (or encoded video bitstream), may be processed by an electronic device (420) comprising a video encoder (403) coupled to the video source (401). The video encoder (403) may include hardware, software, or a combination thereof capable of enabling or implementing aspects of the disclosed subject matter as described in more detail below. Encoded video data (404) (or encoded video bitstream (404)), indicated by a thin line to emphasize a lower data volume compared to the stream (402) of the video picture, may be stored in a streaming server (405) for later use. One or more streaming client subsystems, such as the client subsystems (406, 408) in FIG. 4, may access the streaming server (405) to retrieve copies (407, 409) of the encoded video data (404). The client subsystem (406) may include a video decoder (410) in, for example, an electronic device (430). The video decoder (410) decodes an incoming copy (407) of the encoded video data and generates an outgoing stream of a video picture (411) that can be rendered on a display (412) (e.g., a display screen) or another rendering device (not shown). In some streaming systems, encoded video data (404, 407, 409) (e.g., video bitstream) may be encoded according to a specific video coding / compression standard.Examples of such standards include ITU-T Recommendation H.265. For instance, a video coding standard under development is informally known as VVC (Versatile Video Coding). The disclosed topics may be used in the context of VVC.
[0046] Note that the electronic devices (420, 430) may include other components (not shown). For example, the electronic device (420) may include a video decoder (not shown), and the electronic device (430) may also include a video encoder (not shown).
[0047] FIG. 5 illustrates a block diagram of a video decoder (510) according to one embodiment of the present disclosure. The video decoder (510) may be included in an electronic device (530). The electronic device (530) may include a receiver (531) (e.g., a receiving circuit). The video decoder (510) may be used instead of the video decoder (410) in the example of FIG. 4.
[0048] A receiver (531) may receive one or more coded video sequences to be decoded by a video decoder (510); in the same or other embodiments, one coded video sequence may be received at a time, wherein the decoding of each coded video sequence is independent of other coded video sequences. The coded video sequences may be received from a channel (501) which may be a hardware / software link to a storage device that stores the encoded video data. The receiver (531) may receive the encoded video data along with other data, e.g., coded audio data and / or auxiliary data streams, which may be forwarded to each of them using an entity (not shown). The receiver (531) may separate the coded video sequences from the other data. To prevent network jitter, a buffer memory (515) may be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter "parser (520)"). In certain applications, the buffer memory (515) is part of the video decoder (510). In other applications, it may be outside the video decoder (510) (not shown). In yet another application, the buffer memory (not shown) may be outside the video decoder (510), for example, to prevent network jitter, and additional buffer memory (515) may be inside the video decoder (510), for example, to handle playout timing. When the receiver (531) is receiving data from a storage / forwarding device or an isosynchronous network that has sufficient bandwidth and controllability, the buffer memory (515) may not be needed or may be small.For use in a best-effort packet network such as the Internet, a buffer memory (515) may be required, may be relatively large, and an adaptive size may be advantageous, and may be implemented at least partially in a similar element (not shown) outside of the operating system or video decoder (510).
[0049] The video decoder (510) may include a parser (520) to reconstruct symbols (521) from a coded video sequence. Categories of these symbols include information used to manage the operation of the video decoder (510) and potential information for controlling a rendering device, such as a render device (512) (e.g., a display screen) that can be coupled to the electronic device (530) rather than being an integrated part of the electronic device (530), as illustrated in FIG. 5. The control information for the rendering device(s) may be in the form of a Supplemental Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (520) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may be in accordance with video coding techniques or standards and may follow various principles including variable-length coding, Huffman coding, and arithmetic coding with or without context sensitivity. The parser (520) may extract a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder from the coded video sequence based on at least one parameter corresponding to that group. The subgroup may include a Group of Picture (GOP), picture, tile, slice, macroblock, coding unit (CU), block, transform unit (TU), prediction unit (PU), etc. The parser (520) may also extract from the coded video sequence information, such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0050] The parser (520) can generate symbols (521) by performing entropy decoding / parsing operations on a video sequence received from the buffer memory (515).
[0051] The reconstruction of the symbol (521) may be associated with a number of different units depending on the type of the coded video picture or a part thereof (e.g., inter- and intra-pictures, inter- and intra-blocks) and other factors. The associated units and how they are associated may be controlled by subgroup control information parsed from the coded video sequence by the parser (520). The flow of such subgroup control information between the parser (520) and the number of units below it is not shown for simplicity.
[0052] Beyond the previously mentioned functional blocks, the video decoder (510) can be conceptually subdivided into a number of functional units as described below. In actual implementations operating under commercial constraints, many of these units interact closely with one another and may be integrated with one another, at least partially. However, to clearly illustrate the subject of disclosure, the conceptual subdivision into the functional units below is appropriate.
[0053] The first unit is a scaler / inverse transform unit (551). The scaler / inverse transform unit (551) receives quantized transform coefficients as well as control information including the inverse transform to be used, block size, quantization factor, quantization scaling matrix, etc., which are symbol(s) (521) from the parser (520). The scaler / inverse transform unit (551) can output a block containing sample values that can be input to an aggregator (555).
[0054] In some cases, the output sample of the scaler / inverse transform (551) may be related to an intra-coded block. That is, the intra-coded block is a block that does not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed part of the current picture. This prediction information may be provided by an intra-picture prediction unit (552). In some cases, the intra-picture prediction unit (552) uses already reconstructed surrounding information drawn from the current picture buffer (558) to generate a block of the same size and shape as the block being reconstructed. The current picture buffer (558) buffers, for example, a partially reconstructed current picture and / or a fully reconstructed current picture. The aggregator (555) may, in some cases, add the prediction information generated by the intra-prediction unit (552) to the output sample information provided by the scaler / inverse transform unit (551) on a sample basis.
[0055] In other cases, the output samples of the scaler / inverse unit (551) may be intercoded and potentially associated with a motion-compensated block. In such cases, the motion compensation prediction unit (553) may access the reference picture memory (557) to retrieve samples used for inter-picture prediction. After motion-compensating the retrieved samples according to the symbol (521) associated with the block, these samples may be added to the output of the scaler / inverse unit (551) (which may be referred to as residual samples or residual signals in this case) by the aggregator (555) to generate output sample information. The address in the reference picture memory (557) from which the motion compensation prediction unit (553) retrieves the prediction samples may be controlled by a motion vector and may be used by the motion compensation prediction unit (553) in the form of a symbol (521) that may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values drawn from reference picture memory (557) when the accurate motion vector of a subsample is used, motion vector prediction mechanism, etc.
[0056] The output sample of the aggregator (555) may be subject to various loop filtering techniques in the loop filter unit (556). Video compression techniques may include in-loop filter techniques that are controlled by parameters included in the coded video sequence (also referred to as the coded video bitstream) and made available to the loop filter unit (556) as symbols (521) from the parser (520), but may also respond to meta-information obtained while decoding a previous (in decoding order) part of the coded picture or coded video sequence, as well as respond to previously reconstructed and loop-filtered sample values.
[0057] The output of the loop filter unit (556) may be a sample stream that can be output to the render device (512) and stored in the reference picture memory (557) for use in future inter-picture prediction.
[0058] Once a specific coded picture has been completely reconstructed, it can be used as a reference picture for later prediction. For example, when a coded picture corresponding to the current picture is completely reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (520)), the current picture buffer (558) can become part of the reference picture memory (557), and the new current picture buffer can be reallocated before starting the reconstruction of the next coded picture.
[0059] A video decoder (510) can perform decoding operations according to a predetermined video compression technique in a standard, such as ITU-T Rec. H.265. The coded video sequence may follow the syntax specified by the video compression technique or standard used in that it complies with both the syntax of the video compression technique or standard and the profile documented in the video compression technique. Specifically, the profile may select a specific tool as the only tool available in that profile among all tools available in the video compression technique or standard. Additionally, for compliance, the complexity of the coded video sequence must be 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 reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further limited by HRD specifications and metadata for managing the virtual reference decoder (HRD) buffer signaled in the coded video sequence.
[0060] In one embodiment, the receiver (531) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence(s). The additional data may be used by the video decoder (510) to properly decode the data and / or more accurately reconstruct the original video data. The additional data may be in the form of, for example, a time layer, a spatial layer or an SNR enhancement layer, a redundant slice, a redundant picture, a forward error correction code, etc.
[0061] FIG. 6 illustrates an exemplary block diagram of a video encoder (603) according to one embodiment of the present disclosure. The video encoder (603) is included in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmitting circuit). The video encoder (603) may be used instead of the video encoder (403) in the example of FIG. 4.
[0062] The video encoder (603) can receive video samples from a video source (601) (which is not part of the electronic device (620) in the example of FIG. 6) capable of capturing video image(s) to be encoded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).
[0063] A video source (601) may provide a source video sequence to be coded by a video encoder (603) in the form of a digital video sample stream, which may have any appropriate bit depth (e.g., 8-bit, 10-bit, 12-bit,…), any color space (e.g., BT.601 Y CrCb, RGB,…), and any appropriate sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source (601) may be a storage device capable of storing a pre-prepared video. In a video conferencing system, the video source (601) may be a camera that captures local image information as a video sequence. The video data may be provided as a plurality of individual pictures that impart motion when viewed sequentially. The picture itself may consist of a spatial array of pixels, wherein each pixel may contain one or more samples depending on the sampling structure, color space, etc. being used. A person skilled in the art will easily understand the relationship between pixels and samples. The following description focuses on the sample.
[0064] According to one embodiment, the video encoder (603) can code and compress pictures of a source video sequence into a coded video sequence (643) in real time or under any other time constraint required by the application. Enforcing an appropriate coding rate is one function of the controller (650). In some embodiments, the controller (650) controls other function units and is functionally coupled to other function units as described below. For clarity, the coupling is not shown. Parameters set by the controller (650) 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 (650) may be configured to have other appropriate functions related to the video encoder (603) optimized for a specific system design.
[0065] In some embodiments, the video encoder (603) is configured to operate in a coding loop. For the sake of oversimplification, in one example, the coding loop may include a source coder (630) (e.g., responsible for generating symbol and reference picture(s), such as a symbol stream, based on the input picture to be coded), and a (local) decoder (633) built into the video encoder (603). The decoder (633) reconstructs the symbols to generate sample data in a manner similar to how the (remote) decoder would have also generated them (since all compression between the symbols and the coded video bitstream is lossless in the video compression techniques considered in the disclosed subject). The reconstructed sample stream (sample data) is input into the reference picture memory (634). Since the decoding of the symbol stream leads to a bit-exact result regardless of the decoder location (local or remote), the contents of the reference picture memory (634) are also bit-exact between the local encoder and the remote encoder. In other words, the prediction part of the encoder "recognizes" as reference picture samples exactly the same sample values that the decoder "sees" when using prediction during decoding. This basic principle of reference picture synchronicity (and resulting drift, for example, when synchronicity cannot be maintained due to channel error) is also used in some related technologies.
[0066] The operation of the “local” decoder (633) may be the same as the operation of the “remote” decoder, such as the video decoder (510), which has already been described in detail in relation to FIG. 5. Referring briefly back to FIG. 5, since the encoding / decoding of the symbols into a video sequence coded by the entropy coder (645) and the parser (420) may be lossless, the entropy decoding part of the video decoder (510), including the buffer memory (515) and the parser (520), may not be entirely implemented in the encoder of the local decoder (633).
[0067] What can be observed at this point is that, with the exception of parsing / entropy decoding present in the decoder, all decoder techniques must also exist in the corresponding encoder in substantially the same functional form. For this reason, the disclosed subject focuses on decoder operations. Therefore, the description of encoder techniques may be omitted as it is the opposite of the comprehensively described decoder techniques. Only in specific sections is a more detailed explanation required and is provided below.
[0068] During operation, in some examples, the source coder (630) may perform motion-compensated predictive coding to predictively code an input picture by referencing one or more previously coded pictures from a video sequence designated as a "reference picture." In this way, the coding engine (632) codes the difference between a pixel block of the input picture and a pixel block of the reference picture(s) that can be selected as predictive reference(s) for the input picture.
[0069] The local video decoder (633) can decode the coded video data of a picture that can be designated as a reference picture based on the symbols generated by the source coder (630). The operation of the coding engine (632) may advantageously be a lossy process. When the coded video data can be decoded by a video decoder (not shown in FIG. 6), the reconstructed video sequence may generally be a replica of the source video sequence with some errors. The local video decoder (633) can replicate the decoding process that can be performed by the video decoder on the reference picture and allow the reconstructed reference picture to be stored in the reference picture cache (634). In this way, the video encoder (603) can locally store a copy of the reconstructed reference picture having common content as the reconstructed reference picture to be acquired by the far-end video decoder (no transmission errors).
[0070] The predictor (635) can perform a predictive search for the coding engine (632). That is, for a new picture to be coded, the predictor (635) can search the reference picture memory (634) for sample data (which is a candidate reference pixel block) that can serve as a suitable predictive reference for the new picture, or for specific metadata such as a reference picture motion vector, block shape, etc. The predictor (635) can operate on a sample block-by-pixel block basis to find a suitable predictive reference. In some cases, as determined by the search results obtained by the predictor (635), the input picture may have a predictive reference drawn from a number of reference pictures stored in the reference picture memory (634).
[0071] The controller (650) can manage the coding operation of the source coder (630), including the settings of parameters and subgroup parameters used to encode video data, for example.
[0072] The output of all the aforementioned function units may be subject to entropy coding in the entropy coder (645). The entropy coder (645) converts the symbols generated by the various function units into a coded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable-length coding, and arithmetic coding.
[0073] The transmitter (640) may buffer the coded video sequence(s) generated by the entropy coder (645) and prepare for transmission through a communication channel (660), which may be a hardware / software link to a storage device for storing the encoded video data. The transmitter (640) may merge the coded video data from the video coder (603) with other data to be transmitted, e.g., coded audio data and / or an auxiliary data stream (source not shown).
[0074] The controller (650) can manage the operation of the video encoder (603). During coding, the controller (650) can assign a specific coded picture type to each coded picture, which can affect the coding technique that can be applied to each picture. For example, a picture can often be designated as one of the following picture types:
[0075] An Intra Picture (I Picture) may be one that can be coded and decoded without using any other picture within the sequence as a prediction source. Some video codecs allow different types of Intra Pictures, including, for example, Independent Decoder Refresh Picture ("IDR"). Those skilled in the art are aware of these variations of I Pictures and their respective applications and characteristics.
[0076] The predictive picture (P picture) may 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.
[0077] A bidirectionally predictive picture (B-picture) may be coded and decoded using intra-prediction or inter-prediction, which utilize up to two motion vectors and reference indices to predict sample values for each block. Similarly, a multiple-predictive picture may use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0078] A source picture is typically subdivided spatially into multiple sample blocks (e.g., 4×4, 8×8, 4×8, or 16×16 sample blocks) and can be coded block by block. 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 non-predictively coded or predictively coded by referencing already coded blocks (spatial prediction or intra prediction) of the same picture. Pixel blocks in picture P can be predictively coded via spatial prediction or temporal prediction by referencing one previously coded reference picture. Blocks in picture B can be predictively coded via spatial prediction or temporal prediction by referencing one or two previously coded reference pictures.
[0079] The video encoder (603) may perform coding operations according to a predetermined video coding technique or standard, such as ITU-T Rec. H.265. In such operations, the video encoder (603) may perform various compression operations, including predictive coding operations that utilize temporal and spatial redundancy in the input video sequence. Thus, the coded video data may follow the syntax specified by the video coding technique or standard used.
[0080] In one embodiment, the transmitter (640) may transmit additional data along with the encoded video. The source coder (630) may include this data as part of the encoded video sequence. The additional data may include other forms of redundant data such as time / space / SNR enhancement layers, redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.
[0081] Video can be captured as a temporal sequence of multiple source pictures (video pictures). Intra-picture prediction (often abbreviated as intra prediction) utilizes spatial correlations within a given picture, while inter-picture prediction utilizes (temporal or other) correlations between pictures. For example, a specific picture currently being encoded / decoded, referred to as the current picture, can be partitioned into blocks. If a block within the current picture is similar to a reference block in a reference picture that was previously encoded and is still buffered in the video, the block within the current picture can be encoded by a vector referred to as a motion vector. The motion vector points to the reference block within the reference picture and, if multiple reference pictures are in use, may have three dimensions that identify the reference picture.
[0082] In some embodiments, a bi-prediction technique may be used for inter-picture 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 precede the current picture in the decoding order in the video (but which may be past or future in the display order, respectively). A block of the current picture may be coded by a first motion vector pointing to a first reference block of the first reference picture and a second motion vector pointing to a second reference block of the second reference picture. A block may be predicted by a combination of the first reference block and the second reference block.
[0083] In addition, coding efficiency can be improved by using merge mode technology in inter-picture prediction.
[0084] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed in blocks. For example, according to the HEVC standard, pictures in a sequence of video pictures are partitioned into coding tree units (CTUs) for compression, and CTUs within a picture may have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. Generally, a CTU may include a coding tree block (CTB) consisting of one luminance CTB and two chroma CTBs. Each CTU may be repeatedly divided into one or more coding units (CUs) using a quadtree. For example, a 64×64 pixel CTU may be divided into one 64×64 pixel CU, four 32×32 pixel CUs, or sixteen 16×16 pixel CUs. In one example, each CU may be analyzed to determine a prediction type for the CU, such as an inter-prediction type or an intra-prediction type. A CU may be divided into one or more prediction units (PUs) based on temporal and / or spatial predictability. Typically, each PU includes a luminal prediction block (PB) and two chroma PBs. In one embodiment, the prediction operation in coding (encoding / decoding) is performed on a unit of prediction blocks. If a luminal prediction block is used as an example of a prediction block, the prediction block includes a matrix of values (e.g., luminal values) for pixels, such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, etc.
[0085] FIG. 7 illustrates a drawing of a video encoder (703) according to another embodiment of the present disclosure. The video encoder (703) is configured to receive a processing block (e.g., a prediction block) of sample values within the current video picture in a sequence of video pictures and to encode the processing block into a coded picture that is part of a coded video sequence. In one example, the video encoder (703) may be used instead of the video encoder (403) in the example of FIG. 4.
[0086] In the example of HEVC, the video encoder (703) receives a matrix of sample values for a processing block, such as a prediction block of 8×8 samples. The video encoder (703) determines whether the processing block is best coded using an intra-mode, inter-mode, or positive-prediction mode, for example, using rate-distortion optimization. If it is determined that the processing block is coded in intra-mode, the video encoder (703) may use an intra-prediction technique to encode the processing block into a coded picture; if it is determined that the processing block is coded in inter-mode or positive-prediction mode, the video encoder (703) may use an inter-prediction or positive-prediction technique, respectively, to encode the processing block into a coded picture. In a particular video coding technique, the merge mode may be a submode of inter-picture prediction in which motion vectors are derived from one or more motion vector predictors without the benefit of the coded motion vector components outside the predictor. In certain other video coding techniques, there may be motion vector components applicable to a subject block. For example, the video encoder (703) may include components such as a mode determination module (not shown) for determining the prediction mode of a processing block.
[0087] In the example of FIG. 7, the video encoder (703) includes an inter-encoder (730), an intra-encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a general controller (721), and an entropy encoder (725) combined together as shown in FIG. 7.
[0088] The inter-encoder (730) is configured to receive a sample of the current block (e.g., processing block), compare the block with one or more reference blocks within a reference picture (e.g., blocks within a previous picture and a subsequent picture), generate inter-predicted information (e.g., description of redundant information according to inter-encoding techniques, motion vectors, merge mode information), and calculate an inter-predicted result (e.g., predicted block) based on the inter-predicted information using any suitable technique. In some examples, the reference picture is a decoded reference picture that is decoded based on encoded video information.
[0089] The intra-encoder (722) is configured to receive a sample of the current block (e.g., processing block), compare the block with a block already coded in the same picture, and generate quantized coefficients after conversion, and, in some cases, also intra-prediction information (e.g., intra-prediction direction information according to one or more intra-encoding techniques). In one example, the intra-encoder (722) also calculates an intra-prediction result (e.g., predicted block) based on the intra-prediction information and reference block of the same picture.
[0090] A general controller (721) is configured to determine general control data and to control other components of the video encoder (703) based on the general control data. In one example, the general controller (721) determines the mode of the block and provides a control signal to the switch (726) based on the mode. For example, if the mode is an intra mode, the general controller (721) controls the switch (726) to select an intra mode result for use in the residual calculator (723) and controls the entropy encoder (725) to select intra prediction information and include the intra prediction information in the bit stream; if the mode is an inter mode, the general controller (721) controls the switch (726) to select an inter prediction result for use in the residual calculator (723) and controls the entropy encoder (725) to select inter prediction information and include the inter prediction information in the bit stream.
[0091] The residual calculator (723) is configured to calculate the difference (residual data) between the received block and the prediction result selected from the intra-encoder (722) or the inter-encoder (730). The residual encoder (724) is configured to operate based on the residual data to encode the residual data and generate transformation coefficients. In one example, the residual encoder (724) is configured to convert the residual data from the spatial domain to the frequency domain and generate transformation coefficients. The transformation coefficients then undergo quantization processing to obtain quantized transformation coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse transformation and generate decoded residual data. The decoded residual data can be appropriately used by the intra-encoder (722) and the inter-encoder (730). For example, the inter encoder (730) can generate a decoded block based on decoded residual data and inter prediction information, and the intra encoder (722) can generate a decoded block based on decoded residual data and intra prediction information. The decoded block is appropriately processed to generate a decoded picture, and the decoded picture can be buffered in a memory circuit (not shown) and, in some examples, used as a reference picture.
[0092] The entropy encoder (725) is configured to format the bitstream to include the encoded block. The entropy encoder (725) is configured to include various information according to an appropriate standard, such as the HEVC standard. In one example, the entropy encoder (725) 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. According to the subject matter disclosed, it is noted that when coding a block in an inter-mode or a merged submode of both-prediction modes, there may be no residual information.
[0093] FIG. 8 illustrates a drawing of a video decoder (810) according to another embodiment of the present disclosure. The video decoder (810) is configured to receive a coded picture that is part of a coded video sequence and to decode the coded picture to generate a reconstructed picture. In one example, the video decoder (810) may be used instead of the video decoder (410) in the example of FIG. 4.
[0094] In the example of FIG. 8, the video decoder (810) includes an entropy decoder (871), an inter decoder (880), a residual decoder (873), a reconstruction module (874), and an intra decoder (872) combined together as illustrated in FIG. 8.
[0095] The entropy decoder (871) may be configured to reconstruct, from the coded picture, specific symbols representing the syntax elements constituting the coded picture. These symbols may include, for example, prediction information (e.g., intra prediction information or inter prediction information) capable of identifying specific samples or metadata used for prediction by the mode in which the block is coded (e.g., intra mode, inter mode, positive prediction mode, the latter being merge submode or other submodes), the intra decoder (872), or the inter decoder (880), respectively, residual information, such as quantized transformation coefficients. In one example, if the prediction mode is an inter mode or positive prediction mode, the inter prediction information is provided to the inter decoder (880); if the prediction type is an intra prediction type, the intra prediction information is provided to the intra decoder (872). The residual information may be inversely quantized and provided to the residual decoder (873).
[0096] The inter decoder (880) is configured to receive inter prediction information and generate an inter prediction result based on the inter prediction information.
[0097] The intra decoder (872) is configured to receive intra prediction information and generate a prediction result based on the intra prediction information.
[0098] The residual decoder (873) is configured to perform inverse quantization to extract inverse quantized transform coefficients and process the inverse quantized transform coefficients to convert the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require specific control information (to include quantizer parameters (QP)), and that information may be provided by the entropy decoder (871) (the data path is not shown as it may contain only a small amount of control information).
[0099] The reconstruction module (874) is configured to form a reconstructed block in the spatial domain by combining the residual output by the residual decoder (873) and the prediction result (output by the inter-prediction module or intra-prediction module, depending on the case), and the reconstructed block may be part of a reconstructed picture, and the reconstructed picture may consequently be part of a reconstructed video. Note that other appropriate actions, such as deblocking, may be performed to improve visual quality.
[0100] It should be noted that the video encoder (403, 603, 703) and video decoder (410, 510, 810) may be implemented using any suitable technology. In one embodiment, the video encoder (403, 603, 703) and video decoder (410, 510, 810) may be implemented using one or more integrated circuits. In another embodiment, the video encoder (403, 603, 703) and video decoder (410, 510, 810) may be implemented using one or more processors that execute software instructions.
[0101] The present disclosure includes improvements to the construction of the most likely mode (MPM) list.
[0102] The ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) released the H.265 / HEVC (High Efficiency Video Coding) standard in 2013 (Version 1), 2014 (Version 2), 2015 (Version 3), and 2016 (Version 4). In 2015, these two standards organizations jointly formed the Joint Video Exploration Team (JVET) to explore the possibility of developing a next-generation video coding standard beyond HEVC. In April 2018, the JVET officially launched the standardization process for next-generation video coding beyond HEVC. This new standard was named VVC (Versatile Video Coding), and the JVET was renamed the Joint Video Expert Team. In July 2020, H.266 / VVC Version 1 was finalized. In January 2021, an ad hoc group was established to investigate enhanced compression beyond VVC capabilities.
[0103] To form an MPM list, in one example, a general MPM list having 22 entries may be constructed first. The first six entries of the general MPM list may be included in the PMPM (Primary MPM) list, and the remaining entries may form the SMPM (Secondary MPM) list. The first entry of the general MPM list may be a planar mode. The remaining entries of the general MPM list may include (i) an intra mode of the left (left, L), above (a), below-left (BL), above-right (AR), and above-left (AL) neighbor blocks, (ii) a directional mode with an added offset from the first two available directional modes of the neighbor blocks, and (iii) a default mode. The locations of the L, A, BL, AR, and AL neighbor blocks may be those shown in FIG. 9.
[0104] If the height of the CU block (e.g., (902) in Fig. 9) is not smaller than the width of the CU block, the order of neighboring blocks may be A, L, BL, AR, AL; otherwise, the order of neighboring blocks may be L, A, BL, AR, and AL. The order of MPM entries may be important because entry indices can be coded in truncated binary. The latter in truncated binary may require more bits in the code.
[0105] If neighboring blocks AL, A, and AR are in a different CTU than the coding tree unit (CTU) of the current CU (e.g., (902)), neighboring blocks AL, A, and AR may be considered unavailable due to the limitations of the line buffer. Consequently, the intra mode of the unavailable neighboring CU may not be inserted into the MPM list.
[0106] Propagated intramodes can also be applied to construct the MPM list. For example, in VVC, if a neighboring CU is an intercoded CU, the intramode of that neighboring CU can be considered as a flat mode and inserted into the MPM list.
[0107] The intra modes of an intra-coded CU can be stored in memory in units of 4×4 pixel samples. In the case of an intra-coded CU to which decoder-side intra mode derivation (DIMD) is applied, the intra mode derived from the decoder side can be stored in memory based on the DIMD that occurs most frequently in the histogram of gradients (HoG). In the case of an intra-coded CU to which template-based intra mode derivation (TIMD) is applied, the intra mode derived from the decoder side with the smallest Sum of Absolute Transformed Difference (SATD) cost can be stored. In the case of an intra-coded CU to which block-based delta pulse code modulation (BDPCM) is applied, the signaled BDPCM direction can be stored. For intra-coded CUs to which matrix-based intra prediction (MIP) or template matching prediction (TMP) is applied, a plane mode may be stored. For other intra-coded CUs, an intra mode derived from an MPM list or a non-MPM list may be stored.
[0108] To improve the accuracy of the MPM list, when neighboring blocks are intercoded, the propagated intra prediction mode can be derived using motion vectors and reference pictures. In the case of an intercoded CU, the intra mode can be propagated from the reference region to the intercoded CU.
[0109] In some embodiments, such as ECM 2.0, a general MPM list may contain one or more entries (or intramodes). The order of the general MPM list may be represented as follows according to a sequence of conditions. The sequence of conditions indicates the order in which entries are added to the general MPM list. If a condition is not satisfied, the intramode associated with that condition may not be inserted into the general MPM list. A pruning check may be performed to remove any duplicates before inserting each entry.
[0110] 1. Plane
[0111] 2. If the current height of the CU is not less than the width, A exists, and A is an intra, then A. If the current height of the CU is less than the width, L exists, and L is an intra, then L.
[0112] 3. If the current CU's height is not less than its width, L exists, L is an intra, and L is in the same CTU, then L. If the current CU's height is less than its width, A exists, A is an intra, and A is in the same CTU, then A.
[0113] 4. If the current CU height is not less than the width, A exists, and A is inter, then the propagated intra mode of A. If the current CU height is less than the width, L exists, and L is inter, then the propagated intra mode of L.
[0114] 5. If the current CU height is not less than the width, L exists, and L is inter, then the propagated intra mode of L. If the current CU height is less than the width, A exists, and A is inter, then the propagated intra mode of A.
[0115] 6. If BL exists and BL is Intra, then BL.
[0116] 7. If AR exists, AR is intra, and AR is in the same CTU, then AR.
[0117] 8. If AL exists, AL is intra, and AL is in the same CTU, then AL.
[0118] 9. If BL exists and BL is inter, the propagated intra mode of BL.
[0119] 10. If AR exists and AR is inter, the propagated intra mode of AR.
[0120] 11. If AL exists and AL is inter, the propagated intra mode of AL.
[0121] One or more additional conditions may be provided as a sequence of conditions. However, one or more of the conditions for generating an entry in the MPM list may be incorrect. For example, the condition for the CTU boundary check may be incorrect. If A is in a different CTU from the current block, A should be considered unavailable. However, in some cases, A may be considered available and inserted into the MPM list. Furthermore, due to the unavailability of some neighboring blocks, the intra-mode of available neighboring blocks may not be fully utilized. Consequently, coding efficiency is reduced.
[0122] In some embodiments of the present disclosure, the CTU boundaries of a specific neighboring CU may always be checked. Checking CTU boundaries may help, for example, alleviate the burden on the line buffer. In one embodiment, the CTU boundaries of a top neighbor (or adjacent) CU (e.g., top (A), top-left (AL), and / or top-right (AR)) may be checked regardless of whether the top neighbor CU is intra-coded or inter-coded. Checking CTU boundaries may check whether the neighboring CU is in a different CTU from the current CTU (e.g., the CTU of the current block). If the top neighbor CU is in a different CTU from the current CU, the intra-mode or propagated intra-mode of the top neighbor CU may not be inserted into the MPM list.
[0123] The order in which intra modes are added to a general MPM list may be based on a sequence of conditions. In one embodiment, an exemplary order of adding intra modes of neighboring CUs to a general MPM list for the current block may be as follows. Neighboring CUs may be those shown in FIG. 9, for example. Neighboring CUs may include a top (A) block adjacent to the top side of the current block (e.g., (902)), a left top (AL) block adjacent to the left top corner of the current block, a right top (AR) block adjacent to the right top corner of the current block, a left (L) block adjacent to the left side of the current block, and a left bottom (BL) block adjacent to the left bottom corner of the current block.
[0124] 1. Plane
[0125] 2. If the current CU's height is not less than its width, A exists, A is an intra, and A is in the same CTU, then A. If the current CU's height is less than its width, L exists, and L is an intra, then L.
[0126] 3. If the current CU's height is not less than its width, L exists, and L is an intra, then L. If the current CU's height is less than its width, A exists, A is an intra, and A is in the same CTU, then A.
[0127] 4. If the current CU height is not less than the width, A exists, A is inter, and A is in the same CTU, then A's propagated intra mode. If the current CU height is less than the width, L exists, and L is inter, then L's propagated intra mode.
[0128] 5. If the current CU height is not less than the width, L exists, and L is inter, then L's propagated intra mode. If the current CU height is less than the width, A exists, A is inter, and A is in the same CTU, then A's propagated intra mode.
[0129] 6. If BL exists and BL is Intra, then BL.
[0130] 7. If AR exists, AR is intra, and AR is in the same CTU, then AR.
[0131] 8. If AL exists, AL is intra, and AL is in the same CTU, then AL.
[0132] 9. If BL exists and BL is inter, the propagated intra mode of BL.
[0133] 10. If AR exists, AR is inter, and AR is in the same CTU, the propagated intra mode of AR.
[0134] 11. If AL exists, AL is inter, and AL is in the same CTU, the propagated intra mode of AL.
[0135] As shown in the order above, the intramodes of neighboring CUs may be sequentially added to the general MPM list of the current CU based on a sequence of conditions. The sequence of conditions above indicates an exemplary relative order of conditions to other conditions in the sequence. In other embodiments, one or more additional conditions may be provided in the sequence.
[0136] If certain conditions are not met, the intramode (or propagated intramode) associated with that condition may not be inserted into the general MPM list. A pruning check may be performed to remove redundancy before inserting the intramode of a neighboring CU. Additionally, a CTU boundary check may be required in the sequence of conditions. If the top neighboring CU (e.g., A, AR, and / or AL) and the current CU are not in the same CTU, the intramode or propagated intramode of the top neighboring CU may not be inserted into the MPM list. It should be noted that in certain embodiments, a CTU boundary check may not be required for the left neighboring CU (e.g., L or BL).
[0137] Depending on the sequence of conditions, if neighboring CUs are intercoded, the propagated intra mode of the neighboring CU can be added to the general MPM list. The propagated intra mode can be obtained based on the intra mode of the neighboring CU's adjacent CU.
[0138] Referring to the sequence, a flat mode may be added first to the general MPM list according to the sequence of conditions. Additionally, a second condition may be checked in the sequence of conditions. If the second condition is satisfied, the intra mode associated with the second condition may be added to the general MPM list of the current block. For example, if the height of the current block is greater than or equal to the width of the current block, the top neighbor block is available, the top neighbor block is intra-coded, and the top block is in the same CTU as the current CU, the intra mode of the top neighbor block may be added to the general MPM list. If the height of the current block is less than the width of the current block, the left neighbor block exists, and the left neighbor block is intra-coded, the intra mode of the left neighbor block may be added to the general MPM list.
[0139] If the second condition is not satisfied, the intra mode associated with the second condition may not be added to the MPM list. Then, the third condition may be checked. If the third condition is satisfied, the intra mode associated with the third condition may be added to the general MPM list.
[0140] In one embodiment, if neighboring CUs are not intra-coded, the order of MPM list entries may be changed so that the propagated intra mode of a neighboring CU can be added to the MPM list to achieve better coding efficiency. Changes to the order of MPM list entries may be applied to all MPM lists. For example, changes to the order of MPM list entries may be applied to all MPM lists as long as the propagated intra mode is inserted immediately after the intra mode of the same CU (or the order in which the propagated intra mode is added follows the order in which the intra mode of the same CU is added).
[0141] Exemplary changes to the order of MPM list entries can be represented as follows.
[0142] 1. Plane
[0143] 2. If the current CU's height is not less than its width, A exists, A is an intra, and A is in the same CTU, then A. If the current CU's height is less than its width, L exists, and L is an intra, then L.
[0144] 3. If the current CU height is not less than the width, A exists, A is inter, and A is in the same CTU, then A's propagated intra mode. If the current CU height is less than the width, L exists, and L is inter, then L's propagated intra mode.
[0145] 4. If the current CU's height is not less than its width, L exists, and L is an intra, then L. If the current CU's height is less than its width, A exists, A is an intra, and A is in the same CTU, then A.
[0146] 5. If the current CU height is not less than the width, L exists, and L is inter, then L is the propagated intra mode. If the current CU height is less than the width, A exists, A is inter, and A is in the same CTU, then A is the propagated intra mode.
[0147] 6. If BL exists and BL is Intra, then BL.
[0148] 7. If BL exists and BL is inter, the propagated intra mode of BL.
[0149] 8. If AR exists, AR is intra, and AR is in the same CTU, then AR.
[0150] 9. If AR exists, AR is inter, and AR is in the same CTU, the propagated intra mode of AR.
[0151] 10. If AL exists, AL is intra, and AL is in the same CTU, then AL.
[0152] 11. If AL exists, AL is inter, and AL is in the same CTU, the propagated intra mode of AL.
[0153] As indicated in the order of MPM list entries, the order in which the propagated intra mode of a neighbor block of the current block is added may follow the order in which the neighbor block's intra mode is added to the MPM list. If the neighbor block's intra mode is unavailable and the neighbor block's propagated intra mode is available, the neighbor block's propagated intra mode may be added to the MPM list subsequently. For example, according to the second condition of the order of MPM list entries, if the height of the current block is greater than or equal to the width of the current block, an upper neighbor block (e.g., A) exists, the upper neighbor block and the current CU are in the same CTU, and the upper neighbor block is intra-coded, the upper neighbor block's intra mode may be added to the MPM list. If the second condition is not satisfied, the upper neighbor block's intra mode may not be added to the MPM list. A third condition may be verified. If the third condition is satisfied, the upper neighbor block's propagated intra mode may be added to the MPM list.
[0154] A universal intra-mode map can be used to store intra-modes in sample units. For example, any intra-mode, including signaled intra-modes, decoder-derived intra-modes, default intra-modes, and / or propagated intra-modes, may be stored. Sample units may be implicitly predefined or explicitly signaled. For example, encoders and decoders may implicitly predefine 4×4 pixels as a unit or explicitly signal 2×2 or 8×8 in the bitstream. A universal intra-mode map may span across CUs or CTUs. Additionally, intra-modes may not be stored only by intra or inter-CUs, but by other CUs and, in some cases, all CUs.
[0155] Examples of partial universal intramode maps are shown in Figs. 10a and 10b.
[0156] In one embodiment, the universal intra-mode map may initially be in an empty state. Additionally, the universal intra-mode map may store or include signaled intra-modes acquired during the decoding process, intra-modes derived from the decoder, and / or propagated intra-modes.
[0157] In another embodiment, a default intramode may be used to initialize the universal intramode map initially. Additionally, the default intramode may be replaced by a signaled intramode, an intramode derived from a decoder, and / or a propagated intramode obtained during the decoding process. For example, as illustrated in FIG. 10a, the default intramode 0 (or plane) may be stored in every unit of the universal intramode map (1002), each unit representing a 4×4 unit of samples. Later, the default intramode 0 may be replaced by another intramode. For example, the other intramode may be a signaled intramode, an intramode derived from a decoder, or a propagated intramode.
[0158] In another embodiment, the universal intra-mode map may initially be in an empty state. Additionally, some of the empty (or blank) units of the universal intra-mode map may store signaled intra-modes achieved during the decoding process, intra-modes derived from the decoder, and / or propagated intra-modes. After the CU is decoded, the remaining blank units may be filled with default intra-modes, such as intra-mode 0 (or flat).
[0159] As illustrated in FIG. 10b, the universal intra-mode map (1004) may initially be in an empty state, and some of the empty units may be filled into intra-mode during the decoding process. After the CU is decoded, the blank units (e.g., (1006) and (1008)) may be filled into a default intra-mode such as intra-mode 0 (or plane).
[0160] In the present disclosure, when the intramode of spatial neighbor CUs is applied for constructing an MPM list, the intramode of spatial neighbor CUs can be determined based on a universal intramode map.
[0161] For example, as illustrated in FIG. 11a, the current CU (1106) may have a neighbor CU (1102). The neighbor CU (1102) may include a corresponding location (1104). The corresponding location (1104) may be any location within the neighbor CU (1102). In a related example, if the neighbor CU (1102) is intra-coded based on intra-mode 50, the intra-mode 50 may be added to the MPM list of the current CU (1106).
[0162] In a universal intramode map, other intramodes may be added to the MPM list. As illustrated in FIG. 11b, the current CU (1108) may have a neighbor CU (1112). The neighbor CU (1112) may include a corresponding location (1110). Additionally, a universal intramode map (1114) may be used to represent an intramode associated with the neighbor CU (1112). The universal intramode map (1114) may include a plurality of units (or regions). Each unit (or region) may correspond to a respective intramode. According to the universal intramode map (1114), the corresponding location (1110) may be included in the unit (1116) of the universal intramode map (1114) corresponding to intramode 18. Thus, intramode 18 may be added to the MPM list instead of intramode 50.
[0163] If the corresponding location is outside the boundaries of the universal intra-mode map, the intra-mode of the neighboring CU may be considered unavailable.
[0164] An exemplary sequence for adding the intramode of a neighboring CU to the general MPM list for the current block can be represented as follows, where the intramode of the neighboring CU can be determined based on the universal intramode map.
[0165] 1. Plane
[0166] 2. If the current CU's height is not less than its width and A exists, the intra mode corresponding to A in the universal map. If the current CU's height is less than its width and L exists, the intra mode corresponding to L in the universal map.
[0167] 3. If the current CU's height is not less than its width and L exists, the intra mode corresponding to L in the universal map. If the current CU's height is less than its width and A exists, the intra mode corresponding to A in the universal map.
[0168] 4. If BL exists, the intra mode corresponding to BL in the universal map.
[0169] 5. If AR exists, AR-compatible Intra Mode in the Universal Map.
[0170] 6. If AL exists, the intra mode corresponding to AL in the universal map.
[0171] The sequence of conditions above indicates an exemplary relative order of conditions to other conditions in the sequence. In other embodiments, one or more additional conditions may be provided in the sequence. As indicated in the sequence, the corresponding (or corresponding) intramodes of the top neighbor block (e.g., A), left neighbor block (e.g., L), left bottom neighbor block (e.g., BL), right top neighbor block (e.g., AR), and left top neighbor block (e.g., AL) may be added to the MPM list according to the sequence of conditions. The corresponding intramodes may be obtained from the universal intramode map.
[0172] By using a universal intra-mode map, checking the prediction mode (e.g., intra-prediction or inter-prediction) of neighboring blocks is no longer necessary. For example, regardless of whether neighboring blocks are intra-coded or inter-coded, the corresponding intra-mode of a neighboring block can be obtained from the universal intra-mode map.
[0173] FIG. 12 illustrates a flowchart schematically illustrating a first exemplary decoding process (1200) according to some embodiment of the present disclosure. FIG. 13 illustrates a flowchart schematically illustrating a second exemplary decoding process (1300) according to some embodiment of the present disclosure. FIG. 14 illustrates a flowchart schematically illustrating a first exemplary encoding process (1400) according to some embodiment of the present disclosure. FIG. 15 illustrates a flowchart schematically illustrating a second exemplary encoding process (1500) according to some embodiment of the present invention. The proposed processes may be used individually or combined in any order. Additionally, each process (or embodiment), encoder, and decoder may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, one or more processors execute a program stored on a computer-readable non-transient medium.
[0174] In the embodiments, any operation of the process (e.g., (1200), (1300), (1400), and (1500)) may be combined or arranged in any quantity or order as desired. In the embodiments, two or more of the operations of the process (e.g., (1200), (1300), (1400), and (1500)) may be performed in parallel.
[0175] The process (e.g., (1200), (1300), (1400), and (1500)) may be used for the reconstruction and / or encoding of a block to generate a prediction block for the block being reconstructed. In various embodiments, the process (e.g., (1200), (1300), (1400), and (1500)) is executed by a processing circuit, such as a processing circuit within a terminal device (310, 320, 330, 340), a processing circuit that performs the function of a video encoder (403), a processing circuit that performs the function of a video decoder (410), a processing circuit that performs the function of a video decoder (510), a processing circuit that performs the function of a video encoder (603), etc. In some embodiments, the processes (e.g., (1200), (1300), (1400), and (1500)) are implemented as software instructions, and thus when the processing circuit executes the software instructions, the processing circuit performs the processes (e.g., (1200), (1300), (1400), and (1500)).
[0176] As illustrated in FIG. 12, the process (1200) can proceed from (S1201) to (S1210). In (S1210), coded information of the current block and neighbor blocks of the current block can be received from the coded video bitstream. Neighbor blocks may include a first block and a second block. Each first block may be adjacent to any one of the top side, top left corner, or top right corner of the current block, and each second block may be adjacent to either the left or bottom left corner of the current block.
[0177] In (S1220), it can be determined whether one or more first blocks of neighboring blocks and the current block are in the same coding tree unit (CTU).
[0178] In (S1230), based on the fact that one or more first blocks of neighboring blocks and the current block are in the same CTU, each intra mode associated with each of the one or more first blocks is added to the most likely mode (MPM) list for the current block based on a sequence of conditions. The sequence of conditions may correspond to the order in which each intra mode is determined to be added to the MPM list.
[0179] In (S1240), each intra mode associated with each second block of a neighboring block can be added to the MPM list based on a sequence of conditions.
[0180] In (S1250), the current block can be reconstructed based on the MPM list.
[0181] In some embodiments, based on the fact that the height of the current block is greater than or equal to the width of the current block, the intra mode of the top block among one or more first blocks may be added to the MPM according to a second condition in a sequence of conditions. The top block may be adjacent to the top side of the current block. The second condition may include that the top block is intra-coded. The propagated intra mode of the top block among one or more first blocks may be added to the MPM list according to a fourth condition in a sequence of conditions. The fourth condition may include that the top block is inter-coded. The propagated intra mode of the top block may be obtained based on the neighbor blocks of the top block.
[0182] In some embodiments, the propagated intra mode of the top-right block among one or more first blocks may be added to the MPM list according to a 10th condition in a sequence of conditions. The top-right block may be adjacent to the top-right corner of the current block. The 10th condition may include that the top-right block is intercoded. The propagated intra mode of the top-right block may be obtained based on the neighbor blocks of the top-right block. The propagated intra mode of the top-left block among one or more first blocks may be added to the MPM list according to an 11th condition in a sequence of conditions. The top-left block may be adjacent to the top-left corner of the current block. The 11th condition may include that the top-left block is intercoded. The propagated intra mode of the top-left block may be obtained based on the neighbor blocks of the top-left block.
[0183] In some embodiments, based on the height of the current block being greater than or equal to the width of the current block, the intra mode of the left block of the second block may be added to the MPM list according to a third condition in the sequence of conditions. The left block may be adjacent to the left of the current block. The third condition may include that the left block of the second block is intra-coded.
[0184] In some embodiments, in response to the height of the current block being smaller than the width of the current block, the propagated intra mode of the top block among one or more first blocks may be added to the MPM list according to a fifth condition in a sequence of conditions. The fifth condition may include that the top block is intercoded. The propagated intra mode of the top block may be obtained based on the neighbor blocks of the top block.
[0185] In some embodiments, a condition in a sequence of conditions in which a propagated intra mode of one of the neighboring blocks is added to the MPM list may follow a condition in a sequence of conditions in which a propagated intra mode of one of the neighboring blocks is added to the MPM list.
[0186] In some embodiments, in response to the height of the current block being greater than or equal to the width of the current block, an intra mode of the top block among one or more first blocks may be added to the MPM list according to a second condition in a sequence of conditions. The second condition may include that the top block is intra-coded. According to a third condition in a sequence of conditions, a propagated intra mode of the top block among one or more first blocks may be added to the MPM list. The third condition may include that the top block is inter-coded. The propagated intra mode of the top block may be obtained based on the neighbor blocks of the top block.
[0187] In some embodiments, according to an 8th condition in a sequence of conditions, the intra mode of the upper right block among one or more first blocks may be added to the MPM list, and the 8th condition may include that the upper right block is intra-coded. According to a 9th condition in a sequence of conditions, the propagated intra mode of the upper right block among one or more first blocks may be added to the MPM list, and the 9th condition may include that the upper right block is inter-coded. The propagated intra mode of the upper right block may be obtained based on the neighbor blocks of the upper right block. According to a 10th condition in a sequence of conditions, the intra mode of the upper left block among one or more first blocks may be added to the MPM list, and the 10th condition may include that the upper left block is intra-coded. According to an 11th condition in a sequence of conditions, the propagated intra mode of the upper left block among one or more first blocks may be added to the MPM list, and the 11th condition may include that the upper left block is inter-coded. The propagated intra mode of the top-left block can be obtained based on the neighbor blocks of the top-left block.
[0188] In some embodiments, in response to the height of the current block being greater than or equal to the width of the current block, the intra mode of the left block of the second block may be added to the MPM list according to a fourth condition in the sequence of conditions, and the fourth condition may include that the left block of the second block is intra-coded. According to a fifth condition in the sequence of conditions, the propagated intra mode of the left block of the second block may be added to the MPM list, and the fifth condition may include that the left block of the second block is inter-coded. The propagated intra mode of the left block may be obtained based on the neighbor blocks of the left block.
[0189] In some embodiments, according to a sixth condition in a sequence of conditions, the intra mode of the bottom-left block of the second block may be added to the MPM list, and the sixth condition may include that the bottom-left block of the second block is intra-coded. According to a seventh condition in a sequence of conditions, the propagated intra mode of the bottom-left block of the second block may be added to the MPM list, and the seventh condition may include that the bottom-left block of the second block is inter-coded. The propagated intra mode of the bottom-left block may be obtained based on the neighbor blocks of the bottom-left block.
[0190] As illustrated in FIG. 13, the process (1300) can proceed from (S1301) to (S1310). In (S1310), coded information of the current block and neighbor blocks of the current block can be received from the coded video bitstream. Neighbor blocks may include a first block and a second block. Each first block may be adjacent to any one of the top side, top left corner, or top right corner of the current block, and each second block may be adjacent to either the left or bottom left corner of the current block.
[0191] In (S1320), each corresponding location in each neighboring block can be determined.
[0192] In (S1330), the corresponding intramode of a neighboring block can be determined based on the corresponding location and the universal intramode map. The universal intramode map may include a plurality of units, and each corresponding location may be associated with each unit of the universal intramode map and may correspond to each corresponding intramode associated with each unit.
[0193] In (S1340), a list of the most likely mode (MPM) for the current block can be generated based on a sequence of corresponding intra modes and conditions of neighboring blocks. The sequence of conditions may indicate the order in which each intra mode is added to the MPM list.
[0194] In (S1350), the current block can be reconstructed based on the MPM list.
[0195] In some embodiments, in response to the height of the current block being greater than or equal to the width of the current block, the corresponding intra mode of the top block among the first blocks may be added to the MPM list according to a second condition in the sequence of conditions, and the second condition may include that the top block exists. The top block may be adjacent to the top side of the current block. According to a third condition in the sequence of conditions, the corresponding intra mode of the left block among the second blocks may be added to the MPM list, and the third condition may include that the left block exists. The left block may be adjacent to the left side of the current block.
[0196] In some embodiments, in response to the height of the current block being smaller than the width of the current block, the corresponding intra mode of the left block among the second blocks may be added to the MPM list according to a second condition in the sequence of conditions, and the second condition may include that the left block exists. The corresponding intra mode of the top block among the first blocks may be added to the MPM list according to a third condition in the sequence of conditions, and the third condition may indicate that the top block exists.
[0197] In some embodiments, according to a sixth condition in a sequence of conditions, the corresponding intra mode of the bottom-left block of the second block may be added to the MPM list, and the sixth condition may include that the bottom-left block exists. The bottom-left block may be adjacent to the bottom-left corner of the current block. According to a seventh condition in a sequence of conditions, the corresponding intra mode of the top-right block of the first block may be added to the MPM list, and the seventh condition may include that the top-right block exists. The top-right block may be adjacent to the top-right corner of the current block. According to an eighth condition in a sequence of conditions, the corresponding intra mode of the top-left block of the first block may be added to the MPM list, and the eighth condition may include that the top-left block exists. The top-left block may be adjacent to the top-left corner of the current block.
[0198] In one embodiment, each of the plurality of units of the universal intra-mode map may be initialized to a default intra-mode, and one or more of the default intra-modes of the universal intra-mode map may be replaced with a corresponding intra-mode.
[0199] In another embodiment, one or more of the plurality of units of the universal intra-mode map may be filled with a corresponding intra-mode, and the remaining units of the plurality of units of the universal intra-mode map may be filled with a default intra-mode.
[0200] As illustrated in FIG. 14, the process (1400) can proceed from (S1401) to (S1410). In (S1410), it can be determined whether one or more of the first block and the current block are in the same Coding Tree Unit (CTU). Each first block may be adjacent to one of the top side, top left corner, and top right corner of the current block.
[0201] In (S1420), based on one or more first blocks and the current block being in the same CTU, each intra mode associated with each of the one or more first blocks may be added to the list of most likely modes (MPM) for the current block based on a sequence of conditions. The sequence of conditions may correspond to the order in which each intra mode is determined to be added to the MPM list.
[0202] In (S1430), each intra mode associated with each second block can be added to the MPM list based on a sequence of conditions, and each second block can be adjacent to one of the left and bottom left corners.
[0203] In (S1440), coded information including the MPM list of the current block can be generated.
[0204] As illustrated in FIG. 15, the process (1500) can start at (S1501) and proceed to (S1510). At (S1510), a corresponding location can be generated in each neighbor block of the current block.
[0205] In (S1520), the corresponding intramode of a neighboring block can be determined based on the corresponding location and the universal intramode map. The universal intramode map may include a plurality of units. Each corresponding location may be associated with each unit of the universal intramode map and may correspond to each corresponding intramode associated with each unit.
[0206] In (S1530), the corresponding intra mode of a neighboring block may be added to the MPM list of the current block based on a series of conditions. The order of the conditions may indicate the order in which the decision was made to add the corresponding intra mode to the MPM list.
[0207] Corresponding intramodes of neighboring blocks can be added to the MPM list based on a sequence of conditions. The sequence of conditions may indicate the order in which corresponding intramodes are added to the MPM list.
[0208] In (S1540), coded information including the MPM list of the current block can be generated.
[0209] The aforementioned technology may be implemented as computer software that uses computer-readable instructions and can be physically stored on one or more computer-readable media. For example, FIG. 16 illustrates a computer system (1600) suitable for implementing a specific embodiment of the disclosed subject matter.
[0210] Computer software may be coded using any suitable machine code or computer language capable of generating code containing instructions that can be executed directly, or through interpretation, micro-code execution, etc., by a computer central processing unit (CPU), graphics processing unit (GPU), etc., via assembly, compilation, linking, or similar mechanisms.
[0211] The instruction can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, etc.
[0212] The components of the computer system (1600) illustrated in FIG. 16 are essentially exemplary and are not intended to imply any limitation to the scope of use or function of the computer software implementing the embodiments of the present disclosure. The configuration of the components should not be interpreted as having any dependency or requirement related to any one or combination of the components shown in the exemplary embodiments of the computer system (1600).
[0213] The computer system (1600) may include a specific human interface input device. This human interface input device may respond to input by one or more human users, for example, tactile input (e.g., keystrokes, swips, data glove movements), audio input (e.g., voice, applause), visual input (e.g., gestures), and olfactory input (not shown). The human interface device may also be used to capture specific media that are not necessarily directly related to conscious input by a person, such as audio (e.g., voice, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still image camera), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).
[0214] The input human interface device may include one or more of a keyboard (1601), a mouse (1602), a trackpad (1603), a touchscreen (1610), a data glove (not shown), a joystick (1605), a microphone (1606), a scanner (1607), and a camera (1608) (each only one is shown).
[0215] The computer system (1600) may include a specific human interface output device. This human interface output device may stimulate the senses of one or more human users, for example, through tactile output, sound, light and smell / taste. These human interface output devices may include a tactile output device (e.g., a touch screen (1610), a data glove (not shown), or tactile feedback via a joystick (1605), but there may also be a tactile feedback device that does not serve as an input device), an audio output device (e.g., a speaker (1609), headphones (not shown)), a visual output device (e.g., a screen (1610) including a CRT screen, an LCD screen, a plasma screen, and an OLED screen, each with or without a touch screen (1610) input function and with or without a tactile feedback function—some of which may produce two-dimensional visual output or three-dimensional or higher output through means such as stereographic output, virtual-reality glasses (not shown), a holographic display and a smoke tank (not shown)—), and a printer (not shown).
[0216] The computer system (1600) may also include human-accessible storage devices and associated media, such as optical media including a CD / DVD ROM RW (1620) having a CD / DVD media (1621), a thumb drive (1622), a removable hard drive or solid-state drive (1623), legacy magnetic media such as tape and floppy disk (not shown), and specialized ROM / ASIC / PLD-based devices such as a security dongle (not shown).
[0217] Those skilled in the art should also understand that the term “computer-readable medium” as used in connection with the subject matter disclosed herein does not include a transmitting medium, a carrier wave, or other transient signals.
[0218] The computer system (1600) may also include an interface (1654) to one or more communication networks (1655). The network may be, for example, a wireless, wired, optical network. The network may also be a local, wide-area, metropolitan, automotive and industrial, real-time, latency-tolerant network. Examples of networks include cellular networks including Ethernet, wireless LAN, GSM, 3G, 4G, 5G, LTE, etc., TV wired or wireless wide-area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, automotive and industrial networks including CANBus, etc. A specific network generally requires an external network interface adapter attached to a specific general-purpose data port or peripheral bus (1649) (e.g., a USB port of the computer system (1600)); others are generally integrated into the core of the computer system (1600) by attaching to a system bus 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 (1600) can communicate with another network. This communication may be unidirectional, receive-only (e.g., TV broadcasting), unidirectional transmit-only (e.g., from a CANbus to a specific CANbus device), or bidirectional (e.g., to another computer system using a local or wide-area digital network). Specific protocols and protocol stacks may be used for each of the networks and network interfaces as described above.
[0219] The aforementioned human interface device, human-accessible storage device, and network interface can be attached to the core (1640) of the computer system (1600).
[0220] The core (1640) may include one or more central processing units (CPUs) (1641), graphics processing units (GPUs) (1642), specialized programmable processing units in the form of a field programmable gate array (FPGA) (1643), hardware accelerators (1644) for specific tasks, graphics adapters (1650), etc. Along with read-only memory (ROM) (1645), random access memory (1646), and internal mass storage devices (1647) such as internal hard drives or SSDs that are not accessible to the user, these devices may be connected via a system bus (1648). In some computer systems, the system bus (1648) may be accessible in the form of one or more physical plugs that enable expansion by additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (1648) or via a peripheral bus (1649). For example, the screen (1610) can be connected to a graphics adapter (1650). Architectures for peripheral buses include PCI, USB, etc.
[0221] The CPU (1641), GPU (1642), FPGA (1643), and accelerator (1644) can be combined to execute specific instructions that can construct the aforementioned computer code. The computer code may be stored in ROM (1645) or RAM (1646). Transitional data may also be stored in RAM (1646), while persistent data may be stored, for example, in an internal mass storage device (1647). Fast storage and retrieval of any of the memory devices may be made possible through the use of a cache memory that may be closely associated with one or more CPUs (1641), GPUs (1642), mass storage devices (1647), ROM (1645), RAM (1646), etc.
[0222] A computer-readable medium may have computer code for performing various computer-implemented operations. The medium and the computer code may be specially designed and constructed for the purposes of this disclosure, or they may be of a type well known and available to those skilled in the art of computer software.
[0223] As an example, not limited to, the computer system having an architecture (1600), specifically a core (1640), may provide functionality as a result of processor(s) (including CPU, GPU, FPGA, accelerator, etc.) executing software implemented on one or more types of computer-readable media. Such computer-readable media may be a medium associated with a mass storage device accessible to a user as described above, as well as a specific storage device of the core (1640) of a non-transient nature, such as a mass storage device (1647) or ROM (1645) inside the core. Software implementing various embodiments of the present disclosure may be stored on such devices and executed by the core (1640). The computer-readable media may include one or more memory devices or chips as needed. Software may enable the core (1640) and, in particular, the internal processor (including a CPU, GPU, FPGA, etc.) to execute a specific process or a specific part of a specific process described herein, including defining data structures stored in RAM (1646) and modifying such data structures according to a process defined by the software. Additionally or alternatively, the computer system may provide a function that is otherwise implemented in a circuit (e.g., accelerator (1644)) as a result of logic hardwired, which can operate instead of or with the software to execute a specific process or a specific part of a specific process described herein. References to software may include logic, and where appropriate, vice versa. References to computer-readable media may include circuits that store software for execution (e.g., integrated circuits (ICs)), circuits that implement logic for execution, or both, where appropriate. The present disclosure includes any suitable combination of hardware and software.
[0224] [부록 A: 약어]
[0225] JEM: joint exploration model
[0226] VVC: versatile video coding
[0227] BMS: benchmark set
[0228] MV: Motion Vector
[0229] HEVC: High Efficiency Video Coding
[0230] SEI: Supplementary Enhancement Information
[0231] VUI: Video Usability Information
[0232] GOPs: Groups of Pictures
[0233] TUs: Transform Units,
[0234] PUs: Prediction Units
[0235] CTUs: Coding Tree Units
[0236] CTBs: Coding Tree Blocks
[0237] PBs: Prediction Blocks
[0238] HRD: Hypothetical Reference Decoder
[0239] SNR: Signal Noise Ratio
[0240] CPUs: Central Processing Units
[0241] GPUs: Graphics Processing Units
[0242] CRT: Cathode Ray Tube
[0243] LCD: Liquid-Crystal Display
[0244] OLED: Organic Light-Emitting Diode
[0245] CD: Compact Disc
[0246] DVD: Digital Video Disc
[0247] ROM: Read-Only Memory
[0248] RAM: Random Access Memory
[0249] ASIC: Application-Specific Integrated Circuit
[0250] PLD: Programmable Logic Device
[0251] LAN: Local Area Network
[0252] GSM: Global System for Mobile communications
[0253] LTE: Long-Term Evolution
[0254] CANBus: Controller Area Network Bus
[0255] USB: Universal Serial Bus
[0256] PCI: Peripheral Component Interconnect
[0257] FPGA: Field Programmable Gate Areas
[0258] SSD: solid-state drive
[0259] IC: Integrated Circuit
[0260] CU: Coding Unit
[0261] Although the present disclosure describes some exemplary embodiments, there are modifications, permutations, and various alternative equivalents that fall within the scope of the present disclosure. Accordingly, those skilled in the art will understand that numerous systems and methods can be devised that implement the principles of the present disclosure and thus fall within the spirit and scope of the present disclosure, even though they are not expressly illustrated or described herein.
Claims
Claim 1 A video decoding method performed in a video decoder, comprising: receiving coded information of a current block and a neighbor block of said current block from a coded video bitstream; wherein said neighbor blocks include a first block and a second block, each said first block is adjacent to one of the top side, above left corner, and above right corner of said current block, and each said second block is adjacent to one of the left and below left corners of said current block; determining whether one or more first blocks of said neighbor blocks and said current block are in the same coding tree unit (CTU); and in response to said one or more first blocks of said neighbor blocks and said current block being in the same CTU, adding each intra mode associated with each of said one or more first blocks to a most probable mode (MPM) list for said current block based on a sequence of conditions; wherein said sequence of conditions corresponds to the order in which said each intra mode is added to said MPM list. A video decoding method comprising: adding each intra mode associated with each second block of the neighboring block to the MPM list based on the sequence of conditions; and reconstructing the current block based on the MPM list. Claim 2 A video decoding method according to claim 1, wherein adding each intra mode associated with each of the one or more first blocks comprises: adding the intra mode of the upper block among the one or more first blocks to the MPM list according to a second condition in the sequence of conditions based on the height of the current block being greater than or equal to the width of the current block, wherein the upper block is adjacent to the uppermost side of the current block and the second condition includes that the upper block is intra-coded; and adding the propagated intra mode of the upper block among the one or more first blocks to the MPM list according to a fourth condition in the sequence of conditions, wherein the fourth condition includes that the upper block is inter-coded and the propagated intra mode of the upper block is obtained based on the neighboring block of the upper block. Claim 3 A video decoding method according to claim 1, wherein adding each intra mode associated with each of the one or more first blocks further comprises: adding the propagated intra mode of the upper right block among the one or more first blocks to the MPM list according to a 10th condition in the sequence of conditions, wherein the upper right block is adjacent to the upper right corner of the current block, and the 10th condition includes that the upper right block is intercoded, and the propagated intra mode of the upper right block is obtained based on the neighbor block of the upper right block; and adding the propagated intra mode of the upper left block among the one or more first blocks to the MPM list according to an 11th condition in the sequence of conditions, wherein the upper left block is adjacent to the upper left corner of the current block, and the 11th condition includes that the upper left block is intercoded, and the propagated intra mode of the upper left block is obtained based on the neighbor block of the upper left block. Claim 4 A video decoding method according to claim 1, wherein adding each intra mode associated with each of the second blocks further comprises adding the intra mode of the left block among the second blocks to the MPM list according to a third condition in the sequence of conditions based on the height of the current block being greater than or equal to the width of the current block—the left block being adjacent to the left of the current block, and the third condition including that the left block among the second blocks is intra-coded. Claim 5 A video decoding method according to claim 1, wherein adding each intra mode associated with each of the one or more first blocks further comprises adding the propagated intra mode of the upper block among the one or more first blocks to the MPM list according to a fifth condition in the sequence of conditions in response to the height of the current block being smaller than the width of the current block—the upper block being adjacent to the upper end of the current block, and the fifth condition including that the upper block is intercoded, and the propagated intra mode of the upper block is obtained based on the neighbor blocks of the upper block. Claim 6 A video decoding method according to claim 1, wherein the condition in the sequence of conditions in which a propagated intra mode of one of the neighboring blocks is added to the MPM list follows the condition in the sequence of conditions in which an intra mode of one of the neighboring blocks is added to the MPM list. Claim 7 A video decoding method according to claim 1, wherein adding each intra mode associated with each of the one or more first blocks comprises: adding the intra mode of the upper block among the one or more first blocks to the MPM list according to a second condition in the sequence of conditions in response to the height of the current block being greater than or equal to the width of the current block, wherein the upper block is adjacent to the upper end of the current block and the second condition includes that the upper block is intra-coded; and adding the propagated intra mode of the upper block among the one or more first blocks to the MPM list according to a third condition in the sequence of conditions, wherein the third condition includes that the upper block is inter-coded and the propagated intra mode of the upper block is obtained based on the neighbor blocks of the upper block. Claim 8 In claim 1, adding each intra mode associated with each of the one or more first blocks comprises: adding the intra mode of the upper right block among the one or more first blocks to the MPM list according to the eighth condition in the sequence of conditions—the upper right block is adjacent to the upper right corner of the current block, and the eighth condition includes that the upper right block is intra-coded—; adding the propagated intra mode of the upper right block among the one or more first blocks to the MPM list according to the ninth condition in the sequence of conditions—the ninth condition includes that the upper right block is inter-coded, and the propagated intra mode of the upper right block is obtained based on the neighbor block of the upper right block—; adding the intra mode of the upper left block among the one or more first blocks to the MPM list according to the tenth condition in the sequence of conditions—the upper left block is adjacent to the upper left corner of the current block, and the tenth condition includes that the upper left block is intra-coded—; A video decoding method further comprising: adding a propagated intra mode of the upper-left block among the one or more first blocks to the MPM list according to an eleventh condition in the sequence of the above conditions, wherein the eleventh condition includes that the upper-left block is intercoded, and the propagated intra mode of the upper-left block is obtained based on the neighbor blocks of the upper-left block. Claim 9 A video decoding method according to claim 1, wherein adding each intra mode associated with each of the second blocks comprises: adding the intra mode of the left block of the second blocks to the MPM list according to a fourth condition in the sequence of conditions in response to the height of the current block being greater than or equal to the width of the current block—the left block being adjacent to the left of the current block, and the fourth condition including that the left block of the second blocks is intra-coded—; and adding the propagated intra mode of the left block of the second blocks to the MPM list according to a fifth condition in the sequence of conditions—the fifth condition including that the left block of the second blocks is inter-coded, and the propagated intra mode of the left block is obtained based on the neighbor block of the left block. Claim 10 A video decoding method according to claim 1, wherein adding each intra mode associated with each of the second blocks comprises: adding the intra mode of the lower-left block of the second block to the MPM list according to a sixth condition in the sequence of conditions, wherein the lower-left block is adjacent to the lower-left corner of the current block, and the sixth condition includes that the lower-left block of the second block is intra-coded; and adding the propagated intra mode of the lower-left block of the second block to the MPM list according to a seventh condition in the sequence of conditions, wherein the seventh condition includes that the lower-left block of the second block is inter-coded, and the propagated intra mode of the lower-left block is obtained based on the neighboring block of the lower-left block. Claim 11 A device comprising a processing circuit configured to perform a method according to any one of claims 1 to 10. Claim 12 delete Claim 13 delete Claim 14 delete Claim 15 delete Claim 16 delete Claim 17 delete Claim 18 delete Claim 19 delete Claim 20 delete
