Encoders, decoders, and corresponding methods using intra-mode coding for intra-prediction

By constructing MPM lists based on neighboring block modes, the method addresses inefficiencies in intra-prediction mode coding, enhancing video compression efficiency and maintaining picture quality.

JP2026053341APending Publication Date: 2026-03-25HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-11-26
Publication Date
2026-03-25

AI Technical Summary

Technical Problem

Existing video coding technologies face challenges in efficiently selecting entries for Most Probable Mode (MPM) lists in intra-prediction mode coding, which impacts the efficiency of video compression and decompression processes.

Method used

A method for constructing MPM lists by determining intra-prediction modes of neighboring blocks and including specific entries based on conditions, such as matching or angular modes, to enhance coding efficiency.

Benefits of technology

The proposed method improves coding efficiency by including more relevant modes in the MPM list, leading to enhanced compression ratios with minimal quality sacrifice.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026053341000001_ABST
    Figure 2026053341000001_ABST
Patent Text Reader

Abstract

This provides a method for predictive coding of the current block, performed by a decoding or coding device. [Solution] The method includes the steps of obtaining the intra-prediction mode of the neighboring block to the left of the current block, obtaining the intra-prediction mode of the neighboring block above the current block, and constructing a most likely mode (MPM) list of intra-prediction modes for the current block. The step of constructing the MPM list includes at least five entries of intra-prediction modes when at least a first condition is met, the first condition being that the intra-prediction mode of the neighboring block to the left and the intra-prediction mode of the neighboring block above are the same angular mode.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] Cross-reference of related applications This patent application claims priority to U.S. Provisional Patent Application No. 62 / 810,323, filed on 25 February 2019. The disclosure of the aforementioned patent application is incorporated herein by reference in its entirety.

[0002] Embodiments of this application generally relate to the field of picture processing, and more specifically to intra prediction. [Background technology]

[0003] Video coding (video encoding and decoding) is used in a wide range of digital video applications, such as broadcast digital TV, video transmission over the internet and mobile networks, real-time conversation applications like video chat, video conferencing, DVD and Blu-ray discs, video content acquisition and editing systems, and camcorders in security applications.

[0004] Even relatively short videos can require a considerable amount of video data to render, which can pose challenges when the data needs to be streamed or otherwise transmitted over communication networks with limited bandwidth. Therefore, video data is generally compressed before being transmitted over modern communication networks. Video size can also be a concern when video is stored on a storage device, as memory resources may be limited. Often, video compression devices use software and / or hardware at the source to encode the video data before transmission or storage, thereby reducing the amount of data required to represent the digital video image. The compressed data is then received at the destination by a video decompression device that decodes the video data. Given limited network resources and the increasing demand for higher video quality, improved compression and decompression techniques that increase the compression ratio with little to no sacrifice of picture quality are desirable.

[0005] More specifically, there is a continuing demand to reduce processor load in the context of intra-prediction processing. In this art, it is known to use Most Probable Mode (MPM) lists for intra-prediction mode coding. MPM lists reduce the bits required to code the intra-prediction mode of the current block. When the intra-prediction mode of the current block corresponds to an entry in the MPM list, an index is coded rather than the actual mode, thereby requiring fewer bits. However, selecting entries for generating the MPM list with the most efficient intra-prediction coding in mind remains a challenge. Appropriate selection of entries significantly impacts the efficiency of intra-prediction mode coding based on MPM lists.

[0006] In view of this, the fundamental objective of the present invention is to provide a technique for generating an MPM list that results in more efficient coding compared to the aforementioned technique. [Overview of the project] [Means for solving the problem]

[0007] Embodiments of this application provide an apparatus and method for encoding and decoding according to an independent claim.

[0008] The other objectives described above are achieved by the subject matter of the independent claims. Further forms of implementation are evident from the dependent claims, specification, and drawings.

[0009] According to the embodiment, a method for predictive coding of the current block performed by a decoding device or encoding device, Steps to obtain the intra-prediction mode of the neighboring block to the left of the current block, Steps to obtain the intra-prediction mode of neighboring blocks above the current block, A step of constructing a list of most likely modes (MPMs) for intra-predictive modes for the current block (based on the results of the steps taken to obtain), wherein the MPM list includes at least five entries for intra-predictive modes, i.e., A method is provided that includes the step {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )}, where at least the first condition is met, and the first condition is that the intra-prediction mode of the left neighboring block and the intra-prediction mode of the upper neighboring block are the same angular mode, and ang represents the intra-prediction mode of the left neighboring block or the intra-prediction mode of the upper neighboring block. In other words, ang is a value or index that represents the intra-prediction mode of the left neighboring block or the intra-prediction mode of the upper neighboring block. The range of ang may be {2-66}.

[0010] As an implementation of the embodiment, the method may further include the step of checking whether the intra-prediction mode of the left neighboring block and the intra-prediction mode of the upper neighboring block are the same angular mode.

[0011] In fact, since commonly used intra-prediction modes are included in the MPM list and can therefore be referenced by the list index without the need to code the actual modes, such a generated MPM list may be advantageous in terms of coding efficiency.

[0012] More specifically, when the first and second conditions are met, at least five entries in intra-predictive mode may be included in the MPM list, the second condition being that the current block is coded in sub-partition (ISP) mode. This allows coding efficiency to be further enhanced depending on the actual application.

[0013] An alternative MPM list equally advantageous in terms of coding efficiency is a method for predictive coding of the current block performed by a decoding or coding device, comprising the steps of: obtaining the intra-predictive mode of the left neighboring block of the current block; obtaining the intra-predictive mode of the above neighboring block of the current block; and constructing a most probable mode (MPM) list of intra-predictive modes for the current block (based on the results of the steps obtained), wherein the MPM list includes at least five entries of intra-predictive modes, i.e., The function {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )} may be provided by a step-based method that represents an angular mode, provided that at least the first condition is met, wherein only one of the intra-predictive modes of the left neighboring block and the upper neighboring block is an angular mode. In other words, ang is a value or index that represents an angular mode. The range of ang may be {2-66}. The first condition may also include that the other of the intra-predictive modes of the left neighboring block and the upper neighboring block is not an angular mode.

[0014] As an implementation of an alternative embodiment, the method may further include the step of checking whether only one of the intra-predictive modes of the left neighboring block and the intra-predictive mode of the upper neighboring block is an angular mode.

[0015] The MPM list may also include at least five entries in intra-predictive mode when the first and second conditions are met, the second condition being that the current block is coded by ISP mode.

[0016] According to a further alternative, an MPM list that may be similarly advantageous with respect to coding efficiency may be a method of predictive coding of a current block performed by a decoding device or an encoding device, where obtaining an intra prediction mode of a block adjacent to the left of the current block; obtaining an intra prediction mode of a block adjacent to the above of the current block; constructing (based on the result of the obtaining step) an MPM list of the most probable mode of the intra prediction mode for the current block when at least a first condition is satisfied, the first condition including that both the intra prediction mode of the left adjacent block and the intra prediction mode of the above adjacent block are angular modes, and the MPM list including at least five entries of the intra prediction mode, that is, a) when maxAB - minAB is equal to 1, including {above_mode, left_mode, 2 + ((minAB + 61) % 64), 2 + ((maxAB - 1) % 64), 2 + ((minAB + 60) % 64)}, or b) when maxAB - minAB is equal to 2, including {above_mode, left_mode, 2 + ((minAB - 1) % 64), 2 + ((minAB + 61) % 64), 2 + ((maxAB - 1) % 64)}, or c) when maxAB - minAB exceeds 61, including {above_mode, left_mode, 2 + ((minAB - 1) % 64), 2 + ((maxAB + 61) % 64), 2 + (minAB % 64)}, or d) otherwise, including {above_mode, left_mode, 2 + ((minAB + 61) % 64), 2 + ((minAB - 1) % 64), 2 + ((maxAB + 61) % 64)}, A method may be provided that includes steps where above_mode represents the intra prediction mode of the upper neighboring block, left_mode represents the intra prediction mode of the left neighboring block, minAB represents the minimum intra prediction mode between above_mode and left_mode, and maxAB represents the maximum intra prediction mode between above_mode and left_mode.

[0017] As an implementation of an alternative embodiment, the method may further include a step of checking whether both the intra prediction mode of the left neighboring block and the intra prediction mode of the upper neighboring block are angular modes.

[0018] In all of the above embodiments, the intra prediction mode of the current block can be coded based on the respectively generated MPM lists. As described above, the coding efficiency of the coding process can be enhanced by the use of each MPM list as compared to the relevant art.

[0019] A method according to one of the above embodiments may further include a step of determining the intra prediction mode of the current block, and a step of coding the determined intra prediction mode of the current block by the corresponding index of the MPM list when the determined intra prediction mode of the current block is listed in the MPM list. Again, the coding efficiency of the coding process can be enhanced by the use of the index of each MPM list as compared to the relevant art.

[0020] According to one embodiment, generating the MPM list includes generating entries for a sixth list representing the PLANAR mode. Alternatively, one of the methods in the embodiments described above may include the steps of determining whether the intra-prediction mode of the current block is PLANAR mode, and, if it is determined that the intra-prediction mode of the current block is not PLANAR mode, signaling that the intra-prediction mode of the current block is not PLANAR mode with a flag.

[0021] Therefore, widely used and important PLANAR modes can be explicitly taken into consideration. It should be clearly noted that the differences between these alternatives in handling PLANAR modes are purely editorial and switch between them.

[0022] According to a further embodiment, the generated MPM list consists of at least five entries as described above (i.e., no PLANAR mode is indexed), and the method further includes the step of using the thus generated MPM list to perform multiple reference line coding. Again, high efficiency in coding intra-predictives can be achieved.

[0023] According to another specific embodiment, if there are no intra-predicted upper neighbor blocks, the intra-prediction mode of the upper neighbor block may be determined to be PLANAR, and if there are no intra-predicted left neighbor blocks, the intra-prediction mode of the left neighbor block may be determined to be PLANAR. Thus, the case where there are no intra-predicted upper or left neighbor blocks can be handled efficiently based on the defaults.

[0024] Furthermore, the case is considered where neither the intra-prediction mode of the left neighboring block nor the intra-prediction mode of the upper neighboring block is an angular mode. Thus, a method for predictive coding of the current block performed by a decoding or coding device, Steps to obtain the intra-prediction mode of the neighboring block to the left of the current block, Steps to obtain the intra-prediction mode of neighboring blocks above the current block, A method is provided, comprising the step of constructing a most probable mode (MPM) list of intra-prediction modes for the current block, wherein the MPM list includes at least five entries of intra-prediction modes, and at least four of the five entries are given by VER_IDX, HOR_IDX, VER_IDX - 4, and VER_ID + 4, where at least a first condition is met, wherein neither the intra-prediction mode of the left neighboring block nor the intra-prediction mode of the upper neighboring block is an angular mode, and VER_IDX represents the index of the vertical intra-prediction mode and HOR_IDX represents the index of the horizontal intra-prediction mode.

[0025] As an implementation of an alternative embodiment, the method may further include the step of checking whether either the intra-predictive mode of the left neighboring block or the intra-predictive mode of the upper neighboring block is not an angular mode.

[0026] In all of the above embodiments of the method of the invention, the following may also be true: the upper-left corner of the left neighboring block is at (xCb-1, yCb+cbHeight-1), and the upper-left corner of the upper neighboring block is at (xCb+cbWidth-1, yCb-1), where xCb, yCb, cbHeight, and cbWidth represent the position of the upper-left corner of the current block in the width direction, the position of the upper-left corner of the current block in the height direction, the height of the current block, and the width of the current block, respectively.

[0027] The embodiments described above may be implemented in an encoder or a decoder and provide the same advantages described above. Therefore, an encoder is provided that includes a processing circuit for performing the method according to any one of the embodiments described above. Similarly, a decoder is provided that includes a processing circuit for performing the method according to any one of the embodiments described above.

[0028] Furthermore, a computer program product is provided that includes program code for performing the steps of the method described above.

[0029] Furthermore, one or more processors, A decoder or encoder is provided, comprising a non-temporary computer-readable storage medium coupled to a processor and storing a program for execution by the processor, wherein the program is configured to perform the method according to any of the embodiments described above when executed by the processor.

[0030] The above-described embodiments of the present invention of predictive coding of blocks can be implemented in a suitable device for use in an image encoder and / or image decoder. The operation of such a device also provides the above-described advantages. Therefore, a device for use in an image encoder and / or image decoder, A prediction mode unit configured to acquire the intra-prediction mode of the neighboring block to the left of the current block and the intra-prediction mode of the neighboring block above the current block. A most probable mode unit configured to construct a most probable mode (MPM) list of intra-predictive modes for the current block (based on input from a predictive mode unit), wherein the MPM list includes at least five entries of intra-predictive modes, i.e., A device is provided which includes {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )}, where the first condition is that the intra-predictive mode of the left neighboring block and the intra-predictive mode of the upper neighboring block are the same angular mode, and ang includes a most probable mode unit that represents the intra-predictive mode of the left neighboring block or the intra-predictive mode of the upper neighboring block. In other words, ang is a value or index that represents the intra-predictive mode of the left neighboring block or the intra-predictive mode of the upper neighboring block. The range of ang may be {2-66}.

[0031] As an implementation of the embodiment, the MPM unit may be further configured to check whether the intra-prediction mode of the left neighboring block and the intra-prediction mode of the upper neighboring block are the same angular mode.

[0032] The MPM list may include at least five entries in intra-predictive mode when the first and second conditions are met, the second condition being that the current block is coded in sub-partition (ISP) mode.

[0033] Furthermore, a device for use in an image encoder and / or image decoder, A prediction mode unit configured to acquire the intra-prediction mode of the neighboring block to the left of the current block and the intra-prediction mode of the neighboring block above the current block. A most probable mode unit configured to construct a most probable mode (MPM) list of intra-predictive modes for the current block (based on input from a predictive mode unit), wherein the MPM list includes at least five entries of intra-predictive modes, i.e., A device is provided that includes {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )}, where the first condition is that only one of the intra-predictive modes of the left neighboring block and the intra-predictive mode of the upper neighboring block is an angular mode, and ang is a most probable mode unit that represents an angular mode. In other words, ang is a value or index that represents an angular mode. The range of ang may be {2-66}.

[0034] As an implementation of an alternative embodiment, the MPM unit may be further configured to check whether only one of the intra-predictive modes of the left neighboring block and the intra-predictive mode of the upper neighboring block is in angular mode.

[0035] The MPM list may also include at least five entries in intra-predictive mode when the first and second conditions are met, the second condition being that the current block is coded by ISP mode.

[0036] Furthermore, a device for use in an image encoder and / or image decoder, A prediction mode unit configured to acquire the intra-prediction mode of the neighboring block to the left of the current block and the intra-prediction mode of the neighboring block above the current block. A most probable mode unit configured to construct a most probable mode (MPM) list of intra-predictive modes for the current block (based on input from a predictive mode unit) when at least a first condition is met, wherein the first condition includes both the intra-predictive mode of the left neighboring block and the intra-predictive mode of the above neighboring block being angular modes, and the MPM list includes at least five entries of intra-predictive modes, i.e., a) When maxAB - minAB is equal to 1, it contains {above_mode, left_mode, 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( maxAB - 1 ) % 64 ), 2 + ( ( minAB + 60 ) % 64 )} or b) When maxAB - minAB is equal to 2, it contains {above_mode, left_mode, 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( maxAB - 1 ) % 64 )} or c) When maxAB - minAB is greater than 61, it includes {above_mode, left_mode, 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( maxAB + 61 ) % 64 ), 2 + ( minAB % 64 )} or d) Otherwise, include {above_mode, left_mode, 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( maxAB + 61 ) % 64 )} A device is provided that includes a most probable mode unit, where above_mode represents the intra-prediction mode of the upper neighboring block, left_mode represents the intra-prediction mode of the left neighboring block, minAB represents the minimum intra-prediction mode between above_mode and left_mode, and maxAB represents the maximum intra-prediction mode between above_mode and left_mode.

[0037] As an implementation of an alternative embodiment, the MPM unit may be further configured to check whether both the intra-predictive mode of the left neighboring block and the intra-predictive mode of the upper neighboring block are angular modes.

[0038] A device according to one of the embodiments described above may further include a coding unit configured to code the intra-predictive mode of the current block based on the generated MPM list.

[0039] Furthermore, a device according to one of the embodiments described above may further include a determination unit configured to determine the intra-prediction mode of the current block and, when the determined intra-prediction mode of the current block is listed in an MPM list, to code the determined intra-prediction mode of the current block by the corresponding index in the MPM list.

[0040] According to one embodiment, the most likely mode unit is configured to generate a sixth list entry representing a PLANAR mode.

[0041] According to one embodiment, the device further includes a planar determination unit configured to determine whether the intra-prediction mode of the current block is PLANAR mode, and a signaling unit configured to signal by a flag that the intra-prediction mode of the current block is not PLANAR mode when it is determined that the intra-prediction mode of the current block is not PLANAR mode.

[0042] The generated MPM list may consist of at least five entries, and the device according to one of the embodiments described above may further include a multi-reference line coding unit configured to perform multi-reference line coding using the MPM list.

[0043] In all of the embodiments described above, the prediction mode unit may be configured to determine that the intra-prediction mode of an upper neighbor block is PLANAR if there is no intra-predicted upper neighbor block, and the prediction mode unit may be configured to determine that the intra-prediction mode of a left neighbor block is PLANAR if there is no intra-predicted left neighbor block.

[0044] Furthermore, the case where neither the intra-prediction mode of the left neighboring block nor the intra-prediction mode of the upper neighboring block is in angular mode is considered. Therefore, A prediction mode unit (1101) is configured to obtain the intra-prediction mode of the neighboring block to the left of the current block and the intra-prediction mode of the neighboring block above the current block. A device (1100) is provided for use in an image encoder and / or image decoder, comprising a most likely mode unit (1102) configured to construct a most likely mode (MPM) list of intra-predictive modes for the current block, wherein the MPM list comprises at least five entries of intra-predictive modes, and at least four of the five entries are given by VER_IDX, HOR_IDX, VER_IDX - 4, and VER_ID + 4, where at least a first condition is met, and neither the intra-predictive mode of the left neighboring block nor the intra-predictive mode of the upper neighboring block is an angular mode, and VER_IDX represents the index of the vertical intra-predictive mode, and HOR_IDX represents the index of the horizontal intra-predictive mode.

[0045] Generally, the following may also hold: The top-left corner of the left neighboring block is at (xCb-1, yCb+cbHeight-1), and the top-left corner of the upper neighboring block is at (xCb+cbWidth-1, yCb-1), where xCb, yCb, cbHeight, and cbWidth represent the position of the top-left corner of the current block in the width direction, the position of the top-left corner of the current block in the height direction, the height of the current block, and the width of the current block, respectively.

[0046] In all of the embodiments described above, The modulus of x % y. The remainder of x divided by y, defined only for integers x and y such that x >= 0 and y > 0.

[0047] All of the embodiments described above improve intra-mode coding by including more relevant modes in the construction of the MPM list within the current prediction block.

[0048] More specifically, when one of the intra-modes in the left and upper blocks is an angular mode, or when both of those intra-modes are angular modes and are the same, the MPM list is constructed by including the angular mode and extending its neighboring angular modes within the MPM list.

[0049] When the intra-modes of the left and top blocks are angular modes and are not the same, the MPM list is constructed according to the difference in intra-modes of the left and top blocks.

[0050] A total of four categories are distinguished, and the MPM list is derived by adding the neighboring angular modes of the intra modes in the left and top blocks.

[0051] Details of one or more embodiments are described in the accompanying drawings and the following description. Other features, purposes, and advantages will become apparent from the specification, drawings, and claims.

[0052] Embodiments of the present invention will be described in more detail below with reference to the accompanying figures and drawings. [Brief explanation of the drawing]

[0053] [Figure 1A] This is a block diagram showing an example of a video coding system configured to implement an embodiment of the present invention. [Figure 1B] This is a block diagram showing another example of a video coding system configured to implement embodiments of the present invention. [Figure 2] This is a block diagram showing an example of a video encoder configured to implement an embodiment of the present invention. [Figure 3]This is a block diagram illustrating an exemplary structure of a video decoder configured to implement embodiments of the present invention. [Figure 4] This is a block diagram showing examples of encoding or decoding devices. [Figure 5] This is a block diagram showing another example of an encoding or decoding device. [Figure 6] This diagram shows the operation of a multi-reference line coding tool. [Figure 7] This figure shows an example of coding within a sub-compartment. [Figure 8] This figure shows an example of coding within a sub-compartment. [Figure 9] This diagram shows the locations of neighboring blocks on which the current block's intra predictive coding depends. [Figure 10] This figure shows an embodiment of a method for predictive coding of the current block, performed by a decoding device or encoding device according to the present invention. [Figure 11] This figure shows an embodiment of a device for use in an image encoder and / or image decoder according to the present invention. [Figure 12] This is a block diagram showing an exemplary structure of a content supply system 3100 that realizes a content distribution service. [Figure 13] This is a block diagram showing the structure of an example terminal device. [Modes for carrying out the invention]

[0054] In the following, unless otherwise specified, the same reference numeral refers to the same or at least functionally equivalent feature.

[0055] In the following description, references are made to the accompanying drawings, which form part of this disclosure and illustrate as examples certain aspects of the embodiments of the invention or certain aspects in which embodiments of the invention may be used. It is understood that embodiments of the invention may be used in other ways and may include structural or logical modifications not shown in the drawings. Accordingly, the following detailed description should not be understood to be restrictive, and the scope of the invention is defined by the appended claims.

[0056] For example, disclosures relating to a described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or more steps of a particular method are described, the corresponding device may include one or more units for performing the steps of the described method, e.g., functional units (e.g., one unit performing one or more steps, or multiple units each performing one or more of the steps), even if such one or more units are not explicitly described or shown in the figures. On the other hand, for example, if a particular apparatus is described based on one or more units, e.g., functional units, the corresponding method may include one step for performing the function of one or more units (e.g., one step performing the function of one or more units, or multiple steps each performing one or more of the functions of multiple units), even if such one or more steps are not explicitly described or shown in the figures. Furthermore, it is understood that the various exemplary embodiments and / or features of the aspects described herein may be combined with each other unless otherwise specified.

[0057] Video coding generally refers to the processing of a sequence of pictures that make up a video or video sequence. Instead of the term "picture," the terms "frame" or "image" may be used synonymously in the field of video coding. Video coding (or coding in general) consists of two parts: video encoding and video decoding. Video encoding is performed on the source side and generally involves processing the original video picture (e.g., by compression) to reduce the amount of data required to represent the video picture (for more efficient storage and / or transmission). Video decoding is performed on the destination side and generally involves the reverse processing compared to the encoder to reconstruct the video picture. Embodiments referring to "coding" of a video picture (or picture in general) are understood to be relating to the "encoding" or "decoding" of the video picture or each video sequence. The combination of the encoding and decoding parts is also called a codec (coding and decoding).

[0058] In lossless video coding, the original video picture can be reconstructed (assuming there is no transmission loss or other data loss during storage or transmission), meaning the reconstructed video picture has the same quality as the original. In lossy video coding, further compression is performed, for example, by quantization, to reduce the amount of data representing the video picture, which cannot be fully reconstructed in the decoder, meaning the quality of the reconstructed video picture is lower or worse than that of the original video picture.

[0059] Some video coding standards belong to the group of "lossy hybrid video codecs" (i.e., they combine spatial and temporal prediction in the sample domain with 2D transform coding to apply quantization in the transform domain). Each picture in a video sequence is generally divided into a set of non-overlapping blocks, and coding is generally performed at the block level. In other words, in an encoder, video is generally processed at the block (video block) level, i.e., encoded, by generating prediction blocks using, for example, spatial (intra-picture) and / or temporal (inter-picture) predictions, obtaining residual blocks by subtracting the prediction blocks from the current blocks (the blocks currently being processed), transforming the residual blocks, and quantizing the residual blocks in the transform domain to reduce (compress) the amount of data being transmitted. In a decoder, the reverse process compared to the encoder is applied to the encoded or compressed blocks in order to reconstruct the current blocks for representation. Furthermore, the encoder duplicates the decoder's processing loop to process subsequent blocks, that is, to generate identical predictions (e.g., intra and inter predictions) and / or reconstructions for coding.

[0060] Embodiments of the video coding system 10, video encoder 20, and video decoder 30 are described below with reference to Figures 1 to 3.

[0061] Figure 1A is a schematic block diagram showing an exemplary coding system 10 that may utilize the technology of the present application, for example, a video coding system 10 (or short coding system 10). The video encoder 20 (or short encoder 20) and video decoder 30 (or short decoder 30) of the video coding system 10 show an example of a device that may be configured to perform the technology described in various examples in this application.

[0062] As shown in Figure 1A, the coding system 10 includes a source device 12 configured to provide encoded picture data 21 to a destination device 14, for example, in order to decode the encoded picture data 13.

[0063] The source device 12 includes an encoder 20 and may additionally, or optionally, include a picture source 16, a preprocessor (or preprocessing unit) 18, for example, a picture preprocessor 18, and a communication interface or communication unit 22.

[0064] The picture source 16 includes or may include any type of picture-taking device, e.g., a camera for taking pictures of the real world, and / or any type of picture-generating device, e.g., a computer graphics processor for generating computer-animated pictures, or any other type of device for acquiring and / or providing pictures of the real world, computer-generated pictures (e.g., screen content, virtual reality (VR) pictures), and / or any combination thereof (e.g., augmented reality (AR) pictures). The picture source may also include any type of memory or storage for storing any of the pictures described above.

[0065] To distinguish it from the processing performed by the preprocessor 18 and the preprocessing unit 18, the picture or picture data 17 may also be called the raw picture or raw picture data 17.

[0066] The preprocessor 18 is configured to receive (raw) picture data 17 and perform preprocessing on the picture data 17 to obtain a preprocessed picture 19 or preprocessed picture data 19. The preprocessing performed by the preprocessor 18 may include, for example, cropping, color format conversion (e.g., from RGB to YCbCr), color correction, or denoising. It can be understood that the preprocessing unit 18 may be an optional component.

[0067] The video encoder 20 is configured to receive pre-processed picture data 19 and provide encoded picture data 21 (further details are described below, for example, based on Figure 2).

[0068] The communication interface 22 of the source device 12 may be configured to receive the encoded picture data 21 and transmit the encoded picture data 21 (or any further processed version thereof) via the communication channel 13 to another device, such as the destination device 14 or any other device, for storage or direct reconstruction.

[0069] The destination device 14 includes a decoder 30 (for example, a video decoder 30) and may additionally, or optionally, include a communication interface or communication unit 28, a post-processor 32 (or post-processing unit 32), and a display device 34.

[0070] The communication interface 28 of the destination device 14 is configured to receive encoded picture data 21 (or any further processed version thereof) directly from the source device 12 or from any other source, such as a storage device, such as a storage device for encoded picture data, and to provide the encoded picture data 21 to the decoder 30.

[0071] Communication interfaces 22 and 28 may be configured to transmit or receive encoded picture data 21 or encoded data 13 via a direct communication link between the source device 12 and the destination device 14, for example, via a direct wired or wireless connection, or via any type of network, for example, a wired or wireless network or any combination thereof, or any type of private and public network, or any type of combination thereof.

[0072] The communication interface 22 may be configured to process the encoded picture data using any kind of transmission encoding or processing for packaging the encoded picture data 21 into an appropriate format, for example, packets, and / or for sending it over a communication link or communication network.

[0073] The communication interface 28 forming the counterpart of the communication interface 22 may be configured, for example, to receive transmitted data and process the transmitted data using any kind of corresponding decryption or processing and / or depackaging of the transmission to obtain encoded picture data 21.

[0074] Both communication interface 22 and communication interface 28 may be configured as unidirectional or bidirectional communication interfaces, as indicated by the arrows relating to communication channel 13 in Figure 1A pointing from source device 12 to destination device 14, and may be configured, for example, to set up a connection and to confirm and exchange any other information relating to the communication link and / or data transmission, such as the transmission of encoded picture data, for example, by sending and receiving messages.

[0075] The decoder 30 is configured to receive the encoded picture data 21 and provide the decoded picture data 31 or the decoded picture 31 (further details are described below, for example, based on Figure 3 or Figure 5).

[0076] The post-processor 32 of the destination device 14 is configured to obtain post-processed picture data 33, for example, a post-processed picture 33, by post-processing the decoded picture data 31 (also called reconstructed picture data), for example, the decoded picture 31. The post-processing performed by the post-processing unit 32 may include, for example, color format conversion (e.g., from YCbCr to RGB), color correction, cropping, or resampling, or any other processing to prepare the decoded picture data 31 for display by, for example, the display device 34.

[0077] The display device 34 of the destination device 14 is configured to receive, for example, picture data 33 that has been post-processed for displaying the picture to a user or viewer. The display device 34 may be any type of display for showing the reconstructed picture, for example, an integrated or external display or monitor, or may include such a display or monitor. The display may include, for example, a liquid crystal display (LCD), an organic light-emitting diode (OLED) display, a plasma display, a projector, a microLED display, a liquid crystal on silicon (LCoS), a digital light processor (DLP), or any other type of display.

[0078] Figure 1A shows the source device 12 and destination device 14 as separate devices, but the device embodiments may also include both or both functions, such as the source device 12 or its corresponding function and the destination device 14 or its corresponding function. In such embodiments, the source device 12 or its corresponding function and the destination device 14 or its corresponding function may be implemented using the same hardware and / or software, or by separate hardware and / or software, or any combination thereof.

[0079] As will become apparent to those skilled in the art based on the description, the functions of different units or the presence and (strict) division of functions within the source device 12 and / or destination device 14 shown in Figure 1A may vary depending on the actual device and application.

[0080] The encoder 20 (e.g., video encoder 20) or the decoder 30 (e.g., video decoder 30), or both the encoder 20 and the decoder 30, may be implemented by the processing circuitry shown in Figure 1B, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, or any combination thereof dedicated to video coding. The encoder 20 may be implemented by the processing circuitry 46 to embody various modules considered in relation to the encoder 20 of Figure 2 and / or any other encoder system or subsystem described herein. The decoder 30 may be implemented by the processing circuitry 46 to embody various modules considered in relation to the decoder 30 of Figure 3 and / or any other decoder system or subsystem described herein. The processing circuitry may be configured to perform various operations, which will be considered later. If the technology is partially implemented in software, as shown in Figure 5, the device may store instructions for the software in a suitable non-temporary computer-readable storage medium, or execute the instructions in hardware using one or more processors to perform the technology of this disclosure. Both the video encoder 20 and the video decoder 30 may be incorporated as part of a combined encoder / decoder (codec) within a single device, for example, as shown in Figure 1B.

[0081] The source device 12 and destination device 14 may include any type of handheld or stationary device, including a wide range of devices such as notebook or laptop computers, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, set-top boxes, televisions, display devices, digital media players, video game consoles, video streaming devices (such as content service servers or content distribution servers), broadcast receiver devices, and broadcast transmitter devices, and may or may not use an operating system. In some cases, the source device 12 and destination device 14 may be wireless communication devices. Therefore, the source device 12 and destination device 14 may be wireless communication devices.

[0082] In some cases, the video coding system 10 shown in Figure 1A is merely an example, and the techniques of this disclosure may apply to video coding situations (e.g., encoding or decoding video) that do not necessarily involve any data communication between the encoding device and the decoding device. In other examples, the data may be retrieved from local memory or streamed over a network. The video encoding device may encode the data and store it in memory, and / or the video decoding device may retrieve the data from memory and decode it. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode the data into memory and / or retrieve the data from memory and decode it.

[0083] For convenience of explanation, embodiments of the present invention are described herein by reference to, for example, reference software for next-generation video coding standards developed by the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Motion Picture Experts Group (MPEG) Joint Collaboration Team on Video Coding (JCT-VC). Those skilled in the art will understand that embodiments of the present invention are not limited to HEVC or VVC.

[0084] Encoder and encoding method Figure 2 shows a schematic block diagram of an exemplary video encoder 20 configured to implement the technology of the present application. In the example of Figure 2, the video encoder 20 includes an input 201 (or input interface 201), a residual calculation unit 204, a transformation unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transformation unit 212, a reconstruction unit 214, a loop filter unit 220, a decoded picture buffer (DPB) 230, a mode selection unit 260, an entropy coding unit 270, and an output 272 (or output interface 272). The mode selection unit 260 may include an inter-prediction unit 244, an intra-prediction unit 254, and a segmentation unit 262. The inter-prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The video encoder 20 shown in Figure 2 may also be called a hybrid video encoder or a video encoder with a hybrid video codec.

[0085] The residual calculation unit 204, the conversion processing unit 206, the quantization unit 208, and the mode selection unit 260 may be considered to form the forward signal path of the encoder 20, while the inverse quantization unit 210, the inverse conversion processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoding picture buffer (DPB) 230, the inter-prediction unit 244, and the intra-prediction unit 254 may be considered to form the reverse signal path of the video encoder 20, and the reverse signal path of the video encoder 20 corresponds to the signal path of the decoder (see video decoder 30 in Figure 3). The inverse quantization unit 210, the inverse conversion processing unit 212, the reconstruction unit 214, the loop filter 220, the decoding picture buffer (DPB) 230, the inter-prediction unit 244, and the intra-prediction unit 254 may also be considered to form the "built-in decoder" of the video encoder 20.

[0086] Picture & Picture Separation (Picture & Block) The encoder 20 may be configured to receive, for example, a picture 17 (or picture data 17) via input 201, for example, a picture of a sequence of pictures that form a video or video sequence. The received picture or picture data may also be a pre-processed picture 19 (or pre-processed picture data 19). For simplicity, the following description will refer to picture 17. Picture 17 may also be called the current picture or the picture to be coded (in detail, in video coding, to distinguish the current picture from other pictures, for example, already coded and / or decoded pictures of the same video sequence, i.e., the video sequence that also contains the current picture).

[0087] A (digital) picture can be considered, or may be considered, a two-dimensional array or matrix of samples having intensity values. A sample in an array may also be called a pixel (a shortened form of picture element) or pel. The number of samples in the horizontal and vertical (or axis) directions of an array or picture defines the size and / or resolution of the picture. For color representation, generally three color components are used, meaning a picture may be represented by or contain three sample arrays. In the RGB format or color space, a picture contains corresponding red, green, and blue sample arrays. However, in video coding, each pixel is generally represented by a luminance and chrominance format or color space, for example, YCbCr, which includes a luminance component represented by Y (sometimes L is used instead) and two chrominance components represented by Cb and Cr. The luminance (or luma) component Y represents the brightness or intensity of the gray level (for example, as in a grayscale picture), while the two chrominance (or chroma) components Cb and Cr represent the chromaticity or color information components. Thus, a picture in YCbCr format contains a luminance sample array of luminance sample values ​​(Y) and two chrominance sample arrays of chrominance values ​​(Cb and Cr). A picture in RGB format may be converted to or transformed to YCbCr format, and vice versa; the process is also known as a color transformation or conversion. If the picture is monochrome, it may contain only a luminance sample array. Thus, a picture may be, for example, a luma sample array in a monochrome format, or a luma sample array and two corresponding chroma sample arrays in 4:2:0, 4:2:2, and 4:4:4 color formats.

[0088] Embodiments of the video encoder 20 may include a picture partitioning unit (not shown in Figure 2) configured to partition a picture 17 into multiple (typically non-overlapping) picture blocks 203. These blocks may also be called root blocks, macro blocks (H.264 / AVC), or coding tree blocks (CTB) or coding tree units (CTU) (H.265 / HEVC and VVC). The picture partitioning unit may use the same block size for all pictures and corresponding grids that define the block size for all pictures in the video sequence, or it may change the block size between pictures or subsets or groups of pictures to partition each picture into a corresponding block.

[0089] In a further embodiment, the video encoder may be configured to directly receive a block 203 of picture 17, for example, one, some, or all of the blocks that make up picture 17. The picture block 203 may also be called the current picture block or the coded picture block.

[0090] Similar to picture 17, picture block 203 is smaller in dimensions than picture 17, but can also be considered or may be considered a two-dimensional array or matrix of samples having intensity values ​​(sample values). In other words, block 203 may contain, depending on the applied color format, for example, one sample array (e.g., a luma array for monochrome picture 17, or a luma or chroma array for color picture), or three sample arrays (e.g., a luma and two chroma arrays for color picture 17), or any other number and / or type of arrays. The number of samples in the horizontal and vertical (or axis) directions of block 203 defines the size of block 203. Thus, a block may be, for example, an MxN (M columns × N rows) array of samples or an MxN array of conversion coefficients.

[0091] The embodiment of the video encoder 20 shown in Figure 2 may be configured to encode the picture 17 block by block, for example, encoding and prediction may be performed for each block 203.

[0092] The embodiment of the video encoder 20 shown in Figure 2 may be further configured to divide and / or encode a picture by using slices (also called video slices), the picture may be divided into one or more (generally non-overlapping) slices or encoded using one or more (generally non-overlapping) slices, each slice may contain one or more blocks (e.g., CTUs).

[0093] Embodiments of the video encoder 20 shown in Figure 2 may be further configured to partition and / or encode a picture by using tile groups (also called video tile groups) and / or tiles (also called video tiles), wherein the picture may be partitioned into one or more (generally non-overlapping) tile groups or encoded using one or more (generally non-overlapping) tile groups, each tile group may, for example, contain one or more blocks (e.g., CTUs) or one or more tiles, each tile may, for example, be rectangular in shape and contain one or more blocks (e.g., CTUs), for example, complete or fragmented blocks.

[0094] Calculation of residuals The residual calculation unit 204 may be configured to calculate the residual block 205 (also called residual 205) based on the picture block 203 and the prediction block 265 (further details about the prediction block 265 will be given later), for example, by subtracting the sample value of the prediction block 265 from the sample value of the picture block 203 for each sample (for each pixel) to obtain the residual block 205 in the sample region.

[0095] conversion The transformation processing unit 206 may be configured to apply a transformation, such as a discrete cosine transform (DCT) or discrete sine transform (DST), to the sample values ​​of the residual block 205 to obtain transformation coefficients 207 in the transformation domain. The transformation coefficients 207, also called transformation residual coefficients, may represent the residual block 205 in the transformation domain.

[0096] The conversion processing unit 206 may be configured to apply an integer approximation of DCT / DST, such as the conversion specified for H.265 / HEVC. Compared to the orthogonal DCT conversion, such an integer approximation is generally scaled by a certain rate. An additional scaling factor is applied as part of the conversion process to maintain the norm of the residual blocks processed by the forward and inverse conversions. The scaling factor is generally selected based on certain constraints, such as the scaling factor being a power of 2 for the shift operation, the bit depth of the conversion coefficients, and the trade-off between accuracy and implementation cost. For example, a particular scaling factor may be specified for the inverse conversion by the inverse conversion processing unit 212 (and the corresponding inverse conversion by the inverse conversion processing unit 312 in the video decoder 30, for example), and a corresponding scaling factor for the forward conversion by the conversion processing unit 206 of the encoder 20 may be specified accordingly.

[0097] Embodiments of the video encoder 20 (each a conversion processing unit 206) may be configured to output, for example, one or more conversions of a certain kind, which are either left as they are or encoded or compressed by the entropy coding unit 270, so that the video decoder 30 may receive the conversion parameters and use them for decoding.

[0098] quantization The quantization unit 208 may be configured to quantize the transformation coefficient 207 to obtain the quantized coefficient 209, for example, by applying scalar quantization or vector quantization. The quantized coefficient 209 may also be called the quantized transformation coefficient 209 or the quantized residual coefficient 209.

[0099] The quantization process may reduce the bit depth associated with some or all of the conversion coefficients 207. For example, n-bit conversion coefficients may be truncated to m-bit conversion coefficients during quantization, where n is greater than m. The degree of quantization may be modified by adjusting the quantization parameter (QP). For example, with respect to scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, while larger quantization step sizes correspond to coarser quantization. Applicable quantization step sizes may be indicated by the quantization parameter (QP). The quantization parameter may be, for example, an index to a predefined set of applicable quantization step sizes. For example, a small quantization parameter may correspond to finer quantization (smaller quantization step size), a large quantization parameter may correspond to coarser quantization (larger quantization step size), or vice versa. Quantization may involve division by the quantization step size, and the corresponding and / or inverse dequantization by the inverse quantization unit 210 may involve multiplication by the quantization step size. Some standards, e.g., embodiments by HEVC, may be configured to determine the quantization step size using quantization parameters. Generally, the quantization step size may be calculated based on the quantization parameters using a fixed-point approximation of the equations, which involves division. Additional multipliers may be introduced with respect to quantization and dequantization to restore the norm of the residual block, which may be modified due to the scaling used in the fixed-point approximation of the equations with respect to the quantization step size and quantization parameters. In one exemplary implementation, the scaling of the inverse transform and dequantization may be combined. Alternatively, a customized quantization table may be used and signaled, for example, from encoder to decoder in the bitstream. Quantization is an irreversible operation, and the loss increases as the quantization step size increases.

[0100] Embodiments of the video encoder 20 (each a quantization unit 208) may be configured to output quantization parameters (QP) that are either raw or encoded by the entropy coding unit 270, for example, so that the video decoder 30 may receive and apply the quantization parameters for decoding.

[0101] inverse quantization The inverse quantization unit 210 is configured to obtain dequantized coefficients 211 by applying the inverse of the quantization scheme applied by the quantization unit 208 to the quantized coefficients, for example, based on or using the same quantization step size as the quantization unit 208. The dequantized coefficients 211 are also called dequantized residual coefficients 211 and may correspond to the transformation coefficients 207—although they are generally not identical to the transformation coefficients due to losses due to quantization.

[0102] Inverse Transform The inverse transform processing unit 212 is configured to obtain a reconstructed residual block 213 (or the corresponding dequantized coefficient 213) in the sample region by applying the inverse transform of the transform applied by the transform processing unit 206, for example, an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST) or other inverse transform. The reconstructed residual block 213 may also be called a transform block 213.

[0103] Rebuild The reconstruction unit 214 (for example, an adder or summer 214) is configured to obtain the reconstructed block 215 in the sample region by adding the transformed block 213 (i.e., the reconstructed residual block 213) to the predicted block 265 by adding the sample values ​​of the reconstructed residual block 213 and the sample values ​​of the predicted block 265 --sample by sample.

[0104] filtering The loop filter unit 220 (or simply "loop filter" 220) is configured to filter the reconstructed block 215 to obtain a filtered block 221, or more generally, to filter the reconstructed sample to obtain a filtered sample. The loop filter unit is configured, for example, to smooth pixel transitions or otherwise improve the quality of the video. The loop filter unit 220 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a bilateral filter, an adaptive loop filter (ALF), a sharpening, smoothing filter, or a collaborative filter, or any combination thereof. The loop filter unit 220 is shown in Figure 2 as an in-loop filter, but in other configurations, the loop filter unit 220 may be implemented as a post-loop filter. The filtered block 221 may also be called the filtered reconstructed block 221.

[0105] Embodiments of the video encoder 20 (each a loop filter unit 220) may be configured to output loop filter parameters (such as sample-adaptive offset information) that are either left as they are or encoded by the entropy coding unit 270, for example, so that a decoder 30 may receive the same loop filter parameters or each respective loop filter and apply them for decoding.

[0106] Decode picture buffer The decoded picture buffer (DPB) 230 may be a memory that stores a reference picture or generally reference picture data for encoding video data by the video encoder 20. The DPB 230 may be formed by any of various memory devices, such as dynamic random access memory (DRAM) including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The decoded picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decoded picture buffer 230 may be further configured to store the same current picture or a different picture, for example, other already filtered blocks of an already reconstructed picture, for example, an already reconstructed and filtered block 221, for example, to provide a complete already reconstructed, i.e., decoded picture (and corresponding reference blocks and samples) and / or a partially reconstructed current picture (and corresponding reference blocks and samples) for interpretation. The decoded picture buffer (DPB) 230 may also be configured to store, for example, one or more unfiltered reconstructed blocks 215 or generally unfiltered reconstructed samples if the reconstructed blocks 215 are not filtered by the loop filter unit 220, or to store any other further processed versions of the reconstructed blocks or samples.

[0107] Mode Selection (Classification & Prediction) The mode selection unit 260 includes a partitioning unit 262, an inter-prediction unit 244, and an intra-prediction unit 254, and is configured to receive or acquire original picture data, for example, the original block 203 (the current block 203 of the current picture 17), and reconstructed picture data, for example, filtered and / or unfiltered reconstructed samples or blocks from one or more already decoded pictures of the same (current) picture and / or from, for example, the decoded picture buffer 230 or other buffers (e.g., line buffers not shown). The reconstructed picture data is used as reference picture data for predictions, for example, inter-prediction or intra-prediction, to acquire prediction blocks 265 or predictor 265.

[0108] The mode selection unit 260 may be configured to determine or select a partitioning and prediction mode (e.g., intra or inter-prediction mode) for the prediction mode of the current block (without partitioning), and to generate a corresponding prediction block 265 used for calculating the residual block 205 and reconstructing the reconstructed block 215.

[0109] Embodiments of the mode selection unit 260 may be configured to select a partitioning and prediction mode (for example, from partitioning and prediction modes supported by or available to the mode selection unit 260) that provides the best match, or in other words, the smallest residual (the smallest residual means better compression for transmission or storage) or the smallest signaling overhead (the smallest signaling overhead means better compression for transmission or storage), or that takes both into account or balances them. The mode selection unit 260 may also be configured to determine the partitioning and prediction mode based on rate distortion optimization (RDO), i.e., to select a prediction mode that provides the smallest rate distortion. In this context, terms such as “best,” “smallest,” and “optimal” do not necessarily refer to the overall “best,” “smallest,” and “optimal,” but may also refer to termination or selection criteria such as a value being above or below a threshold, or potentially leading to a “suboptimal choice,” but satisfying other constraints that reduce complexity and processing time.

[0110] In other words, the partitioning unit 262 may be configured to partition block 203 into smaller block partitions or subblocks (which also form a block) using, for example, quadtree partitioning (QT), binary partitioning (BT), or ternary partitioning (TT), or any combination thereof, and to perform predictions with respect to each of the block partitions or subblocks, where mode selection includes selecting the tree structure of the partitioned block 203, and prediction modes are applied to each of the block partitions or subblocks.

[0111] The following describes in more detail the sorting (by the sorting unit 260, for example) and prediction (by the inter-prediction unit 244 and intra-prediction unit 254) processes performed by the exemplary video encoder 20.

[0112] classification The partitioning unit 262 may partition (or divide) the current block 203 into smaller partitions, for example, smaller blocks of square or rectangular size. These smaller blocks (also called subblocks) may be further partitioned into even smaller partitions. This is also called tree partitioning or hierarchical tree partitioning, for example, the root block at root tree level 0 (hierarchy level 0, depth 0) may be recursively partitioned, for example, into two or more blocks at the next lowest tree level, for example, into nodes at tree level 1 (hierarchy level 1, depth 1), and these blocks may be further partitioned into two or more blocks at the next lowest level, for example, tree level 2 (hierarchy level 2, depth 2), and so on until a termination criterion is met, for example, the maximum tree depth or the minimum block size is reached and partitioning is terminated, and so on. Blocks that are not further partitioned are also called leaf blocks or leaf nodes of the tree. A tree that uses partitioning into two sections is called a binary tree (BT), a tree that uses partitioning into three sections is called a ternary tree (TT), and a tree that uses partitioning into four sections is called a quadary tree (QT).

[0113] As described above, the term “block” as used herein may refer to a portion of a picture, more specifically, a portion of a square or rectangle. For example, in relation to HEVC and VVC, a block may be a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU), and a transform unit (TU), and / or a corresponding block, such as a coding tree block (CTB), a coding block (CB), a transform block (TB), or a prediction block (PB).

[0114] For example, a coding tree unit (CTU) may be or include a CTB of a luminous sample, two corresponding CTBs of a chroma sample of a picture having three sample sequences, or a CTB of a sample of a picture coded using three separate color planes and syntax structures used to code a monochrome picture or sample. Correspondingly, a coding tree block (CTB) may be an NxN block of samples for some value of N such that the division of the constituent CTB into a CTB is a partition. A coding unit (CU) may be a coding block of a luminous sample, two corresponding coding blocks of a chroma sample of a picture having three sample sequences, or a coding block of a sample of a picture coded using three separate color planes and syntax structures used to code a monochrome picture or sample. Correspondingly, a coding block (CB) may be an MxN block of samples for some values ​​of M and N such that the division of the CTB into a coding block is a partition.

[0115] For example, in an embodiment using HEVC, a coding tree unit (CTU) may be divided into CUs by using a quadtree structure represented as a coding tree. The decision of whether to code a picture area using interpicture (time) prediction or intrapicture (spatial) prediction is made at the CU level. Each CU may be further divided into one, two, or four PUs according to the PU division type. Within a single PU, the same prediction process is applied, and relevant information is sent to the decoder based on the PU. After obtaining residual blocks by applying the prediction process based on the PU division type, the CU may be divided into transformation units (TUs) by another quadtree structure similar to a coding tree for the CU.

[0116] For example, in embodiments of the latest video coding standards currently under development, called Multipurpose Video Coding (VVC), combined quadtree and binary tree (QTBT) partitions are used, for example, to partition coding blocks. In the QTBT block structure, CUs can have either a square or rectangular shape. For example, a coding tree unit (CTU) is first partitioned by a quadtree structure. The leaf nodes of the quadtree are further partitioned by a binary or ternary (or triple) tree structure. The leaf nodes of the partitioned trees are called coding units (CUs), and their segmentation is used for prediction and transformation processing without any further partitioning. This means that CUs, PUs, and TUs have the same block size in the QTBT coding block structure. In parallel, multipartitions, for example, ternary partitions, may be used in conjunction with the QTBT block structure.

[0117] In one example, the mode selection unit 260 of the video encoder 20 may be configured to perform any combination of the classification techniques described herein.

[0118] As described above, the video encoder 20 is configured to determine or select the best or optimal prediction mode from a set of (for example, predetermined) prediction modes. The set of prediction modes may include, for example, an intra-prediction mode and / or an inter-prediction mode.

[0119] Intra Prediction A set of intra-prediction modes may include, for example, 35 different intra-prediction modes defined in HEVC, such as DC (or mean) mode and non-directional modes such as planar mode, or directional modes, or for example, 67 different intra-prediction modes defined for VVC, such as DC (or mean) mode and non-directional modes such as planar mode, or directional modes.

[0120] The intra-prediction unit 254 is configured to generate an intra-prediction block 265 using reconstructed samples of neighboring blocks of the same current picture, based on one of the intra-prediction modes in a set of intra-prediction modes.

[0121] The intra-prediction unit 254 (or generally the mode selection unit 260) is further configured to output intra-prediction parameters (or generally information indicating a selected intra-prediction mode for a block) to the entropy coding unit 270 in the form of syntax elements 266 for inclusion in the encoded picture data 21, for example, so that the video decoder 30 may receive the prediction parameters and use them for decoding.

[0122] Interpretation A set of (or possible) interpretation modes depends on the available reference picture (i.e., a previously at least partially decoded picture stored in the DPB230) and other interpretation parameters, such as whether the entire reference picture is used to search for the best-matching reference block, or only a portion of the reference picture, such as only the search window area around the current block, and / or whether pixel interpolation, such as half / semi-pel and / or quarter-pel interpolation, is applied.

[0123] In addition to the prediction mode described above, a skip mode and / or a direct mode may also be applied.

[0124] The interpretation unit 244 may include a motion estimation (ME) unit and a motion compensation (MC) unit (neither of which are shown in Figure 2). The motion estimation unit may be configured to receive or acquire, for motion estimation, a picture block 203 (the current picture block 203 of the current picture 17) and a decoded picture 231, or at least one or more already reconstructed blocks, for example, one or more reconstructed blocks of one or more other / different already decoded pictures 231. For example, a video sequence may include the current picture and the already decoded picture 231, or in other words, the current picture and the already decoded picture 231 may be part of a sequence of pictures that make up the video sequence or may form a sequence of such pictures.

[0125] The encoder 20 may be configured, for example, to select a reference block from multiple reference blocks of the same or different pictures among several other pictures, and to provide the motion estimation unit with an offset (spatial offset) between the reference picture (or reference picture index) and / or the position (x, y coordinates) of the reference block and the position of the current block as an interpretation parameter. This offset is also called the motion vector (MV).

[0126] The motion compensation unit is configured to obtain interprediction parameters, for example, receive them, and perform interprediction based on or using the interprediction parameters to obtain interprediction block 265. Motion compensation performed by the motion compensation unit may include fetching or generating prediction blocks based on motion / block vectors determined by motion estimation, possibly performing subpixel-precision interpolation. Interpolation filtering may generate additional pixel samples from known pixel samples, and thus potentially increase the number of candidate prediction blocks that may be used to code picture blocks. Upon receiving a motion vector about the current picture block's PU, the motion compensation unit may find the prediction block pointed to by the motion vector in one of the reference picture lists.

[0127] The motion compensation unit may also generate block and video slice-related syntax elements for use by the video decoder 30 when decoding the picture blocks of the video slice. In addition to slices and their respective syntax elements, or as an alternative to slices and their respective syntax elements, tile groups and / or tiles and their respective syntax elements may be generated or used.

[0128] Entropy coding The entropy coding unit 270 is configured to apply, for example, an entropy coding algorithm or scheme (e.g., variable length coding (VLC), context adaptive VLC (CAVLC), arithmetic coding, binarization, context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE), or another entropy coding method or technique) or bypass (uncompressed) to quantized coefficients 209, inter-prediction parameters, intra-prediction parameters, loop filter parameters, and / or other syntax elements, for example, to obtain encoded picture data 21 that can be output via output 272 in the form of an encoded bitstream 21, so that the video decoder 30 may receive the parameters and use them for decoding. The encoded bitstream 21 may be sent to the video decoder 30 or stored in memory for later transmission or retrieval by the video decoder 30.

[0129] Other structural variations of the video encoder 20 may be used to encode a video stream. For example, a non-transformation encoder 20 may directly quantize the residual signal with respect to a particular block or frame without a transformation processing unit 206. In another implementation, the encoder 20 may have a quantization unit 208 and an inverse quantization unit 210 combined into a single unit.

[0130] Decoder and decoding method Figure 3 shows an example of a video decoder 30 configured to implement the technology of the present application. The video decoder 30 is configured to receive encoded picture data 21 (e.g., encoded bitstream 21) encoded by, for example, the encoder 20, in order to obtain a decoded picture 331. The encoded picture data or bitstream contains information for decoding the encoded picture data, for example, the picture blocks of the encoded video slice (and / or tile group or tile) and the associated syntax elements.

[0131] In the example in Figure 3, the decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transformation processing unit 312, a reconstruction unit 314 (e.g., an aggregater 314), a loop filter 320, a decoded picture buffer (DPB) 330, a mode application unit 360, an interpretation unit 344, and an intraprediction unit 354. The interpretation unit 344 may be a motion compensation unit or include a motion compensation unit. In some examples, the video decoder 30 may perform a decoding path that is generally the reverse of the encoding path described in relation to the video encoder 100 in Figure 2.

[0132] As described in relation to encoder 20, the inverse quantization unit 210, inverse processing unit 212, reconstruction unit 214, loop filter 220, decoding picture buffer (DPB) 230, inter-prediction unit 344, and intra-prediction unit 354 can also be considered to form the “built-in decoder” of video encoder 20. Therefore, the inverse quantization unit 310 may be functionally identical to the inverse quantization unit 110, the inverse processing unit 312 may be functionally identical to the inverse processing unit 212, the reconstruction unit 314 may be functionally identical to the reconstruction unit 214, the loop filter 320 may be functionally identical to the loop filter 220, and the decoding picture buffer 330 may be functionally identical to the decoding picture buffer 230. Thus, the descriptions given for each unit and function of video encoder 20 apply mutatis mutandis to each unit and function of video decoder 30.

[0133] Entropy decoding The entropy decoding unit 304 is configured to analyze the bitstream 21 (or generally the encoded picture data 21) and, for example, perform entropy decoding on the encoded picture data 21 to obtain, for example, quantized coefficients 309 and / or decoded coding parameters (not shown in Figure 3), such as inter-prediction parameters (e.g., reference picture index and motion vector), intra-prediction parameters (e.g., intra-prediction mode or index), transformation parameters, quantization parameters, loop filter parameters, and / or other syntax elements. The entropy decoding unit 304 may be configured to apply a decoding algorithm or scheme corresponding to the coding scheme described in relation to the entropy coding unit 270 of the encoder 20. The entropy decoding unit 304 may be further configured to provide the inter-prediction parameters, intra-prediction parameters, and / or other syntax elements to the mode application unit 360 and other parameters to other units of the decoder 30. The video decoder 30 may receive the syntax elements at the video slice level and / or video block level. In addition to slices and their respective syntax elements, or as an alternative to slices and their respective syntax elements, tile groups and / or tiles and their respective syntax elements may be received and / or used.

[0134] inverse quantization The inverse quantization unit 310 may be configured to receive quantization parameters (QP) (or information generally related to inverse quantization) and quantized coefficients from the encoded picture data 21 (for example, by the entropy decoding unit 304, for example, by parsing and / or decoding), and to apply inverse quantization to the decoded quantized coefficients 309 based on the quantization parameters to obtain dequantized coefficients 311, which may also be called transformed coefficients 311. The inverse quantization process may also include using the quantization parameters determined by the video encoder 20 for each video block in the video slice (or tile or tile group) to determine the degree of quantization and, likewise, the degree of inverse quantization to be applied.

[0135] Inverse Transform The inverse transformation processing unit 312 may be configured to receive the dequantized coefficients 311, also called the transformation coefficients 311, and to apply a transformation to the dequantized coefficients 311 in order to obtain the reconstructed residual block 213 in the sample region. The reconstructed residual block 213 may also be called the transformation block 213. The transformation may be an inverse transformation, such as an inverse DCT, inverse DST, inverse integer transformation, or a conceptually similar inverse transformation process. The inverse transformation processing unit 312 may be further configured to receive transformation parameters or corresponding information from the encoded picture data 21 (for example, by parsing and / or decoding by the entropy decoding unit 304) in order to determine the transformation to be applied to the dequantized coefficients 311.

[0136] Rebuild The reconstruction unit 314 (for example, an adder or summer 314) may be configured to obtain the reconstructed block 315 in the sample region by adding the reconstructed residual block 313 to the predicted block 365, for example, by adding the sample values ​​of the reconstructed residual block 313 to the sample values ​​of the predicted block 365.

[0137] filtering The loop filter unit 320 (either within or after the coding loop) is configured to filter the reconstructed block 315 to smooth pixel transitions or otherwise improve video quality, for example, to obtain the filtered block 321. The loop filter unit 320 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a bilateral filter, an adaptive loop filter (ALF), a sharpening, smoothing filter, or a co-filter, or any combination thereof. The loop filter unit 320 is shown in Figure 3 as an in-loop filter, but in other configurations, the loop filter unit 320 may be implemented as a post-loop filter.

[0138] Decode picture buffer Next, the decoded video block 321 of the picture is stored in a decoded picture buffer 330, which stores the decoded picture 331 for use as a reference picture for subsequent motion compensation for other pictures and / or for output on the display, respectively.

[0139] The decoder 30 is configured to output the decoded picture 311, for example, via output 312, for presentation or viewing to the user.

[0140] prediction The inter-prediction unit 344 may be identical to the inter-prediction unit 244 (more specifically, the motion compensation unit), and the intra-prediction unit 354 may be functionally identical to the inter-prediction unit 254, and perform partitioning or partitioning decisions and predictions based on partitioning and / or prediction parameters or their respective information received from the decoded picture data 21 (for example, by analysis and / or decoding by the entropy decoding unit 304). The mode application unit 360 may be configured to perform block-by-block predictions (intra or inter-predictions) based on the reconstructed picture, block, or each sample (filtered or unfiltered) in order to obtain prediction blocks 365.

[0141] When a video slice is coded as an intra-coded (I) slice, the intra-prediction unit 354 of the mode application unit 360 is configured to generate a prediction block 365 for the picture block of the current video slice based on the signaled intra-prediction mode and data from already decoded blocks of the current picture. When a video picture is coded as an inter-coded (i.e., B or P) slice, the inter-prediction unit 344 (e.g., motion compensation unit) of the mode application unit 360 is configured to generate a prediction block 365 for the video block of the current video slice based on motion vectors and other syntax elements received from the entropy decoding unit 304. With respect to inter-prediction, the prediction block may be generated from one of the reference pictures in one of the reference picture lists. The video decoder 30 may construct reference frame lists, List 0 and List 1, using default construction techniques based on the reference pictures stored in the DPB 330. The same or similar may apply to or by embodiments that use tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) in addition to or as a substitute for slices (e.g., video slices), for example, video may be coded using I, P, or B tile groups and / or tiles.

[0142] The mode-applying unit 360 is configured to determine predictive information about the video blocks of the current video slice by analyzing motion vectors or related information and other syntax elements, and to use the predictive information to generate a predictive block about the current video block being decoded. For example, the mode-applying unit 360 uses some of the received syntax elements to determine the predictive mode used to code the video blocks of the video slice (e.g., intra or inter predictive), the slice type of inter predictive (e.g., B slice, P slice, or GPB slice), construction information about one or more of the reference picture lists for the slice, motion vectors for each intercoded video block of the slice, the status of the inter predictive for each intercoded video block of the slice, and other information for decoding the video blocks in the current video slice. The same or similar may be applied for or by embodiments that use tile groups (e.g., video tile groups) and / or tiles (e.g., video tiles) in addition to or as an alternative to slices (e.g., video slices), for example, video may be coded using I, P, or B tile groups and / or tiles.

[0143] The embodiment of the video decoder 30 shown in Figure 3 may be configured to partition and / or decode a picture by using slices (also called video slices), the picture may be partitioned into one or more (generally non-overlapping) slices or decoded using one or more (generally non-overlapping) slices, each slice may contain one or more blocks (e.g., CTUs).

[0144] Embodiments of the video decoder 30 shown in Figure 3 may be configured to partition and / or decode a picture by using tile groups (also called video tile groups) and / or tiles (also called video tiles), wherein the picture may be partitioned into one or more (generally non-overlapping) tile groups or decoded using one or more (generally non-overlapping) tile groups, each tile group may, for example, contain one or more blocks (e.g., CTUs) or one or more tiles, each tile may, for example, be rectangular in shape and contain one or more blocks (e.g., CTUs), for example, complete or fragmented blocks.

[0145] Other variations of the video decoder 30 may be used to decode the encoded picture data 21. For example, the decoder 30 may generate an output video stream without a loop filtering unit 320. For example, a non-transformation-based decoder 30 may directly dequantize the residual signal with respect to a particular block or frame without an inverse transformation processing unit 312. In another implementation, the video decoder 30 may have an inverse quantization unit 310 and an inverse transformation processing unit 312 combined into a single unit.

[0146] It should be understood that in encoder 20 and decoder 30, the processing result of the current step may be further processed and then output to the next step. For example, after interpolation filtering, motion vector derivation, or loop filtering, further operations such as clipping or shifting may be performed on the processing result of interpolation filtering, motion vector derivation, or loop filtering.

[0147] It should be noted that further calculations may be applied to the derived motion vector of the current block (including, but not limited to, affine mode control point motion vectors, affine, planar, and ATMVP mode lower block motion vectors, and temporal motion vectors). For example, the value of a motion vector is constrained to a given range according to its representation bits. If the representation bits of a motion vector are bitDepth, then the range is -2^(bitDepth-1) to 2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is set to be equal to 16, the range is -32768 to 32767, and if bitDepth is set to be equal to 18, the range is -131072 to 131071. For example, the values ​​of the derived motion vectors (e.g., the MVs of four 4x4 subblocks within one 8x8 block) are constrained such that the maximum difference between the integer parts of the MVs of the four 4x4 subblocks is less than or equal to N pixels, such as less than or equal to 1 pixel. Here, we provide two methods for constraining motion vectors according to bitDepth.

[0148] Method 1: Remove the MSB (most significant bit) by overflowing the operation. ux = ( mvx + 2 bitDepth ) % 2 bitDepth (1) mvx = ( ux >= 2 bitDepth-1 ) ? (ux - 2 bitDepth ) : ux (2) uy = ( mvy+2 bitDepth ) % 2 bitDepth (3) mvy = ( uy >= 2 bitDepth-1 ) ? (uy - 2 bitDepth ) : uy (4) In the formula, mvx is the horizontal component of the motion vector of the image block or subblock, mvy is the vertical component of the motion vector of the image block or subblock, and ux and uy represent the intermediate values.

[0149] For example, when the value of mvx is -32769, after applying equations (1) and (2), the resulting value is 32767. In a computer system, decimal numbers are stored as two's complement. The two's complement of -32769 is 1,0111,1111,1111,1111 (17 bits), then the MSB is discarded, and thus the resulting two's complement is 0111,1111,1111,1111 (decimal 32767), which is the same as the output by applying equations (1) and (2). ux = (mvpx + mvdx + 2 bitDepth ) % 2 bitDepth (5) mvx = (ux >= 2 bitDepth-1 )? (ux - 2 bitDepth ) : ux (6) uy = (mvpy + mvdy + 2 bitDepth ) % 2 bitDepth (7) mvy = (uy >= 2 bitDepth-1 )? (uy - 2 bitDepth ) : uy (8)

[0150] The operation may be applied in the sum of mvp and mvd as shown in equations (5) to (8).

[0151] Method 2: Discard the overflow MSB by clipping the value vx = Clip3(-2 bitDepth-1 , 2 bitDepth-1 -1, vx) vy = Clip3(-2 bitDepth-1 , 2 bitDepth-1 -1, vy) Where vx is the horizontal component of the motion vector of the image block or sub-block, vy is the vertical component of the motion vector of the image block or sub-block, x, y, and z respectively correspond to the three input values of the MV clipping process, and the definition of the function Clip3 is as follows.

number

[0152] Figure 4 is a schematic diagram of a video coding device 400 according to an embodiment of the present disclosure. The video coding device 400 is suitable for implementing embodiments disclosed as described herein. In embodiments, the video coding device 400 may be a decoder, such as the video decoder 30 in Figure 1A, or an encoder, such as the video encoder 20 in Figure 1A.

[0153] The video coding device 400 includes an incoming port 410 (or input port 410) and a receiver unit (Rx) 420 for receiving data, a processor, logic unit, or central processing unit (CPU) 430 for processing data, a transmitter unit (Tx) 440 and an outgoing port 450 (or output port 450) for transmitting data, and memory 460 for storing data. The video coding device 400 may also include optical-electrical (OE) components and electrical-optical (EO) components coupled to the incoming port 410, receiver unit 420, transmitter unit 440, and outgoing port 450 for transmitting or receiving optical or electrical signals.

[0154] The processor 430 is implemented by hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (for example, as a multi-core processor), FPGAs, ASICs, and DSPs. The processor 430 communicates with the incoming port 410, the receiver unit 420, the transmitter unit 440, the outgoing port 450, and the memory 460. The processor 430 includes a coding module 470. The coding module 470 implements the embodiments disclosed above. For example, the coding module 470 implements, processes, prepares, or provides various coding operations. Thus, including the coding module 470 greatly improves the functionality of the video coding device 400 and results in the transition of the video coding device 400 to different states. Alternatively, the coding module 470 is implemented as instructions stored in the memory 460 and executed by the processor 430.

[0155] Memory 460 may include one or more disks, tape drives, and solid-state drives, and may be used as an over-flow data storage device for storing such programs when selected for execution, as well as for storing instructions and data read during program execution. Memory 460 may be, for example, volatile and / or non-volatile, and may be read-only memory (ROM), random-access memory (RAM), ternary content-addressable memory (TCAM), and / or static random-access memory (SRAM).

[0156] Figure 5 is a simplified block diagram of a device 500 which may be used as either or both of the source device 12 and destination device 14 in Figure 1, according to an exemplary embodiment.

[0157] The processor 502 of the device 500 can be a central processing unit. Alternatively, the processor 502 can be one or more devices of any other type, existing or to be developed, capable of manipulating or processing information. The disclosed implementation can be carried out by a single processor, e.g., processor 502, as shown, but speed and efficiency advantages can be realized by using two or more processors.

[0158] The memory 504 of the device 500 may, in implementation, be a read-only memory (ROM) device or a random access memory (RAM) device. Any other suitable type of storage device may be used as memory 504. Memory 504 may include code and data 506 accessed by the processor 502 using the bus 512. Memory 504 may further include an operating system 508 and an application program 510, the application program 510 including at least one program that enables the processor 502 to perform the methods described herein. For example, the application program 510 may include applications 1 to N, further including a video coding application that performs the methods described herein.

[0159] The device 500 may also include one or more output devices, such as a display 518. The display 518 may, in one example, be a touch display that combines the display with a touch-sensing element that is operable to sense touch input. The display 518 may be coupled to the processor 502 via the bus 512.

[0160] Although shown here as a single bus, the bus 512 of device 500 may consist of multiple buses. Furthermore, the secondary storage 514 can be directly coupled to other components of device 500 or accessed via a network, and may include a single integrated unit such as a memory card or multiple units such as multiple memory cards. Thus, device 500 can be implemented in a wide variety of configurations.

[0161] Background intra-mode coding In the current VTM 4.0, a 6-MPM (Most Probable Mode) list is constructed for intra-mode coding. The MPM list is introduced to reduce the number of bits required to code the intra-predictive mode of the current block. The 6-MPM list is constructed based on the intra-predictive modes of the current block's neighboring blocks. When the current block's intra-predictive mode is in the MPM list, an index is coded instead of the actual mode, which can use fewer bits. When the current block's intra-predictive mode is not in the MPM list, truncated binarization is used to code the current block's intra-predictive mode. The MPM list provides a good prediction of the current block's intra-mode.

[0162] MPM list for multi-reference lines (MRLs). In VTM 4.0, the Multi-Reference Line (MRL) coding tool may use one of several neighboring lines to predict the sample for the current block. When the value of the MRL line index is equal to 0 (i.e., the nearest neighboring reference line is used, as shown in Figure 6), the normal 6MPM list, including the plane and DC, is used. When the value of the MRL line index is not equal to 0, the 6-MPM list, excluding the plane (i.e., value 0) and DC (i.e., value 1), is used.

[0163] MPM list for subpartition coding mode (ISP) The Intra-Subpartition (ISP) coding mode is a new tool adopted in VTM 4.0 (JVET-M0102). Luma's intra-predicted blocks are divided into two or four subpartitions vertically or horizontally, depending on the block size, as shown in Table 1. Figures 7 and 8 show two possible examples. All subpartitions satisfy the condition that they have at least 16 samples. [Table 1]

[0164] When the subpartition coding mode is enabled, VTM 4.0 uses a different MPM list, excluding the DC mode. The subpartition mode can be applied when the multi-reference line index value is equal to 0 (i.e., the MRL is not applied to the current intra-prediction block). All subpartitions share a single intra-prediction mode, and therefore the MPM list is constructed once with respect to the intra-block and shared by all subpartitions.

[0165] The construction of the MPM may depend on the ISP's partitioning mode. Two partitioning modes, namely horizontal or vertical, are determined. These two partitioning modes are shown in Figure 7, where horizontal partitioning is shown at the top and vertical partitioning is shown at the bottom.

[0166] The table below summarizes the characteristics of the 3MPM list used in VTM 4.0. [Table 2]

[0167] Background on how to determine the left and top neighbors.

[0168] VVC intra-mode coding depends on the intra-mode of neighboring blocks, namely the blocks to the left and above the current block. Their locations are shown in Figure 9.

[0169] MPM Index Signaling A flag (i.e., the MPM flag) is used to indicate whether the current block's intra-mode is in the MPM list. When the MPM flag is true (i.e., value 1), the intra-predictive mode can then be determined using the MPM index. The MPM index is coded using truncated unary code, as shown in the table below, when the length of the MPM list is 6. When the MPM flag is not true, the current block's intra-mode is not in the MPM list, and the mode is coded using truncated binary code. [Table 3]

[0170] Background on Planar Mode, DC, Horizontal, Vertical, and Angular Modes: Intra-predictive modes are Planar (value 0) and DC (value 1). Other intra-predictive modes are called Angular Predictive Modes.

[0171] This specification provides an improved technique for generating MPM lists with respect to coding efficiency. More specifically, the following scheme for generating MPM lists is provided. The scheme can be implemented, for example, in the encoder 20 (see Figure 2), decoder 30 (see Figure 3), and video coding device 400 (see Figure 4) described above.

[0172] MARK I: A suite of alternatives for building ISP-optimized MPM lists. According to one embodiment of the present invention (non-angular branch, H), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: If the current block is subject to ISP mode, determine the splitting mode for the current block. Step 5: If all of the following conditions (listed items) are evaluated as true, • left_mode is not in angle mode, and above_mode is not in angle mode. • The current block is coded in ISP mode. • The current block division mode is horizontal. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: Plane MPM[1] DC MPM[2]: Horizontal MPM[3]: 25 MPM[4]: 10 MPM[5]: 65

[0173] According to one embodiment of the present invention (non-angled branch, V), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: If the current block is subject to ISP mode, determine the splitting mode for the current block. Step 5: If all of the following conditions (listed items) are evaluated as true, • left_mode is not in angle mode, and above_mode is not in angle mode. • The current block is coded in ISP mode. • The current block division mode is vertical. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: Plane MPM[1] DC MPM[2]: Vertical MPM[3]: 43 MPM[4]: 60 MPM[5]: 3

[0174] According to one embodiment of the present invention (one angular branch, one angular, the others non-angular), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: If all of the following conditions (listed items) are evaluated as true, One of left_mode and above_mode is an angular mode, and the other is a non-angular mode. The current block is coded in ISP mode. A list of intra-predictive modes is constructed containing N entries of intra-predictive mode, as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on): The angle mode is defined as ang and obtained as follows: If left_mode is angle mode, then ang = left mode Otherwise (the mode above is angle mode), ang = the mode above MPM[0]: Plane MPM[1]: ang MPM[2]: 2 + ( ( ang + 61 ) % 64 ) MPM[3]: 2 + ( ( ang - 1 ) % 64 ) MPM[4]: 2 + ( ( ang + 60 ) % 64 ) MPM[5]: 2 + ( ( ang ) % 64 ) Step 6: Predict the current block according to the index (referred to as the MPM index) and the entries in the constructed list.

[0175] According to one embodiment of the present invention (uniangled branch, two with the same angle), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: If all of the following conditions (listed items) are evaluated as true, • Both left_mode and above_mode are angular modes, and their angular modes are the same. • The current block is coded in ISP mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: Plane MPM[1]: left_mode MPM[2]: 2 + ( ( left_mode + 61 ) % 64 ) MPM[3]: 2 + ( ( left_mode - 1 ) % 64 ) MPM[4]: 2 + ( ( left_mode + 60 ) % 64 ) MPM[5]: 2 + ( ( left_mode ) % 64 ) Step 6: Predict the current block according to the index (referred to as the MPM index) and the entries in the constructed list.

[0176] According to one embodiment of the present invention (biangular branch), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: If all of the following conditions (listed items) are evaluated as true, • left_mode and above_mode are two different angle modes. • The current block is coded in ISP mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: Plane MPM[1]: above_mode MPM[2]: left_mode - The variables minAB and maxAB are derived as follows: minAB = Min(above_mode, left_mode) maxAB = Max(above_mode, left_mode) - If maxAB - minAB is equal to 1, the following applies: MPM[3] = 2 + ( ( minAB + 61 ) % 64 ) (8-30) MPM[4] = 2 + ( ( maxAB - 1 ) % 64 ) (8-31) MPM[5] = 2 + ( ( minAB + 60 ) % 64 ) (8-32) - If not, and maxAB - minAB is equal to 2, then the following applies: MPM[3] = 2 + ( ( minAB - 1 ) % 64 ) (8-34) MPM[4] = 2 + ( ( minAB + 61 ) % 64 ) (8-35) MPM[5] = 2 + ( ( maxAB - 1 ) % 64 ) (8-36) - If not, and maxAB - minAB exceeds 61, the following applies: MPM[3] = 2 + ( ( minAB - 1 ) % 64 ) (8-38) MPM[4] = 2 + ( ( maxAB + 61 ) % 64 ) (8-39) MPM[5] = 2 + ( minAB % 64 ) (8-40) - Otherwise, the following applies: MPM[3] = 2 + ( ( minAB + 61 ) % 64 ) (8-42) MPM[4] = 2 + ( ( minAB - 1 ) % 64 ) (8-43) MPM[5] = 2 + ( ( maxAB + 61 ) % 64 ) (8-44) Step 6: Predict the current block according to the index (referred to as the MPM index) and the entries in the constructed list.

[0177] MARK II: A set of alternatives for building MPM lists for non-ISP intrablocks According to one embodiment of the present invention (non-angled branch), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: And if all of the following conditions (listed items) are evaluated as true, • left_mode is not in angle mode, and above_mode is not in angle mode. • The current block does not apply ISP mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: left_mode MPM[1]: If the mode on the left is DC mode, then this entry is planar mode; if the mode on the left is planar mode, then this entry is DC mode. MPM[2]: VER_IDX (i.e., a value of 50) MPM[3]: HOR_IDX (i.e., a value of 18) MPM[4]: VER_IDX - 4 (i.e., a value of 46) MPM[5]: VER_IDX + 4 (i.e., a value of 54) Note that VER_IDX represents the index for the vertical intra-prediction mode, and HOR_IDX represents the index for the horizontal intra-prediction mode.

[0178] According to one embodiment of the present invention (one angular branch, one angular, the others non-angular), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: And if all of the following conditions (listed items) are evaluated as true, One of left_mode and above_mode is an angular mode, and the other is a non-angular mode. • The current block does not apply ISP mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). The angle mode is defined as maxAB and obtained as follows. If left_mode is angle mode, then maxAB = left mode Otherwise (the upper mode is angle mode), maxAB = upper mode MPM[0]: Plane MPM[1]: maxAB mode MPM[2] DC MPM[3]: 2 + ( ( maxAB + 61 ) % 64 ) MPM[4]: 2 + ((maxAB - 1) % 64) MPM[5]: 2 + ((maxAB + 60) % 64) Step 6: Predict the current block according to the index (referred to as the MPM index) and the entries in the constructed list.

[0179] According to one embodiment of the present invention (uniangled branch, two with the same angle), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: If all of the following conditions (listed items) are evaluated as true, • Both left_mode and above_mode are angular modes, and their angular modes are the same. • The current block does not apply ISP mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). The angle mode is defined as ang and obtained as follows: MPM[0]: Left mode MPM[1]: Plane MPM[2] DC MPM[3]: 2 + ( ( Left mode + 61 ) % 64 ) MPM[4]: 2 + ( ( Left mode - 1 ) % 64 ) MPM[5]: 2 + ( ( Left mode + 60 ) % 64 ) Step 6: Predict the current block according to the index (referred to as the MPM index) and the entries in the constructed list.

[0180] According to one embodiment of the present invention (biangular branch), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: If all of the following conditions (listed items) are evaluated as true, • left_mode and above_mode are two different angle modes. • The current block does not apply ISP mode. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: left_mode MPM[1]: Plane MPM[2]: above_mode MPM[3] DC - The variables minAB and maxAB are derived as follows: minAB = Min(above_mode, left_mode) maxAB = Max(above_mode, left_mode) - If maxAB - minAB is within the range of 2 to 62, including 2 and 62, then the following applies: candModeList

[0004] = 2 + ( ( maxAB + 61 ) % 64 ) (8-26) candModeList

[0005] = 2 + ( ( maxAB - 1 ) % 64 ) (8-27) - Otherwise, the following applies: candModeList

[0004] = 2 + ( ( maxAB + 60 ) % 64 ) (8-28) candModeList

[0005] = 2 + ( ( maxAB ) % 64 ) (8-29) Step 6: Predict the current block according to the index (referred to as the MPM index) and the entries in the constructed list.

[0181] MARK III: A set of alternatives for building MPM lists for both ISP intrablocking and non-ISP intrablocking. According to one embodiment of the present invention (non-angular branch, H), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: If the current block is subject to ISP mode, determine the splitting mode for the current block. Step 5: If all of the following conditions (listed items) are evaluated as true, • left_mode is not in angle mode, and above_mode is not in angle mode. • The current block has ISP mode applied and the splitting mode is horizontal. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: Plane MPM[1]: Horizontal MPM[2]: Vertical mode MPM[3]: 25 MPM[4]: 10 MPM[5]: 65

[0182] According to one embodiment of the present invention (non-angled branch, V), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: If the current block is subject to ISP mode, determine the splitting mode for the current block. Step 5: If all of the following conditions (listed items) are evaluated as true, • left_mode is not in angle mode, and above_mode is not in angle mode. Either the current block does not have ISP mode applied, or the current block has ISP mode applied and the splitting mode is vertical. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: Plane MPM[1]: Vertical MPM[2]: Horizontal MPM[3]: 43 MPM[4]: 60 MPM[5]: 3

[0183] According to one embodiment of the present invention (one angular branch, one angular, the others non-angular), · Step 1: Obtain the intra prediction mode of the left neighboring block and the intra prediction mode of the upper neighboring block according to FIG. 9. If the intra prediction mode of the neighboring block is not available (for example, the neighboring block is outside the picture boundary or the neighboring block is inter-coded), the intra prediction mode of the neighboring block is set as planar. The intra prediction mode of the left neighboring block is denoted as left_mode, and the intra prediction mode of the upper neighboring block is denoted as above_mode. · Step 2: Determine whether the intra prediction mode of the neighboring block is an angular mode. · Step 3: If all of the following conditions (listed items) are evaluated to be true, · One of left_mode and above_mode is an angular mode and the other is a non-angular mode. A list of intra prediction modes including N entries of intra prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). Define the angular mode as ang and obtain it as follows. If left_mode is an angular mode, ang = left mode Otherwise (the upper mode is an angular mode), ang = upper mode MPM[0]: Planar MPM[1]: ang MPM[2]:2 + ((ang + 61) % 64) MPM[3]:2 + ((ang - 1) % 64) MPM[4]:2 + ((ang + 60) % 64) MPM[5]:2 + ((ang) % 64) · Step 6: Predict the current block according to the index (denoted as MPM index) and the entry of the constructed list.

[0184] According to one embodiment of the present invention (uniangled branch, two with the same angle), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: If all of the following conditions (listed items) are evaluated as true, • Both left_mode and above_mode are angular modes, and their angular modes are the same. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: Plane MPM[1]: Mode on the left MPM[2]: 2 + ( ( Left mode + 61 ) % 64 ) MPM[3]: 2 + ( ( Left mode - 1 ) % 64 ) MPM[4]: 2 + ( ( Left mode + 60 ) % 64 ) MPM[5]: 2 + ( (left mode) % 64 ) Step 6: Predict the current block according to the index (referred to as the MPM index) and the entries in the constructed list.

[0185] According to one embodiment of the present invention (biangular branch), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: If all of the following conditions (listed items) are evaluated as true, • left_mode and above_mode are two different angle modes. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: Plane MPM[1]: above_mode MPM[2]: left_mode - The variables minAB and maxAB are derived as follows: minAB = Min( above_mode, left_mode ) maxAB = Max( above_mode, left_mode ) - If maxAB - minAB is equal to 1, the following applies: MPM[3] = 2 + ( ( minAB + 61 ) % 64 ) (8-30) MPM[4] = 2 + ( ( maxAB - 1 ) % 64 ) (8-31) MPM[5] = 2 + ( ( minAB + 60 ) % 64 ) (8-32) - If not, and maxAB - minAB is equal to 2, then the following applies: MPM[3] = 2 + ( ( minAB - 1 ) % 64 ) (8-34) MPM[4] = 2 + ( ( minAB + 61 ) % 64 ) (8-35) MPM[5] = 2 + ( ( maxAB - 1 ) % 64 ) (8-36) - If not, and maxAB - minAB exceeds 61, the following applies: MPM[3] = 2 + ( ( minAB - 1 ) % 64 ) (8-38) MPM[4] = 2 + ( ( maxAB + 61 ) % 64 ) (8-39) MPM[5] = 2 + ( minAB % 64 ) (8-40) - Otherwise, the following applies: MPM[3] = 2 + ( ( minAB + 61 ) % 64 ) (8-42) MPM[4] = 2 + ( ( minAB - 1 ) % 64 ) (8-43) MPM[5] = 2 + ( ( maxAB + 61 ) % 64 ) (8-44) Step 6: Predict the current block according to the index (referred to as the MPM index) and the entries in the constructed list.

[0186] MARK IV: A set of alternatives for building MPM lists for both ISP intrablock and non-ISP intrablock using DCs, but only for non-angular branches as other branches do not have DCs that already have ISP-optimized versions. According to one embodiment of the present invention (non-angular branch, H), · Step 1: Obtain the intra prediction mode of the left neighboring block and the intra prediction mode of the upper neighboring block according to FIG. 9. If the intra prediction mode of the neighboring block is not available (for example, the neighboring block is outside the picture boundary or the neighboring block is inter-coded), the intra prediction mode of the neighboring block is set as planar. The intra prediction mode of the left neighboring block is denoted as left_mode, and the intra prediction mode of the upper neighboring block is denoted as above_mode. · Step 2: Determine whether the intra prediction mode of the neighboring block is an angular mode. · Step 3: Determine whether the current block is coded by the ISP mode. · Step 4: If the current block is applied with the ISP mode, determine the split mode of the current block. · Step 5: If all of the following conditions (listed items) are evaluated to be true, · left_mode is not an angular mode and above_mode is not an angular mode. · The current block is applied with the ISP mode and the split mode is horizontal split. A list of intra prediction modes including N entries of intra prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: Planar MPM[1]: DC MPM[2]: Horizontal MPM[3]: 25 MPM[4]: 10 MPM[5]: 65

[0187] According to an embodiment of the present invention (non-angular branch, V), Step 1: Obtain the intra-prediction mode for the left neighboring block and the intra-prediction mode for the above neighboring block according to Figure 9. If the intra-prediction mode for a neighboring block is not available (for example, if the neighboring block is outside the picture boundary or the neighboring block is encoded), the intra-prediction mode for the neighboring block is set to plane. The intra-prediction mode for the left neighboring block is denoted as left_mode, and the intra-prediction mode for the above neighboring block is denoted as above_mode. Step 2: Determine whether the intra-prediction mode of the neighboring block is angular mode. Step 3: Determine whether the current block is coded by ISP mode. Step 4: If the current block is subject to ISP mode, determine the splitting mode for the current block. Step 5: If all of the following conditions (listed items) are evaluated as true, • left_mode is not in angle mode, and above_mode is not in angle mode. Either the current block does not have ISP mode applied, or the current block has ISP mode applied and the splitting mode is vertical. A list of intra-prediction modes containing N entries for intra-prediction modes is constructed as follows (for example, N is equal to 6, the first entry corresponds to MPM[0], the second entry corresponds to MPM[1], and so on). MPM[0]: Plane MPM[1] DC MPM[2]: Vertical MPM[3]: 43 MPM[4]: 60 MPM[5]: 3

[0188] In one implementation of the embodiment, N is set to be equal to 6.

[0189] In one implementation of the embodiment, N is set to be equal to 5. In this case, the list of intra-prediction modes includes the first five entries listed above, but does not include the sixth entry.

[0190] In one implementation of the embodiment, N is set to be equal to 4. In this case, the list of intra-prediction modes includes the first four entries listed above, but does not include the fifth and sixth entries.

[0191] In one implementation of the embodiment, the list of intra-prediction modes is called the MPM list.

[0192] In one implementation, the list index (MPM index) is signaled as an indicator within the bitstream. Conveniently, the MPM index can be coded by a Context Adaptive Entropy Coder (CABAC). The MPM index may be coded by the CABAC according to a variety of probabilistic models (in other words, contexts).

[0193] Interaction with multiple reference lines If the MPM list includes both planar and DC modes, the MPM list obtained by removing the planar and DC modes from the constructed MPM list is then used by the multi-reference line coding tool. In this case, the 4-MPM list is used by the intra-mode coding of multi-reference lines. For example, if the MPM list is {Planar (value 0), DC (value 1), VER (value 50), HOR (value 18), VER-4 (value 46), VER+4 (value 54)} after the MPM list is constructed, then the 4-MPM list {VER, HOR, VER-4, VER+4} is used by the intra-mode coding when multi-reference lines are enabled.

[0194] If the MPM list includes planar mode but does not include DC mode, then the MPM list obtained by removing the planar mode from the constructed MPM list is used by the multi-reference line coding tool. In this case, the 5-MPM list is used by the intra-mode coding of multi-reference lines. For example, if the MPM list is {Planar, VER, HOR, 43, 60, 3} after the MPM list is constructed, then the 5-MPM list {VER, HOR, 43, 60, 3} is used by the intra-mode coding when multi-reference lines are enabled.

[0195] In another example, a syntax modification may be required for MPM lists without DC mode. If an MPM list does not include DC, DC mode is probably used very frequently in non-MPM branches (i.e., the MPM flag is false). In this case, a new syntax DC_mode is introduced. DC_mode equal to 1 indicates that the intra-mode of the current block is DC mode. DC_mode equal to 0 indicates that the intra-mode of the current block is not DC mode.

[0196] In other words, the older non-MPM syntax, If (mpm_flag) ... else intra_mode (using TB) from If (mpm_flag) ... else DComecode If (DC_mode==0) intra_mode (using TB) It will be changed to this.

[0197] The syntax DC_mode can be coded by a context-adaptive entropy coder (CABAC). DC_mode may be coded by CABAC according to a number of probabilistic models (in other words, contexts). With the introduction of DC_mode, the maximum value of the truncated binary is 60, i.e., 67 (total number of modes) - 6 (MPM) - 1 (DC). Without the introduction of DC_mode, the maximum value of the truncated binary is 61, i.e., 67 (total number of modes) - 6 (MPM).

[0198] More specifically, the following methods for predictive coding of the current block, performed by a decoding device or an encoding device, are provided herein. The decoding device may be the decoder 30 in Figure 3, and the encoding device may be the encoder 20 in Figure 2.

[0199] According to one embodiment (see Figure 10), a method for predictive coding of the current block performed by a decoding or coding device includes the steps of obtaining the intra-predictive mode of the left neighboring block of the current block (1001) and obtaining the intra-predictive mode of the above neighboring block of the current block (see Figure 9). Furthermore, the method includes constructing a most likely mode (MPM) list of intra-predictive modes for the current block (1003) based on the results given by steps 1101 and 1002 to obtain, wherein the MPM list includes at least five entries of intra-predictive modes.

[0200] At least five entries are valid when at least the first condition is met, for example, namely, {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )}, where the first condition is that the intra-prediction mode of the left neighboring block and the intra-prediction mode of the upper neighboring block are the same angle mode, and ang represents the intra-prediction mode of the left neighboring block or the intra-prediction mode of the upper neighboring block.

[0201] According to an alternative example, at least five entries are, when at least the first condition is met, namely, {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )}, where the first condition is that either the intra-predictive mode of the left neighboring block or the intra-predictive mode of the above neighboring block is an angular mode, and ang represents the angular mode.

[0202] According to another alternative example, at least five entries are as follows: Both the intra-prediction mode of the left neighboring block and the intra-prediction mode of the upper neighboring block are angular modes, where above_mode represents the intra-prediction mode of the upper neighboring block and left_mode represents the intra-prediction mode of the left neighboring block. minAB = Min( above_mode, left_mode ) maxAB = Max( above_mode, left_mode ) When that is the case, a) If maxAB - minAB is equal to 1, then at least five entries in the intra-prediction mode are as follows: {above_mode, left_mode, 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( maxAB - 1 ) % 64 ), 2 + ( ( minAB + 60 ) % 64 )}, or b) If maxAB - minAB is equal to 2, then at least 5 entries in the intra-prediction mode are as follows: {above_mode, left_mode, 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( maxAB - 1 ) % 64 )}, or c) If maxAB - minAB exceeds 61, then at least five entries in intra-prediction mode are as follows: {above_mode, left_mode, 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( maxAB + 61 ) % 64 ), 2 + ( minAB % 64 )}, or d) Otherwise, at least five entries in intra-predictive mode are as follows: {above_mode, left_mode, 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( maxAB + 61 ) % 64 )}.

[0203] According to another embodiment, when at least a first condition is met, four of the five entries of the intra-prediction mode are given by VER_IDX, HOR_IDX, VER_IDX - 4, and VER_ID + 4, wherein the first condition includes that neither the intra-prediction mode of the left neighboring block nor the intra-prediction mode of the upper neighboring block is an angular mode, VER_IDX represents the index of the vertical intra-prediction mode, and HOR_IDX represents the index of the horizontal intra-prediction mode.

[0204] In detail, the MPM list may consist of five entries, for example, the five entries described in the alternative embodiment above. Furthermore, the PLANAR mode may be signaled by a PLANAR mode flag.

[0205] The above-described method for predictive coding of the current block can be implemented in an image encoder and / or image decoder, for example, in a device for use in encoder 20 in Figure 2 and / or decoder 30 in Figure 3.

[0206] As shown in Figure 11, the device 1100 according to the embodiment includes a prediction mode unit 1101 configured to acquire the intra-predictive mode of the neighboring block to the left of the current block and the intra-predictive mode of the neighboring block above the current block. Furthermore, the device 1100 includes a most likely mode unit 1102 configured to construct a most likely mode (MPM) list of intra-predictive modes for the current block, which includes at least five entries (based on the results supplied by the prediction mode unit 1101).

[0207] According to an alternative embodiment, the MPM list provided by the most likely mode unit 1102 includes at least five entries for intra-predictive modes, namely, I) The formula includes {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )} when at least the first condition is met, the first condition includes that the intra-prediction mode of the left neighboring block and the intra-prediction mode of the upper neighboring block are the same angle mode, and ang represents either the intra-prediction mode of the left neighboring block or the intra-prediction mode of the upper neighboring block, or II) The expression {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )} is included when at least the first condition is met, the first condition being that one of the intra-predictive modes of the left neighboring block and the intra-predictive mode of the above neighboring block is an angular mode, and ang represents an angular mode.

[0208] According to further alternatives, the MPM list includes at least five entries for intra-predictive mode, as follows: Both the intra-prediction mode of the left neighboring block and the intra-prediction mode of the upper neighboring block are angular modes, where above_mode represents the intra-prediction mode of the upper neighboring block and left_mode represents the intra-prediction mode of the left neighboring block. minAB = Min( above_mode, left_mode ) maxAB = Max( above_mode, left_mode ) When that is the case, a) If maxAB - minAB is equal to 1, then at least five entries in the intra-prediction mode are as follows: {above_mode, left_mode, 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( maxAB - 1 ) % 64 ), 2 + ( ( minAB + 60 ) % 64 )}, or b) If maxAB - minAB is equal to 2, then at least 5 entries in the intra-prediction mode are as follows: {above_mode, left_mode, 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( maxAB - 1 ) % 64 )}, or c) If maxAB - minAB exceeds 61, then at least five entries in intra-prediction mode are as follows: {above_mode, left_mode, 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( maxAB + 61 ) % 64 ), 2 + ( minAB % 64 )}, or d) Otherwise, at least five entries in intra-predictive mode are as follows: {above_mode, left_mode, 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( maxAB + 61 ) % 64 )}.

[0209] According to another embodiment, when at least a first condition is met, four of the five entries of the intra-prediction mode are given by VER_IDX, HOR_IDX, VER_IDX - 4, and VER_ID + 4, wherein the first condition includes that neither the intra-prediction mode of the left neighboring block nor the intra-prediction mode of the upper neighboring block is an angular mode, VER_IDX represents the index of the vertical intra-prediction mode, and HOR_IDX represents the index of the horizontal intra-prediction mode.

[0210] In detail, the MPM list may consist of five entries, for example, the five entries described in the alternative embodiment above. Furthermore, the PLANAR mode may be signaled by a PLANAR mode flag.

[0211] The following describes applications of the encoding and decoding methods shown in the embodiments described above, as well as systems that use them.

[0212] Figure 12 is a block diagram showing a content supply system 3100 for realizing a content distribution service. This content supply system 3100 includes a capture device 3102, a terminal device 3106, and optionally a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication link 3104. The communication link may include the communication channel 13 described above. The communication link 3104 includes, but is not limited to, Wi-Fi, Ethernet, cable, wireless (3G / 4G / 5G), USB, or any combination thereof.

[0213] The capture device 3102 may generate data and encode the data using the encoding method shown in the above embodiment. Alternatively, the capture device 3102 may deliver the data to a streaming server (not shown), which encodes the data and transmits the encoded data to the terminal device 3106. The capture device 3102 includes, but is not limited to, a camera, a smartphone or smartpad, a computer or laptop, a video conferencing system, a PDA, an in-vehicle device, or any combination thereof. For example, the capture device 3102 may include the source device 12 described above. When the data includes video, the video encoder 20 included in the capture device 3102 may actually perform the video encoding process. When the data includes audio (i.e., voice), the audio encoder included in the capture device 3102 may actually perform the audio encoding process. In some practical scenarios, the capture device 3102 delivers the encoded video and audio data by multiplexing them together. In other practical scenarios, for example in a video conferencing system, the encoded audio data and encoded video data are not multiplexed. The capture device 3102 distributes the encoded audio data and encoded video data separately to the terminal device 3106.

[0214] In the content supply system 3100, the terminal device 310 receives and plays back encoded data. The terminal device 3106 can be any device capable of receiving and recovering data, such as a smartphone or smartpad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a set-top box (STB) 3116, a video conferencing system 3118, a video surveillance system 3120, a personal digital assistant (PDA) 3122, an in-vehicle device 3124, or any combination thereof, that can decode the encoded data described above. For example, the terminal device 3106 may include the destination device 14 described above. When the encoded data includes video, the video decoder 30 included in the terminal device is preferred for performing video decoding. When the encoded data includes audio, the audio decoder included in the terminal device is preferred for performing audio decoding.

[0215] For terminal devices with a display, such as a smartphone or smartpad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a personal digital assistant (PDA), or an in-vehicle device 3124, the terminal device can supply the decoded data to its display. For terminal devices without a display, such as an STB 3116, a video conferencing system 3118, or a video surveillance system 3120, the decoded data is received and displayed on an external display 3126.

[0216] When each device in this system performs encoding or decoding, the picture encoding device or picture decoding device shown in the above embodiment may be used.

[0217] Figure 13 shows the structure of an example terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, the protocol progression unit 3202 analyzes the transmission protocol of the stream. The protocol includes, but is not limited to, Real-Time Streaming Protocol (RTSP), Hypertext Transfer Protocol (HTTP), HTTP Live Streaming Protocol (HLS), MPEG-DASH, Real-Time Transport Protocol (RTP), Real-Time Messaging Protocol (RTMP), or any combination of these.

[0218] After the protocol processing unit 3202 processes the stream, a stream file is generated. The file is output to the multiplexing / decompression unit 3204. The multiplexing / decompression unit 3204 can separate the multiplexed data into encoded audio data and encoded video data. As described above, in some practical scenarios, for example in a video conferencing system, the encoded audio data and encoded video data are not multiplexed. In this situation, the encoded data is sent to the video decoder 3206 and audio decoder 3208 without passing through the multiplexing / decompression unit 3204.

[0219] Multiplexing processes generate a video elementary stream (ES), an audio ES, and optionally subtitles. A video decoder 3206, including the video decoder 30 described in the above embodiment, decodes the video ES using the decoding method shown in the above embodiment to generate video frames and supplies this data to the synchronization unit 3212. An audio decoder 3208 decodes the audio ES to generate audio frames and supplies this data to the synchronization unit 3212. Alternatively, video frames may be stored in a buffer (not shown in Figure Y) before supplying them to the synchronization unit 3212. Similarly, audio frames may be stored in a buffer (not shown in Figure Y) before supplying them to the synchronization unit 3212.

[0220] The synchronization unit 3212 synchronizes video frames and audio frames and supplies video / audio to the video / audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of video and audio information. The information may be coded in a syntax that uses timestamps for the presentation of coded audio and visual data, as well as timestamps for the delivery of the data stream itself.

[0221] If subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitles, synchronizes them with the video and audio frames, and supplies the video / audio / subtitles to the video / audio / subtitle display 3216.

[0222] The present invention is not limited to the systems described above, and either the picture encoding device or the picture decoding device of the embodiments described above can be incorporated into other systems, such as automotive systems.

[0223] Mathematical operators The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are more strictly defined, and additional operations such as exponentiation and real-valued division are defined. The numbering and counting rules generally start from 0, for example, "1st" is equivalent to 0, "2nd" is equivalent to 1, and so on.

[0224] Arithmetic operators The following arithmetic operators are defined as follows: + Addition - Subtraction (as a two-argument operator) or negation (as a unary prefix operator) * Multiplication including matrix multiplication x y Exponentiation. Defines x to the power of y. In other contexts, such notation is used for superscript writing that is not intended to be interpreted as an exponentiation. The / operator performs integer division, truncating the result to zero. For example, 7 / 4 and -7 / -4 are truncated to 1, while -7 / 4 and 7 / -4 are truncated to -1. The division symbol (÷) is used to represent division in mathematical equations where truncation or rounding is not intended.

number

number

[0225] Logical operators The following logical operators are defined as follows: x && y: Boolean "product" of x and y x || y Boolean "union" of x and y ! Boolean logic "negation" x ? y : If x is true or not equal to 0, it evaluates to the value y; otherwise, it evaluates to the value z.

[0226] Relational operators The following relational operators are defined as follows: > larger >= Above < Less than <= Below == equal != Not equal

[0227] When a relational operator is applied to a syntax element or variable assigned the value "na" (not applicable), the value "na" is treated as a different value for the syntax element or variable. The value "na" is considered not to be equal to any other value.

[0228] Bitwise operators The following bitwise operators are defined as follows: The AND operator performs a bitwise "logical AND". When used with integer arguments, it operates on the two's complement representation of the integer value. When used with binary arguments containing fewer bits than the other argument, the shorter argument is extended by adding higher-order bits equal to zero. | Bitwise "logical OR". When performed on integer arguments, it operates on the two's complement representation of the integer value. When performed on binary arguments containing fewer bits than another argument, the shorter argument is extended by adding higher-order bits equal to 0. ^ Bitwise "exclusive OR". When performed on integer arguments, it operates on the two's complement representation of the integer value. When performed on binary arguments containing fewer bits than another argument, the shorter argument is extended by adding higher-order bits equal to 0. x >> y Arithmetic right shift of the two's complement representation of an integer x by y bits in binary. This function is defined only for non-negative integer values of y. The bit shifted into the most significant bit (MSB) as a result of the right shift has a value equal to the MSB of x before the shift operation. x << y Arithmetic left shift of the two's complement representation of an integer x by y bits in binary. This function is defined only for non-negative integer values of y. The bit shifted into the least significant bit (LSB) as a result of the left shift has a value equal to 0.

[0229] Assignment operator The following arithmetic operators are defined as follows. = Assignment operator ++ Increment, i.e., x++ is equivalent to x = x + 1, and when used as an array index, it is evaluated as the value of the variable before the increment operation. -- Decrement, i.e., x-- is equivalent to x = x - 1, and when used as an array index, it is evaluated as the value of the variable before the decrement operation. += Increment by the specified amount, i.e., x += 3 is equivalent to x = x + 3, and x += (-3) is equivalent to x = x + (-3). -= Decrement by the specified amount, i.e., x -= 3 is equivalent to x = x - 3, and x -= (-3) is equivalent to x = x - (-3).

[0230] Range notation The following notations are used to specify a range of values. x = y..z x takes integer values from y to z, including y and z, assuming x, y, and z are integer values and z is greater than y.

[0231] Mathematical functions The following mathematical functions are defined.

Number

number

number

number

number

number

number

[0232] Order of operations When precedence in an expression is not explicitly indicated using parentheses, the following rules apply: - Higher-priority operations are evaluated before any lower-priority operations. - Operations with the same priority are evaluated from left to right.

[0233] The table below clearly shows the order of operations from highest to lowest, with higher positions in the table indicating higher priority.

[0234] With respect to operators also used in the C programming language, the precedence used herein is the same as that used in the C programming language.

[0235] Table: Priority of operations from the highest (top of the table) to the lowest (bottom of the table) [Table 4]

[0236] Text description of logical operations In the text, in the following form, namely, if (condition 0) Statement 0 else if (condition 1) Statement 1 ... else / * Comment providing information about the remaining conditions * / statement n A statement of a logical operation, mathematically described in the form of , may also be written as follows: The following applies: - If condition 0, statement 0 - Instead, if condition 1 is true, then statement 1 - ... - Otherwise (comments providing information about the remaining conditions), statement n

[0237] Each "If..., ..., otherwise..., ..., ..." statement in the text is introduced by "If..., ..." immediately followed by "The following applies..." or "The following applies...". The final condition of "If..., ..., otherwise..., ..., ..., ..., ..." is always "The following applies...". Alternating "If..., ..., otherwise..., ..., ..., ..., ..." statements can be identified by matching "The following applies..." or "The following applies..." with the final "The following applies...".

[0238] In the text, in the following form, namely, if( condition 0a && condition 0b ) Statement 0 else if( condition 1a || condition 1b ) Statement 1 ... else statement n A statement of a logical operation, mathematically described in the form of , may also be written as follows: The following applies: - If all of the following conditions are true, then statement 0 - Condition 0a - Condition 0b - Otherwise, if one or more of the following conditions are true, then statement 1 - Condition 1a - Condition 1b - ... - Otherwise, statement n

[0239] In the text, in the following form, namely, if (condition 0) Statement 0 if (Condition 1) Statement 1 A statement of a logical operation, mathematically described in the form of , may also be written as follows: When condition 0, statement 0 When condition 1 is met, statement 1

[0240] Although embodiments of the present invention have been described primarily in relation to video coding, it should be noted that embodiments of the coding system 10, encoder 20, and decoder 30 (and correspondingly system 10), as well as other embodiments described herein, may be configured for processing or coding still pictures, i.e., for processing or coding individual pictures independently of any preceding or consecutive pictures, similar to video coding. Generally, when the processing and coding of a picture is limited to a single picture 17, only the interpretation units 244 (encoder) and 344 (decoder) may not be available. All other functions (also called tools or technologies) of the video encoder 20 and video decoder 30, such as residual calculation 204 / 304, transformation 206, quantization 208, inverse quantization 210 / 310, (inverse) transformation 212 / 312, partitioning 262 / 362, intra prediction 254 / 354, and / or loop filters 220, 320, and entropy coding 270, and entropy decoding 304, may be used equally for processing still pictures.

[0241] For example, the encoder 20 and decoder 30, and embodiments of the functions described herein in relation to the encoder 20 and decoder 30, for example, may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored as one or more instructions or codes on a computer-readable medium or transmitted over a communication medium and executed by a hardware-based processing unit. The computer-readable medium may include a computer-readable storage medium corresponding to a tangible medium such as a data storage medium, or a communication medium including any medium that facilitates the transfer of computer programs from one place to another by a communication protocol, for example. Thus, generally, the computer-readable medium may correspond to (1) a non-transient tangible computer-readable storage medium or (2) a communication medium such as a signal or carrier wave. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementation of the technology described herein. The computer program product may include a computer-readable medium.

[0242] As an example, and not an limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other media that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is appropriately called computer-readable media. For example, if instructions are transmitted from a website, server or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio waves, and microwaves, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio waves, and microwaves are included in the definition of media. However, it should be understood that computer-readable storage media and data storage media do not include connections, carriers, signals, or other temporary media, but instead refer to non-temporary, tangible storage media. As used herein, "disk" and "disc" include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs (Blu-ray® discs), where a disk typically reproduces data magnetically, while a disc reproduces data optically using a laser. Combinations of the above should also be included in the scope of computer-readable media.

[0243] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, when used herein, the term “processor” may refer to either the above-described structures or any other structure suitable for implementing the techniques described herein. In addition, in some embodiments, the functions described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. Furthermore, the techniques may all be implemented in one or more circuits or logic elements.

[0244] The technology of this disclosure may be implemented in a wide variety of devices or apparatus, including wireless handsets, integrated circuits (ICs), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in this disclosure to highlight the modes of function of a device configured to perform the disclosed technology, but implementation by different hardware units is not necessarily required. Rather, as described above, various units may be combined in a codec hardware unit or provided by a set of interoperable hardware units including one or more processors as described above, in conjunction with suitable software and / or firmware. [Explanation of Symbols]

[0245] 10 Video coding system, coding system 12 Source device 13 Encoded picture data, communication channel 14 Destination device 16 Picture Sources 17. Picture, picture data, raw picture, raw picture data, monochrome picture, color picture, current picture 18 Preprocessors, pre-processing units, picture preprocessors 19 Pre-processed pictures, pre-processed picture data 20 video encoders, encoders 21 Encoded picture data, encoded bitstream 22 Communication interface, communication unit 28 Communication interface, communication unit 30 decoders, video decoders 31 Decrypted picture data, decrypted picture 32 Post-processors, Post-processing Units 33 Post-processed picture data, post-processed picture 34 Display Devices 46 Processing Circuit 100 video encoders 201 Input, Input Interface 203 Picture Block, Original Block, Current Block, Divided Block, Current Picture Block 204 Residual Calculation Unit, Residual Calculation 205 Residual block, residual 206 Conversion processing unit, conversion 207 Conversion coefficient 208 Quantization Unit, Quantization 209 Quantized coefficients, quantized transformation coefficients, quantized residual coefficients 210 Inverse Quantization Unit, Inverse Quantization 211 Inverse quantized coefficients, inverse quantized residual coefficients 212 Inverse transformation processing unit, (inverse) transformation 213 Reconstructed residual blocks, inversely quantized coefficients, transform blocks 214 Reconstruction Unit, Adder, Combiner 215 Reconstructed Blocks 216 buffers 220 Loop Filter Unit, Loop Filter 221 Filtered blocks, filtered and reconstructed blocks 230 Decoded Picture Buffer (DPB) 231 Decrypted picture 244 Interpretation Units 254 Intra Prediction Unit, Inter Prediction Unit, Intra Prediction 260 Mode Selection Unit 262 division units, division 265 prediction blocks, predictors 266 Syntax Elements 270 Entropy coding units, entropy coding 272 outputs, output interface 304 Entropy decoding unit, residual calculation, entropy decoding 309 Quantized coefficients 310 Inverse Quantization Unit, Inverse Quantization 311 Inverse quantized coefficients, transformation coefficients 312 Inverse conversion processing unit, (inverse) conversion, output 313 Reconstructed residual block 314 Reconstruction Unit, Combiner, Adder 315 Reconstructed Blocks 320 Loop Filters, Loop Filter Units, Loop Filtering Units 321 Filtered blocks, decoded video blocks 330 Decoded Picture Buffer (DPB), Decoded Picture Buffer (DBP) 331 Decrypted picture 344 Interpretation Units 354 Intra Prediction Unit, Intra Prediction 360 Mode Applicable Unit 362 divisions 365 Prediction Block 400 video coding devices 410 Incoming port, input port 420 Receiver Unit (Rx) 430 Processors, Logical Units, Central Processing Units (CPUs) 440 Transmitter Unit (Tx) 450 outgoing ports, output ports 460 memory 470 coding modules 500 devices 502 Processors 504 memory 506 data 508 Operating Systems 510 Application Programs 512 Bus 514 Secondary Storage 518 displays 1100 devices 1101 Predictive Mode Unit 1102 Most Probable Mode Unit 3100 Content Supply System 3102 Capture Device 3104 Communication Link 3106 Terminal device 3108 Smartphones, Smartpads 3110 Computers, Laptops 3112 Network Video Recorder (NVR) / Digital Video Recorder (DVR) 3114 TV 3116 Set-top box (STB) 3118 Video conferencing system 3120 Video Surveillance System 3122 Personal Digital Assistant (PDA) 3124 In-vehicle devices 3126 Display 3202 Protocol Progress Unit 3204 Multiple Separation Unit 3206 Video Decoder 3208 Audio Decoder 3210 Subtitle Decoder 3212 Synchronization Unit 3214 Video / Audio Display 3216 Video / Audio / Subtitle Display

Claims

1. A method for predictive coding of the current block performed by a decoding device or encoding device, Steps to obtain the intra-prediction mode of the block to the left of the current block: Steps to obtain the intra-prediction mode of neighboring blocks above the current block: A step of constructing a most probable mode (MPM) list of intra-predictive modes for the current block, wherein the MPM list includes at least five entries of intra-predictive modes, namely, A method comprising the step of including {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )} when at least a first condition is met, wherein the first condition includes the intra-prediction mode of the left neighboring block and the intra-prediction mode of the upper neighboring block being the same angular mode, and ang represents the intra-prediction mode of the left neighboring block or the intra-prediction mode of the upper neighboring block.

2. The method according to claim 1, wherein the MPM list includes the at least five entries of intra-predictive mode when the first and second conditions are met, the second condition being that the current block is coded by an Intra-Segmented-Pane (ISP) mode.

3. A method for predictive coding of the current block performed by a decoding device or encoding device, Steps to obtain the intra-prediction mode of the neighboring block to the left of the current block: Steps to obtain the intra-prediction mode of neighboring blocks above the current block: A step of constructing a most probable mode (MPM) list of intra-predictive modes for the current block, wherein the MPM list includes at least five entries of intra-predictive modes, namely, A method comprising the step of including {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )}, wherein the first condition is that only one of the intra-predictive modes of the left neighboring block and the intra-predictive mode of the upper neighboring block is an angular mode, and ang represents the angular mode.

4. The method according to claim 3, wherein the MPM list includes the at least five entries of intra-predictive mode when the first and second conditions are met, the second condition being that the current block is coded by ISP mode.

5. A method for predictive coding of the current block performed by a decoding device or encoding device, Steps to obtain the intra-prediction mode of the neighboring block to the left of the current block: A step of obtaining the intra-prediction mode of a neighboring block above the current block, Steps to construct a most likely mode (MPM) list of intra-predictive modes for the current block, provided that at least a first condition is met, wherein the first condition includes both the intra-predictive mode of the left neighboring block and the intra-predictive mode of the upper neighboring block being angular modes, and the MPM list includes at least five entries of intra-predictive modes, i.e., a) When maxAB - minAB is equal to 1, it contains {above_mode, left_mode, 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( maxAB - 1 ) % 64 ), 2 + ( ( minAB + 60 ) % 64 )} or b) When maxAB - minAB is equal to 2, it contains {above_mode, left_mode, 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( maxAB - 1 ) % 64 )} or c) When maxAB - minAB is greater than 61, it includes {above_mode, left_mode, 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( maxAB + 61 ) % 64 ), 2 + ( minAB % 64 )} or d) Otherwise, include {above_mode, left_mode, 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( maxAB + 61 ) % 64 )} A method comprising the step of: above_mode represents the intra-prediction mode of the above neighboring block; left_mode represents the intra-prediction mode of the left neighboring block; minAB represents the minimum intra-prediction mode between above_mode and left_mode; and maxAB represents the maximum intra-prediction mode between above_mode and left_mode.

6. The method according to any one of claims 1 to 5, further comprising the step of coding the intra-prediction mode of the current block based on the generated MPM list.

7. The method according to any one of claims 1 to 6, further comprising the steps of determining the intra-prediction mode for the current block, and coding the determined intra-prediction mode for the current block by the corresponding index in the MPM list, when the determined intra-prediction mode for the current block is listed in the MPM list.

8. The steps include determining whether the current block's intra prediction mode is PLANAR mode, The method according to any one of claims 1 to 6, further comprising the step of signaling by a flag that the intra-prediction mode of the current block is not the PLANAR mode when it is determined that the intra-prediction mode of the current block is not the PLANAR mode.

9. The method according to any one of claims 1 to 6, wherein the generated MPM list consists of at least five entries, and the method further comprises the step of performing multi-reference line coding using the MPM list.

10. The method according to any one of claims 1 to 9, wherein if there are no intra-predicted upper neighboring blocks, the intra-prediction mode of the upper neighboring block is determined to be PLANAR, and if there are no intra-predicted left neighboring blocks, the intra-prediction mode of the left neighboring block is determined to be PLANAR.

11. A method for predictive coding of the current block performed by a decoding device or encoding device, Steps to obtain the intra-prediction mode of the neighboring block to the left of the current block: A step of obtaining the intra-prediction mode of a neighboring block above the current block, A method comprising the step of constructing a most probable mode (MPM) list of intra-prediction modes for the current block, wherein the MPM list comprises at least five entries of intra-prediction modes, and four of the at least five entries are given by VER_IDX, HOR_IDX, VER_IDX - 4, and VER_ID + 4, where at least a first condition is met, and neither the intra-prediction mode of the left neighboring block nor the intra-prediction mode of the above neighboring block is an angular mode, with VER_IDX representing the index of a vertical intra-prediction mode and HOR_IDX representing the index of a horizontal intra-prediction mode.

12. The method according to any one of claims 1 to 11, wherein the upper left corner of the left neighboring block is at (xCb-1, yCb+cbHeight-1), and the upper left corner of the upper neighboring block is at (xCb+cbWidth-1, yCb-1), and xCb, yCb, cbHeight, and cbWidth represent, respectively, the position of the upper left corner of the current block in the width direction, the position of the upper left corner of the current block in the height direction, the height of the current block, and the width of the current block.

13. An encoder (20) comprising a processing circuit for performing the method described in any one of claims 1 to 12.

14. A decoder (30) comprising a processing circuit for performing the method according to any one of claims 1 to 12.

15. A computer program product comprising program code for performing the method described in any one of claims 1 to 12.

16. A decoder or encoder, One or more processors, A non-temporary computer-readable storage medium coupled to the processor and storing a program to be executed by the processor, wherein the program, when executed by the processor, configures the encoder or decoder to perform the method according to any one of claims 1 to 12. A decoder or encoder that includes this.

17. A device (1100) for use in an image encoder and / or image decoder, A prediction mode unit (1101) is configured to acquire the intra-prediction mode of the neighboring block to the left of the current block and the intra-prediction mode of the neighboring block above the current block. A most likely mode unit (1102) configured to construct a most likely mode (MPM) list of intra-predictive modes for the current block, wherein the MPM list includes at least five entries of intra-predictive modes, namely, Device (1100) includes a most likely mode unit (1102) which includes {ang, 2 + ( (ang + 61) % 64 ), 2 + ( (ang - 1) % 64 ), 2 + ( (ang + 60) % 64 ), 2 + ( (ang) % 64 )} when at least a first condition is met, wherein the first condition is that the intra-predictive mode of the left neighboring block and the intra-predictive mode of the upper neighboring block are the same angular mode, and ang represents the intra-predictive mode of the left neighboring block or the intra-predictive mode of the upper neighboring block.

18. The device according to claim 17, wherein the MPM list includes the at least five entries of intra-predictive mode when the first and second conditions are met, the second condition being that the current block is coded by an Intra-Segmented-Private (ISP) mode.

19. A device (1100) for use in an image encoder and / or image decoder, A prediction mode unit (1101) is configured to acquire the intra-prediction mode of the neighboring block to the left of the current block and the intra-prediction mode of the neighboring block above the current block. A most likely mode unit (1102) configured to construct a most likely mode (MPM) list of intra-predictive modes for the current block, wherein the MPM list includes at least five entries of intra-predictive modes, namely, Device (1100) includes {ang, 2 + ( ( ang + 61 ) % 64 ), 2 + ( ( ang - 1 ) % 64 ), 2 + ( ( ang + 60 ) % 64 ), 2 + ( ( ang ) % 64 )}, wherein the first condition is that only one of the intra-predictive modes of the left neighboring block and the intra-predictive mode of the upper neighboring block is an angular mode, and ang represents the angular mode, comprising a most probable mode unit (1102).

20. The device (1100) according to claim 19, wherein the MPM list includes the at least five entries of intra predictive mode when the first and second conditions are met, the second condition being that the block is coded by ISP mode.

21. A device (1100) for use in an image encoder and / or image decoder, A prediction mode unit (1101) is configured to acquire the intra-prediction mode of the neighboring block to the left of the current block and the intra-prediction mode of the neighboring block above the current block. A most likely mode unit (1102) configured to construct a most likely mode (MPM) list of intra-predictive modes for the current block when at least a first condition is met, wherein the first condition includes both the intra-predictive mode of the left neighboring block and the intra-predictive mode of the upper neighboring block being angular modes, and the MPM list includes at least five entries of intra-predictive modes, i.e., a) When maxAB - minAB is equal to 1, it contains {above_mode, left_mode, 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( maxAB - 1 ) % 64 ), 2 + ( ( minAB + 60 ) % 64 )} or b) When maxAB - minAB is equal to 2, it contains {above_mode, left_mode, 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( maxAB - 1 ) % 64 )} or c) When maxAB - minAB is greater than 61, it includes {above_mode, left_mode, 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( maxAB + 61 ) % 64 ), 2 + ( minAB % 64 )} or d) Otherwise, include {above_mode, left_mode, 2 + ( ( minAB + 61 ) % 64 ), 2 + ( ( minAB - 1 ) % 64 ), 2 + ( ( maxAB + 61 ) % 64 )} A device (1100) including a most likely mode unit (1102) where above_mode represents the intra-prediction mode of the upper neighboring block, left_mode represents the intra-prediction mode of the left neighboring block, minAB represents the minimum intra-prediction mode between above_mode and left_mode, and maxAB represents the maximum intra-prediction mode between above_mode and left_mode.

22. The device (1100) according to any one of claims 17 to 21, further comprising a coding unit configured to code the intra-predictive mode of the current block based on the generated MPM list.

23. The device (1100) according to any one of claims 17 to 22, further comprising a determination unit configured to determine the intra-prediction mode of the current block, and to code the determined intra-prediction mode of the current block by the corresponding index of the MPM list when the determined intra-prediction mode of the current block is listed in the MPM list.

24. A plane determination unit configured to determine whether the current block's intra-prediction mode is PLANAR mode, The device (1100) according to any one of claims 17 to 21, further comprising: a signaling unit configured to signal by a flag that the intra-prediction mode of the current block is not the PLANAR mode when it is determined that the intra-prediction mode of the current block is not the PLANAR mode.

25. The device (1100) according to any one of claims 17 to 21, wherein the generated MPM list comprises the at least five entries, and the device further comprises a multi-reference line coding unit configured to perform multi-reference line coding using the MPM list.

26. The device (1100) according to any one of claims 17 to 25, wherein the prediction mode unit (1101) is configured to determine that the intra-prediction mode of the upper neighbor block is PLANAR if there is no intra-predicted upper neighbor block, and the prediction mode unit (1101) is configured to determine that the intra-prediction mode of the left neighbor block is PLANAR if there is no intra-predicted left neighbor block.

27. A device (1100) for use in an image encoder and / or image decoder, A prediction mode unit (1101) is configured to acquire the intra-prediction mode of the neighboring block to the left of the current block and the intra-prediction mode of the neighboring block above the current block. Device (1100) includes a most likely mode unit (1102) configured to construct a most likely mode (MPM) list of intra-predictive modes for the current block, wherein the MPM list comprises at least five entries of intra-predictive modes, and four of the at least five entries are given by VER_IDX, HOR_IDX, VER_IDX - 4, and VER_ID + 4, where at least a first condition is met, and neither the intra-predictive mode of the left neighboring block nor the intra-predictive mode of the upper neighboring block is an angular mode, with VER_IDX representing the index of a vertical intra-predictive mode and HOR_IDX representing the index of a horizontal intra-predictive mode.

28. The device (1100) according to any one of claims 17 to 27, wherein the upper left corner of the left neighboring block is at (xCb-1, yCb+cbHeight-1), and the upper left corner of the upper neighboring block is at (xCb+cbWidth-1, yCb-1), and xCb, yCb, cbHeight, and cbWidth represent, respectively, the position of the upper left corner of the current block in the width direction, the position of the upper left corner of the current block in the height direction, the height of the current block, and the width of the current block.