Video encoding method, video decoding method, encoder, decoder, computer program, computer-readable storage medium, and device

The MPM method for intra prediction addresses the challenges of balancing bandwidth and quality in video coding by simplifying the calculation of intra prediction modes, resulting in improved coding efficiency and video decoding processes.

JP2025060596AActive Publication Date: 2025-04-10HUAWEI TECH CO LTD
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2024205085
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2018-09-03
Filing Date
2024-11-26
Publication Date
2025-04-10
Estimated Expiration
2039-09-03

AI Technical Summary

Technical Problem

Current video coding standards face challenges in balancing bandwidth requirements and video quality, particularly in high-resolution images where intra prediction modes are complex and inefficient.

Method used

The proposed method introduces an efficient Most Probable Mode (MPM) method for intra prediction, which involves obtaining the MPM flag from the bitstream and using it to determine the intra prediction mode for a current block based on the MPM index and set. This method simplifies the calculation procedure for intra prediction and improves coding efficiency.

Benefits of technology

The MPM method enhances coding efficiency by reducing the complexity of intra prediction modes and improving the balance between bandwidth requirements and video quality, leading to more efficient video decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025060596000002
    Figure 2025060596000002
  • Figure 2025060596000003
    Figure 2025060596000003
  • Figure 2025060596000004
    Figure 2025060596000004
Patent Text Reader

Abstract

To provide a decoding method and a decoder for decoding a current block of a video, and an encoding method and an encoder.SOLUTION: A decoding method includes the steps of obtaining a value of a Most Probable Mode (MPM) flag for the current block from a bitstream, obtaining an MPM index for the current block from the bitstream when the value of the MPM flag indicates that the intra prediction mode for the current block is an intra prediction mode included in an MPM set of intra prediction modes, and obtaining a value of the intra prediction mode for the current block on the basis of the MPM index and the MPM set for the current block.SELECTED DRAWING: None
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to the technical field of image and / or video encoding and decoding, and in particular to a method and apparatus for intra prediction. [Background technology]

[0002] Digital video has been widely used since the introduction of DVD discs. Video is encoded before transmission and transmitted over a transmission medium. A viewer receives the video and decodes and displays the video using a viewing device. Over the years, video quality has improved, for example by increasing resolution, color depth, and frame rate, which has led to large data streams being commonly transmitted over the Internet and mobile communication networks today.

[0003] However, higher resolution video usually contains more information and therefore requires more bandwidth. To reduce the bandwidth requirements, video coding standards have been introduced that involve video compression. When coding video, the bandwidth requirements (or the corresponding memory requirements in the case of storage) are reduced. Often this reduction comes at the expense of quality. Therefore, video coding standards try to strike a balance between bandwidth requirements and quality.

[0004] High Efficiency Video Coding (HEVC) is an example of a video coding standard well known to those skilled in the art. In HEVC, coding units (CUs) are split into prediction units (PUs) or transform units (TUs). The next generation standard for Versatile Video Coding (VVC) is the latest joint video project by the standardization bodies ITU-T Video Coding Experts Group (VCEG) and ISO / IEC Moving Picture Experts Group (MPEG), working together in a partnership known as the Joint Video Exploration Team (JVET). VVC is also known as the ITU-T H.266 / Next Generation Video Coding (NGVC) standard. VVC eliminates the concept of multiple partition types, i.e., it separates the concepts of CU, PU, ​​and TU except when necessary for CUs with sizes that are too large for the maximum transform length, and supports more flexibility for the partition shape of CUs.

[0005] The processing of these coding units (CUs), also called blocks, depends on their size, spatial location, and the coding mode specified by the encoder. According to the type of prediction, the coding modes can be classified into two groups: intra-prediction modes and inter-prediction modes. Intra-prediction modes use samples of the same picture (also called frame or image) to generate reference samples and calculate prediction values ​​for samples of the block to be reconstructed. Intra-prediction is also called spatial prediction. Inter-prediction modes are designed for temporal prediction, and use reference samples of the previous or next picture to predict samples of the block of the current picture.

[0006] ITU-T's VCEG (Q6 / 16) and ISO / IEC's MPEG (JTC 1 / SC 29 / WG 11) are investigating the potential need for standardization of future video coding techniques with compression capabilities significantly beyond the current HEVC standard (including current and near-future extensions for screen content coding and high dynamic range coding). These groups are working together on this research effort in a joint cooperative effort known as the Joint Video Coding Research Team (JVET), and are evaluating compression technology designs proposed by experts in the field.

[0007] The Versatile Test Model (VTM) standard uses 35 intra-modes, while the Benchmark Set (BMS) uses 67 intra-modes.

[0008] The intra mode coding scheme currently described in BMS is considered to be complex, and a drawback of the non-selected mode set is that the index list is always constant. [Summary of the invention] Embodiments of the present application provide an apparatus and a method for decoding according to the independent claims. Embodiments of the present application provide, for example, an efficient Most Probable Mode (MPM) scheme for intra prediction. The above and other objects are achieved by the subject matter of the independent claims. Further implementations are evident from the dependent claims, the description and the drawings. Particular embodiments are outlined in the accompanying independent claims, and further embodiments are described in the dependent claims. A first aspect of the present invention relates to a method for decoding a current block of a video. The decoding method includes obtaining a value of a Most Probable Mode (MPM) flag for a current block from a bitstream, and if the value of the MPM flag indicates that the intra prediction mode for the current block is an intra prediction mode included in an MPM set of intra prediction modes, obtaining an MPM index for the current block from the bitstream, and obtaining a value of the intra prediction mode for the current block based on the MPM index and the MPM set for the current block, where if the intra prediction mode of a left neighboring block of the current block is a planar mode and the intra prediction mode of an upper neighboring block of the current block is a planar mode, the MPM set of prediction modes includes a planar mode, a DC mode, a vertical mode, a horizontal mode, an intra prediction mode corresponding to the vertical mode and using a first offset, and an intra prediction mode corresponding to the vertical mode and using a second offset. The method may be performed, for example, by a video decoding device. In a possible implementation of the method according to the first aspect, if the value of the MPM flag for the current block is 1 and the MPM index for the current block is 0, the intra prediction mode for the current block is a planar mode. In any of the above-mentioned implementations of the first aspect or possible implementations of the method according to the first aspect, the first offset is −4. In any of the above-mentioned implementations of the first aspect or possible implementations of the method according to the first aspect, the second offset is +4. A second aspect of the present invention relates to a method for decoding a current block of a video.The decoding method includes obtaining a value of a most probable mode (MPM) flag for a current block from a bitstream, and if the value of the MPM flag indicates that the intra prediction mode for the current block is an intra prediction mode included in an MPM set of intra prediction modes, obtaining an MPM index for the current block from the bitstream, and obtaining a value of the intra prediction mode for the current block based on the MPM index and the MPM set for the current block, where if the intra prediction mode of a left neighboring block of the current block is a planar mode and the intra prediction mode of an upper neighboring block of the current block is a DC mode, the MPM set of prediction modes includes a planar mode, a DC mode, a vertical mode, a horizontal mode, an intra prediction mode corresponding to the vertical mode and using a first offset, and an intra prediction mode corresponding to the vertical mode and using a second offset. The method may be performed, for example, by a video decoding device. In a possible implementation of the method according to the second aspect, if the value of the MPM flag for the current block is 1 and the MPM index for the current block is 0, the intra prediction mode for the current block is a planar mode. In any of the above-mentioned implementations of the second aspect or a possible implementation of the method according to the second aspect, the first offset is −4. In any of the above-mentioned implementations of the second aspect or a possible implementation of the method according to the second aspect, the second offset is +4. A third aspect of the present invention relates to a method for decoding a current block of a video.The decoding method includes obtaining a value of a most probable mode (MPM) flag for the current block from the bitstream, and if the value of the MPM flag indicates that the intra prediction mode for the current block is an intra prediction mode included in an MPM set of intra prediction modes, obtaining an MPM index for the current block from the bitstream, and obtaining a value of the intra prediction mode for the current block based on the MPM index and the MPM set for the current block, where if the left neighboring block of the current block is unavailable and the intra prediction mode of the upper neighboring block of the current block is a planar mode, the MPM set of prediction modes includes a planar mode, a DC mode, a vertical mode, a horizontal mode, an intra prediction mode corresponding to the vertical mode and using a first offset, and an intra prediction mode corresponding to the vertical mode and using a second offset. The method may be performed, for example, by a video decoding device. In a possible implementation of the method according to the third aspect, if the value of the MPM flag for the current block is 1 and the MPM index for the current block is 0, the intra prediction mode for the current block is a planar mode. In any of the above implementations of the third aspect or a possible implementation of the method according to the third aspect, the first offset is −4. In any of the above implementations of the third aspect or a possible implementation of the method according to the third aspect, the second offset is +4. A fourth aspect of the present invention relates to a method for decoding a current block of a video.The decoding method includes obtaining a value of a most probable mode (MPM) flag for the current block from the bitstream, and if the value of the MPM flag indicates that the intra prediction mode for the current block is an intra prediction mode included in an MPM set of intra prediction modes, obtaining an MPM index for the current block from the bitstream, and obtaining a value of the intra prediction mode for the current block based on the MPM index and the MPM set for the current block, where if a left neighboring block of the current block is unavailable and an upper neighboring block of the current block is unavailable, the MPM set of prediction modes includes a planar mode, a DC mode, a vertical mode, a horizontal mode, an intra prediction mode corresponding to the vertical mode and using a first offset, and an intra prediction mode corresponding to the vertical mode and using a second offset. The method may be performed, for example, by a video decoding device. In a possible implementation of the method according to the fourth aspect, if the value of the MPM flag for the current block is 1 and the MPM index for the current block is 0, the intra prediction mode for the current block is a planar mode. In any of the above implementations of the fourth aspect or a possible implementation of the method according to the fourth aspect, the first offset is −4. In any of the above implementations of the fourth aspect or a possible implementation of the method according to the fourth aspect, the second offset is +4. A fifth aspect of the present invention relates to a method for decoding a current block of a video.The decoding method includes obtaining a value of a most probable mode (MPM) flag for the current block from the bitstream, and if the value of the MPM flag indicates that the intra prediction mode for the current block is an intra prediction mode included in an MPM set of intra prediction modes, obtaining an MPM index for the current block from the bitstream, and obtaining a value of the intra prediction mode for the current block based on the MPM index and the MPM set for the current block, where if the intra prediction mode of a left neighboring block of the current block is a planar mode and an upper neighboring block of the current block is unavailable, the MPM set of prediction modes includes a planar mode, a DC mode, a vertical mode, a horizontal mode, an intra prediction mode corresponding to the vertical mode and using a first offset, and an intra prediction mode corresponding to the vertical mode and using a second offset. The method may be performed, for example, by a video decoding device. In a possible implementation of the method according to the fifth aspect, if the value of the MPM flag for the current block is 1 and the MPM index for the current block is 0, the intra prediction mode for the current block is a planar mode. In any of the above implementations of the fifth aspect or an executable implementation of the method according to the fifth aspect, the first offset is −4. In any of the above implementations of the fifth aspect or an executable implementation of the method according to the fifth aspect, the second offset is +4. A fifth aspect of the invention relates to an apparatus for decoding a video stream, the apparatus comprising a processor and a memory. The memory storing instructions for causing the processor to perform a method according to the first to fourth aspects or any executable implementation or embodiment of the first to fourth aspects. A sixth aspect of the invention relates to a computer readable storage medium storing instructions that, when executed, cause one or more processors to encode video data. The instructions cause the one or more processors to perform a method according to the first to fourth aspects or any executable implementation or embodiment of the first to fourth aspects.According to a seventh aspect, the present invention relates to a computer program comprising a program code for performing, when executed on a computer, a method according to the first to fourth aspects or any executable implementation or embodiment of the first to fourth aspects. Further embodiments of the present application provide, for example, an intra-mode coding scheme, in which the non-selected mode set is adaptable based on characteristics of a current block, for example based on the intra-modes of neighboring blocks. Details of one or more embodiments are set out in the accompanying drawings and the following description. Other features, objects and advantages will become apparent from the description, drawings and claims. [Brief description of the drawings]

[0009] The following embodiments are explained in more detail with reference to the accompanying drawings.

[0010] [Figure 1] FIG. 1 is a block diagram illustrating an example of a video encoding system configured to implement embodiments of the present invention.

[0011] [Diagram 2] FIG. 1 is a block diagram illustrating an example of a video encoder configured to implement embodiments of the present invention.

[0012] [Diagram 3] 1 is a block diagram illustrating an example structure of a video decoder configured to implement embodiments of the present invention;

[0013] [Figure 4] 1 shows a schematic diagram illustrating the 67 intra prediction modes.

[0014] [Diagram 5] FIG. 1 shows a schematic diagram illustrating adjacent blocks for MPM derivation.

[0015] [Figure 6]1 shows a schematic diagram illustrating the intra modes of second tier neighboring blocks used to derive the first three modes from the remaining mode list.

[0016] [Figure 7] FIG. 13 shows a schematic diagram illustrating an example of the first three modes in the remaining mode list generation process.

[0017] [Figure 8] 1 shows a schematic diagram illustrating an example of a video decoding method.

[0018] [Figure 9] 2 shows another schematic diagram illustrating an example of a video decoding method.

[0019] [Figure 10] A block diagram of the device is shown. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0020] An apparatus and method for intra prediction are disclosed, which use a mapping process to simplify the calculation procedure of intra prediction and improve coding efficiency. The scope of protection is defined in the claims.

[0021] [Acronyms and term definitions]

[0022] CTU / CTB: Coding Tree Unit / Coding Tree Block

[0023] CU / CB: Coding Unit / Coding Block

[0024] PU / PB: Prediction Unit / Prediction Block

[0025] TU / TB: Transform Unit / Transform Block

[0026] HEVC: High Efficiency Video Coding

[0027] Video coding schemes such as H.264 / AVC and HEVC are designed around the principle of successful block-based hybrid video coding, where a picture is first divided into multiple blocks, and each block is predicted using intra-picture or inter-picture prediction.

[0028] Some video coding standards since H.261 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 of a video sequence is usually divided into a set of non-overlapping blocks and the coding is usually done at the block level. In other words, in the encoder, the video is usually processed, i.e. coded, at the block (picture block) level, for example by generating a prediction block using spatial (intra-picture) and temporal (inter-picture) prediction, subtracting a current block (currently being / to be processed) from the prediction block to obtain a residual block, transforming the residual block in the transform domain and quantizing the residual block, reducing (compressing) the amount of data to be transmitted. In the decoder, on the other hand, the reverse processing compared to the encoder is partially applied to the coded or compressed blocks to reconstruct the current block for display. Furthermore, as the encoder repeats the decoder processing loop, both will generate the same predictions (e.g., intra-prediction and inter-prediction) and / or reconstructions for processing, i.e., encoding, the next block.

[0029] As used herein, the term "block" may be a part of a picture or a frame. For ease of explanation, embodiments of the present invention are described herein with reference to the High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC) reference software developed by the Joint Working Group on Video Coding (JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Moving Picture Coding Experts Group (MPEG). Those skilled in the art will understand that embodiments of the present invention are not limited to HEVC or VVC. This may refer to CUs, PUs, and TUs. In HEVC, a CTU is divided into multiple CUs using a quadtree structure represented by a coding tree. The decision of whether to code a picture region using inter-picture (temporal) prediction or intra-picture (spatial) prediction is made at the CU level. Each CU can be further divided into one, two, or four PUs according to the division type of the PU. Within one PU, the same prediction process is applied, and related information is transmitted to the decoder on a PU basis. After obtaining the residual block by applying the prediction process based on the partition type of the PU, the CU can be partitioned into multiple transform units (TUs) according to another quadtree structure similar to the coding tree for CUs. In the latest development of video compression technology, quadtree and binary tree (QTBT) partitioning is used to partition the coding block. In the QTBT block structure, the CU can be either square or rectangular. For example, the coding tree unit (CTU) is first partitioned with a quadtree structure. The quadtree leaf node is further partitioned with a binary tree structure. The binary tree leaf node is called the coding unit (CU), and this segmentation is used for the process of prediction and transformation without further partitioning. That is, the CU, PU, ​​and TU have the same block size in the QTBT coding block structure. In parallel, multiple partitions, such as ternary tree partitioning, have also been proposed to be used with the QTBT block structure.

[0030] ITU-T's VCEG (Q6 / 16) and ISO / IEC's MPEG (JTC 1 / SC 29 / WG 11) are investigating the potential need for standardization of future video coding techniques with compression capabilities significantly beyond the current HEVC standard (including current and near-future extensions for screen content coding and high dynamic range coding). These groups are working together on this research effort in a joint cooperative effort known as the Joint Video Coding Research Team (JVET), and are evaluating compression technology designs proposed by experts in the field.

[0031] In the following description, reference is made to the accompanying drawings which form a part of this disclosure and in which are shown by way of illustration specific embodiments in which the invention may be practiced.

[0032] For example, it is understood that disclosure related to a described method may also apply to a corresponding device or system configured to perform that method, and vice versa. For example, where particular method steps are described, a corresponding device may include units that perform the described method steps, even if such units are not explicitly described or shown in the figures. Furthermore, it is understood that features of the various exemplary aspects described herein may be combined with each other, unless otherwise specified.

[0033] Video coding usually refers to the processing of a series of pictures that form a video or a video sequence. The terms picture, image, or frame may or are used synonymously in the field of video coding and in this application. Each picture is usually divided into a set of non-overlapping blocks. Picture coding / decoding is usually performed at the block level. For example, inter-frame or intra-frame prediction is used to generate a predictive block, which is subtracted from a current block (the block currently being / to be processed) to obtain a residual block, which is then transformed and quantized to reduce (compress) the amount of data to be transmitted. Meanwhile, at the decoder side, the inverse process is applied to the coded / compressed block, and the block is reconstructed for display.

[0034] FIG. 1 is a conceptual or schematic block diagram illustrating, by way of example, an encoding system 10, e.g., a video encoding system 10, that may utilize techniques of the present disclosure. An encoder 20 (e.g., video encoder 20) and a decoder 30 (e.g., video decoder 30) of the video encoding system 10 represent examples of devices that may be configured to perform techniques in accordance with various examples described herein. As shown in FIG. 1, the encoding system 10 includes a source device 12 configured to provide encoded data 13, e.g., encoded pictures 13, to, e.g., a destination device 14, for decoding of the encoded data 13. The source device 12 includes the encoder 20 and may additionally, i.e., optionally, include a picture source 16, a pre-processing unit 18 (e.g., picture pre-processing unit 18), and a communication interface or unit 22.

[0035] The picture source 16 may be or include, for example, any kind of picture capturing device for capturing real-world pictures, and / or any kind of picture or comment generating device (in the coding of screen content, some text on the screen is also considered as part of the picture or image to be coded), e.g. a computer graphics processor for generating computer-animated pictures, or any kind of device for acquiring and / or providing real-world pictures, computer-animated pictures (e.g. screen content, virtual reality (VR) pictures, and / or any combination thereof (e.g. augmented reality (AR) pictures).

[0036] A (digital) picture is or can be considered as a two-dimensional array or matrix of samples with intensity values. The samples in the array are sometimes also called pixels (short for picture element) or pels. The number of samples in the horizontal and vertical directions (or axes) of the array or picture determines the size and / or resolution of the picture. For color representation, three color components are usually used; that is, a picture may be represented by or contain three sample arrays. In an RBG format or color space, a picture contains corresponding red, green, and blue sample arrays. However, in video coding, each pixel is usually represented in a luma / chroma format or color space, e.g. YCbCr. YCbCr contains a luma component denoted Y (sometimes L is used instead) and two chroma components denoted Cb and Cr. The luma (or luma for short) component Y represents the brightness or intensity of the gray levels (e.g., as in a grayscale picture), and the two chrominance (or chroma for short) components Cb and Cr represent the chromaticity or color information components. Thus, a picture in YCbCr format contains a luma sample array of luma sample values ​​(Y) and two chrominance sample arrays of chrominance values ​​(Cb and Cr). A picture in RGB format may be converted to YCbCr format, and vice versa, a process also known as color conversion. If a picture is monochrome, it may contain only a luma sample array.

[0037] The picture source 16 (e.g. video source 16) may be, for example, a camera for capturing a picture, a memory containing or storing already captured or generated pictures, e.g. a picture memory, and / or any kind of interface (internal or external) for acquiring or receiving pictures. The camera may be, for example, a local camera or an integrated camera built into the source device, and the memory may be a local memory or an integrated memory built into the source device. The interface may be, for example, an external interface for receiving pictures from an external video source, e.g. an external picture capturing device like a camera, an external memory, or an external picture generating device, e.g. an external computer graphics processor, computer, or server. The interface may be any kind of interface, e.g. a wired or wireless interface, an optical interface, according to any proprietary or standardized interface protocol. The interface for acquiring picture data 17 may be the same interface as the communication interface 22 or may be part of the communication interface 22.

[0038] To distinguish from pre-processing unit 18 and the processing performed by pre-processing unit 18 , pictures or picture data 17 (eg, video data 16 ) may also be referred to as unprocessed pictures or unprocessed picture data 17 .

[0039] Pre-processing unit 18 is configured to receive (raw) picture data 17 and perform pre-processing on this picture data 17 to obtain a pre-processed picture 19 or pre-processed picture data 19. The pre-processing performed by pre-processing unit 18 may include, for example, cropping, color format conversion (e.g., RGB to YCbCr conversion), color correction, or noise removal. It can be understood that pre-processing unit 18 may be an optional component.

[0040] An encoder 20 (eg, video encoder 20) is configured to receive preprocessed picture data 19 and to provide encoded picture data 21 (further details are described below, eg, with reference to FIG. 2).

[0041] The communications interface 22 of the source device 12 may be configured to receive the encoded picture data 21 and transmit it to another device, such as the destination device 14 or any other device, for storage or direct reconstruction, or to process the encoded picture data 21 before storing the encoded data 13 and / or before transmitting the encoded data 13 to another device, such as the destination device 14 or any other device, for decoding or storage, respectively.

[0042] Destination device 14 includes a decoder 30 (eg, a video decoder 30 ), and may further include, optionally, a communications interface or unit 28 , a post-processing unit 32 , and a display device 34 .

[0043] The communications interface 28 of the destination device 14 is configured to receive the encoded picture data 21 or the encoded data 13, for example directly from the source device 12 or from any other source, for example a storage device (e.g. an encoded picture data storage device).

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

[0045] The communications interface 22 may, for example, be configured to package the encoded picture data 21 in an appropriate format, for example packets, for transmission over a communications link or network.

[0046] A communications interface 28 paired with the communications interface 22 may, for example, be configured to depackage the encoded data 13 to obtain the encoded picture data 21 .

[0047] Both communication interface 22 and communication interface 28 may be configured as unidirectional communication interfaces, as shown in FIG. 1 by the arrow of encoded picture data 13 pointing from source device 12 to destination device 14, or as bidirectional communication interfaces, or may be configured, for example, to send or receive messages, for example, to establish connections, and to acknowledge and exchange any other information related to the communication link and / or data transmission (e.g., transmission of encoded picture data).

[0048] The decoder 30 is arranged to receive the encoded picture data 21 and to provide decoded picture data 31 or decoded pictures 31 (further details are given below, for example with reference to FIG. 3).

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

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

[0051] 1 depicts source device 12 and destination device 14 as separate devices, an embodiment of the devices may include both or both functionality, i.e., source device 12 or corresponding functionality and destination device 14 or corresponding functionality. In such an embodiment, source device 12 or corresponding functionality and destination device 14 or corresponding functionality may be implemented using the same hardware and / or software, or with separate hardware and / or software, or any combination thereof.

[0052] As will be clear to those skilled in the art based on this specification, the presence and (exact) division of different units or functions within source device 12 and / or destination device 14, as shown in FIG. 1, may vary depending on the actual device and application.

[0053] Each of the encoder 20 (e.g., video encoder 20) and the decoder 30 (e.g., video decoder 30) may be implemented as any one of a variety of suitable circuits, 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. Where these techniques are implemented partially in software, a device may store instructions for the software in a suitable non-transitory computer-readable storage medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Any one of the foregoing (including hardware, software, a combination of hardware and software, etc.) may be considered to be one or more processors. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, any of which may be incorporated into the respective device as part of an integrated encoder / decoder (codec).

[0054] FIG. 2 illustrates a schematic / conceptual block diagram of an example video encoder 20 configured to implement the techniques of the present application. In the example of FIG. 2, the video encoder 20 includes a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210 and an inverse transform processing unit 212, a reconstruction unit 214, a buffer 216, a loop filter unit 220, a decoded picture buffer (DPB) 230, a prediction processing unit 260, and an entropy coding unit 270. The prediction processing unit 260 may include an inter prediction unit 244, an intra prediction unit 254, and a mode selection unit 262. The inter prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The video encoder 20 illustrated in FIG. 2 may also be referred to as a hybrid video encoder or a video encoder with a hybrid video codec.

[0055] For example, the residual calculation unit 204, the transform processing unit 206, the quantization unit 208, the prediction processing unit 260, and the entropy coding unit 270 form a forward signal path of the encoder 20. Meanwhile, for example, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, and the prediction processing unit 260 form a reverse signal path of the encoder. The reverse signal path of the encoder corresponds to the signal path of the decoder (see decoder 30 in FIG. 3).

[0056] The encoder 20 is arranged to receive, for example via an input 202, a picture 201 or a block 203 of picture 201, for example a picture of a series of pictures forming a video or a video sequence. The picture block 203 may also be called a current picture block or a picture block to be coded, and the picture 201 may also be called a current picture or a picture to be coded (in particular, video coding distinguishes between the current picture and other pictures, for example already coded and / or decoded pictures of the same video sequence, i.e. the video sequence which also includes the current picture).

[0057] The prediction processing unit 260, also called block prediction processing unit 260, is configured to receive or obtain the block 203 (the current block 203 of the current picture 201) and reconstructed picture data, e.g., reference samples of the same (current) picture from the buffer 216 and / or reference picture data 231 from one or more already decoded pictures from the decoded picture buffer 230, and to process such data for prediction, i.e., to provide a prediction block 265. This prediction block may be an inter prediction block 245 or an intra prediction block 255.

[0058] The mode selection unit 262 may be configured to select a prediction mode (e.g., intra prediction mode or inter prediction mode) and / or a corresponding prediction block 245 or 255, which is used as the prediction block 265 for the calculation of the residual block 205 and the reconstruction of the reconstruction block 215.

[0059] An embodiment of the mode selection unit 262 may be configured to select a prediction mode (e.g., from prediction modes supported by the prediction processing unit 260) that provides the optimal selection, in other words the smallest residual (smallest residual means higher compression rate for transmission or storage) or the smallest signaling overhead (smallest signaling overhead means higher compression rate for transmission or storage), or both are taken into account or both are balanced. The mode selection unit 262 may be configured to determine the prediction mode based on rate-distortion optimization (RDO), i.e. to select a prediction mode that provides the smallest rate-distortion optimization or whose associated rate-distortion at least satisfies a prediction mode selection criterion.

[0060] The intra prediction unit 254 is further configured to determine an intra prediction block 255 based on intra prediction parameters, e.g., a selected intra prediction mode. In any case, after selecting an intra prediction mode for a block, the intra prediction unit 254 is also configured to provide the intra prediction parameters, i.e., information indicating the selected intra prediction mode for the block, to the entropy coding unit 270. In one example, the intra prediction unit 254 may be configured to perform any combination of multiple intra prediction techniques described below.

[0061] 3 shows an example video decoder 30 configured to implement the techniques of the present application. Video decoder 30 is configured to receive encoded picture data (e.g., encoded bitstream) 21, e.g., encoded by encoder 20, to obtain decoded pictures 31. During the decoding process, video decoder 30 receives video data from video encoder 100, e.g., an encoded video bitstream representing picture blocks and associated syntax elements of encoded image slices.

[0062] 3, decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., summer 314), a buffer 316, a loop filter 320, a decoded picture buffer 330, and a prediction processing unit 360. Prediction processing unit 360 may include an inter prediction unit 344, an intra prediction unit 354, and a mode selection unit 362. Video decoder 30, in some examples, may perform a decoding path that is generally inverse to the encoding path described with respect to video encoder 100 of FIG.

[0063] The entropy decoding unit 304 is configured to perform entropy decoding on the encoded picture data 21, e.g., to obtain quantized coefficients 309 and / or decoded coding parameters (not shown in FIG. 3), e.g., any or all of (decoded) inter-prediction parameters, intra-prediction parameters, loop filter parameters, and / or other syntax elements. The entropy decoding unit 304 is further configured to forward the inter-prediction parameters, intra-prediction parameters, and / or other syntax elements to the prediction processing unit 360. The video decoder 30 may receive the syntax elements at an image slice level and / or at an image block level.

[0064] The inverse quantization unit 310 may be functionally identical to the inverse quantization unit 110, the inverse transform processing unit 312 may be functionally identical to the inverse transform processing unit 112, the reconstruction unit 314 may be functionally identical to the reconstruction unit 114, the buffer 316 may be functionally identical to the buffer 116, the loop filter 320 may be functionally identical to the loop filter 120, and the decoded picture buffer 330 may be functionally identical to the decoded picture buffer 130.

[0065] Prediction processing unit 360 may include an inter prediction unit 344 that may be similar in function to inter prediction unit 144 and an intra prediction unit 354 that may be similar in function to intra prediction unit 154. Prediction processing unit 360 is typically configured to perform block prediction and / or obtain a prediction block 365 from the coded data 21, and to receive or obtain (explicitly or implicitly) prediction-related parameters and / or information about a selected prediction mode, for example from entropy decoding unit 304.

[0066] If the image slice is coded as an intra-coded (I) slice, the intra prediction unit 354 of the prediction processing unit 360 is configured to generate a prediction block 365 for a picture block of the current image slice based on a signaled intra prediction mode and data from already decoded blocks of the current frame or picture. If the video frame is coded as an inter-coded (i.e., B or P) slice, the inter prediction unit 344 (e.g., a motion compensation unit) of the prediction processing unit 360 is configured to generate a prediction block 365 for an image block of the current image slice based on a motion vector and other syntax elements received from the entropy decoding unit 304. In inter prediction, the prediction block may be generated from one of a number of reference pictures included in one of a number of reference picture lists. The video decoder 30 may construct the reference frame lists, List 0 and List 1, based on the reference pictures stored in the DPB 330 using a default construction technique.

[0067] Prediction processing unit 360 is configured to determine prediction information for image blocks of the current image slice by analyzing the motion vectors and other syntax elements, and uses the prediction information to generate a prediction block for the current image block being decoded. For example, prediction processing unit 360 uses some of the received syntax elements to determine a prediction mode (e.g., intra prediction or inter prediction) used to encode image blocks of the image slice, a type of inter-predicted slice (e.g., B slice, P slice, or GPB slice), configuration information for one or more of a plurality of reference picture lists for the slice, a motion vector for each inter-coded image block of the slice, an inter-prediction status for each inter-coded image block of the slice, and other information for decoding image blocks in the current image slice.

[0068] The inverse quantization unit 310 is configured to inverse quantize, i.e., dequantize, the quantized transform coefficients provided in the bitstream and decoded by the entropy decoding unit 304. The inverse quantization process may include determining the degree of quantization using a quantization parameter calculated by the video encoder 100 for each image block in an image slice, and further determining the degree of inverse quantization to apply.

[0069] Inverse transform processing unit 312 is configured to apply an inverse transform, eg, an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients, producing residual blocks in the pixel domain.

[0070] The reconstruction unit 314 (e.g., adder 314) is configured to add the inverse transform block 313 (i.e., the reconstructed residual block 313) to the prediction block 365, e.g., by adding sample values ​​of the reconstructed residual block 313 and sample values ​​of the prediction block 365, to obtain a reconstructed block 315 in the sample domain.

[0071] The loop filter unit 320 (either during the coding loop or after the coding loop) is configured to filter the reconstruction block 315 to obtain a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality. In one example, the loop filter unit 320 may be configured to perform any combination of filtering techniques described below. The loop filter unit 320 is intended to represent one or more loop filters, such as a deblocking filter, a sample adaptive offset (SAO) filter, or other filters, such as a bilateral filter or an adaptive loop filter (ALF) or a sharpening filter or a smoothing filter or a collaborative filter. Although the loop filter unit 320 is illustrated in FIG. 3 as being within the loop filter, in other configurations, the loop filter unit 320 may be implemented as a post-loop filter.

[0072] The decoded image blocks 321 in a given frame or picture are then stored in a decoded picture buffer 330. The decoded picture buffer 330 stores reference pictures used for subsequent motion compensation.

[0073] The decoder 30 is arranged to output the decoded pictures 331, for example via an output 332, for display or viewing to a user.

[0074] Other variations of the video decoder 30 may be used to decode the compressed bitstream. For example, the decoder 30 may generate the output video stream without using a loop filtering unit 320. For example, a non-transform-based decoder 30 may directly inverse quantize the residual signal without using an inverse transform processing unit 312 for a particular block or frame. In another implementation, the video decoder 30 may combine the inverse quantization unit 310 and the inverse transform processing unit 312 into a single unit.

[0075] According to the HEVC / H.265 standard, 35 intra-prediction modes are available. As shown in FIG. 4, this set includes the following modes: planar mode (intra-prediction mode index is 0), DC mode (intra-prediction mode index is 1), and directional (angle) modes covering a range of 180° and having intra-prediction mode index values ​​ranging from 2 to 34, as indicated by black arrows in FIG. 4. In order to capture any edge directions present in natural video, the number of directional intra-modes is extended from 33 to 65 as used in HEVC. The additional directional modes are indicated by dotted arrows in FIG. 4, while the planar and DC modes remain the same. It is worth noting that the range covered by the intra-prediction modes can be wider than 180°. Specifically, 62 directional modes with index values ​​from 3 to 64 cover a range of approximately 230°, i.e., some pairs of these modes have opposite directionality. For the HEVC Reference Model (HM) and JEM platforms, only one pair of angular modes (i.e., modes 2 and 66) have opposite directionality as shown in Figure 4. To construct a prediction, the conventional angular modes take a reference sample and filter it (if necessary) to obtain a sample prediction. The number of reference samples required to construct a prediction depends on the length of the filter used for the interpolation (e.g., bilinear and cubic filters have lengths of 2 and 4, respectively).

[0076] VTM (Versatile Test Model) uses 35 intra modes, while BMS (Benchmark Set) uses 67 intra modes. To code the 67 intra modes, the current intra mode coding scheme in BMS uses the following method.

[0077] In order to accommodate the increasing number of directional intra-modes in BMS, an intra-mode coding method with six most probable modes (MPMs) is used. The following two main technical aspects are involved: 1) Derivation of six MPMs. 2) Entropy coding of 6 MPM and non-MPM modes.

[0078] In BMS, the modes included in the MPM list are classified into three groups: adjacent intra modes, derived intra modes, and default intra modes.

[0079] Five adjacent intra prediction modes are used to form the MPM list. The positions of the five adjacent blocks are the same as those used in the merge mode, i.e., left (L), top (A), bottom left (BL), top right (AR), and top left (AL), as shown in Figure 5. An initial MPM list is formed by inserting the five adjacent intra modes, planar mode, and DC mode into the MPM list. A pruning process is used to remove duplicate modes, so that only unique modes are included in the MPM list. The order of the initial modes included is left, top, planar, DC, bottom left, top right, top left.

[0080] If the MPM list is not full (i.e. there are less than 6 MPM candidates in the list), a derived mode is added. This intra mode is obtained by adding -1 or +1 to the angular modes already included in the MPM list. Derivation does not apply to non-angular modes, i.e. DC or planar.

[0081] Finally, if the MPM list is not already complete, the default modes are added in the following order: vertical, horizontal, intramode 2, diagonal mode. The result of this process is a unique list of 6 MPM modes.

[0082] For entropy coding of the six MPMs, a simplified unary binarization of MPMs is used. The first three bins are coded with a context that depends on the MPM mode associated with the currently signaled bin. The MPM mode is classified into one of three categories: (a) whether the mode belongs to the horizontal (MPM modes less than or equal to diagonal), (b) vertical (MPM modes greater than diagonal), or (c) non-angular (DC and plane) class. Thus, three contexts are used to signal the MPM index.

[0083] The remaining 61 non-MPMs are encoded as follows: The 61 non-MPMs are first split into two sets: selected and non-selected mode sets. The selected mode set contains 16 modes, while the rest (45 modes) are assigned to the non-selected mode set. The mode set to which the current mode belongs is indicated using a flag in the bitstream. Then, modes from the selected set are signaled using a 4-bit fixed length code, while modes from the non-selected set are encoded with a simplified binary code. The selected mode set is generated by subsampling the total of 61 non-MPMs by index as follows: Selection mode set = {0,4,8,12,16,20…60} Non-selected mode set = {1,2,3,5,6,7,9,10…59}

[0084] An overview of the signaling mechanisms for the different intra modes is given in Table 1. [Table 1]

[0085] In another example, an intra mode coding method with three most probable modes (MPMs) is used. In one example, the syntax elements intra_luma_mpm_flag[x0][y0], intra_luma_mpm_idx[x0][y0], and intra_luma_mpm_remainder[x0][y0] specify the intra prediction mode for the luma sample. The array indexes x0, y0 specify the position (x0, y0) of the top-left luma sample of the considered prediction block relative to the top-left luma sample of the picture. If intra_luma_mpm_flag[x0][y0] is equal to 1, the intra prediction mode is estimated from the neighboring intra predicted prediction units.

[0086] The intra prediction (IntraPredModeY[xPb][yPb]) for the current block is derived by the following ordered steps:

[0087] The neighboring positions (xNbA, yNbA) and (xNbB, yNbB) are set equal to (xPb-1, yPb) and (xPb, yPb-1), respectively.

[0088] If X is replaced by either A or B, these variables candIntraPredModeX are derived as follows:

[0089] The availability derivation process for a block is called with as input the position (xCurr, yCurr) set equal to (xPb, yPb) and the neighbor position (xNbY, yNbY) set equal to (xNbX, yNbX), and the output is assigned to availableX.

[0090] The candidate intra prediction modes candIntraPredModeX are derived as follows.

[0091] candIntraPredModeX is set equal to INTRA_DC if one or more of the following conditions apply:

[0092] The variable availableX is equal to FALSE. CuPredMode[xNbX][yNbX] is not equal to MODE_INTRA. X is equal to B, and yPb-1 is smaller than ((yPb>>CtbLog2SizeY)<<CtbLog2SizeY). Otherwise, candIntraPredModeX is set equal to IntraPredModeY[xNbX][yNbX]. candModeList[x] for x = 0 to 2 is derived as follows. When candIntraPredModeB is equal to candIntraPredModeA, the following applies. When candIntraPredModeA is smaller than 2 (i.e., equal to INTRA_PLANAR or INTRA_DC), candModeList[x] for x = 0 to 2 is derived as follows. candModeList[0]=INTRA_PLANAR candModeList[1]=INTRA_DC candModeList[2]=INTRA_ANGULAR50 Alternatively, candModeList[x] for x = 0 to 2 is derived as follows. candModeList[0]=candIntraPredModeA candModeList[1]=2+((candIntraPredModeA+61)%64) candModeList[2]=2+((candIntraPredModeA-1)%64) In other cases (when candIntraPredModeB is not equal to candIntraPredModeA), the following applies, and candModeList[0] and candModeList[1] are derived as follows. candModeList[0]=candIntraPredModeA candModeList[1]=candIntraPredModeB If candModeList[0] and candModeList[1] are not equal to INTRA_PLANAR then candModeList[2] is set equal to INTRA_PLANAR. Alternatively, if candModeList[0] and candModeList[1] are not equal to INTRA_DC then candModeList[2] is set equal to INTRA_DC. Otherwise candModeList[2] is set equal to INTRA_ANGULAR50. IntraPredModeY[xPb][yPb] is derived by applying the following steps: if intra_luma_mpm_flag[xPb][yPb] is equal to 1 then IntraPredModeY[xPb][yPb] is set equal to candModeList[intra_luma_mpm_idx[xPb][yPb]]. Alternatively, IntraPredModeY[xPb][yPb] is derived by applying the following ordered steps: The array candModeList[x] (x=0..2) is modified by the following ordered steps: If candModeList[0] is greater than candModeList[1], then both values ​​are swapped as follows: (candModeList[0],candModeList[1])=Swap(candModeList[0],candModeList[1]) If candModeList[0] is greater than candModeList[2], both values ​​are swapped as follows: (candModeList[0],candModeList[2])=Swap(candModeList[0],candModeList[2]) If candModeList[1] is greater than candModeList[2], then both values ​​are swapped as follows: (candModeList[1],candModeList[2])=Swap(candModeList[1],candModeList[2])(8-11) IntraPredModeY[xPb][yPb] is derived by the following ordered steps: IntraPredModeY[xPb][yPb] is set equal to intra_luma_mpm_remainder[xPb][yPb]. For i equal to 0 to 2 (inclusive), if IntraPredModeY[xPb][yPb] is greater than or equal to candModeList[i], the value of IntraPredModeY[xPb][yPb] is incremented by 1.

[0093] In one implementation of this application, a frame is the same as a picture.

[0094] In one aspect of the present disclosure, a method for constructing a Most Probable Mode (MPM) list is disclosed. The method includes: determining whether a left block of a current coding block is available, and if the left block of the current coding block is available, adding an intra-prediction mode of the left block to the MPM list; determining whether an upper block of the current coding block is available, and if the upper block of the current coding block is available, adding an intra-prediction mode of the upper block to the MPM list; if the MPM list does not include a planar mode, adding a planar mode to the MPM list; and if the MPM list does not include a DC mode, adding a DC mode to the MPM list.

[0095] In one implementation of the present application, if a block above the current coding block is available and the intra prediction mode of the block above is not included in the MPM list, the intra prediction mode of the block above is added to the MPM list.

[0096] In one implementation form of the present application, if a block above the current coding block is available and the intra prediction mode of the block above is included in the MPM list, an "add" is performed, i.e., the result of the "add" process does not change the MPM list.

[0097] In one implementation of the present application, if the prediction mode of the left block is not an intra prediction mode, the block to the left of the current coding block is unavailable.

[0098] In one implementation of the present application, if the current coding block is a coding block located on the leftmost side of a frame, the blocks to the left of the current coding block are unavailable.

[0099] In one implementation of the present application, if parallel processing is supported and the current coding block is a coding block located on the left side of a tile, the blocks to the left of the current coding block are not available.

[0100] In one implementation of the present application, if parallel processing is not supported and the current coding block is a coding block located on the left side of a tile but not on the left side of a frame, the block to the left of the current coding block is available.

[0101] In one implementation of the present application, when parallel processing is supported and the current coding block is a coding block located on the leftmost side of a slice, the blocks to the left of the current coding block are not available.

[0102] In one implementation of the present application, when parallel processing is not supported and the current coding block is a coding block located on the left side of a slice but not on the left side of a frame, the block to the left of the current coding block is available.

[0103] In one implementation of the present application, if the prediction mode of the block above is not an intra prediction mode, the block above the current coding block is unavailable.

[0104] In one implementation of the present application, if the current coding block is a coding block located at the top edge of a frame, the blocks above the current coding block cannot be used.

[0105] In one implementation of the present application, when parallel processing is supported and the current coding block is a coding block located on the top edge of a tile, the blocks above the current coding block cannot be used.

[0106] In one implementation of the present application, if parallel processing is not supported and the current coding block is a coding block located at the top of a tile but not at the top of a frame, the block above the current coding block is available.

[0107] In one implementation of the present application, when parallel processing is supported and the current coding block is a coding block located at the top end of a slice, the blocks above the current coding block cannot be used.

[0108] In one implementation of the present application, when parallel processing is not supported and the current coding block is a coding block located at the top of a slice but not at the top of a frame, the block above the current coding block is available.

[0109] In one implementation form of the present application, when the size of the line buffer is limited and the current coding block is a coding block located at the upper end of the current CTU, the blocks above the current coding block cannot be used.

[0110] In one implementation of the present application, if the current coding block is a coding block that is not located on the leftmost side of the frame, the blocks to the left of the current coding block are available.

[0111] In one implementation of the present application, if the current coding block is a coding block that is not located at the top edge of the frame, the blocks above the current coding block are available.

[0112] In one implementation form of the present application, the method further includes a step of checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list when the number of intra prediction modes in the MPM list is less than a threshold, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, wherein the set of intra prediction modes includes (as the first intra prediction mode) a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX).

[0113] In one implementation of the present application, the method further includes adding a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list.

[0114] In one implementation of the present application, the method further includes a list of angle mode candidates, the list of angle mode candidates including or consisting of vertical mode (VER_IDX), horizontal mode (HOR_IDX), intra mode 2 (2), vertical diagonal mode (VDIA_IDX), or diagonal mode (DIA_IDX) to form an MPM list. The method further includes a step of iteratively determining whether an angle mode of the list is in the MPM list according to an order of the angle modes in the list, and adding each angle mode to the MPM list if the respective angle mode is not in the MPM list.

[0115] In one implementation of the present application, constructing an MPM list begins with determining whether a block to the left of the current coding block is available, for example based on an empty MPM list.

[0116] In one implementation form of the present application, the method further includes a step of inserting the intra prediction mode of the other block into the MPM list if the block to the left of the current coding block is unavailable and another block approximately to the left (e.g., BL or AL in FIG. 5) is available, and not inserting the intra prediction mode of the other block into the MPM list if the block to the left is available.

[0117] In one implementation form of the present application, the method further includes a step of inserting the intra prediction mode of another block (e.g., AR or AL in FIG. 5) approximately above the current coding block into the MPM list if the block above is unavailable and another block approximately above is available, and not inserting the intra prediction mode of the other block into the MPM list if the block above is available.

[0118] In one implementation of the present application, the method further includes adding a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list if these modes are not present in the MPM list.

[0119] In one implementation of the present application, the method further includes checking another adjacent block (e.g., BL or AL or AR in FIG. 5) if the left and upper blocks of the current coding block are both not angles. If any of these blocks (BL or AL or AR) is an angle, use this angle mode as the starting angle mode for the -1+1 derivation process as described above.

[0120] In one implementation of the present application, the value corresponding to VER_IDX is 50, the value corresponding to HOR_IDX is 18, the value corresponding to VDIA_IDX is 66 and this value may be the maximum value among the values ​​corresponding to these angle modes, the value 2 corresponding to intra mode 2 may be the minimum value among the values ​​corresponding to these angle modes, and the value corresponding to DIA_IDX is 34.

[0121] In one implementation of the present application, if the number of intra prediction modes in the MPM list is less than a threshold, check whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, add the first intra prediction mode to the MPM list. The set of intra prediction modes includes (as the first intra prediction mode) a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX).

[0122] In one implementation of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list in the aforementioned order if the number of intra prediction modes in the MPM list is less than a threshold value, and if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold value.

[0123] In one implementation of the present application, the method further includes, when the block to the left of the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list. The set of intra prediction modes includes (as the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), a diagonal mode (DIA_IDX), or an intra mode 2 (2).

[0124] In one implementation of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), a diagonal mode (DIA_IDX), or intra mode 2 (2) to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list and if the block to the left of the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold value, until the number of prediction modes is equal to the threshold value.

[0125] In one implementation of the present application, the method further includes, if the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list. The set of intra prediction modes includes (as the first intra prediction mode) a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX and using an offset -4, or an intra prediction mode corresponding to VER_IDX and using an offset 4.

[0126] In one implementation of the present application, an intra-prediction mode that corresponds to VER_IDX and uses an offset of -4 uses a value corresponding to VER_IDX to add an offset of -4 to obtain a value of the corresponding intra-prediction mode. For example, when the value of VER_IDX is 50, an intra-prediction mode that corresponds to VER_IDX and uses an offset of -4 is intra-prediction mode 46, and an intra-prediction mode that corresponds to VER_IDX and uses an offset of 4 is intra-prediction mode 54. Examples using other offsets have similar processing to this example.

[0127] Note that implementing -1 or +1 or other offset values ​​may involve wrap up and wrap down operations. For example, if the value of IntraMode(2) is 2 (the smallest value among the values ​​corresponding to the angular modes), then IntraMode(2)-1 will be 66 (wrap up case), or if the value of VDIA_IDX is 66 (the largest value among the values ​​corresponding to the angular modes), then VDIA_IDX+1 will be 2 (wrap down case).

[0128] In one implementation of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX and using an offset -4, or an intra prediction mode corresponding to VER_IDX and using an offset 4 to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold value if the intra prediction mode is not included in the MPM list.

[0129] In one implementation of the present application, the method further includes, if the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list. The set of intra prediction modes includes (as the first intra prediction mode) a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX with an offset of 4, or an intra prediction mode corresponding to VER_IDX with an offset of -4.

[0130] In one implementation form of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of 4, or an intra prediction mode corresponding to VER_IDX and using an offset of -4 to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold value if the intra prediction mode is not included in the MPM list.

[0131] In one implementation of the present application, the method further includes, when a block to the left of the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, where the set of intra prediction modes includes one of the following intra prediction mode sets: (as the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of −1, and an intra prediction mode corresponding to VER_IDX and using an offset of 1, or (as the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of −4, and an intra prediction mode corresponding to VER_IDX and using an offset of 4, or (as the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of -1, or (as the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of +1, or (as the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -1, and an intra prediction mode corresponding to VER_IDX and using an offset of -1, or (as the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of −1, and an intra prediction mode corresponding to VER_IDX and using an offset of 1, or (as the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, or (as the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of 1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, or (as the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX with an offset of -1, and an intra prediction mode corresponding to VDIA_IDX with an offset of -1, or (As the first intra prediction mode) a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of 1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -1 It is one of them.

[0132] In one implementation of the present application, when a block to the left of the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, the method further includes repeatedly adding an intra prediction mode of the set of intra prediction modes to the MPM list according to the aforementioned order if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold, and the set of intra prediction modes includes one of the following intra prediction mode sets: a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of −1, and an intra prediction mode corresponding to VER_IDX and using an offset of 1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of 4, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of -1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of +1, or A vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -1, and an intra prediction mode corresponding to VER_IDX and using an offset of -1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -1, and an intra prediction mode corresponding to VER_IDX and using an offset of 1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of 1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -1, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), intra prediction mode corresponding to VER_IDX and using offset 1, and intra prediction mode corresponding to VDIA_IDX and using offset -1 It is one of them.

[0133] In one implementation form of the present application, the method further includes a step of checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list when the number of intra prediction modes in the MPM list is less than a threshold and a block above the current encoding block is unavailable, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, wherein the set of intra prediction modes includes (as the first intra prediction mode) a horizontal mode (HOR_IDX), intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX).

[0134] In one implementation of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a horizontal mode (HOR_IDX), intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX) to the MPM list in the aforementioned order if the number of intra prediction modes in the MPM list is less than a threshold and a block above the current coding block is unavailable, and if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold.

[0135] In one implementation form of the present application, the method further includes a step of checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list when the number of intra prediction modes in the MPM list is less than a threshold, and a block to the left of the current encoding block is available, and a block above the current encoding block is available, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, wherein the set of intra prediction modes includes (as the first intra prediction mode) a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX).

[0136] In one implementation form of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list, if the number of intra prediction modes in the MPM list is less than a threshold, and a block to the left of the current coding block is available, and a block above the current coding block is available, to the MPM list until the number of prediction modes is equal to the threshold.

[0137] In one implementation form of the present application, the method further includes a step of checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list when the number of intra prediction modes in the MPM list is less than a threshold and a block above the current encoding block is unavailable, and adding the first intra prediction mode to the MPM list if the first intra prediction mode is not included in the MPM list, wherein the set of intra prediction modes includes (as the first intra prediction mode) a horizontal mode (HOR_IDX), intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX).

[0138] In one implementation of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a horizontal mode (HOR_IDX), intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX) to the MPM list in the aforementioned order if the number of intra prediction modes in the MPM list is less than a threshold and a block above the current coding block is unavailable, and if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold.

[0139] In one implementation form of the present application, the method further includes a step of checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list when the number of intra prediction modes in the MPM list is less than a threshold, and a block to the left of the current encoding block is available, and a block above the current encoding block is available, and adding the first intra prediction mode to the MPM list if the first intra prediction mode is not included in the MPM list, wherein the set of intra prediction modes includes (as the first intra prediction mode) a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX and using an offset -4, or an intra prediction mode corresponding to VER_IDX and using an offset 4.

[0140] In one implementation form of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX and using an offset -4, or an intra prediction mode corresponding to VER_IDX and using an offset 4 to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold value, if the number of intra prediction modes in the MPM list is less than a threshold value, and if a block to the left of the current coding block is available, and if a block above the current coding block is available, the intra prediction mode is added to the MPM list in the aforementioned order until the number of prediction modes is equal to the threshold value.

[0141] In one implementation of the present application, the method further includes, when the block above the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and adding the first intra prediction mode to the MPM list if the first intra prediction mode is not included in the MPM list, where the set of intra prediction modes includes one of the following intra prediction mode sets: (as the first intra prediction mode) a horizontal mode (HOR_IDX), an intra mode 2 (2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to HOR_IDX and using an offset of 1, or (as the first intra prediction mode) the horizontal mode (HOR_IDX), the intra mode 2 (2), the intra prediction mode corresponding to HOR_IDX using an offset of −4, and HOR_IDX plus an offset of 4; or (as the first intra prediction mode) horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using offset 4, and an intra prediction mode corresponding to HOR_IDX using offset −1, or (as the first intra prediction mode) horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using offset 4, and an intra prediction mode corresponding to HOR_IDX using offset 1, or (as the first intra prediction mode) horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using offset 1, and an intra prediction mode corresponding to HOR_IDX using offset −1, or (as the first intra prediction mode) horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) with offset 1, and an intra prediction mode corresponding to HOR_IDX with offset 1, or (as the first intra prediction mode) horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using offset −1, and an intra prediction mode corresponding to intra mode 2(2) and using offset 4, or (as the first intra prediction mode) horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using offset 1, and an intra prediction mode corresponding to intra mode 2(2) and using offset 4, or (as the first intra prediction mode) horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to intra mode 2(2) and using an offset of 1, or (As the first intra prediction mode) horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using offset 1, and an intra prediction mode corresponding to intra mode 2(2) and using offset 1 It is one of them.

[0142] In one implementation of the present application, when the block above the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, the method further includes repeatedly adding an intra prediction mode of the set of intra prediction modes to the MPM list according to the aforementioned order if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold, and the set of intra prediction modes includes one of the following intra prediction mode sets: a horizontal mode (HOR_IDX), an intra mode 2 (2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to HOR_IDX and using an offset of 1, or Horizontal mode (HOR_IDX), intra mode 2 (2), intra prediction mode corresponding to HOR_IDX using offset -4, and HOR_IDX plus offset 4, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using an offset of 4, and an intra prediction mode corresponding to HOR_IDX using an offset of −1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using offset 4, and an intra prediction mode corresponding to HOR_IDX using offset 1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using an offset of 1, and an intra prediction mode corresponding to HOR_IDX using an offset of −1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) and using offset 1, and an intra prediction mode corresponding to HOR_IDX and using offset 1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to intra mode 2(2) and using an offset of 4, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using offset 1, and an intra prediction mode corresponding to intra mode 2(2) and using offset 4, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to intra mode 2(2) and using an offset of 1, or Horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using offset 1, and an intra prediction mode corresponding to intra mode 2(2) and using offset 1 It is one of them.

[0143] In one implementation of the present application, the method further includes a step in which, if the number of intra prediction modes in the MPM list is less than a threshold, an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) is repeatedly added to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list until the number of prediction modes is equal to the threshold.

[0144] In one implementation form of the present application, the method further includes, when a block to the left of the current encoding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, where the set of intra prediction modes includes a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), a diagonal mode (DIA_IDX), or intra mode 2 (2).

[0145] In one implementation of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), a diagonal mode (DIA_IDX), or intra mode 2 (2) to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list and if the block to the left of the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold value, until the number of prediction modes is equal to the threshold value.

[0146] It may be understood that in one implementation form of the present application, the step of adding an intra-prediction mode to the MPM list is a step of adding a value corresponding to the intra-prediction mode to the MPM list.

[0147] In one implementation of the present application, the threshold value is 6. In one implementation of the present application, the method further includes adding an offset to the prediction mode of the left block of the current coding block if the left block is available and the intra prediction mode of the left block is an angular mode to obtain a new prediction mode, and adding the new prediction mode to the MPM list if the new prediction mode is not in the MPM list. In one example, the offset is −1, and in another example, the offset is 1. In some examples, the offset may be 2 or −2.

[0148] In one implementation example of the present application, the method further includes adding an offset to the prediction mode of the upper block of the current coding block to obtain a top offset prediction mode when the block above is available and the intra prediction mode of the block above is an angular mode, and adding the top offset prediction mode to the MPM list if the top offset prediction mode is not in the MPM list. In one example, the offset is −1, and in another example, the offset is 1. In some examples, the offset may be 2 or −2.

[0149] In one aspect of the present application, an encoder includes processing circuitry for performing the above method.

[0150] In one aspect of the present application, a decoder includes processing circuitry for performing the above method.

[0151] In one aspect of the present application, a computer program product comprises program code for carrying out the above method.

[0152] In one aspect of the present application, a decoder for constructing a Most Probable Mode (MPM) list includes one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, the program, when executed by the processors, configuring the decoder to perform the above method.

[0153] In one aspect of the present application, an encoder for constructing a Most Probable Mode (MPM) list includes one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, the program, when executed by the processors, configuring the encoder to perform the above method.

[0154] In one example, it is as follows:

[0155] Step 1: Determine whether the block to the left of the current coding block is available.

[0156] If the block to the left of the current coding block is available, add the intra prediction mode of the left block to the MPM list. The MPM list may be an empty list, and if the block to the left of the current coding block is available, the intra prediction mode of the left block is added to the MPM list, and the MPM list contains one intra prediction mode. Also, if the block to the left of the current coding block is not available, the MPM list is still an empty list after stage 1.

[0157] Step 2: Determine whether the block above the current coding block is available.

[0158] If the block above the current coding block is available, add the intra prediction mode of the block above to the MPM list. The MPM list may contain the intra prediction mode of the block to the left or may still be an empty list.

[0159] If the upper block of the current coding block is available and the MPM list includes the intra prediction mode of the left block, it is further determined whether the intra prediction mode of the upper block is the same as the intra prediction mode of the left block, and if both modes are the same, the result of adding the intra prediction mode of the upper block to the MPM list does not change the number of intra prediction modes in the MPM list, and the MPM list includes only one intra prediction mode. If the intra prediction mode of the upper block is not the same as the intra prediction mode of the left block, adding the intra prediction mode of the upper block to the MPM list causes the MPM list to include two intra prediction modes.

[0160] If the block above the current coding block is available and the MPM list is still an empty list, adding the intra prediction mode of the block above to the MPM list causes the MPM list to contain only one intra prediction mode.

[0161] If the block above the current coding block is unavailable and the MPM list contains the intra prediction mode of the block to the left, the MPM list will still only contain the intra prediction mode of the block to the left.

[0162] If the block above the current coding block is unavailable and the MPM list is still an empty list, the MPM list remains an empty list.

[0163] Step 3: If the planar mode is not in the MPM list, add the planar mode to the MPM list.

[0164] After stage 2, if the MPM list does not contain the planar mode, add the planar mode to the MPM list.

[0165] If the intra-prediction mode of the left block and the intra-prediction mode of the top block are both unavailable, or the available intra-prediction modes are not planar modes, the MPM list does not include planar modes.

[0166] If planar mode is in the MPM list, proceed to step 4.

[0167] Step 4: If the DC mode is not in the MPM list, add the DC mode to the MPM list.

[0168] After step 2 or step 3, if the MPM list does not include the DC mode, add the DC mode to the MPM list.

[0169] If the intra-prediction mode of the left block and the intra-prediction mode of the block above are both unavailable, or the available intra-prediction modes are not DC modes, the MPM list does not include DC mode.

[0170] If DC mode is in the MPM list, proceed to the following steps or finish configuring the MPM list.

[0171] In one implementation of the present application, at each stage, the process of adding a prediction mode to the MPM list needs to ensure that there are no duplicate prediction modes in the MPM list. Therefore, if the intra-prediction mode that needs to be added to the MPM list is the same as one intra-prediction mode in the MPM list, the "add" process does not change the MPM list or the "add" process is not performed.

[0172] In one implementation of the present application, after stage 4, we do angular-1, angular+1 only if angular mode is present.

[0173] In one example, the number of intra prediction modes in the MPM list is 6. After step 4, there are three cases regarding the length of the MPM: Case 1: MPM length is 2 → L and A are both not angles (>DC) or unavailable, only plane and DC are present → use all four initialization modes. Case 2: MPM length is 3 → one of L and A is an angle or both are the same angle → use one initialization mode. Case 3: MPM length is 4 → L and A are both angles and both are different → no initialization modes are used and at least one of L-1 and L+1 will be added. If one of these overlaps with the above (diff(LA)=1), at least one of A-1 and A+1 will be inserted in addition.

[0174] In one implementation form of the present application, the method further includes a step of adding an offset to the prediction mode of the left block to obtain a new prediction mode if a block to the left of the current encoding block is available and the intra prediction mode of the left block is an angular mode, and adding the new prediction mode to the MPM list if the new prediction mode is not in the MPM list.

[0175] In another example, the MPM list includes six intra prediction modes, and the above four steps may obtain only four intra prediction modes in the maximum case. The method further includes the following steps: Step 5: If the left block of the current coding block is available and the intra prediction mode of the left block is an angular mode, add an offset to the prediction mode of the left block to obtain a new prediction mode, and add the new prediction mode to the MPM list if the new prediction mode is not in the MPM list. For example, if the left block of the current coding block is angular mode 27 (the value corresponding to this angular intra prediction mode is 27), the MPM list after the above four steps is (27, 15, 0, 1). Add an offset to the prediction mode of the left block to obtain a new prediction mode, and add the new prediction mode to the MPM list if the new prediction mode is not in the MPM list. In one example, the offset is -1, so the new prediction mode is 26, so the updated MPM list is (27, 15, 0, 1, 26). In another example, the offset is 1, so the new prediction mode is 28, so the updated MPM list is (27,15,0,1,28). In another example, stage 5 can add two offsets to the intra prediction mode of the left block, first adding -1 and then adding 1, or first adding 1 and then adding -1. As a result, the updated MPM list can be (27,15,0,1,26,28) or (27,15,0,1,28,26). After stage 5, check whether the MPM list is full (if the number of intra prediction modes in the MPM list is equal to a threshold (e.g., the threshold is 6), the MPM list is full; if the number of intra prediction modes in the MPM list is less than the threshold, the MPM list is not full). If the MPM list is full, the construction of the MPM list ends; if the MPM list is not full, proceed to the following stages. If the block to the left of the current coding block is not available, stage 5 is not performed and proceed to the following stages.

[0176] Note that adding an offset (e.g., -1 or +1) to the angular prediction mode may involve wrap-up and wrap-down operations. For example, if angular prediction mode angularLeft is 2, then angularLeft-1 will be 66 (wrap-up case), and if angularLeft is 66, then angularLeft+1 will be 2 (wrap-down case).

[0177] In one implementation form of the present application, the method further includes a step of adding an offset to the prediction mode of the upper block to obtain an upper offset prediction mode when an upper block of the current coding block is available and the intra prediction mode of the upper block is an angular mode, and adding the upper offset prediction mode to the MPM list if the upper offset prediction mode is not in the MPM list.

[0178] In one example, the method further includes the following steps: Step 6: If the block above the current coding block is available and the intra prediction mode of the block above is an angular mode, add an offset to the prediction mode of the block above to obtain a top offset prediction mode, and add a new prediction mode to the MPM list if the top offset prediction mode is not in the MPM list. For example, if the block above the current coding block is angular mode 26 (the value corresponding to this angular intra prediction mode is 26), the MPM list after the above five steps is (27, 26, 0, 1, 28). Add an offset to the prediction mode of the left block to obtain a top offset prediction mode, and add the top offset prediction mode to the MPM list if the top offset prediction mode is not in the MPM list. In one example, the offset is -1, so the top offset prediction mode is 25, so the updated MPM list is (27, 26, 0, 1, 28, 25). In another example, the offset is 1, so the upper offset prediction mode is 27, and the insertion of the upper offset mode 27 is prevented because the mode 27 is inserted. In another example, step 6 can add two offsets to the intra prediction mode of the upper block, and after adding one offset, if the MPM list is not yet full, add -1 first and then 1, or add 1 first and then -1. If the block above the current coding block is not available, step 6 is not performed and proceeds to the following steps. After step 6, check whether the MPM list is full (whether the number of intra prediction modes in the MPM list is equal to 6). If the MPM list is full, the construction of the MPM list ends, and if the MPM list is not full (if the number of intra prediction modes in the MPM list is less than 6), proceeds to the following steps.

[0179] In one implementation of the present application, the method further includes configuring the MPM list using a default list if the number of intra-prediction modes in the MPM list is less than a threshold (eg, the threshold is 6).

[0180] In one example, if the number of intra prediction modes in the MPM list is less than a threshold, the default list includes a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX).

[0181] In one example, if the number of intra prediction modes in the MPM list is less than a threshold, the default list includes a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), VER_IDX plus an offset of -4, or VER_IDX plus an offset of 4.

[0182] In one example, if the number of intra prediction modes in the MPM list is less than a threshold, the default list includes vertical mode (VER_IDX), horizontal mode (HOR_IDX), VER_IDX plus an offset of 4, or VER_IDX plus an offset of -4.

[0183] In one example, if the block to the left of the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, the default list is: Vertical mode (VER_IDX), Vertical diagonal mode (VDIA_IDX), Diagonal mode (DIA_IDX), or Intra mode 2 (2), or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), VER_IDX plus an offset of -1, and VER_IDX plus an offset of 1, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), VER_IDX with offset -4, and VER_IDX with offset 4, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), VDIA_IDX with an offset of -4, and VER_IDX with an offset of -1, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), VDIA_IDX with an offset of -4, and VER_IDX with an offset of +1, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), VDIA_IDX plus an offset of -1, and VER_IDX plus an offset of -1, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), VDIA_IDX with an offset of -1, and VER_IDX with an offset of 1, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), VER_IDX plus an offset of -1, and VDIA_IDX plus an offset of -4, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), VER_IDX plus an offset of 1, and VDIA_IDX plus an offset of -4, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), VER_IDX plus an offset of -1, and VDIA_IDX plus an offset of -1, or Includes vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), VER_IDX plus an offset of 1, and VDIA_IDX plus an offset of -1.

[0184] In one example, if the number of intra prediction modes in the MPM list is below a threshold and the block above the current coding block is not available, the default list includes a horizontal mode (HOR_IDX), an intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX).

[0185] In one example, if the number of intra prediction modes in the MPM list is less than a threshold, and the block to the left of the current coding block is available, and the block above the current coding block is available, the initial setting list is: Vertical mode (VER_IDX), horizontal mode (HOR_IDX), intra mode 2 (2), vertical diagonal mode (VDIA_IDX), or diagonal mode (DIA_IDX), or Vertical mode (VER_IDX), horizontal mode (HOR_IDX), VER_IDX with an offset of -4, or VER_IDX with an offset of 4, or Includes vertical mode (VER_IDX), horizontal mode (HOR_IDX), VER_IDX plus an offset of 4, or VER_IDX plus an offset of -4.

[0186] In one example, if the number of intra prediction modes in the MPM list is less than a threshold and the block above the current coding block is unavailable, the default list is: Horizontal mode (HOR_IDX), intra mode 2 (2), HOR_IDX plus an offset of -1, and HOR_IDX plus an offset of 1, or Horizontal mode (HOR_IDX), intra mode 2 (2), HOR_IDX plus an offset of -4, and HOR_IDX plus an offset of 4, or Horizontal mode (HOR_IDX), intra mode 2 (2), intra mode 2 (2) plus offset 4, and HOR_IDX plus offset -1, or Horizontal mode (HOR_IDX), intra mode 2 (2), intra mode 2 (2) plus offset 4, and HOR_IDX plus offset 1, or Horizontal mode (HOR_IDX), intra mode 2 (2), intra mode 2 (2) plus offset 1, and HOR_IDX plus offset -1, or Horizontal mode (HOR_IDX), intra mode 2 (2), intra mode 2 (2) plus offset 1, and HOR_IDX plus offset 1, or Horizontal mode (HOR_IDX), intra mode 2(2), HOR_IDX plus an offset of -1, and intra mode 2(2) plus an offset of 4, or Horizontal mode (HOR_IDX), Intra mode 2 (2), HOR_IDX plus offset 1, Intra mode 2 (2) plus offset 4, or Horizontal mode (HOR_IDX), intra mode 2(2), HOR_IDX plus an offset of -1, and intra mode 2(2) plus an offset of 1, or Includes horizontal mode (HOR_IDX), intra mode 2 (2), HOR_IDX plus offset 1, and intra mode 2 (2) plus offset 1.

[0187] In one implementation of this application, if the block to the left of the current coding block is unavailable, the block above the current coding block may or may not be available.

[0188] In one implementation of this application, if the block above the current coding block is unavailable, the block to the left of the current coding block may or may not be available.

[0189] In one implementation of the present application, the method further includes adding a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list.

[0190] In one implementation form of the present application, the method further includes a step of checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list when the number of intra prediction modes in the MPM list is less than a threshold, and adding the first intra prediction mode to the MPM list if the first intra prediction mode is not included in the MPM list, wherein the set of intra prediction modes includes a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX).

[0191] In one implementation of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list in the aforementioned order if the number of intra prediction modes in the MPM list is less than a threshold value, and if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold value.

[0192] In one example, after step 6, if the MPM list is not yet full (the number of intra prediction modes in the MPM list is less than a threshold), add the intra prediction modes in the default mode list to the MPM list in order if this mode or these modes are not in the MPM list, and repeat this step until the MPM list is full. Step 7: Add a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list. For example, if the vertical mode is not in the MPM list and the MPM list is not full, add the vertical mode to the MPM list, and if the MPM list is full after adding the vertical mode, end the configuration of the MPM list. If the MPM list is not yet full after adding the vertical mode, check whether the horizontal mode is in the MPM list. If the horizontal mode is in the MPM list, then check whether intra mode 2 is in the MPM list, and if the horizontal mode is not in the MPM list, add the horizontal mode to the MPM list. This step is repeated until the MPM list is full.

[0193] In one implementation of the present application, in step 7 using the default mode list, each time a default mode is inserted into the MPM list, a check is made to ensure that no duplicate modes are inserted. If the insertion is successful, another check is made to detect if the MPM is full. If the MPM is full, the MPM configuration process ends, otherwise it continues inserting with other default modes in the specified order.

[0194] In one implementation form of the present application, the method further includes, when a block to the left of the current encoding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, where the set of intra prediction modes includes a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), a diagonal mode (DIA_IDX), or intra mode 2 (2).

[0195] In one implementation of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), a diagonal mode (DIA_IDX), or intra mode 2 (2) to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list and if the block to the left of the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold value, until the number of prediction modes is equal to the threshold value.

[0196] In one example, after step 6, if the MPM list is not yet full and the block to the left of the current coding block is not available, add the intra prediction modes in the default mode list to the MPM list in order if the modes or the modes are not in the MPM list, and repeat this step until the MPM list is full. Step 7: Add a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), a diagonal mode (DIA_IDX), or an intra mode 2 (2) to the MPM list. For example, if the vertical mode is not in the MPM list and the MPM list is not full, add the vertical mode to the MPM list, and if the MPM list is full after adding the vertical mode, end the construction of the MPM list. If the MPM list is not yet full after adding the vertical mode, check whether the vertical diagonal mode is in the MPM list. If the vertical diagonal mode is in the MPM list, further check whether the diagonal mode is in the MPM list, and if the diagonal mode is not in the MPM list, add the diagonal mode to the MPM list. This step is repeated until the MPM list is full.

[0197] In one implementation form of the present application, the method further includes a step of checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list when the number of intra prediction modes in the MPM list is less than a threshold and a block above the current encoding block is unavailable, and adding the first intra prediction mode to the MPM list if the first intra prediction mode is not included in the MPM list, wherein the set of intra prediction modes includes a horizontal mode (HOR_IDX), an intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX).

[0198] In one implementation of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a horizontal mode (HOR_IDX), intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX) to the MPM list in the aforementioned order if the number of intra prediction modes in the MPM list is less than a threshold and a block above the current coding block is unavailable, and if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold.

[0199] In one example, after step 6, if the MPM list is not yet full and the block above the current coding block is not available, add the intra prediction modes in the default mode list to the MPM list in order if the mode or modes are not in the MPM list, and repeat this step until the MPM list is full. Step 7: Add a horizontal mode (HOR_IDX), an intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX) to the MPM list. For example, if the horizontal mode is not in the MPM list and the MPM list is not full, add the horizontal mode to the MPM list, and if the MPM list is full after adding the horizontal mode, end the construction of the MPM list. If the MPM list is not yet full after adding the horizontal mode, check whether intra mode 2 is in the MPM list. If intra mode 2 is in the MPM list, further check whether diagonal mode is in the MPM list, and if diagonal mode is not in the MPM list, add diagonal mode to the MPM list. This step is repeated until the MPM list is full.

[0200] In one implementation form of the present application, the method further includes a step of checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list when the number of intra prediction modes in the MPM list is less than a threshold, and a block to the left of the current encoding block is available, and a block above the current encoding block is available, and adding the first intra prediction mode to the MPM list if the first intra prediction mode is not included in the MPM list, wherein the set of intra prediction modes includes a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX).

[0201] In one implementation form of the present application, the method further includes a step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list, if the number of intra prediction modes in the MPM list is less than a threshold, and a block to the left of the current coding block is available, and a block above the current coding block is available, to the MPM list until the number of prediction modes is equal to the threshold.

[0202] In one example, after step 6, if the MPM list is not yet full and the block to the left of the current coding block is available and the block above the current coding block is also available, add the intra prediction modes in the default mode list to the MPM list if this mode or these modes are not in the MPM list, and repeat this step until the MPM list is full. Step 7: Add a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list. For example, if the vertical mode is not in the MPM list and the MPM list is not full, add the vertical mode to the MPM list, and if the MPM list is full after adding the vertical mode, end the construction of the MPM list. If the MPM list is not yet full after adding the vertical mode, check whether the horizontal mode is in the MPM list. If the horizontal mode is in the MPM list, then further check whether the intra mode 2 is in the MPM list, and if the intra mode 2 is not in the MPM list, add the intra mode 2 to the MPM list. This step is repeated until the MPM list is full.

[0203] In one implementation of the present application, the method further includes adding a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), VER_IDX with an offset of -4, or VER_IDX with an offset of 4 to the MPM list.

[0204] In one implementation of the present application, the method further includes adding a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), VER_IDX with an offset of 4, or VER_IDX with an offset of -4 to the MPM list.

[0205] In one example, after step 6, if the MPM list is not yet full, add the intra prediction modes in the default mode list to the MPM list if the modes are not in the MPM list, and repeat this step until the MPM list is full. Step 7, add a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), VER_IDX with an offset of -4, or VER_IDX with an offset of -4 to the MPM list, or add a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), VER_IDX with an offset of 4, or VER_IDX with an offset of -4 to the MPM list. For example, if the vertical mode is not in the MPM list and the MPM list is not full, add the vertical mode to the MPM list, and if the MPM list is full after adding the vertical mode, end the construction of the MPM list. If the MPM list is not yet full after adding the vertical mode, check whether the horizontal mode is in the MPM list. If the horizontal mode is in the MPM list, it is further checked whether a prediction mode with a value equal to the value of VER_IDX plus an offset of -4 is in the MPM list, and if a prediction mode with a value equal to the value of VER_IDX plus an offset of -4 is not in the MPM list, a prediction mode with a value equal to the value of VER_IDX plus an offset of -4 is added to the MPM list. This step is repeated until the MPM list is full.

[0206] In one example, after step 6, if the MPM list is not yet full and the block to the left of the current coding block is not available, add the intra prediction modes in the default mode list to the MPM list if the modes or the modes are not in the MPM list, and repeat this step until the MPM list is full. Step 7: Add a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), a diagonal mode (DIA_IDX), or an intra mode 2 (2) to the MPM list. For example, if the vertical mode is not in the MPM list and the MPM list is not full, add the vertical mode to the MPM list, and if the MPM list is full after adding the vertical mode, end the construction of the MPM list. If the MPM list is not yet full after adding the vertical mode, check whether the vertical diagonal mode is in the MPM list. If the vertical diagonal mode is in the MPM list, further check whether the diagonal mode is in the MPM list, and if the diagonal mode is not in the MPM list, add the diagonal mode to the MPM list. This step is repeated until the MPM list is full.

[0207] In one example, after step 6, if the MPM list is not yet full and the block above the current coding block is not available, add the intra prediction modes in the default mode list to the MPM list if the modes or the modes are not in the MPM list, and repeat this step until the MPM list is full. Step 7: Add a horizontal mode (HOR_IDX), an intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX) to the MPM list. For example, if the horizontal mode is not in the MPM list and the MPM list is not full, add the horizontal mode to the MPM list, and if the MPM list is full after adding the horizontal mode, finish constructing the MPM list. If the MPM list is not yet full after adding the horizontal mode, check whether intra mode 2 is in the MPM list. If intra mode 2 is in the MPM list, further check whether diagonal mode is in the MPM list, and if diagonal mode is not in the MPM list, add diagonal mode to the MPM list. Repeat this step until the MPM list is full.

[0208] In one example, after step 6, if the MPM list is not yet full and the block to the left of the current coding block is available and the block above the current coding block is available, add the intra prediction modes in the default mode list to the MPM list if the modes or the modes are not in the MPM list, and repeat this step until the MPM list is full. Step 7: Add vertical mode (VER_IDX), horizontal mode (HOR_IDX), VER_IDX with offset -4, or VER_IDX with offset 4 to the MPM list. In one example, the default default modes, namely vertical mode (VER_IDX), horizontal mode (HOR_IDX), intra mode 2 (2), vertical diagonal mode (VDIA_IDX), or diagonal mode (DIA_IDX), are provided and the MPM list is configured if the MPM list is not full. Two further approaches for these default modes have been proposed. These approaches are an adaptive default approach and a modified default approach. The adaptive mode approach considers blocks located at the left and top of a frame. For blocks located at the left border of a frame, horizontal modes are unlikely to be used because there are no source predicted samples located in blocks to the left of the current block. Modes using horizontal modes (i.e., DIA_IDX, mode 2) are also unlikely in general. For blocks located at the top border of a frame, vertical modes are unlikely to be used because there are no source predicted samples located in blocks above the current block. Modes using vertical modes (i.e., VDIA_IDX, DIA_IDX) are also unlikely in general. Therefore, the following boundary recognition approach is used: If there is no block to the left of the current coding block, the following modes are used in order as default candidate modes: VER_IDX, VDIA_IDX, DIA_IDX, mode 2. Otherwise (if there is a block to the left), the following applies: If there is no block above the current coding block, the following modes are used in order as default candidate modes: HOR_IDX, mode 2, DIA_IDX, VDIA_IDX.Otherwise (if an upper block is present), use the standard default modes: VER_IDX, HOR_IDX, intra mode 2(2), VDIA_IDX, or DIA_IDX. The modified default approach adds the following candidate modes to the MPM list: VER, HOR, VER-4, VER+4. The order of VER-4 and VER+4 is interchangeable. One combination of these two methods could be: If a block to the left of the current coding block is not present, use the following modes as default candidate modes in order: VER_IDX, VDIA_IDX, DIA_IDX, mode 2. Otherwise (if a left block is present), use the following modes as default candidate modes in order: HOR_IDX, mode 2, DIA_IDX, VDIA_IDX. If a block to the left of the current coding block is not present, use the following modes as default candidate modes in order: HOR_IDX, mode 2, DIA_IDX, VDIA_IDX. Otherwise (if an upper block exists), use the modified default modes: VER_IDX, HOR_IDX, VER, HOR, VER-4, VER+4.

[0209] In one aspect of the present disclosure, a simplified method for constructing a 6-entry MPM list is proposed, which includes checking the availability of a left block of a current coding unit. The location of the left block is illustrated by Figure 5, where the left block is labeled "L".

[0210] A left block is unavailable if intra prediction information (i.e., intra prediction mode) cannot be derived from the left block. Such cases include the following: The left block is not an intra prediction block. The left block does not exist, e.g., the current block is a coding block located on the left edge of a frame. If an encoder or decoder supports parallel processing, the left block may be considered to be unavailable (or unavailable) when it is located in a different tile from the current block or co-located with the current block, i.e., when the current coding block exists or is located on the left edge of a tile. In another example, if parallel processing is not supported by an encoder or decoder, the left block may be considered available when it is located in a different tile from the current block, i.e., when the current coding block is located on the left edge of a tile. If parallel processing is supported by an encoder or decoder, the left block may be considered to be unavailable when it is located in a different slice from the current block, i.e., when the current coding block is located on the left edge of a slice. In another example, if parallel processing is not supported by the encoder or decoder, a block to the left may be considered available when it is located in a different slice together with the current block, i.e., when the current coding block is located on the left side of the slice.

[0211] Otherwise (ie, if the left block is available), include the intra-prediction mode of the left block in the 6-entry MPM list.

[0212] Check the availability of the upper block of the current coding unit. The location of the upper block is shown in Figure 5, where the upper block is labeled "A".

[0213] An upper block is unavailable if intra prediction information (i.e., intra prediction mode) cannot be derived from the upper block. Such cases include the following: The upper block is not an intra prediction block. The upper block does not exist. For example, the current block is a coding block located at the top of a frame. If parallel processing is supported in the encoder or decoder, the top block may be considered to be absent if it is located in a different tile with the current block, i.e., if the current coding block is located at the top of a tile. In another example, if parallel processing is not supported in the encoder or decoder, the top block may be considered available if it is located in a different tile with the current block, i.e., if the current coding block is located at the top of a tile. If parallel processing is supported in the encoder or decoder, the top block may be considered to be absent if it is located in a different slice with the current block, i.e., if the current coding block is located at the top of a slice. In another example, if parallel processing is not supported by the encoder or decoder, a top block may be considered available if it is located in a different slice together with the current block, i.e., if the current coding block is located at the top side of the slice.

[0214] If it is necessary to limit the size of the line buffer of the encoder or decoder, the top block may be considered not to exist if it is located in a different CTU together with the current block, i.e., if the current coding block is located on the top side of the current CTU.

[0215] In one example, if the decoder or encoder supports line buffer constraints, the upper block located in a different CTU with the CTU of the current block is considered not to exist, otherwise it is considered to exist.

[0216] Otherwise (ie, if the left block is available), include the intra-prediction mode of the top-most block in the 6-entry MPM list.

[0217] Check whether a planar (PLANAR_IDX=0) mode has been inserted into the MPM list (i.e., check that one of the intra modes of the left and top blocks is a planar mode), and insert the planar mode into the MPM list only if the planar mode has not been inserted into the MPM list. Check whether a DC (DC_IDX=1) mode has been inserted into the MPM list (i.e., check that one of the intra modes of the left and top blocks is a DC mode), and insert the DC mode into the MPM list only if the DC mode has not been inserted into the MPM list.

[0218] If the left block is available and its intra prediction mode is an angular mode (i.e., mode>DC_IDX, mode is angularLeft), get the closest two angular modes of the left block by performing angularLeft-1, angularLeft+1. Note that performing -1 or +1 may involve wrap-up and wrap-down operations, for example.

[0219] If angularLeft is 2, then angularLeft-1 will be 66 (wrap-up case), or if angularLeft is 66, then angularLeft+1 will be 2 (wrap-down case).

[0220] If the prediction mode of angularLeft-1 has not been inserted into the MPM list, insert it into the MPM list.

[0221] If the prediction mode of angularLeft+1 has not been inserted into the MPM list, insert that prediction mode into the MPM list.

[0222] If the MPM list is not full and the upper block is available and the intra prediction mode is an angular mode (i.e., mode>DC_IDX and mode is angularAbove), get the two closest angular modes of the upper block by performing angularAbove-1, angularAbove+1. Note that performing -1 or +1 may involve wrap-up and wrap-down operations. In one example, if angularLeft is 2, angularLeft-1 will be 66 (wrap-up case), and if angularLeft is 66, angularLeft+1 will be 2 (wrap-down case).

[0223] If the prediction mode of angularAbove-1 has not been inserted into the MPM list, insert that prediction mode into the MPM list.

[0224] If the MPM list is not full (e.g., the number of prediction modes in the MPM list is less than 6) and the prediction mode of angularAbove+1 has not been inserted into the MPM list, insert that prediction mode into the MPM list.

[0225] If the MPM list is not full, insert the following modes into the MPM list until the MPM list is full (e.g., until the number of prediction modes in the MPM list is equal to 6): vertical mode (VER_IDX), horizontal mode (HOR_IDX), intra mode 2 (2), vertical diagonal mode (VDIA_IDX), or diagonal mode (DIA_IDX).

[0226] A summary of the proposed method variations is as follows.

[0227] The availability of blocks on the left side must take into account both those that support parallelism and those that do not.

[0228] The availability of upper blocks must take into account both those that support parallelism and those that do not.

[0229] The order of deriving the two closest modes in the left and top blocks may be +1 first, then -1.

[0230] The last candidate in the MPM list may be either VIDA_IDX or DIA_IDX.

[0231] The order of insertion may be left, top, plane, DC, and the default mode (VER_IDX, HOR_IDX, 2, VDIA_IDX, or DIA_IDX).

[0232] A simplified unary binarization is used in the signaling of mpm_idx. The first three bins of mpm_idx allow to use three different independent contexts or all bins of mpm_idx are CABAC by path coded.

[0233] SUMMARY OF THE DISCLOSURE The present disclosure aims to improve intra-mode signaling schemes. In this disclosure, a video decoding method and a video decoder are proposed.

[0234] Figure 7 shows an example of 67 intra prediction modes, as proposed for VVC, for example. The multiple intra prediction modes are planar mode (index 0), DC mode (index 1), and 67 intra prediction modes including angular modes with indexes 2 to 66. The angular mode at the bottom left of Figure 7 refers to index 2, and the numbering of these indexes is incremented until index 66 is the angular mode at the top right corner of Figure 7.

[0235] In another aspect of the present application, a decoder is disclosed that includes a processing circuit and is configured to perform the above decoding method.

[0236] In another aspect of the present application, a computer program product is disclosed, comprising program code for performing the above decoding method.

[0237] In another aspect of the present application, a decoder for decoding video data is disclosed, the decoder including one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing a program executed by the processors, the program, when executed by the processors, configuring the decoder to perform the above-mentioned decoding method.

[0238] The processing circuitry may be implemented in hardware, or in a combination of hardware and software, such as a software programmable processor.

[0239] In another aspect of the present application, a coding method is disclosed, which includes: obtaining an intra-prediction mode of a picture block from a plurality of intra-prediction modes, the plurality of intra-prediction modes for the picture block including a set of most probable modes (MPM) and a set of non-MPM, the set of non-MPM including a first set of intra-prediction modes and a second set of intra-prediction modes; if the intra-prediction mode of the picture block is in the set of non-MPM, generating a mapping relationship between at least one intra-prediction mode of the first set of intra-prediction modes and at least one intra-prediction mode of the set of non-MPM; and encoding the intra-prediction mode of the picture block to obtain a codeword of the intra-prediction mode according to the mapping relationship.

[0240] In one implementation form of the present application, the process of obtaining the intra-prediction mode of a picture block may refer to relevant disclosures in the detailed description of the embodiments section below, or relevant disclosures in the field of video encoding technologies such as ITU-T H.264, ITU-T H.265, etc.

[0241] In one implementation of the present application, the encoding method further includes generating a set of MPMs and determining whether the intra-prediction mode of the picture block is in the set of MPMs.Therefore, if the intra-prediction mode of the picture block is not in the set of MPMs, the intra-prediction mode of the picture block is in a set of non-MPMs.The process of generating a set of MPMs can refer to the relevant disclosures in the description section or the relevant disclosures in the field of video encoding technologies such as ITU-T H.264, ITU-T H.265, etc.

[0242] In one implementation form of the present application, the process of generating a mapping relationship between at least one intra prediction mode of the first set of intra prediction modes and at least one intra prediction mode of the set of non-MPMs may refer to the relevant disclosure on the decoding side.

[0243] In one implementation of the present application, a first set of intra-prediction modes is coded using five bits and a second set of intra-prediction modes is coded using six bits.

[0244] In another aspect of the present application, an encoder is disclosed that includes a processing circuit and is configured to perform the encoding method described above.

[0245] In another aspect of the present application, a computer program product is disclosed, comprising program code for performing the encoding method described above.

[0246] In another aspect of the present application, an encoder for encoding video data is disclosed, the encoder including one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, the program, when executed by the processors, configuring the encoder to perform the encoding method described above.

[0247] The processing circuitry may be implemented in hardware, or in a combination of hardware and software, such as a software programmable processor.

[0248] In one implementation form of the present application, according to Fig. 8, the present application discloses a video decoding method. The method includes the following steps. S801: Decoding encoded data of a picture block to obtain an intra-prediction mode from a plurality of intra-prediction modes for the picture block. The plurality of intra-prediction modes for the picture block includes a set of most probable modes (MPM) and a set of non-MPM, and the set of non-MPM includes a first set of intra-prediction modes and a second set of intra-prediction modes. A mode in the first set of intra-prediction modes is encoded using N bits, and a mode in the second set of intra-prediction modes is encoded using M bits, where N and M are positive integers, and N is less than M. The step of decoding encoded data of a picture block to obtain an intra-prediction mode from a plurality of intra-prediction modes for the picture block (S801) includes the following steps: S802: Decode the encoded data to obtain an indication of whether the intra-prediction mode for the picture block is in the set of MPM. If the indication indicates that the intra-prediction mode for the picture block is not in the set of MPM, perform the following steps: S803: Generate a mapping relationship between at least one intra prediction mode of the first set of intra prediction modes and at least one intra prediction mode of the set of non-MPM. S804: Decode the encoded data to obtain a codeword of the intra-prediction mode for the picture block. S805: Obtain an intra-prediction mode for the picture block according to the mapping relationship and the codeword of the intra-prediction mode.

[0249] According to the video decoding method of the present application, a simplified binarization scheme is used to encode prediction modes in a set of non-MPMs and a mapping relationship is generated, so that the prediction mode for the current block is likely to be encoded using fewer bits, and the computational complexity at the decoder side is reduced.

[0250] In one implementation form of the present application, according to Fig. 9, the present application discloses a video decoding method. The method includes the following steps.

[0251] S901: Receive coded data of a picture block. The decoder side may be configured to receive the coded picture data via a direct communication link between the encoder side and the decoder side, such as a direct wired or wireless connection, or via any kind of network, such as a wired network or a wireless network, or any kind of combination thereof, or any kind of private network and public network, or any kind of combination thereof.

[0252] S902: Decode the encoded data to obtain an indication of whether the intra prediction mode for the picture block is in the set of MPM. The indication of whether the intra prediction mode for the picture block is in the set of MPM may be a flag, and a value of the flag may indicate that the intra prediction mode for the picture block is in the set of MPM if it is 1, and a value of the flag may indicate that the intra prediction mode for the picture block is not in the set of MPM if it is 0. For example, on the encoder side, if the MPM list (set of MPM) is a set of intra modes, e.g., [25, 42, 63], and the intra mode value of the current block is 42, the MPM flag indicator is set to 1 because the intra mode for the current block is in the second entry of the MPM list. For example, if the intra mode of the current block is 41 instead of 42, the MPM flag indicator is set to 0, and the MPM flag is sent to the decoding side in the encoded data.

[0253] If the indication indicates that the intra prediction mode for the picture block is in the set of MPM, perform step S903.

[0254] If the indication indicates that the intra prediction mode for the picture block is in the set of MPM, perform step S904.

[0255] S903: Decode the encoded data, and obtain an intra prediction mode for the picture block according to the set of MPM. In one example, if the indication indicates that the intra prediction mode for the picture block is in the set of MPM. The derivation process of the intra prediction mode (IntraPredModeY[xPb][yPb]) for the picture block is defined as follows. IntraPredModeY[xPb][yPb] is derived by applying the following procedure. If intra_luma_mpm_flag[xPb][yPb] is equal to 1 (indicating that the intra prediction mode for the picture block is in the set of MPM), IntraPredModeY[xPb][yPb] is set equal to candModeList[intra_luma_mpm_idx[xPb][yPb]]. (xPb, yPb) specifies the top-left sample of the current luma prediction block relative to the top-left luma sample of the current picture, and candModeList is the actual MPM list. Decode the encoded data to obtain an MPM index, and obtain the intra-prediction mode of the picture block according to the MPM index and the MPM list. In a specific example, the set of MPM is (15, 0, 20), and the value of the MPM index is 2, so the intra-prediction mode of the picture block is planar mode (value 0). In another specific example, the set of MPM is (15, 36, 0, 1, 21, 19), and the value of the MPM index is 5, so the intra-prediction mode of the picture block is angle mode 21.

[0256] S904: Generate a mapping relationship between at least one intra prediction mode of the first set of intra prediction modes and at least one intra prediction mode of the set of non-MPM.

[0257] In one example, if the indication indicates that the intra-prediction mode for the picture block is not in the set of MPMs, two lists are constructed: a codeword list and a derivation mode list. First, the codeword list is constructed as follows: 1. Find the smallest mode in the MPM list. Assume the smallest mode is Ms. 2. Set the initial increment variable Inc=1. 3. Set candidate mode Mc to (Ms+Inc) and check if mode Mc is also in the MPM list. If Mc is not in the MPM list, add Mc to the codeword list, else go to step 4. 4. Check if the inserted entry in the codeword list is full (inserted length equals the length of the codeword list). If it is full, exit. If not, set Inc=Inc+1 and go to step 3. In summary, the codeword list will contain the minimum mode in addition to the modes present in the MPM list. Assuming the length of the MPM list is L, the length of the codeword list is 64-(67-L)=L-3. In one example, if the MPM list is (15,36,0,1,21,19), the constructed codeword is (2,3,4). The derived mode list is then constructed as follows: 1. Find the first two angular modes in the MPM list. Assume the angular modes you are looking for are angular0 and angular1. 2. Set the initial increment variable Inc=1. 3. New mode M0 minus = Derive angular0-Inc. M0 minus Note that also guarantees angular mode (i.e. 66>=M0 minus >= 2). So if angular0 is equal to 2 and Inc is 1, the derived M0 minus becomes 66, and if Inc is 2, M0 minus becomes 65, etc. A negative operation will wrap up to maximum angle mode. 4.M0 minus Check if M0 is in the MPM list minus If there is no and the derived mode list is not full, M0 minusinto the derived mode list. Otherwise, if the derived mode list is full, exit. Otherwise, go to step 5. 5. New mode M0 plus =angular0+Inc. M0 plus Note that also guarantees angular mode (i.e., 66>=M0 plus >=2). So if angular0 is equal to 66 and Inc is 1, the derived M0 plus becomes 2, and if Inc is 2, M0 plus becomes 3, etc. A plus operation will wrap down to the minimum angle mode. 6.M0 plus Check if M0 is in the MPM list plus If there is no and the derived mode list is not full, M0 plus into the derived mode list. Otherwise, if the derived mode list is full, exit. Otherwise, go to step 7. 7.Replace angular0 with angular1 and repeat steps 3 to 6. 8. Set Inc = Inc + 1 and repeat steps 3 to 7. In summary, the derived mode list gets the adjacent modes of the first two angle modes in the MPM list. If these adjacent modes are already included in the MPM list, they are removed from the derived mode list. Assuming that the length of the MPM list is L, the length of the derived mode list is 64-(67-L)=L-3. In one example, if the MPM list is (15,36,0,1,21,19), the derived mode list to be constructed is (14,16,35). Once the codeword list and the derived mode list are constructed, a bidirectional mapping relationship between both lists is established. That is, given the above example list with codeword list (2,3,4) and derived mode list (14,16,35), the mapping is 2←→14, 3←→16, and 4←→35. Here,←→represents bidirectional mapping.

[0258] Two options allow for the creation of a two-way mapping relationship between the codeword list and the derivation mode list. The first option is to ensure that the derivation mode list is constructed in such a way that elements can exist in both the derivation mode list and the codeword list. The other option is to ensure that the derivation mode list does not overlap with modes in the codeword list.

[0259] In another example, in one implementation of the present application, generating a mapping relationship between at least one intra prediction mode of the first set of intra prediction modes and at least one intra prediction mode of the set of non-MPMs includes: ranking a plurality of intra prediction mode categories according to the number and / or direction of intra prediction modes in the set of MPMs included in each intra prediction mode category; and generating a mapping relationship according to the highest intra prediction mode category. In one example, there are five angular intra prediction mode categories, namely DC mode (DC_IDX), vertical mode (VER_IDX), horizontal mode (HOR_IDX), intra mode 2 (2), vertical diagonal mode (VDIA_IDX), and diagonal mode (DIA_IDX). Here, the angular intra prediction modes of the most probable mode list included in each angular intra prediction mode category correspond to, for example, associate each of the angular intra prediction modes of the most probable mode list with the angular intra prediction mode category closest to the corresponding angular intra prediction mode of the most probable mode list. In another example, repeat this step using the second highest angular intra-prediction mode category. In one example, generating a mapping relationship between at least one intra-prediction mode of the first set of intra-prediction modes and at least one intra-prediction mode of the set of non-MPMs includes generating an initial set of intra-prediction modes by adding an offset to a plurality of values ​​corresponding to the set of MPMs, sorting the set of MPMs to obtain a highest intra-prediction mode category, and generating a mapping relationship according to the highest intra-prediction mode category and the initial set of intra-prediction modes. In one example, the initial set of intra-prediction modes is generated by adding an offset of -1, +1, +2, -2, +3, -3, +4, or -4 to a plurality of values ​​corresponding to the set of MPMs.In one example, the mapping relationship is generated according to a predefined default mode list that includes or consists of a planar mode (PLANAR_IDX), a DC mode (DC_IDX), a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), and a diagonal mode (DIA_IDX).

[0260] S905: Decode the encoded data to obtain a codeword of an intra-prediction mode for the picture block. The codeword is encoded at the encoding side using N bits or M bits. In one example, the codeword has a bidirectional mapping relationship, so that the intra-prediction mode corresponding to the codeword can be mapped to another intra-prediction mode in a set of non-MPM.

[0261] S906: Obtain an intra-prediction mode for the picture block according to the mapping relationship and the codeword of the intra-prediction mode. In one example, after the bidirectional mapping relationship is constructed, check whether the intra-prediction mode corresponding to the codeword of the intra-prediction mode is in the codeword list or the derived mode list. If the analyzed intra-prediction mode is not in the codeword list or the derived mode list, set the final prediction mode as the analyzed intra-prediction mode. If the analyzed intra-prediction mode is only in the codeword list or only in the derived mode list, set the final prediction mode as its corresponding mapped intra-prediction mode. If the analyzed intra-prediction mode is in both the codeword list and the derived mode list, a mechanism is introduced into the construction of these two lists to adjust the bidirectional mapping relationship, and all overlapping modes are mapped to overlapping modes of another list. As an example, the MPM list is (0 1 2 3 50 66), the codeword list is (4 5 6), and the derived mode list is (4 65 5). When constructing a derivation mode list or codeword list, ensure that 4←→4, 5←→5, and 6←→65.

[0262] The decoder includes processing circuitry configured to perform the above method.

[0263] In the present disclosure, a computer program product including program code is disclosed for performing the above methods.

[0264] The present disclosure discloses a decoder for decoding video data, the decoder including one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing a program executed by the processors, the program, when executed by the processors, configuring the decoder to perform the above-mentioned method.

[0265] Figure 7 shows an example of 67 intra prediction modes, as proposed for VVC, for example. The multiple intra prediction modes are planar mode (index 0), DC mode (index 1), and 67 intra prediction modes including angular modes with indexes 2 to 66. The angular mode at the bottom left of Figure 7 refers to index 2, and the numbering of these indexes is incremented until index 66 is the angular mode at the top right corner of Figure 7.

[0266] Further embodiments are disclosed below, the numbering of which may not necessarily match the numbering of other embodiments or examples herein. [Embodiment 1] A method for constructing a Most Probable Mode (MPM) list, the method including the steps of: determining whether a block to the left of a current coding block is available, and if the block to the left of the current coding block is available, adding an intra-prediction mode of the left block to the MPM list; determining whether a block above the current coding block is available, and if the block above the current coding block is available, adding an intra-prediction mode of the block above the current coding block to the MPM list; if the planar mode is not in the MPM list, adding a DC mode to the MPM list; and if the DC mode is not in the MPM list, adding a DC mode to the MPM list.

[0267] [Embodiment 2] 2. The method of embodiment 1, wherein if the prediction mode of the left block is not an intra prediction mode, the left block of the current coding block is unavailable.

[0268] [Embodiment 3] 3. The method according to embodiment 1 or 2, wherein if the current coding block is a coding block located on the leftmost side of the frame, the blocks to the left of the current coding block are unavailable.

[0269] [Embodiment 4] A method according to any one of embodiments 1 to 3, wherein if parallel processing is supported and the current coding block is a coding block located on the left side of a tile, blocks to the left of the current coding block cannot be used.

[0270] [Embodiment 5] A method according to any one of embodiments 1 to 4, wherein if parallel processing is not supported and the current coding block is a coding block located on the left side of a tile but not on the left side of a frame, a block to the left of the current coding block is available.

[0271] [Embodiment 6] A method according to any one of embodiments 1 to 5, wherein if parallel processing is supported and the current coding block is a coding block located on the left side of a slice, blocks to the left of the current coding block cannot be used.

[0272] [Embodiment 7] A method according to any one of embodiments 1 to 6, wherein if parallel processing is not supported and the current coding block is a coding block located on the left side of a slice but not on the left side of a frame, a block to the left of the current coding block is available.

[0273] [Embodiment 8] 8. The method according to any one of embodiments 1 to 7, wherein the block above the current coding block is unavailable if the prediction mode of the block above is not an intra prediction mode.

[0274] [Embodiment 9] 9. The method according to any one of embodiments 1 to 8, wherein if the current coding block is a coding block located at the upper end side of a frame, the blocks above the current coding block cannot be used.

[0275] [Embodiment 10] 10. A method according to any one of embodiments 1 to 9, wherein if parallel processing is supported and the current coding block is a coding block located on the top side of a tile, blocks above the current coding block cannot be used.

[0276] [Embodiment 11] A method according to any one of embodiments 1 to 10, wherein if parallel processing is not supported and the current coding block is a coding block located at the top of a tile but not at the top of a frame, a block above the current coding block is available.

[0277] [Embodiment 12] 12. A method according to any one of embodiments 1 to 11, wherein if parallel processing is supported and the current coding block is a coding block located at the upper end of a slice, the blocks above the current coding block cannot be used.

[0278] [Embodiment 13] A method according to any one of embodiments 1 to 12, wherein if parallel processing is not supported and the current coding block is a coding block located at the top of a slice but not at the top of a frame, a block above the current coding block is available.

[0279] [Embodiment 14] A method according to any one of embodiments 1 to 13, wherein when the size of the line buffer is limited and the current coding block is a coding block located at the upper end side of the current CTU, the blocks above the current coding block cannot be used.

[0280] [Embodiment 15] The method according to any one of embodiments 1 to 14, further comprising the steps of: if a block to the left of the current coding block is available and the intra prediction mode of the left block is an angular mode, adding an offset to the prediction mode of the left block to obtain a new prediction mode, and if the new prediction mode is not in the MPM list, adding the new prediction mode to the MPM list.

[0281] [Embodiment 16] 16. The method of embodiment 15, wherein the offset is −1.

[0282] [Embodiment 17] 16. The method of embodiment 15, wherein the offset is 1.

[0283] [Embodiment 18] The method according to any one of embodiments 1 to 17, further comprising the steps of: if an upper block of the current coding block is available and the intra prediction mode of the upper block is an angular mode, adding an offset to the prediction mode of the upper block to obtain an upper offset prediction mode; and if the upper offset prediction mode is not in the MPM list, adding the upper offset prediction mode to the MPM list.

[0284] [Embodiment 19] 19. The method of embodiment 18, wherein the offset is −1.

[0285] [Embodiment 20] 20. The method of embodiment 18, wherein the offset is 1.

[0286] [Embodiment 21] 21. The method of any one of embodiments 1 to 20, further comprising adding a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list.

[0287] [Embodiment 22] A method according to any one of embodiments 1 to 20, wherein the method further includes a list of angle mode candidates, the list of angle mode candidates including or consisting of vertical mode (VER_IDX), horizontal mode (HOR_IDX), intra mode 2 (2), vertical diagonal mode (VDIA_IDX), or diagonal mode (DIA_IDX) forming an MPM list, and the method further includes a step of iteratively determining whether an angle mode in the list is in the MPM list according to the order of the angle modes in the list, and if each angle mode is not in the MPM list, adding each angle mode to the MPM list.

[0288] [Embodiment 23] 21. The method according to any one of the preceding embodiments, wherein the construction of the MPM list begins with determining whether a block to the left of the current coding block is available, for example based on an empty MPM list.

[0289] [Embodiment 24] The method according to any one of embodiments 1 to 23, further comprising a step of inserting the intra prediction mode of the other block into the MPM list if the block to the left of the current coding block is unavailable and another block approximately to the left (e.g., BL or AL in FIG. 5) is available, and not inserting the intra prediction mode of the other block into the MPM list if the block to the left is available.

[0290] [Embodiment 25] The method according to any one of embodiments 1 to 23, further comprising a step of inserting the intra prediction mode of another block (e.g., AR or AL in FIG. 5) approximately above the current coding block into the MPM list if the block above the current coding block is unavailable and another block approximately above is available, and not inserting the intra prediction mode of the other block into the MPM list if the block above is available.

[0291] [Embodiment 26] 26. The method of any one of embodiments 1 to 25, further comprising adding a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list if these modes are not in the MPM list.

[0292] [Embodiment 27] 27. The method according to any one of the preceding claims, further comprising: if both the left and upper blocks of the current coding block are not angles, further checking another adjacent block (e.g., BL or AL or AR in Fig. 5). If any of these blocks (BL or AL or AR) are angles, use this angle mode as the starting angle mode for the -1+1 derivation process as described above.

[0293] [Embodiment 28] 28. An encoder comprising a processing circuit for performing the method according to any one of embodiments 1 to 27.

[0294] [Embodiment 29] 28. A decoder comprising a processing circuit for performing the method according to any one of embodiments 1 to 27.

[0295] [Embodiment 30] 28. A computer program product comprising a program code for performing the method according to any one of embodiments 1 to 27.

[0296] [Embodiment 31] A decoder for constructing a most probable mode (MPM) list, the decoder including one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing a program executed by the processors, the program configuring the decoder to perform a method according to any one of embodiments 1 to 27, when executed by the processors.

[0297] [Embodiment 32] An encoder for constructing a most probable mode (MPM) list, the encoder including one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing a program executed by the processors, the program, when executed by the processors, configuring a decoder to perform a method according to any one of embodiments 1 to 27.

[0298] [Embodiment 33] A method for constructing a Most Probable Mode (MPM) list for intra prediction, the method including the steps of: determining whether a block to the left of a current coding block is available, and if the block to the left of the current coding block is available, adding an intra prediction mode of the left block to the MPM list; determining whether a block above the current coding block is available, and if the block above the current coding block is available and the intra prediction mode of the block above is not in the MPM list, adding a planar mode to the MPM list if the planar mode is not in the MPM list; and adding a DC mode to the MPM list if the DC mode is not in the MPM list.

[0299] [Embodiment 34] 34. The method of embodiment 33, wherein if the current coding block is a coding block located on the left side of the frame, the block to the left of the current coding block is not available.

[0300] [Embodiment 35] 35. The method according to embodiment 33 or 34, wherein if the current coding block is a coding block that is not located on the left end side of the frame, a block to the left of the current coding block is available.

[0301] [Embodiment 36] 36. The method according to any one of embodiments 33 to 35, wherein if the current coding block is a coding block located at the upper end of the frame, the blocks above the current coding block cannot be used.

[0302] [Embodiment 37] 37. The method according to any one of embodiments 33 to 36, wherein if the current coding block is a coding block that is not located at the top end of the frame, the block above the current coding block is available.

[0303] [Embodiment 38] A method as described in any one of embodiments 33 to 37, wherein the method further includes a step of adding an offset to the prediction mode of the left block to obtain a new prediction mode if the block to the left of the current encoding block is available and the intra prediction mode of the left block is an angular mode, and adding the new prediction mode to the MPM list if the new prediction mode is not in the MPM list.

[0304] [Embodiment 39] A method according to any one of embodiments 33 to 38, further comprising the steps of: if an upper block of the current coding block is available and the intra prediction mode of the upper block is an angular mode, adding an offset to the prediction mode of the upper block to obtain an upper offset prediction mode, and if the upper offset prediction mode is not in the MPM list, adding the upper offset prediction mode to the MPM list.

[0305] [Embodiment 40] 40. The method of embodiment 38 or 39, wherein the offset is −1.

[0306] [Embodiment 41] 40. The method of embodiment 38 or 39, wherein the offset is 1.

[0307] [Embodiment 42] The method further includes, if the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, wherein the set of intra prediction modes includes a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX). A method according to any one of embodiments 33 to 41.

[0308] [Embodiment 43] The method according to any one of embodiments 33 to 41, further comprising the step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list in the aforementioned order if the number of intra prediction modes in the MPM list is less than a threshold, if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold.

[0309] [Embodiment 44] The method further includes, when a block to the left of the current encoding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, wherein the set of intra prediction modes includes a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), a diagonal mode (DIA_IDX), or intra mode 2 (2). A method according to any one of embodiments 33 to 41.

[0310] [Embodiment 45] The method according to any one of embodiments 33 to 41, further comprising the step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), a diagonal mode (DIA_IDX), or intra mode 2 (2) to the MPM list in the aforementioned order if the block to the left of the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold.

[0311] [Embodiment 46] 42. The method according to any one of embodiments 33 to 41, wherein if the number of intra prediction modes in the MPM list is less than a threshold, the method further comprises: checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list. The method according to any one of embodiments 33 to 41, wherein the set of intra prediction modes includes a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX with an offset of -4, or an intra prediction mode corresponding to VER_IDX with an offset of 4.

[0312] [Embodiment 47] The method according to any one of embodiments 33 to 41, further comprising the step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -4, or an intra prediction mode corresponding to VER_IDX and using an offset of 4 to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold.

[0313] [Embodiment 48] 42. The method according to any one of embodiments 33 to 41, wherein if the number of intra prediction modes in the MPM list is less than a threshold, the method further comprises: checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list. The method according to any one of embodiments 33 to 41, wherein the set of intra prediction modes includes a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX with an offset of 4, or an intra prediction mode corresponding to VER_IDX with an offset of -4.

[0314] [Embodiment 49] The method according to any one of embodiments 33 to 41, further comprising the step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of 4, or an intra prediction mode corresponding to VER_IDX and using an offset of -4 to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold.

[0315] [Embodiment 50] The method further includes, when a block to the left of the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and adding the first intra prediction mode to the MPM list if the first intra prediction mode is not included in the MPM list, and the set of intra prediction modes is one of the following intra prediction mode sets: a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of −1, and an intra prediction mode corresponding to VER_IDX and using an offset of 1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of 4, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of -1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of +1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -1, and an intra prediction mode corresponding to VER_IDX and using an offset of -1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -1, and an intra prediction mode corresponding to VER_IDX and using an offset of 1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of 1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -1, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), intra prediction mode corresponding to VER_IDX and using offset 1, and intra prediction mode corresponding to VDIA_IDX and using offset -1 42. The method of any one of embodiments 33 to 41, including one of the following:

[0316] [Embodiment 51] The method further includes, if the block to the left of the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, iteratively adding an intra prediction mode of the set of intra prediction modes to the MPM list according to the aforementioned order if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold, and the set of intra prediction modes is one of the following intra prediction mode sets: a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of −1, and an intra prediction mode corresponding to VER_IDX and using an offset of 1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of 4, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of -1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, and an intra prediction mode corresponding to VER_IDX and using an offset of +1, or A vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -1, and an intra prediction mode corresponding to VER_IDX and using an offset of -1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VDIA_IDX and using an offset of -1, and an intra prediction mode corresponding to VER_IDX and using an offset of 1, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of 1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -4, or a vertical mode (VER_IDX), a vertical diagonal mode (VDIA_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -1, and an intra prediction mode corresponding to VDIA_IDX and using an offset of -1, or Vertical mode (VER_IDX), vertical diagonal mode (VDIA_IDX), intra prediction mode corresponding to VER_IDX and using offset 1, and intra prediction mode corresponding to VDIA_IDX and using offset -1 42. The method of any one of embodiments 33 to 41, including one of the following:

[0317] [Embodiment 52] The method further includes, when the number of intra prediction modes in the MPM list is less than a threshold and the block above the current encoding block is unavailable, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, wherein the set of intra prediction modes includes a horizontal mode (HOR_IDX), an intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX). A method according to any one of embodiments 33 to 41.

[0318] [Embodiment 53] The method according to any one of embodiments 33 to 41, further comprising the step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a horizontal mode (HOR_IDX), an intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX) to the MPM list in the aforementioned order if the number of intra prediction modes in the MPM list is less than a threshold and a block above the current encoding block is not available, until the number of prediction modes is equal to the threshold, if the intra prediction mode is not included in the MPM list.

[0319] [Embodiment 54] The method further includes, when the number of intra prediction modes in the MPM list is less than a threshold, and the block to the left of the current coding block is available, and the block above the current coding block is available, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, wherein the set of intra prediction modes includes a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX). A method according to any one of embodiments 33 to 41.

[0320] [Embodiment 55] The method according to any one of embodiments 33 to 41, further comprising the step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra mode 2 (2), a vertical diagonal mode (VDIA_IDX), or a diagonal mode (DIA_IDX) to the MPM list in the aforementioned order if the number of intra prediction modes in the MPM list is less than a threshold, and the block to the left of the current coding block is available, and the block above the current coding block is available, until the number of prediction modes is equal to the threshold, if the intra prediction mode is not included in the MPM list.

[0321] [Embodiment 56] The method further includes, when the number of intra prediction modes in the MPM list is less than a threshold and the block above the current encoding block is unavailable, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, wherein the set of intra prediction modes includes a horizontal mode (HOR_IDX), an intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX). A method according to any one of embodiments 33 to 41.

[0322] [Embodiment 57] The method according to any one of embodiments 33 to 41, further comprising the step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a horizontal mode (HOR_IDX), an intra mode 2 (2), a diagonal mode (DIA_IDX), or a vertical diagonal mode (VDIA_IDX) to the MPM list in the aforementioned order if the number of intra prediction modes in the MPM list is less than a threshold and a block above the current encoding block is not available, until the number of prediction modes is equal to the threshold, if the intra prediction mode is not included in the MPM list.

[0323] [Embodiment 58] The method further includes, when the number of intra prediction modes in the MPM list is less than a threshold, and the block to the left of the current encoding block is available, and the block above the current encoding block is available, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and if the first intra prediction mode is not included in the MPM list, adding the first intra prediction mode to the MPM list, wherein the set of intra prediction modes includes a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX and using an offset -4, or an intra prediction mode corresponding to VER_IDX and using an offset 4. A method according to any one of embodiments 33 to 41.

[0324] [Embodiment 59] The method according to any one of embodiments 33 to 41, further comprising the step of repeatedly adding an intra prediction mode from a set of intra prediction modes including a vertical mode (VER_IDX), a horizontal mode (HOR_IDX), an intra prediction mode corresponding to VER_IDX and using an offset of -4, or an intra prediction mode corresponding to VER_IDX and using an offset of 4 to the MPM list in the aforementioned order if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold.

[0325] [Embodiment 60] The method further includes, when the block above the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, checking whether a first intra prediction mode of the set of intra prediction modes is included in the MPM list, and adding the first intra prediction mode to the MPM list if the first intra prediction mode is not included in the MPM list, wherein the set of intra prediction modes is one of the following intra prediction mode sets: a horizontal mode (HOR_IDX), an intra mode 2 (2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to HOR_IDX and using an offset of 1, or Horizontal mode (HOR_IDX), intra mode 2 (2), intra prediction mode corresponding to HOR_IDX using offset -4, and HOR_IDX plus offset 4, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using an offset of 4, and an intra prediction mode corresponding to HOR_IDX using an offset of −1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using offset 4, and an intra prediction mode corresponding to HOR_IDX using offset 1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using an offset of 1, and an intra prediction mode corresponding to HOR_IDX using an offset of −1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) and using offset 1, and an intra prediction mode corresponding to HOR_IDX and using offset 1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to intra mode 2(2) and using an offset of 4, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using offset 1, and an intra prediction mode corresponding to intra mode 2(2) and using offset 4, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to intra mode 2(2) and using an offset of 1, or Horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using offset 1, and an intra prediction mode corresponding to intra mode 2(2) and using offset 1 42. The method of any one of embodiments 33 to 41, including one of the following:

[0326] [Embodiment 61] The method further includes, if the block above the current coding block is unavailable and the number of intra prediction modes in the MPM list is less than a threshold, iteratively adding an intra prediction mode of the set of intra prediction modes to the MPM list according to the aforementioned order if the intra prediction mode is not included in the MPM list, until the number of prediction modes is equal to the threshold, and the set of intra prediction modes is one of the following intra prediction mode sets: a horizontal mode (HOR_IDX), an intra mode 2 (2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to HOR_IDX and using an offset of 1, or Horizontal mode (HOR_IDX), intra mode 2 (2), intra prediction mode corresponding to HOR_IDX using offset -4, and HOR_IDX plus offset 4, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using an offset of 4, and an intra prediction mode corresponding to HOR_IDX using an offset of −1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using offset 4, and an intra prediction mode corresponding to HOR_IDX using offset 1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) using an offset of 1, and an intra prediction mode corresponding to HOR_IDX using an offset of −1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to intra mode 2(2) and using offset 1, and an intra prediction mode corresponding to HOR_IDX and using offset 1, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to intra mode 2(2) and using an offset of 4, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using offset 1, and an intra prediction mode corresponding to intra mode 2(2) and using offset 4, or a horizontal mode (HOR_IDX), an intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using an offset of −1, and an intra prediction mode corresponding to intra mode 2(2) and using an offset of 1, or Horizontal mode (HOR_IDX), intra mode 2(2), an intra prediction mode corresponding to HOR_IDX and using offset 1, and an intra prediction mode corresponding to intra mode 2(2) and using offset 1 42. The method of any one of embodiments 33 to 41, including one of the following:

[0327] [Embodiment 62] An encoder comprising a processing circuit for performing the method according to any one of embodiments 33 to 61.

[0328] [Embodiment 63] A decoder comprising a processing circuit for performing the method according to any one of embodiments 33 to 61.

[0329] [Embodiment 64] 62. A computer program product comprising a program code for performing the method according to any one of embodiments 33 to 61.

[0330] [Embodiment 65] A decoder for constructing a most probable mode (MPM) list, the decoder including one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing a program executed by the processors, the program, when executed by the processors, configuring the decoder to perform a method according to any one of embodiments 33 to 61.

[0331] [Embodiment 66] An encoder for constructing a most probable mode (MPM) list, the encoder including one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing a program executed by the processors, the program, when executed by the processors, configuring a decoder to perform a method according to any one of embodiments 33 to 61.

[0332] 10 is a schematic diagram of a network device according to an embodiment of the present disclosure. The network device is suitable for implementing the disclosed embodiments as described herein. The network device includes an input port and a receiver unit (Rx) for receiving data, a processor, logic unit, or central processing unit (CPU) for processing the data, a transmitter unit (Tx) and an output port for transmitting the data, and a memory for storing the data. The network device may also include optical / electrical (OE) and electrical / optical (EO) conversion components coupled to the input port, the receiver unit, the transmitter unit, and the output port for outputting or inputting optical or electrical signals.

[0333] The processor is implemented by hardware and software. The processor may be implemented as one or more CPU chips, cores (e.g., multi-core processors), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor communicates with the input ports, the receiver units, the transmitter units, the output ports, and the memory. The processor includes an encoding module. The encoding module implements the above-disclosed embodiments. For example, the encoding module implements, processes, prepares, or provides various networking functions. Thus, the inclusion of the encoding module significantly enhances the functionality of the network device and transforms the network device into a different state. Alternatively, the encoding module is implemented as instructions stored in a memory and executed by the processor.

[0334] The memory may include one or more disks, tape drives, and solid state drives, may be used as overflow data storage devices, may store programs (when such programs are selected for execution), and may store instructions and data read in executing the programs. The memory may be 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).

[0335] FIG. 10 is a block diagram of an apparatus 1500 that may be used to implement various embodiments. The apparatus 1500 may be the source device 12 shown in FIG. 1, the video encoder 20 shown in FIG. 2, the destination device 14 shown in FIG. 1, or the video decoder 30 shown in FIG. 3. Additionally, the apparatus 1500 may provide one or more of the described elements. In some embodiments, the apparatus 1500 includes one or more input / output devices, such as a speaker, a microphone, a mouse, a touch screen, a keypad, a keyboard, a printer, and a display. The apparatus 1500 may include one or more central processing units (CPUs) 1510, a memory 1520, a mass storage device 1530, a video adapter 1540, and an I / O interface 1560 connected to a bus. The bus may be one or more of any type of several bus architectures, including a memory bus or memory controller, a peripheral bus, or a video bus, etc.

[0336] CPU 1510 may include any type of electronic data processor. Memory 1520 may include or be any type of system memory, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), read-only memory (ROM), or a combination thereof. In one embodiment, memory 1520 may include ROM for use during startup and DRAM for storing programs and data for use during program execution. In some embodiments, memory 1520 is non-transitory. Mass storage 1530 includes any type of storage device for storing data, programs, and other information and for making the data, programs, and other information accessible via a bus. Mass storage 1530 may include, for example, one or more of a solid state drive, a hard disk drive, a magnetic disk drive, an optical disk drive, or the like.

[0337] Video adapter 1540 and I / O interface 1560 provide interfaces for coupling external input / output devices to apparatus 1500. For example, apparatus 1500 may provide an SQL command interface to a client. As shown, examples of input / output devices include a display 1590 coupled to video adapter 1540 and any combination of mouse / keyboard / printer 1570 coupled to I / O interface 1560. Other devices may be coupled to apparatus 1500 and additional or fewer interface cards may be utilized. For example, a serial interface card (not shown) may be used to provide a serial interface to a printer.

[0338] The device 1500 also includes one or more network interfaces 1550, including wired links such as Ethernet cables and / or wireless links for accessing nodes or one or more networks 1580. The network interface 1550 allows the device 1500 to communicate with remote units over the network 1580. For example, the network interface 1550 may provide communication to a database. In one embodiment, the device 1500 is coupled to a local or wide area network for data processing and communication with remote devices such as other processing units, the Internet, or remote storage facilities, etc.

[0339] A piecewise linear approximation is introduced to calculate the values ​​of the weighting coefficients required to predict pixels in a given block. The piecewise linear approximation, on the one hand, significantly reduces the computational complexity of the distance weighted prediction mechanism compared to the simple weighting coefficient calculation, and on the other hand, helps to achieve an improved accuracy of the weighting coefficient values ​​compared to the simplified ones of the prior art.

[0340] The embodiments may be applied to other bidirectional and position-dependent intra-prediction techniques (e.g., various modifications of PDPC) and mechanisms that blend different parts of a picture using weighting factors that depend on the distance from one pixel to another (e.g., some blending methods in image processing).

[0341] Implementations and operations of the subject matter described in this disclosure may be implemented in digital electronic circuitry, or computer software, firmware, or hardware, including the structures disclosed in this disclosure and their structural equivalents, or a combination of one or more of these. Implementations of the subject matter described in this disclosure may be implemented as one or more computer programs, i.e., as one or more modules of computer program instructions, encoded on a computer storage medium for execution by or control of the operation of a data processing apparatus. Alternatively or additionally, the program instructions may be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to a receiver apparatus suitable for execution by the data processing apparatus. The computer storage medium, e.g., a computer-readable medium, may be or be included in a computer-readable storage device, a computer-readable storage substrate, a random-access or serial-access memory array or device, or a combination of one or more of these. Additionally, although a computer storage medium is not a propagating signal, a computer storage medium may be the source or destination of computer program instructions encoded in an artificially generated propagating signal. A computer storage medium may be or be contained within one or more separate physical and / or non-transitory components or media (e.g., multiple CDs, disks, or other storage devices).

[0342] In some implementations, the operations described in this disclosure may be implemented as hosted services provided on a server of a cloud computing network. For example, computer-readable storage media may be logically grouped and accessible within a cloud computing network. A server in the cloud computing network may include a cloud computing platform for providing cloud-based services. The terms "cloud," "cloud computing," and "cloud-based" may be used interchangeably as appropriate without departing from the scope of this disclosure. A cloud-based service may be a hosted service provided by a server and sent over a network to a client platform to enhance, complement, or replace an application running locally on the client computer. With a cloud-based service, a circuit can quickly receive software upgrades, applications, and other resources that would otherwise take an extended period of time to be sent to the circuit.

[0343] A computer program (also known as a program, software, software application, script, or code) may be written in any type of programming language, including compiled or interpreted, declarative or procedural, and may be implemented in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may correspond to a file in a file system, but need not. A program may be stored in part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file specific to the program in question, or in multiple coordinated files (e.g., a file that stores one or more modules, subprograms, or portions of code). A computer program may be implemented to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.

[0344] The process flows and logic flows described in this disclosure may be performed by one or more programmable processors executing one or more computer programs to perform actions by processing input data and generating output. The process flows and logic flows may also be performed by an apparatus, which may be implemented as dedicated logic circuitry, for example, as an FPGA (field programmable gate array) or ASIC (application specific integrated circuit).

[0345] Processors suitable for executing a computer program include, by way of example, both general purpose and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor that performs actions according to instructions, and one or more memory devices that store instructions and data. Generally, a computer also includes one or more mass storage devices, e.g., magnetic disks, magneto-optical disks, or optical disks, that store data, or is operatively coupled to receive data from or transfer data to these mass storage devices, or both. However, a computer need not have such devices. Furthermore, a computer may be incorporated into another device, such as, for example, a mobile phone, a personal digital assistant (PDA), a mobile audio-video player, a game console, a global positioning system (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name a few. Devices suitable for storing computer program instructions and data include all types of non-volatile memory, media, and memory devices, including, by way of example, semiconductor memory devices (e.g., EPROM, EEPROM, and flash memory devices), magnetic disks (e.g., internal hard disks or removable disks), magneto-optical disks, and CD-ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, special purpose logic circuitry.

[0346] Although the present disclosure includes many specific implementation details, these details should not be construed as limitations on any implementation or the scope of what may be claimed, but rather as descriptions of features specific to a particular implementation. Certain features described in the present disclosure in the context of separate implementations may also be implemented in a single implementation in combination. Conversely, various features described in the context of a single implementation may also be implemented in multiple implementations separately or in any suitable subcombination. Furthermore, although features may be described above as operating in a certain combination and may initially be claimed as such, one or more features from a claimed combination may, in some cases, be deleted from the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination.

[0347] Similarly, although the figures depict operations in a particular order, this should not be understood as requiring that such operations be performed in the particular order or sequence depicted, or that all of the operations depicted be performed, to achieve desirable results. In certain situations, multitasking and parallel processing may be advantageous. Furthermore, the division of various system components in the implementations described above should not be understood as requiring such division in all implementations, and it should be understood that the program components and systems described may generally be integrated together in a single software product or packaged in multiple software products.

[0348] Thus, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims may be performed in a different order and still achieve desirable results. Additionally, the processes depicted in the accompanying figures do not necessarily require the particular order or sequence shown to achieve desirable results. Certain implementations may benefit from multitasking and parallel processing.

[0349] Although several embodiments are provided in this disclosure, it should be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of the disclosure. The examples should be considered as illustrative and not restrictive, and are not intended to limit the details given herein. For example, various elements or components may be combined or integrated into another system, or certain features may be omitted or not implemented.

[0350] Additionally, techniques, systems, subsystems, and methods described and shown in various embodiments as separate or independent may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other elements shown and described as coupled to each other, directly coupled to each other, or in communication with each other may be indirectly coupled or in communication through some interface, device, or intermediate component, whether electrical, mechanical, or otherwise. Other modifications, substitutions, and alterations will be ascertained by those skilled in the art and may be made therein without departing from the spirit and scope disclosed herein.

Claims

1. 1. A video encoding method, comprising: determining a list of most probable modes (MPMs) for a current block of an image, where if at least one condition is met, the list of MPMs includes a DC mode, an intra-prediction mode corresponding to a value of 50, an intra-prediction mode corresponding to a value of 18, an intra-prediction mode corresponding to a value of 46, and an intra-prediction mode corresponding to a value of 54; determining an intra-prediction mode for the current block; encoding an MPM flag into a video bitstream to indicate whether the intra prediction mode for the current block is in the list of MPMs; encoding an MPM index into the video bitstream to indicate the intra-prediction mode for the current block if the intra-prediction mode for the current block is in the list of MPMs, where a simplified unary binarization is used for signaling the MPM index; A method comprising:

2. The condition is The intra prediction mode of a block adjacent to the left side of the current block is a planar mode, and the intra prediction mode of a block adjacent to the upper side of the current block is the planar mode; the intra prediction mode of the left adjacent block of the current block is the planar mode, and the intra prediction mode of the upper adjacent block of the current block is a DC mode; the left neighboring block of the current block is unavailable, and the intra prediction mode of the upper neighboring block of the current block is the planar mode; the left adjacent block of the current block is unavailable and the top adjacent block of the current block is unavailable; or The intra prediction mode of the left adjacent block of the current block is the planar mode, and the upper adjacent block of the current block is unavailable. The method of claim 1 , comprising:

3. 1. A video decoding method, comprising: determining a list of most probable modes (MPMs) for a current block in a video bitstream, where if a condition is met, the list of MPMs includes a DC mode, an intra-prediction mode corresponding to a value of 50, an intra-prediction mode corresponding to a value of 18, an intra-prediction mode corresponding to a value of 46, and an intra-prediction mode corresponding to a value of 54; obtaining an MPM flag for the current block from the video bitstream, the MPM flag indicating whether an intra prediction mode for the current block is in the list of MPMs for the current block; obtaining an MPM index for the current block from the video bitstream if the MPM flag indicates that the intra prediction mode for the current block is in the list of MPMs for the current block, wherein a simplified unary binarization is used for signaling the MPM index; determining the intra prediction mode for the current block based on the MPM index and the list of MPMs for the current block; reconstructing the current block using reference samples determined based on the intra-prediction mode for the current block; A method comprising:

4. The condition is The intra prediction mode of a block adjacent to the left side of the current block is a planar mode, and the intra prediction mode of a block adjacent to the upper side of the current block is the planar mode; the intra prediction mode of the left adjacent block of the current block is the planar mode, and the intra prediction mode of the upper adjacent block of the current block is a DC mode; the left neighboring block of the current block is unavailable, and the intra prediction mode of the upper neighboring block of the current block is the planar mode; the left adjacent block of the current block is unavailable and the top adjacent block of the current block is unavailable; or The intra prediction mode of the left adjacent block of the current block is the planar mode, and the upper adjacent block of the current block is unavailable. The method of claim 3 , comprising:

5. An encoder comprising processing circuitry for carrying out the method according to claim 1 or 2.

6. A decoder comprising processing circuitry for carrying out the method according to claim 3 or 4.

7. A computer program comprising a program code for carrying out the method according to any one of claims 1 to 2 and 3 to 4.

8. A computer readable storage medium comprising instructions that, when executed by one or more processors, cause the one or more processors to perform the method of any one of claims 1-2 and 3-4.

9. A device comprising a storage medium and a communication interface, the storage medium configured to store a video bitstream, and the communication interface configured to receive or transmit the video bitstream; A device, comprising: a video bitstream having a Most Probable Mode (MPM) flag for a current block of video; an MPM index; the MPM flag indicating that an intra-prediction mode for the current block is in a list of MPMs; and the MPM index indicating where in the list of MPMs the intra-prediction mode for the current block is in; when a condition is met, the list of MPMs includes a DC mode, an intra-prediction mode corresponding to a value of 50, an intra-prediction mode corresponding to a value of 18, an intra-prediction mode corresponding to a value of 46, and an intra-prediction mode corresponding to a value of 54; and wherein simplified unary binarization is used for signaling the MPM index.

10. 1. A method for storing a video bitstream, comprising: receiving a video bitstream, the video bitstream having a Most Probable Mode (MPM) flag for a current block of a video, the video bitstream having an MPM index, the MPM flag indicating that an intra-prediction mode for the current block is in a list of MPMs, the MPM index indicating where in the list of MPMs the intra-prediction mode for the current block is, and when a condition is met, the list of MPMs includes a DC mode, an intra-prediction mode corresponding to a value of 50, an intra-prediction mode corresponding to a value of 18, an intra-prediction mode corresponding to a value of 46, and an intra-prediction mode corresponding to a value of 54, and a simplified unary binarization is used for signaling the MPM index; storing the video bitstream on a computer readable storage medium; A method comprising:

Citation Information

Patent Citations

  • Intra prediction and intra mode coding

    US20160373741A1

  • Neighbor based signaling of intra prediction modes

    US20170332084A1

  • Variable number of intra modes for video coding

    US20180098064A1

  • Image decoding apparatus, image encoding apparatus, image decoding method, and image encoding method

    WO2018037896A1

  • Video signal processing method and apparatus

    WO2019083284A1