Best Probability Mode for Intra Prediction in Video Coding

By constructing and utilizing primary and secondary most probable mode lists for intra-prediction, the inefficiencies in existing video coding techniques are addressed, resulting in enhanced coding efficiency.

JP7864708B2Active Publication Date: 2026-05-25QUALCOMM INC
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
QUALCOMM INC
Filing Date
2021-11-23
Publication Date
2026-05-25

AI Technical Summary

Technical Problem

Existing video coding techniques, such as those in MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 AVC, and ITU-T H.265/HEVC, face inefficiencies in intra-prediction mode determination, leading to suboptimal coding efficiency.

Method used

The technique involves constructing a total most probable mode list and deriving a primary and secondary most probable mode list for intra-prediction, using intra-prediction modes from adjacent blocks and offsets, to improve coding efficiency.

Benefits of technology

This approach enhances the efficiency of generating most probable mode lists, leading to improved coding efficiency in video data processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007864708000001
    Figure 0007864708000001
  • Figure 0007864708000002
    Figure 0007864708000002
  • Figure 0007864708000003
    Figure 0007864708000003
Patent Text Reader

Abstract

The video coder may code a block of video data using an intra-prediction mode determined from the most probable mode list. The video coder may build a total most probable mode list including N entries, where the N entries of the total most probable mode list are intra-prediction modes and the planar mode is the first entry in the total most probable mode list, build a first most probable mode list from the first Np entries in the total most probable mode list, where Np is less than N, and build a second most probable mode list from the remaining (N-Np) entries in the total most probable mode list. The video coder may then determine a current intra-prediction mode for a current block of video data using the first most probable mode list or the second most probable mode list.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application claims the priority of U.S. Application No. 17 / 456,080, filed on November 22, 2021, and U.S. Provisional Patent Application No. 63 / 131,115, filed on December 28, 2020, the entire contents of each of which are incorporated herein by reference. U.S. Application No. 17 / 456,080, filed on November 22, 2021, claims the benefit of U.S. Provisional Patent Application No. 63 / 131,115, filed on December 28, 2020.

[0002] This disclosure relates to video encoding and video decoding.

Background Art

[0003] Digital video capabilities can be incorporated into a wide range of devices including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video gaming devices, video game consoles, cellular or satellite radiotelephones, so-called "smartphones", video teleconferencing devices, video streaming devices, etc. Digital video devices implement video coding techniques such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, Advanced Video Coding (AVC), ITU-T H.265 / High Efficiency Video Coding (HEVC), and extensions to such standards. By implementing such video coding techniques, video devices can more efficiently transmit, receive, encode, decode, and / or store digital video information.

[0004] Video coding techniques include spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or eliminate redundancy inherent in video sequences. In block-based video coding, a video slice (e.g., a video picture or a portion of a video picture) may be divided into video blocks, which may also be called coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in an intra-coded (I) slice of a picture are coded using spatial predictions for reference samples in adjacent blocks within the same picture. Video blocks in an inter-coded (P or B) slice of a picture may use spatial predictions for reference samples in adjacent blocks within the same picture or temporal predictions for reference samples in other reference pictures. Pictures may be called frames, and reference pictures may be called reference frames. [Prior art documents] [Non-patent literature]

[0005] [Non-Patent Document 1] Bross et al., "Versatile Video Coding (Draft 10)," Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 18th Meeting: Remote Conference, June 22 - July 1, 2020, JVET-S2001-vA [Non-Patent Document 2] J. Chen, Y. Ye, and S.-H. Kim, "Algorithm description for Versatile Video Coding and Test Model 9 (VTM 9)", JVET-R2002, April 2020. [Non-Patent Document 3] A. Ramasubramonian et al., "CE3-3.1.1: Two MPM modes and shape dependency (Test 3.1.1)", Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 11th Meeting: Ljubljana, Slovenia, July 10-18, 2018. [Overview of the project] [Means for solving the problem]

[0006] Generally, this disclosure describes techniques for determining a list of most probable modes (MPMs) for intra-prediction and for determining intra-prediction modes from the most probable mode list. The techniques of this disclosure may improve coding efficiency when coding video data using intra-prediction. In detail, this disclosure describes techniques for constructing a total most probable mode list and then constructing a primary most probable mode list and a secondary most probable mode list from the total most probable mode list. The primary and secondary most probable mode lists may include intra-prediction modes from adjacent blocks, as well as intra-prediction modes offset from the intra-prediction modes of adjacent blocks. The techniques of this disclosure may improve the efficiency of generating the primary and secondary most probable mode lists.

[0007] For example, the method includes the steps of: constructing a total most probable mode list containing N entries, wherein the N entries in the total most probable mode list are intra-predictive modes and the first entry in the total most probable mode list is a planar mode; constructing a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; constructing a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determining the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and decoding the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0008] In another example, the device includes memory and one or more processors configured to: construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the first entry in the total most probable mode list is a planar mode; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and decode the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0009] In another example, the device includes means for constructing a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the planar mode is the first entry in the total most probable mode list; means for constructing a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; means for constructing a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; means for determining the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and means for decoding the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0010] In another example, a non-temporary computer-readable storage medium is encoded with instructions that, when executed, cause a programmable processor to construct a total most probable mode list containing N entries, wherein the N entries in the total most probable mode list are intra-predictive modes and the first entry in the total most probable mode list is the planar mode; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and decode the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0011] In another example, the device includes memory and one or more processors configured to: construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the first entry in the total most probable mode list is a planar mode; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and encode the current block of video data using the current intra-predictive mode to generate an encoded block of video data.

[0012] Details of one or more examples are described in the accompanying drawings and the following description. Other features, purposes, and advantages will become apparent from the description, drawings, and claims. [Brief explanation of the drawing]

[0013] [Figure 1] Block diagram shows an exemplary video encoding and decoding system capable of performing the techniques of this disclosure. [Figure 2] This is a conceptual diagram showing an example of adjacent blocks used to derive the most likely mode list. [Figure 3] This is a conceptual diagram showing another example of adjacent blocks used to derive the most likely mode list. [Figure 4A] This is a conceptual diagram illustrating an exemplary quad-binary tree (QTBT) structure. [Figure 4B] This is a conceptual diagram showing the corresponding coding tree unit (CTU). [Figure 5] A block diagram illustrating a video encoder capable of performing the techniques of this disclosure. [Figure 6]A block diagram illustrating an exemplary video decoder capable of performing the techniques of this disclosure. [Figure 7] This flowchart shows an exemplary method for encoding a current block using the technique of the present disclosure. [Figure 8] This flowchart shows an exemplary method for decrypting a current block using the technique of the present disclosure. [Figure 9] This flowchart shows another exemplary method for encoding a current block using the technique of the present disclosure. [Figure 10] This flowchart shows another exemplary method for decrypting a current block using the technique of the present disclosure. [Modes for carrying out the invention]

[0014] Universal Video Coding (VVC) was developed by the ITU-T and ISO / IEC Joint Video Experts Team (JVET) to achieve significantly greater compression capabilities than HEVC for a wide range of applications. The VVC specification was finalized in July 2020 and published by both ITU-T and ISO / IEC. The VVC specification specifies the standard bitstream and picture formats, high-level syntax (HLS) and coding unit-level syntax, as well as the parsing and decoding processes. VVC also specifies profile / tier / level (PTL) limits, bytestream format, virtual reference decoder, and supplemental enhancement information (SEI) in its accompanying documentation.

[0015] Generally, the present disclosure describes techniques for determining a most probable mode list for intra prediction and determining an intra prediction mode from the most probable mode list. The techniques of the present disclosure can improve the efficiency of generating a first most probable mode list and a second most probable mode list. For example, a video encoder and / or a video decoder may be configured to construct a total most probable mode list including N entries, where the N entries of the total most probable mode list are intra prediction modes, construct a first most probable mode list from the first Np entries in the total most probable mode list, where Np is less than N, construct a second most probable mode list from the remaining (N - Np) entries in the total most probable mode list, and determine an intra prediction mode for a current block of video data using the first most probable mode list or the second most probable mode list.

[0016] FIG. 1 is a block diagram showing an exemplary video encoding and decoding system 100 that may execute the techniques of the present disclosure. The techniques of the present disclosure generally are directed to coding (encoding and / or decoding) video data. Generally, video data includes any data for processing video. Thus, video data may include raw, unencoded video, encoded video, decoded (e.g., reconstructed) video, and video metadata such as signaling data.

[0017] As shown in FIG. 1, system 100 includes, in this example, a source device 102 that provides encoded video data to be decoded and displayed by a destination device 116. Specifically, source device 102 provides video data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, mobile devices, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, broadcast receiver devices, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication and thus may be referred to as wireless communication devices.

[0018] In the example of FIG. 1, source device 102 includes a video source 104, a memory 106, a video encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a video decoder 300, a memory 120, and a display device 118. According to the present disclosure, video encoder 200 of source device 102 and video decoder 300 of destination device 116 may be configured to apply techniques for deriving the most accurate mode list for intra prediction. Thus, source device 102 represents an example of a video encoding device and destination device 116 represents an example of a video decoding device. In other examples, source devices and destination devices may include other components or configurations. For example, source device 102 may receive video data from an external video source such as an external camera. Similarly, destination device 116 may interface with an external display device rather than including an integrated display device.

[0019] System 100, as shown in Figure 1, is merely an example. In general, any digital video coding and / or decoding device may perform techniques for deriving a most probable mode list for intra-prediction. Source device 102 and destination device 116 are merely examples of coding devices such that source device 102 generates coded video data for transmission to destination device 116. This disclosure refers to a device that performs coding (encoding and / or decoding) of data as a “coding” device. Thus, video encoder 200 and video decoder 300 represent examples of coding devices, specifically, video encoder and video decoder, respectively. In some examples, source device 102 and destination device 116 may operate in a substantially symmetrical manner such that each of source device 102 and destination device 116 includes video coding and decoding components. Thus, system 100 may support one-way or two-way video transmission between source device 102 and destination device 116 for, for example, video streaming, video playback, video broadcasting, or video telephony.

[0020] Generally, the video source 104 represents a source of video data (i.e., raw, unencoded video data) and provides the video encoder 200 with a sequence of pictures (also called "frames") of video data, which the video encoder 200 encodes the data for the pictures. The video source 104 of source device 102 may include video capture devices such as a video camera, a video archive containing previously captured raw video, and / or a video feed interface for receiving video from a video content provider. As a further alternative, the video source 104 may generate computer graphics-based data as source video, or a combination of live video, archived video, and computer-generated video. In each case, the video encoder 200 encodes the captured, pre-captured, or computer-generated video data. The video encoder 200 may rearrange the pictures from the order in which they were received (sometimes called the "display order") to a coding order for encoding. The video encoder 200 may generate a bitstream containing the encoded video data. The source device 102 may then output the encoded video data onto a computer-readable medium 110 via the output interface 108 for reception and / or retrieval by the input interface 122 of the destination device 116.

[0021] Memory 106 of source device 102 and memory 120 of destination device 116 represent general-purpose memory. In some examples, memories 106 and 120 may store raw video data, for example, raw video from video source 104 and raw decoded video data from video decoder 300. Additionally or alternatively, memories 106 and 120 may store, for example, software instructions executable by video encoder 200 and video decoder 300, respectively. Although memories 106 and 120 are shown separately from video encoder 200 and video decoder 300 in this example, it should be understood that video encoder 200 and video decoder 300 may also include internal memory for functionally similar or equivalent purposes. Furthermore, memories 106 and 120 may store encoded video data, for example, output from video encoder 200 and input to video decoder 300. In some examples, portions of memory 106, 120 may be allocated as one or more video buffers for storing, for example, raw, decoded, and / or encoded video data.

[0022] The computer-readable medium 110 may represent any type of medium or device capable of transporting encoded video data from the source device 102 to the destination device 116. For example, the computer-readable medium 110 may represent a communication medium that enables the source device 102 to directly transmit encoded video data to the destination device 116 in real time, for example, over a radio frequency network or a computer-based network. According to a communication standard such as a wireless communication protocol, the output interface 108 may modulate the transmission signal containing the encoded video data, and the input interface 122 may demodulate the received transmission signal. The communication medium may comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful to facilitate communication from the source device 102 to the destination device 116.

[0023] In some examples, the source device 102 may output encoded data to the storage device 112 via the output interface 108. Similarly, the destination device 116 may access the encoded data from the storage device 112 via the input interface 122. The storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, Blu-ray disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data.

[0024] In some examples, the source device 102 may output the encoded video data to a file server 114 or another intermediate storage device capable of storing the encoded video data generated by the source device 102. The destination device 116 may access the stored video data from the file server 114 via streaming or download.

[0025] The file server 114 may be any type of server device capable of storing encoded video data and transmitting that encoded video data to the destination device 116. The file server 114 may represent a web server (for example, for a website), a server configured to provide file transfer protocol services (such as the File Transfer Protocol (FTP) or File Delivery over Unidirectional Transport (FLUTE) protocol), a Content Delivery Network (CDN) device, a Hypertext Transfer Protocol (HTTP) server, a Multimedia Broadcast Multicast Service (MBMS) or Enhanced MBMS (eMBMS) server, and / or a Network Attached Storage (NAS) device. The file server 114 may, in addition or alternatively, implement one or more HTTP streaming protocols, such as Dynamic Adaptive Streaming over HTTP (DASH), HTTP Live Streaming (HLS), Real Time Streaming Protocol (RTSP), or HTTP Dynamic Streaming.

[0026] The destination device 116 may access the encoded video data from the file server 114 through any standard data connection, including an internet connection. This may include wireless channels (e.g., Wi-Fi connection), wired connections (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both suitable for accessing the encoded video data stored on the file server 114. The input interface 122 may be configured to operate according to one or more of the various protocols described above for retrieving or receiving media data from the file server 114, or other such protocols for retrieving media data.

[0027] The output interface 108 and input interface 122 may represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples where the output interface 108 and input interface 122 include wireless components, the output interface 108 and input interface 122 may be configured to transfer data such as encoded video data according to cellular communication standards such as 4G, 4G-LTE (Long Term Evolution), LTE Advanced, or 5G. In some examples where the output interface 108 includes a wireless transmitter, the output interface 108 and input interface 122 may be configured to transfer data such as encoded video data according to other wireless standards such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee®), or the Bluetooth® standard. In some examples, the source device 102 and / or destination device 116 may include their respective system-on-chip (SoC) devices. For example, source device 102 may include an SoC device for performing functions related to the video encoder 200 and / or output interface 108, and destination device 116 may include an SoC device for performing functions related to the video decoder 300 and / or input interface 122.

[0028] The techniques of this disclosure can be applied to video coding that supports any of a variety of multimedia applications, such as over-the-air television broadcasting, cable television transmission, satellite television transmission, internet streaming video transmission such as Dynamic Adaptive Streaming over HTTP (DASH), digital video encoded on a data storage medium, decoding of digital video stored on a data storage medium, or other applications.

[0029] The input interface 122 of the destination device 116 receives an encoded video bitstream from a computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded video bitstream may include signaling information defined by the video encoder 200 and also used by the video decoder 300, such as syntax elements having values ​​that describe the characteristics and / or processing of video blocks or other coded units (e.g., slices, pictures, picture groups, sequences, etc.). The display device 118 displays the decoded picture of the decoded video data to the user. The display device 118 may represent any of various display devices, such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or another type of display device.

[0030] Although not shown in Figure 1, in some examples the video encoder 200 and video decoder 300 may be integrated with an audio encoder and / or audio decoder, respectively, and may include a suitable MUX-DEMUX unit or other hardware and / or software to handle multiplexed streams containing both audio and video in a common data stream. Where applicable, the MUX-DEMUX unit may comply with the ITU H.223 Multiplexer Protocol or other protocols such as the User Datagram Protocol (UDP).

[0031] The video encoder 200 and video decoder 300 may each be implemented as one or more suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the technique is partially implemented in software, the device may store instructions for the software in a suitable non-temporary computer-readable medium and execute the instructions in hardware using one or more processors to perform the technique of this disclosure. Each of the video encoder 200 and video decoder 300 may be included in one or more encoders or decoders, any of which may be integrated as part of a composite encoder / decoder (CODEC) in their respective devices. A device including the video encoder 200 and / or video decoder 300 may include an integrated circuit, a microprocessor, and / or a wireless communication device such as a cellular telephone.

[0032] The video encoder 200 and video decoder 300 may operate in accordance with video coding standards such as ITU-T H.265, also known as High Efficiency Video Coding (HEVC), or its extensions such as the Multiview and / or Scalable Video Coding extension. Alternatively, the video encoder 200 and video decoder 300 may operate in accordance with other proprietary or industry standards, such as ITU-T H.266, also known as Versatile Video Coding (VVC). A draft of the VVC standard is described in Bross et al., "Versatile Video Coding (Draft 10)," ITU-T SG 16 WP 3 and the Joint Video Experts Team (JVET) of ISO / IEC JTC 1 / SC 29 / WG 11, 18th Meeting: Remote Meeting, June 22–July 1, 2020, JVET-S2001-vA (hereinafter referred to as "VVC Draft 10"). However, the techniques described herein are not limited to any specific coding standard.

[0033] Generally, the video encoder 200 and video decoder 300 can perform block-based coding of a picture. The term “block” generally refers to a structure containing data to be processed (e.g., encoded, decoded, or otherwise used in the encoding and / or decoding process). For example, a block may contain a two-dimensional matrix of samples of luminance and / or chrominance data. Generally, the video encoder 200 and video decoder 300 can code video data represented in YUV (e.g., Y, Cb, Cr) format. That is, rather than coding red, green, and blue (RGB) data for the samples of a picture, the video encoder 200 and video decoder 300 can code luminance and chrominance components, and the chrominance component may contain both red and blue chrominance components. In some examples, the video encoder 200 converts the received RGB-formatted data to a YUV representation prior to encoding, and the video decoder 300 converts the YUV representation to RGB format. Alternatively, pre-processing units and post-processing units (not shown) may perform these conversions.

[0034] This disclosure may refer to coding a picture (e.g., encoding and decoding) to include, in general, the process of encoding or decoding the data of a picture. Similarly, this disclosure may refer to coding a block of a picture (e.g., predictive and / or residual coding) to include the process of encoding or decoding the data for that block. An encoded video bitstream generally contains a set of values ​​for syntax elements representing coding decisions (e.g., coding modes) and divisions of the picture into blocks. Thus, references to coding a picture or a block should generally be understood as coding values ​​for the syntax elements that make up the picture or block.

[0035] HEVC defines various blocks, including coding units (CUs), prediction units (PUs), and transformation units (TUs). According to HEVC, a video coder (such as video encoder 200) divides coding tree units (CTUs) into CUs according to a quadtree structure. That is, the video coder divides the CTUs and CUs into four equal, non-overlapping squares, and each node in the quadtree has either zero or four child nodes. Nodes without child nodes are sometimes called "leaf nodes," and the CUs of such leaf nodes may contain one or more PUs and / or one or more TUs. The video coder may further divide the PUs and TUs. For example, in HEVC, a residual quadtree (RQT) represents a division of TUs. In HEVC, PUs represent intra-prediction data, and TUs represent residual data. Intra-predicted CUs contain intra-prediction information, such as intra-mode indications.

[0036] As another example, a video encoder 200 and a video decoder 300 may be configured to operate according to VVC. According to VVC, a video coder (such as the video encoder 200) divides a picture into multiple coding tree units (CTUs). The video encoder 200 may divide the CTUs according to a tree structure such as a quad-binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure eliminates the concept of multiple division types, such as the distinction between CU, PU, ​​and TU in HEVC. The QTBT structure includes two levels: a first level divided according to quad-tree divisions and a second level divided according to binary tree divisions. The root node of the QTBT structure corresponds to a CTU. The leaf nodes of the binary tree correspond to coding units (CUs).

[0037] In an MTT partitioned structure, blocks can be partitioned using quadru-tree (QT) partitions, binary-tree (BT) partitions, and one or more types of triple-tree (TT) partitions (also called ternary-tree (TT) partitions). A triple-tree or ternary-tree partition is a partition in which a block is divided into three subblocks. In some examples, a triple-tree or ternary-tree partition divides a block into three subblocks without dividing the original block through a center. The partition types in MTT (e.g., QT, BT, and TT) can be symmetric or asymmetric.

[0038] In some examples, the video encoder 200 and video decoder 300 may use a single QTBT or MTT structure to represent each of the luminance and chrominance components, while in other examples, the video encoder 200 and video decoder 300 may use two or more QTBT or MTT structures, such as one QTBT / MTT structure for the luminance component and another QTBT / MTT structure for both chrominance components (or two QTBT / MTT structures for each chrominance component).

[0039] The video encoder 200 and video decoder 300 may be configured to use a quadtree partition, QTBT partition, MTT partition, or other partitioning structure per HEVC. For illustrative purposes, the description of the technique in this disclosure is presented in relation to the QTBT partition. However, it should be understood that the technique in this disclosure may also be applicable to video coders configured to use a quadtree partition or other types of partitions.

[0040] In some examples, a CTU includes a coding tree block (CTB) of lumane samples, two corresponding CTBs of chroma samples for a picture with three sample arrays, or a CTB of samples for a picture coded using three separate color planes and syntax structures used to code a monochrome picture or sample. A CTB can be an N×N block of samples for some value N, such that the division of components into the CTB is a partition. Components are an array or a single sample from one of three arrays (lumane and two chroma) that create a picture in a 4:2:0, 4:2:2, or 4:4:4 color format, or an array or a single sample from an array that creates a picture in a monochrome format. In some examples, a coding block is an M×N block of samples for some values ​​M and N, such that the division of the CTB into the coding block is a partition.

[0041] Blocks (e.g., CTUs or CUs) can be grouped in various ways within a picture. For example, a brick may refer to a rectangular area of ​​a row of CTUs within a particular tile in a picture. A tile can be a rectangular area of ​​CTUs within a particular tile column or row in a picture. A tile column refers to a rectangular area of ​​CTUs with a height equal to the height of the picture and a width specified by a syntax element (e.g., in a picture parameter set). A tile row refers to a rectangular area of ​​CTUs with a height specified by a syntax element (e.g., in a picture parameter set) and a width equal to the width of the picture.

[0042] In some examples, a tile may be divided into multiple bricks, each brick containing one or more CTU rows within the tile. A tile that is not divided into multiple bricks may also be called a brick. However, a brick that is a true subset of a tile may not be called a tile.

[0043] Bricks within a picture can also be arranged in slices. A slice can be an integer number of bricks in a picture that can exclusively be contained within a single Network Abstraction Layer (NAL) unit. In some examples, a slice may contain either a certain number of complete tiles or only a continuous sequence of complete bricks of a single tile.

[0044] This disclosure may interchangeably use "N×N" and "N by N," e.g., 16×16 samples or 16 by 16 samples, to refer to the sample dimension of a block (such as a CU or other video block) in terms of vertical and horizontal dimensions. Generally, a 16×16 CU has 16 samples vertically (y=16) and 16 samples horizontally (x=16). Similarly, an N×N CU generally has N samples vertically and N samples horizontally, where N represents a non-negative integer. The samples in a CU can be arranged in rows and columns. Furthermore, a CU does not necessarily have to have the same number of samples horizontally as vertically. For example, a CU may have N×M samples, where M is not necessarily equal to N.

[0045] The video encoder 200 encodes video data for CUs that represent prediction and / or residual information, as well as other information. The prediction information indicates how the CUs will be predicted to form prediction blocks for the CUs. The residual information generally represents the sample-by-sample difference between the samples of the CUs prior to encoding and the samples of the prediction blocks.

[0046] To predict a CU, the video encoder 200 can generally form prediction blocks for the CU through inter-prediction or intra-prediction. Inter-prediction generally refers to predicting the CU from data of a previously coded picture, while intra-prediction generally refers to predicting the CU from previously coded data of the same picture. To perform inter-prediction, the video encoder 200 can generate prediction blocks using one or more motion vectors. The video encoder 200 can generally perform motion search to identify a reference block that exactly matches the CU with respect to the difference between the CU and the reference block. The video encoder 200 can compute a difference metric using absolute difference sum (SAD), squared difference sum (SSD), mean absolute difference (MAD), mean squared difference (MSD), or other such difference calculations to determine whether the reference block exactly matches the current CU. In some examples, the video encoder 200 can predict the current CU using unidirectional or bidirectional prediction.

[0047] Some examples of VVC also offer an affine motion compensation mode, which can be considered an interpredictive mode. In affine motion compensation mode, the video encoder 200 may determine two or more motion vectors representing non-translational motion, such as zooming in or out, rotation, perspective motion, or other irregular motion types.

[0048] To perform intra-prediction, the video encoder 200 may select an intra-prediction mode to generate a prediction block. Several examples of VVCs provide 67 intra-prediction modes, including various directional modes, as well as planar and DC modes. Generally, the video encoder 200 selects an intra-prediction mode that describes adjacent samples to the current block (e.g., a block of CUs) from which to predict a sample of the current block. Such samples could generally be above, above and to the left of, or to the left of, the current block in the same picture as the current block, assuming that the video encoder 200 codes the CTUs and CUs in raster scan order (left to right, top to bottom).

[0049] The video encoder 200 encodes data representing the prediction mode for the current block. For example, in interprediction mode, the video encoder 200 may encode data representing which of the various available interprediction modes is used, as well as motion information about the corresponding mode. In the case of unidirectional or bidirectional interprediction, for example, the video encoder 200 may encode the motion vectors using advanced motion vector prediction (AMVP) or merge mode. The video encoder 200 may use similar modes to encode the motion vectors for affine motion compensation mode.

[0050] Following predictions such as intra-prediction or inter-prediction of a block, the video encoder 200 may compute residual data for the block. Residual data, such as a residual block, represents the sample-by-sample difference between the block and the predicted block for that block formed using the corresponding prediction mode. The video encoder 200 may apply one or more transformations to the residual block to generate transformation data in the transformation domain rather than the sample domain. For example, the video encoder 200 may apply a discrete cosine transform (DCT), integer transform, wavelet transform, or a conceptually similar transform to the residual video data. In addition, the video encoder 200 may apply a second-order transform such as a mode-dependent non-separable secondary transform (MDNSST), signal-dependent transform, or Karhunen-Loeve transform (KLT) following the first transformation. Following the application of one or more transformations, the video encoder 200 generates transformation coefficients.

[0051] As described above, following any transformation to generate the transformation coefficients, the video encoder 200 may perform quantization of the transformation coefficients. Quantization generally refers to the process of quantizing the transformation coefficients to reduce the amount of data used to represent them as much as possible, thereby achieving further compression. By performing the quantization process, the video encoder 200 may reduce the bit depth associated with some or all of the transformation coefficients. For example, the video encoder 200 may truncate an n-bit value to an m-bit value during quantization, where n is greater than m. In some examples, to perform quantization, the video encoder 200 may perform a bitwise right shift of the value to be quantized.

[0052] Following quantization, the video encoder 200 may scan the transformation coefficients and generate a one-dimensional vector from a two-dimensional matrix containing the quantized transformation coefficients. The scan may be designed to place higher-energy (and therefore lower-frequency) transformation coefficients at the beginning of the vector and lower-energy (and therefore higher-frequency) transformation coefficients at the end. In some examples, the video encoder 200 may utilize a predefined scan order for scanning the quantized transformation coefficients to generate a serialized vector and then entropy-encode the quantized transformation coefficients of the vector. In other examples, the video encoder 200 may perform an adaptive scan. After scanning the quantized transformation coefficients to form a one-dimensional vector, the video encoder 200 may entropy-encode the one-dimensional vector, for example, according to context-adaptive binary arithmetic coding (CABAC). The video encoder 200 may also entropy-encode values ​​for syntax elements that describe metadata associated with the encoded video data for use by the video decoder 300 when decoding the video data.

[0053] To perform CABAC, the video encoder 200 may assign a context within a context model to the symbols to be transmitted. The context may relate, for example, to whether the symbol's adjacency values ​​are zero-valued. Probability decisions may be based on the context assigned to the symbols.

[0054] The video encoder 200 may further generate syntax data for the video decoder 300, such as block-based syntax data, picture-based syntax data, and sequence-based syntax data, in other syntax data such as a picture header, block header, slice header, or sequence parameter set (SPS), picture parameter set (PPS), or video parameter set (VPS). The video decoder 300 may similarly decode such syntax data to determine how to decode the corresponding video data.

[0055] Thus, the video encoder 200 can generate a bitstream containing encoded video data, for example, a bitstream containing syntax elements that describe the division of a picture into blocks (e.g., CUs) and predictive and / or residual information about the blocks. Finally, the video decoder 300 can receive the bitstream and decode the encoded video data.

[0056] Generally, the video decoder 300 decodes the encoded video data of the bitstream by performing a process that is the reverse of the process performed by the video encoder 200. For example, the video decoder 300 may decode values ​​for syntax elements of the bitstream using CABAC in a substantially similar, but reverse, manner to the CABAC encoding process of the video encoder 200. The syntax elements may define the CUs of the CTUs by defining partitioning information for the partitioning of the picture into CTUs, and the partition of each CTU according to a corresponding partitioning structure such as a QTBT structure. The syntax elements may further define prediction and residual information for blocks of video data (e.g., CUs).

[0057] Residual information may be represented, for example, by quantized transformation coefficients. The video decoder 300 may dequantize and inverse transform the quantized transformation coefficients of a block in order to reconstruct the residual block for the block. The video decoder 300 uses a signaled prediction mode (intra-prediction or inter-prediction) and associated prediction information (for example, motion information about inter-prediction) to form a prediction block for the block. The video decoder 300 may then synthesize the prediction block and the residual block (sample by sample) to reconstruct the original block. The video decoder 300 may perform additional processing, such as performing a deblocking process to reduce visual artifacts along the block boundaries.

[0058] This disclosure may generally refer to “signaling” certain information, such as syntax elements. The term “signaling” may generally refer to the communication of values ​​for syntax elements and / or other data used to decode the encoded video data. That is, the video encoder 200 may signal values ​​for syntax elements in the bitstream. In general, signaling refers to generating values ​​in the bitstream. As described above, the source device 102 may transport the bitstream to the destination device 116 in substantially real time, or not in real time, such as when storing the syntax elements in the storage device 112 for later retrieval by the destination device 116.

[0059] According to the techniques of the present disclosure, as will be described in more detail below, the video encoder 200 and video decoder 300 may be configured to: construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the planar mode is the first entry in the total most probable mode list; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and decode the current block of video data using the current intra-predictive mode.

[0060] Exemplary intra-coding modes include DC modes, planar modes, and multiple directional modes (e.g., non-planar modes). In VVC, J. Chen, Y. Ye, and S.-H. Kim, "Algorithm description for Versatile Video Coding and Test Model 9 (VTM 9)," JVET-R2002, April 2020, 65 directional modes are used for intra-prediction of blocks. To code intra-mode values, the video encoder 200 and video decoder 300 may be configured to derive a most probable mode (MPM) list. If the intra-mode used to code a particular CU is a mode in the MPM list, the video encoder 200 may signal only the index of the determined intra-mode in the MPM list. Otherwise, the video encoder 200 may signal the mode value using bypass coding (e.g., entropy coding with a fixed probability model).

[0061] In VVC, the MPM list has six entries. The first entry in the MPM list is the planar mode. The remaining entries in the MPM list consist of the intra-modes of the left (L) and top (A) adjacent blocks of the CU400 (see Figure 2), the intra-modes derived from the directional intra-modes of the adjacent blocks, and the default intra-mode. For the remainder of this disclosure, this MPM list is referred to as the primary MPM list.

[0062] In "CE3-3.1.1: Two MPM modes and shape dependency (Test 3.1.1)," presented by A. Ramasubramonian et al. at the 11th meeting of the Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, Ljubljana, Slovenia, July 10-18, 2018 (hereinafter referred to as "JVET-K0081"), two MPM lists were proposed. One MPM list is a primary MPM (PMPM) list with 6 entries, and the other MPM list is a secondary MPM (SMPM) list with 16 entries. The entries in the PMPM list are derived using the intra-modes of the left (L), top (A), bottom left (BL), top right (AR), and top left (AL) adjacent blocks of CU402, as shown in Figure 3. The SMPM list is generated from modes that are close to the directional modes included in the PMPM list (for example, modes with similar angle or index values).

[0063] For example, if the first entry in the PMPM list is intramode 12 with a maximum offset of 4, then intramodes 11, 10, 9, 8, 13, 14, 15, and 16 are each added to the SMPM list, provided that such intramodes are not already included in the two MPM lists. In other words, all modes with an index of plus or minus 4 from intramode index 12 are added to the list unless such modes are duplicates of modes already in the list.

[0064] The maximum offset used for the six primary MPMs in JVET-K0081 is {4, 3, 3, 2, 2, 1}. If 16 entries from the SMPM list are not populated by this process, the remaining entries are populated from the default list in intra-mode. The video encoder may signal a syntax element indicating whether the intra-prediction mode of a block is from the PMPM list or the SMPM list.

[0065] This disclosure describes different techniques for improving the construction of an MPM list, which consists of a PMPM list and an SMPM list. More specifically, this disclosure describes techniques for constructing a total most probable mode list, and then constructing a primary most probable mode list and a secondary most probable mode list from the total most probable mode list. The primary and secondary most probable mode lists may include intra-predicted modes from adjacent blocks, as well as intra-predicted modes offset from the intra-predicted modes of adjacent blocks.

[0066] Total MPM list construction

[0067] First, a total MPM (GMPM) list may be defined with N entries, where the i-th entry of the GMPM list is denoted as GMPM[i]. The first entry in this GMPM list is the planar mode; that is, index 0 in the GMPM list (e.g., GMPM[0]) represents the planar intra-mode. For example, as shown in Figure 3, the intra-modes of the left (L), top (A), bottom-left (BL), top-right (AR), and top-left (AL) adjacent blocks of the block currently being coded may be denoted as MPM(L), MPM(A), MPM(BL), MPM(AR), and MPM(AL), respectively.

[0068] The video encoder 200 and video decoder 300 are configured to build a GMPM list by adding intra-mode MPM(L), MPM(A), MPM(BL), MPM(AR), and MPM(AL) to the GMPM list if MPM(j) is available and not already included in the GMPM list. Intra-mode MPM(j) is available if the adjacent block j has an associated intra-prediction mode. For example, an adjacent block may have an associated intra-prediction mode if the adjacent block is coded using intra-prediction. In other examples, an adjacent block may have an associated intra-prediction mode even if it is not coded using intra-prediction.

[0069] The video encoder 200 and video decoder 300 can derive the remaining entries in the GMPM list by offsetting the first Na available directional intra modes among the MPM(L), MPM(A), MPM(BL), MPM(AR), and MPM(AL) intra-predictive modes, where Na is a number less than the number of left (L), top (A), bottom left (BL), top right (AR), and top left (AL) adjacent blocks. For example, Na may be less than 5.

[0070] Among the MPM(L), MPM(A), MPM(BL), MPM(AR), and MPM(AL) included in the GMPM list, the intra-mode is represented as GMPM[p]=MPM(j), where 1≦p≦Nb, Nb is less than or equal to 5, and j is one of L, A, BL, AR, and AL. If p is less than a predefined value q, the maximum offset is set to M1; otherwise, the maximum offset is set to M2. If N entries in the GMPM list are not populated by the proposed process, the remaining entries are populated from the default list. The first Np entries in the GMPM list are set as the PMPM list, and the remaining (N-Np) entries in the GMPM list are set as the SMPM list.

[0071] For example, if the first entry in the PMPM list is intramode 12 and the maximum offset is 4, then intramodes 11, 10, 9, 8, 13, 14, 15, and 16 are each added to the SMPM list, provided that such intramodes are not already included in the two MPM lists. In other words, all modes with an index of plus or minus 4 from intramode index 12 are added to the list unless such modes are duplicates of modes already in the list. In another example, if the first entry in the PMPM list is intramode 12 and the maximum offset is 3, then intramodes 11, 10, 9, 13, 14, and 15 are each added to the SMPM list, provided that such intramodes are not already included in the two MPM lists. In other words, all modes with an index of plus or minus 3 from intramode index 12 are added to the list, provided that such modes are not duplicates of modes already in the list.

[0072] In one example, N=22, Np=6, Na=2, q=3, M1=4, and M2=3. In this example, the GMPM list has a size of 22 entries, with the first 6 entries being the PMPM list and the last 16 entries being the SMPM list. The first two available directional intra-modes in MPM(L), MPM(A), MPM(BL), MPM(AR), and MPM(AL) are offset to derive the directional intra-modes near those two available directional intra-modes. In this context, "nearby" means an index of plus M1 or M2 or minus M1 or M2 from the index of the available directional intra-modes. If GMPM

[0001] and GMPM

[0002] are non-DC modes, the maximum offset is 4 for GMPM

[0001] and GMPM

[0002] . If GMPM

[0001] is in DC mode and GMPM

[0002] and GMPM

[0003] are in non-DC mode, the maximum offset is 4 for GMPM

[0002] and 3 for GMPM

[0003] . For example, if GMPM

[0001] =20 and GMPM

[0003] =40, modes 16, 17, 18, 19, 21, 22, 23, and 24 offset from GMPM

[0001] , and modes 37, 38, 39, 41, 42, and 43 offset from GMPM

[0003] are added to the GMPM list.

[0073] MPM Index Coding

[0074] In one example for VVC, the video decoder 300 may be configured to first decode and parse a planar flag to determine whether the intra-mode of the CU is the first entry in the PMPM list. If the planar flag does not indicate a planar mode, the video decoder 300 may be configured to decode and parse an index value (e.g., a syntax element indicating the index value) to determine which entry in the PMPM list is selected. Note that the parsed index values ​​0, 1, 2, 3, and 4 correspond to the first, second, third, fourth, and fifth entries in the PMPM list, respectively, and the parsed bins for index values ​​0, 1, 2, 3, and 4 are 0, 10, 110, 1110, and 1111, respectively.

[0075] New coding tools, referred to as Intra Sub-Partition (ISP) mode and Multiple Reference Line (MRL) mode, are incorporated into the VVC. ISP mode and normal intra mode share the same PMPM list. MRL mode applies to intra mode in the PMPM list, except for the first entry, i.e., planar mode. Since normal intra mode, ISP mode, and MRL mode all share the same non-planar PMPM entry, i.e., the first, second, third, fourth, and fifth entries of the PMPM list, context coding conditioned on a selected mode from normal intra mode, ISP mode, and MRL mode will improve coding efficiency when signaling the PMPM index. Accordingly, according to the techniques of this disclosure, the video encoder 200 and video decoder 300 may be configured to use three context models to code the first bin of the non-planar PMPM index as follows: (ISP mode): Use context index 0 to code the first bin of the non-planar PMPM index. Otherwise, in (MRL mode): Use context index 1 to code the first bin of the non-planar PMPM index. Otherwise (normal intra mode): Use context index 2 to code the first bin of the non-planar PMPM index.

[0076] When using the techniques of this disclosure, the order of if-else statements can be changed to other combinations. One example is as follows: (In MRL mode): Use context index 0 to code the first bin of the non-planar PMPM index. Otherwise, in (ISP mode): Use context index 1 to code the first bin of the non-planar PMPM index. Otherwise (normal intra mode): Use context index 2 to code the first bin of the non-planar PMPM index.

[0077] (Examples) As described above, two MPM lists may be used: one a primary MPM (PMPM) list with 6 entries, and another a secondary MPM (SMPM) list with 16 entries. According to the technique of this disclosure, the video encoder 200 and video decoder 300 can construct a total MPM list with 22 entries, the first 6 entries of this total MPM list being placed in the PMPM list, and the remaining 22 entries being placed in the SMPM list. The first entry in the total MPM list (e.g., the ordinal first entry) is the planar mode. The remaining entries consist of intra-modes for left (L), top (A), bottom left (BL), top right (AR), and top left (AL) adjacent blocks, as shown in Figure 3, directional modes offset from the first two available directional modes of adjacent blocks, and a default mode. If the CU block is rectangular and oriented vertically, i.e., when the height is greater than the width, the order of adjacent blocks checked for the available intra-prediction modes is A, L, BL, AR, AL. Otherwise, the order is L, A, BL, AR, AL.

[0078] The maximum offset for an adjacent block's directional mode depends on the entry point of that directional mode in the total MPM list. If the available directional mode for an adjacent block is in either the second or third entry (note that the first entry is the planar mode), the maximum offset is set to 4; otherwise, the maximum offset is set to 3. For example, the i-th entry in the total MPM list is denoted as GMPM[i]. GMPM

[0000] = planar mode. If GMPM

[0001] is DC mode and GMPM

[0002] and GMPM

[0003] are directional modes, the maximum offset is 4 for GMPM

[0002] and 3 for GMPM

[0003] . Assume GMPM

[0002] = 20 and GMPM

[0003] = 40. In that case, 16, 17, 18, 19, 21, 22, 23, and 24 offset from GMPM

[0002] , and 37, 38, 39, 41, 42, and 43 offset from GMPM

[0003] are added to the GMPM list.

[0079] The video decoder 300 may first decode and parse the planar flag to determine whether the intra-mode of the CU is the first entry in the PMPM list. If the planar flag does not indicate that the planar mode should be used, the video decoder 300 decodes and parses the index values ​​of the non-planar modes in the PMPM list to determine which entry in the PMPM list is selected. Note that the parsed index values ​​0, 1, 2, 3, and 4 of the non-planar modes correspond to the first, second, third, fourth, and fifth entries in the PMPM list, and the parsed bins for index values ​​0, 1, 2, 3, and 4 are 0, 10, 110, 1110, and 1111, respectively. The video encoder 200 and video decoder 300 may be configured to use three context models to code the first bin of the index of the non-planar mode in the PMPM list as follows: (ISP) case: Code the first bin using context index 0. Otherwise, in the case of (MRL): Code the first bin using context index 1. Otherwise (usually intranet): Code the first bin using context index 2.

[0080] In summary, in one example of the present disclosure, the video decoder 300 may be configured to decode the current block of video data using intra-prediction. The video decoder 300 may be configured to construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-prediction modes and the planar mode is the first entry in the total most probable mode list. The video decoder 300 may further construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N, and construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list. The video decoder 300 may then use the primary or secondary most probable mode list to determine the current intra-prediction mode for the current block of video data, and decode the current block of video data using the current intra-prediction mode to generate a decoded block of video data. In one example, N is 22 and Np is 6.

[0081] In one example, to determine the current intra-prediction mode, the video decoder 300 may be further configured to decode an index to a primary or secondary most probable mode list, wherein the index indicates a non-planar intra-prediction mode within the primary or secondary most probable mode list. Based on the index, the video decoder 300 may determine the current intra-prediction mode for the current block of video data.

[0082] In a further example, to decode an index into a first-order most likely mode list or a second-order most likely mode list, the video decoder 300 may further determine a context for entropy decoding the first bin of the index based on the coding tool currently used for the block, and then entropy decode the first bin of the index using the context. In one example, the coding tool is typically one of the following: intra-predictive mode, intra-subpartition mode, or multiple reference line mode.

[0083] In another example of this disclosure, to construct a total most probable mode list, the video decoder 300 may be configured to add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, and to add a number of intra-prediction modes offset from each intra-prediction mode from each adjacent block to the total most probable mode list. In one example, the video decoder 300 may add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list based on the fact that each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0084] In other examples, to determine the current intra-predictive mode for the current block of video data using a primary or secondary most likely mode list, the video decoder 300 may be configured to decode a syntax element indicating the current most likely mode list from either the primary or secondary most likely mode list, decode an index to the current most likely mode list, and determine the current intra-predictive mode from the index to the current most likely mode list.

[0085] Conversely, the video encoder 200 is also configured to encode the current block of video data using intra-prediction. The video encoder 200 may be configured to construct a total most probable mode list containing N entries, wherein the N entries in the total most probable mode list are intra-prediction modes and the planar mode is the first entry in the total most probable mode list. The video encoder 200 may further construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N, and construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list. The video encoder 200 may further determine the current intra-prediction mode for the current block of video data using the primary or secondary most probable mode list, and encode the current block of video data using the current intra-prediction mode to generate an encoded block of video data. In one example, N is 22 and Np is 6.

[0086] In one example of the present disclosure, the video encoder 200 may be configured to encode an index to a primary most likely mode list or a secondary most likely mode list, wherein the index indicates a non-planar intra-predictive mode within the primary or secondary most likely mode list.

[0087] In another example of the present disclosure, to encode an index to a first-order most likely mode list or a second-order most likely mode list, the video encoder 200 may be configured to determine a context for entropy coding a first bin of the index based on the coding tool currently used for the block, and to entropy code the first bin of the index using the context. In one example, the coding tool is typically one of intra-predictive mode, intra-subpartition mode, or multiple reference line mode.

[0088] In another example, to construct a total most probable mode list, the video encoder 200 is further configured to add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, and to add multiple intra-prediction modes offset from each intra-prediction mode from each adjacent block to the total most probable mode list. The video encoder 200 may add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list based on whether each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0089] Figures 4A and 4B are conceptual diagrams showing an exemplary quadtree-binary (QTBT) structure 130 and its corresponding coding tree unit (CTU) 132. Solid lines represent quadtree partitions, and dotted lines represent binary tree partitions. At each partition (i.e., non-leaf) node of the binary tree, one flag is signaled to indicate which partition type (i.e., horizontal or vertical) is used, where in this example, 0 indicates a horizontal partition and 1 indicates a vertical partition. In the case of a quadtree partition, there is no need to indicate the partition type, as the quadtree node divides the block horizontally and vertically into four subblocks of equal size. Thus, the video encoder 200 can encode syntax elements (such as partition information) for the domain tree level (i.e., solid lines) of the QTBT structure 130 and syntax elements (such as partition information) for the prediction tree level (i.e., dashed lines) of the QTBT structure 130, and the video decoder 300 can decode those syntax elements. The video encoder 200 can encode video data such as prediction data and transformation data for CUs represented by terminal leaf nodes of the QTBT structure 130, and the video decoder 300 can decode that video data.

[0090] In general, the CTU132 in Figure 4B can be associated with parameters that define the size of the blocks corresponding to the nodes of the QTBT structure 130 at the first and second levels. These parameters may include the CTU size (representing the size of the CTU132 in the sample), the minimum quadtree size (MinQTSize, representing the minimum allowed quadtree leaf node size), the maximum binary tree size (MaxBTSize, representing the maximum allowed binary tree root node size), the maximum binary tree depth (MaxBTDepth, representing the maximum allowed binary tree depth), and the minimum binary tree size (MinBTSize, representing the minimum allowed binary tree leaf node size).

[0091] The root node of a QTBT structure corresponding to a CTU may have four child nodes at the first level of the QTBT structure, each of which may be subdivided according to a quadruple tree partition. That is, a node at the first level is either a leaf node (without child nodes) or has four child nodes. An example of QTBT structure 130 represents a node that includes a parent node and child nodes with solid lines for branching. If the nodes at the first level are not larger than the maximum allowable binary tree root node size (MaxBTSize), these nodes may be further subdivided by their respective binary trees. Binary tree partitioning of a single node may be repeated until the resulting nodes reach the minimum allowable binary tree leaf node size (MinBTSize) or the maximum allowable binary tree depth (MaxBTDepth). An example of QTBT structure 130 represents a node that has dashed lines for branching. A leaf node in a binary tree is called a coding unit (CU), and without further distinction, coding units (CUs) are used for prediction (e.g., intra-picture prediction or inter-picture prediction) and transformation. As described above, CUs are sometimes also called "video blocks" or "blocks".

[0092] In one example of a QTBT partition structure, the CTU size is set to 128×128 (a chroma sample and two corresponding 64×64 chroma samples), MinQTSize is set to 16×16, MaxBTSize is set to 64×64, MinBTSize (for both width and height) is set to 4, and MaxBTDepth is set to 4. To generate a quadtree leaf node, the quadtree partition is first applied to the CTU. The quadtree leaf node can have sizes ranging from 16×16 (i.e., MinQTSize) to 128×128 (i.e., CTU size). If the quadtree leaf node is 128×128, the size exceeds MaxBTSize (i.e., 64×64 in this example), so the leaf quadtree node is not further partitioned by a binary tree. Otherwise, the quadtree leaf node is further partitioned by a binary tree. Therefore, a quad tree leaf node is also the root node of a binary tree and has a binary tree depth of 0. When the binary tree depth reaches MaxBTDepth (4 in this example), no further partitioning is allowed. A binary tree node with a width equal to MinBTSize (4 in this example) suggests that no further vertical partitioning (i.e., partitioning by width) is allowed for that binary tree node. Similarly, a binary tree node with a height equal to MinBTSize suggests that no further horizontal partitioning (i.e., partitioning by height) is allowed for that binary tree node. As mentioned above, a leaf node of a binary tree is called a CU and is further processed according to prediction and transformation without further partitioning.

[0093] Figure 5 is a block diagram showing an exemplary video encoder 200 capable of performing the techniques of this disclosure. Figure 5 is provided for illustrative purposes and should not be considered a limitation of the techniques more broadly illustrated and described herein. For illustrative purposes, this disclosure describes a video encoder 200 using the techniques of VVC (ITU-T H.266 in development) and HEVC (ITU-T H.265). However, the techniques of this disclosure may be performed by video encoding devices configured according to other video coding standards.

[0094] In the example shown in Figure 5, the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual generation unit 204, a conversion processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse conversion processing unit 212, a reconstruction unit 214, a filter unit 216, a decoded picture buffer (DPB) 218, and an entropy coding unit 220. Any or all of the video data memory 230, mode selection unit 202, residual generation unit 204, conversion processing unit 206, quantization unit 208, inverse quantization unit 210, inverse conversion processing unit 212, reconstruction unit 214, filter unit 216, DPB 218, and entropy coding unit 220 may be implemented in one or more processors or processing circuits. For example, the units of the video encoder 200 may be implemented as one or more circuits or logic elements as part of a hardware circuit, or as part of a processor, ASIC, or FPGA. Furthermore, the video encoder 200 may include additional or alternative processors or processing circuits to perform these and other functions.

[0095] The video data memory 230 can store video data to be encoded by the components of the video encoder 200. The video encoder 200 can receive video data stored in the video data memory 230 from, for example, a video source 104 (Figure 1). The DPB 218 can act as a reference picture memory that stores reference video data for use in predicting subsequent video data by the video encoder 200. The video data memory 230 and DPB 218 can be formed by any of various memory devices, such as dynamic random access memory (DRAM) including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The video data memory 230 and DPB 218 can be provided by the same memory device or separate memory devices. In various examples, the video data memory 230 may be on-chip with the other components of the video encoder 200, as shown in the figure, or it may be off-chip relative to those components.

[0096] In this disclosure, references to video data memory 230 should not be interpreted as being limited to memory inside the video encoder 200, or memory outside the video encoder 200, unless otherwise specifically described. Rather, references to video data memory 230 should be understood as reference memory that stores video data received by the video encoder 200 for encoding (e.g., video data for the current block to be encoded). Memory 106 in Figure 1 may also provide temporary storage for outputs from various units of the video encoder 200.

[0097] The various units in Figure 5 are illustrated to help understand the operations performed by the video encoder 200. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide a specific function and are preset for the operations they may perform. Programmable circuits refer to circuits that can be programmed to perform a variety of tasks and offer flexibility in the operations they may perform. For example, a programmable circuit may execute software or firmware that operates the programmable circuit in a manner defined by software or firmware instructions. Fixed-function circuits may execute software instructions (e.g., to receive or output parameters), but the type of operation performed by a fixed-function circuit is generally immutable. In some examples, one or more of the units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more of the units may be integrated circuits.

[0098] The video encoder 200 may include a programmable core formed from an arithmetic logic unit (ALU), an elementary function unit (EFU), digital circuits, analog circuits, and / or programmable circuits. In an example where the operation of the video encoder 200 is performed using software executed by the programmable circuits, memory 106 (Figure 1) may store instructions (e.g., object code) of the software that the video encoder 200 receives and executes, or another memory (not shown) within the video encoder 200 may store such instructions.

[0099] The video data memory 230 is configured to store the received video data. The video encoder 200 can retrieve a picture of the video data from the video data memory 230 and provide the video data to the residual generation unit 204 and the mode selection unit 202. The video data in the video data memory 230 may be raw video data to be encoded.

[0100] The mode selection unit 202 includes a motion estimation unit 222, a motion compensation unit 224, and an intra-prediction unit 226. The mode selection unit 202 may include additional functional units for performing video prediction according to other prediction modes. For example, the mode selection unit 202 may include a palette unit, an intra-block copy unit (which may be part of the motion estimation unit 222 and / or the motion compensation unit 224), an affine unit, a linear model (LM) unit, and the like.

[0101] The mode selection unit 202 generally coordinates multiple coding paths to test combinations of coding parameters and the resulting rate distortion values ​​for such combinations. The coding parameters may include the division of the CTU to the CU, the prediction mode for the CU, the transformation type for the residual data of the CU, and the quantization parameters for the residual data of the CU. The mode selection unit 202 may ultimately select a combination of coding parameters that has a better rate distortion value than other tested combinations.

[0102] The video encoder 200 divides the picture retrieved from the video data memory 230 into a series of CTUs, and may encapsulate one or more CTUs within a slice. The mode selection unit 202 may divide the picture's CTUs according to a tree structure such as the HEVC QTBT structure or quadtree structure described above. As described above, the video encoder 200 may form one or more CUs from dividing the CTUs according to the tree structure. Such CUs are sometimes commonly referred to as "video blocks" or "blocks".

[0103] Generally, the mode selection unit 202 also controls its components (e.g., motion estimation unit 222, motion compensation unit 224, and intra-prediction unit 226) to generate a predictive block for the current block (e.g., the current CU, or in HEVC, the overlapping portion of PU and TU). For intra-prediction of the current block, the motion estimation unit 222 may perform a motion search to identify one or more exactly matching reference blocks in one or more reference pictures (e.g., one or more previously coded pictures stored in the DPB 218). Specifically, the motion estimation unit 222 may calculate a value representing how similar a potential reference block is to the current block, for example, according to the sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), mean squared difference (MSD), etc. The motion estimation unit 222 may generally perform these calculations using sample-by-sample differences between the current block and the reference blocks under consideration. The motion estimation unit 222 can identify the reference block with the lowest value resulting from these calculations, which indicates the reference block that most closely matches the current block.

[0104] The motion estimation unit 222 may form one or more motion vectors (MVs) that define the position of a reference block in a reference picture relative to the position of a current block in the current picture. The motion estimation unit 222 may then provide the motion vectors to the motion compensation unit 224. For example, in the case of unidirectional interpretation, the motion estimation unit 222 may provide a single motion vector, but in the case of bidirectional interpretation, the motion estimation unit 222 may provide two motion vectors. The motion compensation unit 224 may then use the motion vectors to generate predicted blocks. For example, the motion compensation unit 224 may use the motion vectors to extract data for a reference block. As another example, if the motion vectors have fractional sample accuracy, the motion compensation unit 224 may interpolate values ​​for the predicted blocks according to one or more interpolation filters. Furthermore, in the case of bidirectional interpretation, the motion compensation unit 224 may extract data for the two reference blocks identified by each motion vector and synthesize the extracted data, for example, by sample-wise averaging or weighted averaging.

[0105] As another example, in the case of intra-prediction or intra-prediction coding, the intra-prediction unit 226 may generate a prediction block from samples adjacent to the current block. For example, in directional mode, the intra-prediction unit 226 may generally generate a prediction block by mathematically synthesizing the values ​​of adjacent samples and populating these calculated values ​​in a defined direction across the current block. As another example, in DC mode, the intra-prediction unit 226 may calculate the average of adjacent samples relative to the current block and generate a prediction block in which each sample of the prediction block should include this resulting average.

[0106] According to the techniques of the present disclosure described above, the intra-prediction unit 226 may be configured to: construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-prediction modes and the planar mode is the first entry in the total most probable mode list; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-prediction mode for the current block of video data using the primary or secondary most probable mode list; and encode the current block of video data using the current intra-prediction mode to generate an encoded block of video data.

[0107] The mode selection unit 202 provides the prediction block to the residual generation unit 204. The residual generation unit 204 receives a raw, unencoded version of the current block from the video data memory 230 and the prediction block from the mode selection unit 202. The residual generation unit 204 calculates the sample-by-sample difference between the current block and the prediction block. The resulting sample-by-sample difference defines the residual block for the current block. In some examples, the residual generation unit 204 may also determine the difference between sample values ​​in the residual block to generate the residual block using residual difference pulse code modulation (RDPCM). In some examples, the residual generation unit 204 may be formed using one or more subtractor circuits that perform binary subtraction.

[0108] In an example where the mode selection unit 202 divides a CU into PUs, each PU may be associated with a lumar prediction unit and a corresponding chroma prediction unit. The video encoder 200 and video decoder 300 may support PUs of various sizes. As shown above, the size of a CU may refer to the size of the lumar coding block of the CU, and the size of a PU may refer to the size of the lumar prediction unit of the PU. Assuming that the size of a particular CU is 2N × 2N, the video encoder 200 may support PU sizes of 2N × 2N or N × N for intra-prediction, and symmetric PU sizes of 2N × 2N, 2N × N, N × 2N, N × N, or similar for inter-prediction. The video encoder 200 and video decoder 300 may also support asymmetric divisions for PU sizes of 2N × nU, 2N × nD, nL × 2N, and nR × 2N for inter-prediction.

[0109] In cases where the mode selection unit 202 does not further subdivide the CU into PUs, each PU may be associated with a ruma coding block and a corresponding chroma coding block. As described above, the size of the CU may refer to the size of the ruma coding block within the CU. The video encoder 200 and video decoder 300 may support CU sizes of 2N×2N, 2N×N, or N×2N.

[0110] In some examples, for other video coding techniques such as intra-block copy mode coding, affine mode coding, and linear model (LM) mode coding, the mode selection unit 202 generates a predicted block for the current block being coded via the respective unit associated with the coding technique. In some examples, such as palette mode coding, the mode selection unit 202 does not have to generate a predicted block, but instead may generate syntax elements indicating how to reconstruct the block based on the selected palette. In such modes, the mode selection unit 202 may provide these syntax elements to be coded to the entropy coding unit 220.

[0111] As described above, the residual generation unit 204 receives video data for the current block and the corresponding predicted block. The residual generation unit 204 then generates a residual block for the current block. To generate the residual block, the residual generation unit 204 calculates the sample-by-sample difference between the predicted block and the current block.

[0112] The transformation processing unit 206 applies one or more transformations to the residual block to generate a block of transformation coefficients (referred to herein as the “transformation coefficient block”). The transformation processing unit 206 may apply various transformations to the residual block to form the transformation coefficient block. For example, the transformation processing unit 206 may apply a discrete cosine transform (DCT), a direction transform, a Carunenlobe transform (KLT), or a conceptually similar transformation to the residual block. In some examples, the transformation processing unit 206 may perform multiple transformations on the residual block, such as a rotation transform, a linear transformation, and a quadratic transformation. In some examples, the transformation processing unit 206 does not apply any transformations to the residual block.

[0113] The quantization unit 208 may quantize the transformation coefficients in the transformation coefficient block to produce a quantized transformation coefficient block. The quantization unit 208 may quantize the transformation coefficients of the transformation coefficient block according to the quantization parameter (QP) value associated with the current block. The video encoder 200 may adjust the degree of quantization applied to the transformation coefficient block associated with the current block by adjusting the QP value associated with the CU (for example, via the mode selection unit 202). Quantization may result in a loss of information, and therefore the quantized transformation coefficients may have lower precision than the original transformation coefficients generated by the transformation processing unit 206.

[0114] The inverse quantization unit 210 and the inverse transformation processing unit 212 can reconstruct the residual block from the transformation coefficient block by applying inverse quantization and inverse transformation, respectively. The reconstruction unit 214 can generate a reconstructed block corresponding to the current block (which may be with some distortion) based on the reconstructed residual block and the prediction block generated by the mode selection unit 202. For example, the reconstruction unit 214 can generate a reconstructed block by adding a sample from the reconstructed residual block to a corresponding sample from the prediction block generated by the mode selection unit 202.

[0115] The filter unit 216 may perform one or more filtering operations on the reconfigured block. For example, the filter unit 216 may perform a deblocking operation to reduce blocking artifacts along the edges of the CU. In some examples, the operation of the filter unit 216 may be skipped.

[0116] The video encoder 200 stores the reconstructed blocks in the DPB 218. For example, in an example where the filter unit 216 does not operate, the reconstruction unit 214 may store the reconstructed blocks in the DPB 218. In an example where the filter unit 216 operates, the filter unit 216 may store the filtered and reconstructed blocks in the DPB 218. The motion estimation unit 222 and the motion compensation unit 224 may retrieve a reference picture formed from the reconstructed (and possibly filtered) blocks from the DPB 218 to interpret blocks of the picture to be encoded later. In addition, the intraprediction unit 226 may use the reconstructed blocks in the DPB 218 of the current picture to intrapret other blocks in the current picture.

[0117] In general, the entropy coding unit 220 can entropy code syntax elements received from other functional components of the video encoder 200. For example, the entropy coding unit 220 can entropy code quantized transformation coefficient blocks from the quantization unit 208. As another example, the entropy coding unit 220 can entropy code prediction syntax elements from the mode selection unit 202 (e.g., motion information for inter-prediction or intra-mode information for intra-prediction). The entropy coding unit 220 can perform one or more entropy coding operations on syntax elements, which are another example of video data, to generate entropy coded data. For example, the entropy coding unit 220 may perform context-adaptive variable-length coding (CAVLC) operation, CABAC operation, variable-to-variable (V2V) length coding operation, syntax-based context-adaptive binary arithmetic coding (SBAC) operation, probability interval partitioned entropy (PIPE) coding operation, exponential Golomb coding operation, or another type of entropy coding operation on the data. In some examples, the entropy coding unit 220 may operate in a bypass mode in which syntax elements are not entropically coded.

[0118] The video encoder 200 may output a bitstream containing entropy-encoded syntax elements required to reconstruct a slice or block of a picture. Specifically, the entropy encoding unit 220 may output a bitstream.

[0119] The behavior described above is described in relation to blocks. Such descriptions should be understood as behavior for rumacoding blocks and / or chromacoding blocks. As described above, in some examples, the rumacoding block and chromacoding block are the ruma and chroma components of the CU. In some examples, the rumacoding block and chromacoding block are the ruma and chroma components of the PU.

[0120] In some cases, actions performed for a rumacoding block do not need to be repeated for a chromacoding block. For example, actions to identify the motion vector (MV) and reference picture for a rumacoding block do not need to be repeated to identify the MV and reference picture for a chromacoding block. Rather, the MV for the rumacoding block may be scaled to determine the MV for the chromacoding block, and the reference picture may be the same. In another example, the intra-prediction process may be the same for both rumacoding and chromacoding blocks.

[0121] The video encoder 200 represents an example of a device configured to encode video data, comprising a memory configured to store video data, and one or more processing units implemented in the circuit, configured to construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the planar mode is the first entry in the total most probable mode list; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and encode the current block of video data using the current intra-predictive mode to generate an encoded block of video data.

[0122] Figure 6 is a block diagram showing an exemplary video decoder 300 capable of performing the techniques of this disclosure. Figure 6 is provided for illustrative purposes and is not intended to limit the techniques that are broadly illustrated and described in this disclosure. For illustrative purposes, this disclosure describes a video decoder 300 using VVC (ITU-T H.266 in development) and HEVC (ITU-T H.265) techniques. However, the techniques of this disclosure may be performed by video coding devices configured according to other video coding standards.

[0123] In the example in Figure 6, the video decoder 300 includes a coded picture buffer (CPB) memory 320, an entropy decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, an inverse transformation processing unit 308, a reconstruction unit 310, a filter unit 312, and a decoded picture buffer (DPB) 314. Any or all of the CPB memory 320, entropy decoding unit 302, prediction processing unit 304, inverse quantization unit 306, inverse transformation processing unit 308, reconstruction unit 310, filter unit 312, and DPB 314 may be implemented in one or more processors or processing circuits. For example, the units of the video decoder 300 may be implemented as one or more circuits or logic elements as part of a hardware circuit, or as part of a processor, ASIC, or FPGA. Furthermore, the video decoder 300 may include additional or alternative processors or processing circuits to perform these and other functions.

[0124] The prediction processing unit 304 includes a motion compensation unit 316 and an intra-prediction unit 318. The prediction processing unit 304 may include additional units for performing predictions according to other prediction modes. For example, the prediction processing unit 304 may include a pallet unit, an intra-block copy unit (which may form part of the motion compensation unit 316), an affine unit, a linear model (LM) unit, and the like. In other examples, the video decoder 300 may include more, fewer, or different functional components.

[0125] The CPB memory 320 may store video data, such as an encoded video bitstream, to be decoded by the components of the video decoder 300. Video data stored in the CPB memory 320 may be retrieved, for example, from a computer-readable medium 110 (Figure 1). The CPB memory 320 may include a CPB that stores encoded video data (e.g., syntax elements) from the encoded video bitstream. The CPB memory 320 may also store video data other than syntax elements of the encoded picture, such as temporary data representing outputs from various units of the video decoder 300. The DPB 314 generally stores the decoded picture, which the video decoder 300 may output and / or use as reference video data when decoding subsequent data or pictures from the encoded video bitstream. The CPB memory 320 and DPB 314 may be formed by any of various memory devices, such as DRAM, MRAM, RRAM, or other types of memory devices, including SDRAM. The CPU memory 320 and DPB 314 may be provided by the same memory device or separate memory devices. In various examples, the CPB memory 320 may be on-chip along with the other components of the video decoder 300, or it may be off-chip relative to those components.

[0126] As an addition or alternative, in some examples, the video decoder 300 may retrieve coded video data from memory 120 (Figure 1). That is, memory 120 may store data as described above with respect to the CPB memory 320. Similarly, memory 120 may store instructions to be executed by the video decoder 300 when some or all of the functions of the video decoder 300 are implemented in software to be executed by the processing circuit of the video decoder 300.

[0127] The various units shown in Figure 6 are illustrated to help understand the operations performed by the video decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Similar to Figure 5, fixed-function circuits refer to circuits that provide a specific function and are preset for the operations they may perform. Programmable circuits refer to circuits that can be programmed to perform various tasks and offer flexibility in the operations they may perform. For example, a programmable circuit may execute software or firmware that operates the programmable circuit in a manner defined by software or firmware instructions. Fixed-function circuits may execute software instructions (e.g., to receive or output parameters), but the type of operation performed by a fixed-function circuit is generally immutable. In some examples, one or more of the units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more of the units may be integrated circuits.

[0128] The video decoder 300 may include a programmable core formed from an ALU, EFU, digital circuitry, analog circuitry, and / or programmable circuitry. In an example where the operation of the video decoder 300 is performed by software running on the programmable circuitry, on-chip memory or off-chip memory may store software instructions (e.g., object code) that the video decoder 300 receives and executes.

[0129] The entropy decoding unit 302 can receive video data encoded from the CPB and reconstruct the syntax elements by entropy decoding the video data. The prediction processing unit 304, the inverse quantization unit 306, the inverse transformation processing unit 308, the reconstruction unit 310, and the filter unit 312 can generate the decoded video data based on the syntax elements extracted from the bitstream.

[0130] Generally, the video decoder 300 reconstructs the picture block by block. The video decoder 300 can perform the reconstruction operation individually for each block (where the block currently being reconstructed, i.e., decoded, is sometimes called the "current block").

[0131] The entropy decoding unit 302 can entropy decode the quantized transformation coefficients of the quantized transformation coefficient block, as well as syntax elements that define transformation information such as quantization parameters (QP) and / or transformation mode indications. The inverse quantization unit 306 may use the QP associated with the quantized transformation coefficient block to determine the degree of quantization and, similarly, the degree of inverse quantization that the inverse quantization unit 306 should apply. The inverse quantization unit 306 may, for example, perform a bitwise left shift operation to inverse quantize the quantized transformation coefficients. The inverse quantization unit 306 may thereby form a transformation coefficient block containing the transformation coefficients.

[0132] After the inverse quantization unit 306 has formed a transformation coefficient block, the inverse transformation processing unit 308 may apply one or more inverse transformations to the transformation coefficient block to generate a residual block associated with the current block. For example, the inverse transformation processing unit 308 may apply an inverse DCT, an inverse integer transformation, an inverse Carunenlebe transform (KLT), an inverse rotation transform, an inverse direction transform, or another inverse transformation to the transformation coefficient block.

[0133] Furthermore, the prediction processing unit 304 generates prediction blocks according to the prediction information syntax elements entropy-decoded by the entropy decoding unit 302. For example, if the prediction information syntax elements indicate that the current block is interpredicted, the motion compensation unit 316 may generate a prediction block. In this case, the prediction information syntax elements may indicate a reference picture in the DPB 314 from which the reference block should be extracted, as well as a motion vector that identifies the location of the reference block in the reference picture relative to the location of the current block in the current picture. The motion compensation unit 316 can generally perform the interprediction process in substantially the same manner as described with respect to the motion compensation unit 224 (Figure 5).

[0134] As another example, if the prediction information syntax element indicates that the current block is intra-predicted, the intra-prediction unit 318 may generate a predicted block according to the intra-prediction mode indicated by the prediction information syntax element. Again, the intra-prediction unit 318 may generally perform the intra-prediction process in substantially the same manner as described with respect to the intra-prediction unit 226 (Figure 5). The intra-prediction unit 318 may retrieve adjacent sample data for the current block from the DPB 314.

[0135] According to the technique described above, the intra-prediction unit 318 may be configured to: construct a total most probable mode list containing N entries, wherein the N entries in the total most probable mode list are intra-prediction modes and the planar mode is the first entry in the total most probable mode list; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-prediction mode for the current block of video data using the primary or secondary most probable mode list; and decode the current block of video data using the current intra-prediction mode to generate a decoded block of video data.

[0136] The reconstruction unit 310 may reconstruct the current block using the predicted block and the residual block. For example, the reconstruction unit 310 may reconstruct the current block by adding a sample from the residual block to the corresponding sample from the predicted block.

[0137] The filter unit 312 may perform one or more filtering operations on the reconfigured block. For example, the filter unit 312 may perform a deblocking operation to reduce blocking artifacts along the edges of the reconfigured block. The operations of the filter unit 312 are not necessarily performed in all examples.

[0138] The video decoder 300 may store the reconstructed blocks in the DPB 314. For example, in an example where the filter unit 312 does not operate, the reconstruction unit 310 may store the reconstructed blocks in the DPB 314. In an example where the filter unit 312 operates, the filter unit 312 may store the refined, filtered, and reconstructed blocks in the DPB 314. As described above, the DPB 314 may provide the prediction processing unit 304 with reference information such as the current picture for intra-prediction and samples of previously decoded pictures for subsequent motion compensation. Furthermore, the video decoder 300 may output the decoded picture (e.g., decoded video) from the DPB 314 for later presentation on a display device such as the display device 118 in Figure 1.

[0139] Thus, the video decoder 300 represents an example of a video decoding device, comprising a memory configured to store video data, and one or more processing units implemented in the circuit to construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the planar mode is the first entry in the total most probable mode list; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and decode the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0140] Figure 7 is a flowchart illustrating an exemplary method for encoding a current block using the technique of this disclosure. The current block may include a current CU. While the video encoder 200 (Figures 1 and 5) is described in reference, it should be understood that other devices may be configured to perform a similar method to that shown in Figure 7.

[0141] In this example, the video encoder 200 first predicts the current block (350). For example, the video encoder 200 may form a predicted block for the current block. The video encoder 200 may then compute the residual block for the current block (352). To compute the residual block, the video encoder 200 may compute the difference between the original unencoded block and the predicted block for the current block. The video encoder 200 may then transform the residual block and quantize the transformation coefficients of the residual block (354). The video encoder 200 may then scan the quantized transformation coefficients of the residual block (356). During or following the scan, the video encoder 200 may entropy encode the transformation coefficients (358). For example, the video encoder 200 may encode the transformation coefficients using CAVLC or CABAC. The video encoder 200 may then output the entropy encoded data of the block (360).

[0142] Figure 8 is a flowchart illustrating an exemplary method for decoding the current block of video data using the technique of this disclosure. The current block may include the current CU. While the video decoder 300 (Figures 1 and 6) is described, it should be understood that other devices may be configured to perform a similar method to that shown in Figure 8.

[0143] The video decoder 300 may receive entropy-encoded data for the current block, such as entropy-encoded prediction information and entropy-encoded data of the transformation coefficients of the residual block corresponding to the current block (370). The video decoder 300 may entropy-decode the entropy-encoded data to determine the prediction information for the current block and to reconstruct the transformation coefficients of the residual block (372). The video decoder 300 may predict the current block, for example, using an intra-prediction mode or inter-prediction mode as indicated by the prediction information for the current block, in order to compute a prediction block for the current block (374). The video decoder 300 may then backscan the reconstructed transformation coefficients to create a block of quantized transformation coefficients (376). The video decoder 300 may then inversely quantize the transformation coefficients and apply the inverse transform to the transformation coefficients to generate a residual block (378). The video decoder 300 may finally decode the current block by combining the prediction block and the residual block (380).

[0144] Figure 9 is a flowchart showing another exemplary method for encoding a current block using the technique of the present disclosure. The technique of Figure 9 may be performed by one or more structural units of a video encoder 200, including the intra-prediction unit 226 of Figure 5.

[0145] In one example of the present disclosure, the video encoder 200 is configured to encode the current block of video data using intra-prediction. The video encoder 200 may be configured to construct (500) a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-prediction modes, and the planar mode is the first entry in the total most probable mode list. The video encoder 200 may further construct (502) a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N, and construct (504) a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list. The video encoder 200 may further determine the current intra-prediction mode for the current block of video data using the primary or secondary most probable mode list (506), and encode the current block of video data using the current intra-prediction mode to generate an encoded block of video data (508). In one example, N is 22 and Np is 6.

[0146] In one example of the present disclosure, the video encoder 200 may be configured to encode an index to a primary most likely mode list or a secondary most likely mode list, wherein the index indicates a non-planar intra-predictive mode within the primary or secondary most likely mode list.

[0147] In another example of the present disclosure, to encode an index to a first-order most likely mode list or a second-order most likely mode list, the video encoder 200 may be configured to determine a context for entropy coding a first bin of the index based on the coding tool currently used for the block, and to entropy code the first bin of the index using the context. In one example, the coding tool is typically one of intra-predictive mode, intra-subpartition mode, or multiple reference line mode.

[0148] In another example, to construct a total most probable mode list, the video encoder 200 is further configured to add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, and to add multiple intra-prediction modes offset from each intra-prediction mode from each adjacent block to the total most probable mode list. The video encoder 200 may add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list based on whether each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0149] Figure 10 is a flowchart showing another exemplary method for decoding a current block using the technique of the present disclosure. The technique of Figure 10 may be performed by one or more structural units of a video decoder 300, including the intra-prediction unit 318 of Figure 6.

[0150] In one example of the present disclosure, the video decoder 300 may be configured to decode the current block of video data using intra-prediction. The video decoder 300 may be configured to construct (600) a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-prediction modes and the first entry in the total most probable mode list is a planar mode. The video decoder 300 may further construct (602) a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N, and construct (604) a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list. The video decoder 300 may then determine the current intra-prediction mode for the current block of video data using the primary or secondary most probable mode list (606), and decode the current block of video data using the current intra-prediction mode to generate a decoded block of video data (608). In one example, N is 22 and Np is 6.

[0151] In one example, to determine the current intra-prediction mode, the video decoder 300 may be further configured to decode an index to a primary or secondary most probable mode list, wherein the index indicates a non-planar intra-prediction mode within the primary or secondary most probable mode list. Based on the index, the video decoder 300 may determine the current intra-prediction mode for the current block of video data.

[0152] In a further example, to decode an index into a first-order most likely mode list or a second-order most likely mode list, the video decoder 300 may further determine a context for entropy decoding the first bin of the index based on the coding tool currently used for the block, and then entropy decode the first bin of the index using the context. In one example, the coding tool is typically one of the following: intra-predictive mode, intra-subpartition mode, or multiple reference line mode.

[0153] In another example of this disclosure, to construct a total most probable mode list, the video decoder 300 may be configured to add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, and to add a number of intra-prediction modes offset from each intra-prediction mode from each adjacent block to the total most probable mode list. In one example, the video decoder 300 may add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list based on the fact that each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0154] In other examples, to determine the current intra-predictive mode for the current block of video data using a primary or secondary most likely mode list, the video decoder 300 may be configured to decode a syntax element indicating the current most likely mode list from either the primary or secondary most likely mode list, decode an index to the current most likely mode list, and determine the current intra-predictive mode from the index to the current most likely mode list.

[0155] Additional aspects of this disclosure are described below.

[0156] Embodiment 1A - A method for coding video data, comprising the steps of: constructing a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes; constructing a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; constructing a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; and determining an intra-predictive mode for the current block of video data using the primary or secondary most probable mode list.

[0157] Embodiment 2A - The method of Embodiment 1A, wherein N is 22 and Np is 6.

[0158] Embodiment 3A - The method of either Embodiment 1A or 2A, wherein the step of constructing the total most probable mode list includes the steps of adding a planar mode as the first entry in the total most probable mode list, adding each intra-predicted mode from each adjacent block of the current block of video data to the total most probable mode list, and adding intra-predicted modes offset from each intra-predicted mode from each adjacent block to the total most probable mode list.

[0159] Embodiment 4A - The method of Embodiment 3A, wherein the step of adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list includes the step of adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list if each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0160] Embodiment 5A - Any method of Embodiments 1A to 4A, further comprising the step of determining a context for coding an index indicating a non-planar mode of a primary most probable mode list based on a coding tool currently used for a block.

[0161] Embodiment 6A - The method of Embodiment 5A, wherein the coding tool is typically one of the following: intra-prediction mode, intra-subpartition mode, or multiple reference line mode.

[0162] Embodiment 7A - Any method of Embodiments 1A to 6A, wherein the coding step includes a decryption step.

[0163] Embodiment 8A - Any method of Embodiments 1A to 7A, wherein the coding step includes an encoding step.

[0164] Embodiment 9A - A device for coding video data, comprising one or more means for performing any of the methods of Embodiments 1A to 8A.

[0165] Embodiment 10A - A device of Embodiment 9A, wherein one or more means comprises one or more processors implemented in a circuit.

[0166] Embodiment 11A - A device in any of embodiments 9A and 10A, further comprising memory for storing video data.

[0167] Embodiment 12A - Any device of Embodiments 9A to 11A, further comprising a display configured to display decoded video data.

[0168] Embodiment 13A - A device according to any of Embodiments 9A to 12A, wherein the device comprises one or more of the following: a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

[0169] Embodiment 14A - A device according to any of Embodiments 9A to 13A, wherein the device comprises a video decoder.

[0170] Embodiment 15A - A device according to any of Embodiments 9A to 14A, wherein the device comprises a video encoder.

[0171] Embodiment 16A - A computer-readable storage medium that stores instructions, when executed, causing one or more processors to perform any of the methods in Embodiments 1A to 8A.

[0172] Embodiment 1B - A method for decoding video data, comprising the steps of: constructing a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the first entry in the total most probable mode list is a planar mode; constructing a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; constructing a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determining the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and decoding the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0173] Embodiment 2B - The method of Embodiment 1B, wherein the step of determining the current intra-prediction mode is to decode an index to a primary or secondary most likely mode list, wherein the index indicates a non-planar intra-prediction mode in the primary or secondary most likely mode list; and to determine the current intra-prediction mode for the current block of video data based on the index.

[0174] Embodiment 3B - The method of Embodiment 2B, wherein the step of decoding an index to a first-order most likely mode list or a second-order most likely mode list includes the steps of determining a context for entropy decoding a first bin of the index based on a coding tool currently used for the block, and entropy decoding the first bin of the index using the context.

[0175] Embodiment 4B - The method of Embodiment 3B, wherein the coding tool is typically one of the following: intra-prediction mode, intra-subpartition mode, or multiple reference line mode.

[0176] Embodiment 5B - The method of Embodiment 1B, wherein N is 22 and Np is 6.

[0177] Embodiment 6B - The method of Embodiment 1B, wherein the step of constructing the total most probable mode list includes adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, and adding a plurality of intra-prediction modes offset from each intra-prediction mode from each adjacent block to the total most probable mode list.

[0178] Embodiment 7B - The method of Embodiment 6B, wherein the step of adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list includes the step of adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list based on the fact that each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0179] Embodiment 8B - The method of Embodiment 1B, wherein the step of determining the current intra-prediction mode for the current block of video data using a primary or secondary most likely mode list includes the steps of: decoding a syntax element indicating the current most likely mode list from either the primary or secondary most likely mode list; decoding an index to the current most likely mode list; and determining the current intra-prediction mode from the index to the current most likely mode list.

[0180] Embodiment 9B - The method of Embodiment 1B, further comprising the step of displaying a picture containing decoded blocks of video data.

[0181] Embodiment 10B - A device configured to decode video data, comprising a memory configured to store the current block of video data, and one or more processors implemented in a circuit and communicating with the memory, wherein the one or more processors are configured to: construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the planar mode is the first entry in the total most probable mode list; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and decode the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0182] Embodiment 11B - Apparatus of Embodiment 10B, wherein one or more processors are further configured to decode an index to a primary most likely mode list or a secondary most likely mode list, wherein the index indicates a non-planar intra predictive mode in the primary most likely mode list or the secondary most likely mode list, and to determine the current intra predictive mode for the current block of video data based on the index.

[0183] Embodiment 12B - The apparatus of Embodiment 11B, wherein one or more processors are further configured to decode an index to a first-order most likely mode list or a second-order most likely mode list, by determining a context for entropy decoding a first bin of the index based on a coding tool currently used for the block, and by entropy decoding the first bin of the index using the context.

[0184] Embodiment 13B - The apparatus of Embodiment 12B, wherein the coding tool is typically one of the following: intra-prediction mode, intra-subpartition mode, or multiple reference line mode.

[0185] Embodiment 14B - The apparatus of Embodiment 10B, wherein N is 22 and Np is 6.

[0186] Embodiment 15B - Apparatus of Embodiment 10B, wherein one or more processors are further configured to add to the total most probable mode list each intra-prediction mode from each adjacent block of the current block of video data and to add to the total most probable mode list a plurality of intra-prediction modes offset from each intra-prediction mode from each adjacent block.

[0187] Embodiment 16B - Apparatus of Embodiment 15B, wherein one or more processors are further configured to add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, based on whether each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0188] Embodiment 17B - Apparatus of Embodiment 10B, wherein one or more processors are further configured to decode a syntax element indicating the current most likely mode list from either the primary or secondary most likely mode list, decode an index to the current most likely mode list, and determine the current intra predictive mode from the index to the current most likely mode list, in order to determine the current intra predictive mode for the current block of video data using a primary most likely mode list or a secondary most likely mode list.

[0189] Embodiment 18B - The apparatus of Embodiment 10B, further comprising a display configured to display a picture containing decoded blocks of video data.

[0190] Embodiment 19B - An apparatus configured to decode video data, comprising: means for constructing a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the first entry in the total most probable mode list is a planar mode; means for constructing a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; means for constructing a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; means for determining the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and means for decoding the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0191] Embodiment 20B - Apparatus of Embodiment 19B, wherein means for determining the current intra-prediction mode further comprises means for decoding an index to a primary most probable mode list or a secondary most probable mode list, wherein the index indicates a non-planar intra-prediction mode in the primary most probable mode list or the secondary most probable mode list, and means for determining the current intra-prediction mode for the current block of video data based on the index.

[0192] Embodiment 21B - Apparatus of Embodiment 20B, wherein means for decoding an index to a first-order most likely mode list or a second-order most likely mode list comprises means for determining a context for entropy decoding a first bin of the index based on a coding tool currently used for a block, and means for entropy decoding the first bin of the index using the context.

[0193] Embodiment 22B - A non-temporary computer-readable storage medium for storing instructions, wherein, when the instructions are executed, the instructions cause one or more processors configured to decode video data to construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the first entry in the total most probable mode list is a planar mode; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and decode the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0194] Aspect 23B - A non-temporary computer-readable storage medium of Aspect 22B, wherein an instruction causes one or more processors to decode an index to a primary most likely mode list or a secondary most likely mode list, such that the index indicates a non-planar intra predictive mode in the primary or secondary most likely mode list, and further to determine the current intra predictive mode for the current block of video data based on the index.

[0195] Embodiment 24B - A non-temporary computer-readable storage medium of Embodiment 23B, wherein, in order to decode an index to a primary or secondary most likely mode list, an instruction causes one or more processors to determine a context for entropy-decode a first bin of the index based on a coding tool currently used for the block, and to entropy-decode the first bin of the index using the context.

[0196] Embodiment 25B - An apparatus configured to encode video data, comprising a memory configured to store a current block of video data, and one or more processors implemented in a circuit and communicating with the memory, wherein one or more processors are configured to: construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the planar mode is the first entry in the total most probable mode list; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for a current block of video data using the primary or secondary most probable mode list; and encode the current block of video data using the current intra-predictive mode to generate an encoded block of video data.

[0197] Embodiment 26B - Apparatus of Embodiment 25B, further configured to encode an index to a primary most likely mode list or a secondary most likely mode list, wherein the index indicates a non-planar intra-predictive mode in the primary most likely mode list or the secondary most likely mode list.

[0198] Embodiment 27B - Apparatus of Embodiment 26B, wherein one or more processors are further configured to encode an index to a first-order most likely mode list or a second-order most likely mode list, by determining a context for entropy coding a first bin of the index based on a coding tool currently used for the block, and by entropy coding the first bin of the index using the context.

[0199] Embodiment 28B - The apparatus of Embodiment 27B, wherein the coding tool is typically one of the following: intra-prediction mode, intra-subpartition mode, or multiple reference line mode.

[0200] Embodiment 29B - The apparatus of Embodiment 25B, wherein N is 22 and Np is 6.

[0201] Embodiment 30B - Apparatus of Embodiment 25B, wherein one or more processors are further configured to add to the total most probable mode list each intra-prediction mode from each adjacent block of the current block of video data and to add to the total most probable mode list a plurality of intra-prediction modes offset from each intra-prediction mode from each adjacent block.

[0202] Embodiment 31B - Apparatus of Embodiment 25B, wherein one or more processors are further configured to add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, based on whether each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0203] Embodiment 32B - The apparatus of Embodiment 25B, further comprising a camera configured to capture a picture containing the current block of video data.

[0204] Embodiment 1C - A method for decoding video data, comprising the steps of: constructing a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the first entry in the total most probable mode list is a planar mode; constructing a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; constructing a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determining the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and decoding the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0205] Embodiment 2C - The method of Embodiment 1C, further comprising the steps of: determining the current intra-prediction mode; decoding an index to a primary or secondary most likely mode list, wherein the index indicates a non-planar intra-prediction mode in the primary or secondary most likely mode list; and determining the current intra-prediction mode for the current block of video data based on the index.

[0206] Embodiment 3C - The method of Embodiment 2C, wherein the step of decoding an index to a first-order most likely mode list or a second-order most likely mode list includes the steps of determining a context for entropy decoding a first bin of the index based on a coding tool currently used for a block, and entropy decoding the first bin of the index using the context.

[0207] Embodiment 4C - The method of Embodiment 3C, wherein the coding tool is typically one of the following: intra-prediction mode, intra-subpartition mode, or multiple reference line mode.

[0208] Embodiment 5C - Any method of Embodiments 1C to 4C, wherein N is 22 and Np is 6.

[0209] Embodiment 6C - Any method of Embodiments 1C to 5C, wherein the step of constructing the total most probable mode list includes adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, and adding a plurality of intra-prediction modes offset from each intra-prediction mode from each adjacent block to the total most probable mode list.

[0210] Embodiment 7C - The method of Embodiment 6C, wherein the step of adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list includes the step of adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list based on the fact that each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0211] Embodiment 8C - Any method of Embodiments 1C to 7C, wherein the step of determining the current intra-prediction mode for the current block of video data using a primary or secondary most likely mode list includes the steps of: decoding a syntax element indicating the current most likely mode list from either the primary or secondary most likely mode list; decoding an index to the current most likely mode list; and determining the current intra-prediction mode from the index to the current most likely mode list.

[0212] Embodiment 9C - Any method of Embodiments 1C to 8C, further comprising the step of displaying a picture containing decoded blocks of video data.

[0213] Embodiment 10C - A device configured to decode video data, comprising a memory configured to store the current block of video data, and one or more processors implemented in a circuit and communicating with the memory, wherein one or more processors are configured to: construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the planar mode is the first entry in the total most probable mode list; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for the current block of video data using the primary or secondary most probable mode list; and decode the current block of video data using the current intra-predictive mode to generate a decoded block of video data.

[0214] Embodiment 11C - Apparatus of Embodiment 10C, wherein one or more processors are further configured to decode an index to a primary most likely mode list or a secondary most likely mode list, wherein the index indicates a non-planar intra predictive mode in the primary most likely mode list or the secondary most likely mode list, and to determine the current intra predictive mode for the current block of video data based on the index.

[0215] Embodiment 12C - Apparatus of Embodiment 11C, wherein one or more processors are further configured to decode an index to a first-order most likely mode list or a second-order most likely mode list, by determining a context for entropy decoding a first bin of the index based on a coding tool used for the current block of video data, and by entropy decoding the first bin of the index using the context.

[0216] Embodiment 13C - The apparatus of Embodiment 12C, wherein the coding tool is typically one of the following modes: intra-prediction mode, intra-subpartition mode, or multiple reference line mode.

[0217] Embodiment 14C - An apparatus according to any of Embodiments 10C to 13C, wherein N is 22 and Np is 6.

[0218] Embodiment 15C - Any apparatus of Embodiments 10C to 14C, wherein one or more processors are further configured to add to the total most probable mode list the respective intra-prediction modes from each adjacent block of the current block of video data, and to add to the total most probable mode list a plurality of intra-prediction modes offset from each intra-prediction mode from each adjacent block.

[0219] Embodiment 16C - Apparatus of Embodiment 15C, wherein one or more processors are further configured to add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, based on whether each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0220] Embodiment 17C - An apparatus of any of Embodiments 10C to 16C, wherein one or more processors are further configured to decode a syntax element indicating the current most likely mode list from either the primary or secondary most likely mode list, decode an index to the current most likely mode list, and determine the current intra predictive mode from the index to the current most likely mode list, for determining the current intra predictive mode for the current block of video data using a primary most likely mode list or a secondary most likely mode list.

[0221] Embodiment 18C - An apparatus according to any of Embodiments 10C to 17C, further comprising a display configured to display a picture containing decoded blocks of video data.

[0222] Embodiment 19C - An apparatus configured to encode video data, comprising a memory configured to store a current block of video data, and one or more processors implemented in a circuit and communicating with the memory, wherein one or more processors are configured to: construct a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes and the first entry in the total most probable mode list is a planar mode; construct a primary most probable mode list from the first Np entries in the total most probable mode list, wherein Np is less than N; construct a secondary most probable mode list from the remaining (N-Np) entries in the total most probable mode list; determine the current intra-predictive mode for a current block of video data using the primary or secondary most probable mode list; and encode the current block of video data using the current intra-predictive mode to generate an encoded block of video data.

[0223] Embodiment 20C - Apparatus of Embodiment 19C, further configured to encode an index to a primary most likely mode list or a secondary most likely mode list, wherein the index indicates a non-planar intra-predictive mode in the primary most likely mode list or the secondary most likely mode list.

[0224] Embodiment 21C - Apparatus of Embodiment 20C, wherein one or more processors are further configured to determine a context for entropy coding a first bin of an index based on a coding tool used for the current block of video data, and to entropy code the first bin of the index using the context, for encoding an index to a first-order most likely mode list or a second-order most likely mode list.

[0225] Embodiment 22C - The apparatus of Embodiment 21C, wherein the coding tool is typically one of the following: intra-prediction mode, intra-subpartition mode, or multiple reference line mode.

[0226] Embodiment 23C - An apparatus according to any of Embodiments 19C to 22C, wherein N is 22 and Np is 6.

[0227] Embodiment 24C - Any apparatus of Embodiments 19C to 23C, wherein one or more processors are further configured to add to the total most probable mode list each intra-predicted mode from each adjacent block of the current block of video data and to add to the total most probable mode list a plurality of intra-predicted modes offset from each intra-predicted mode from each adjacent block.

[0228] Embodiment 25 - An apparatus of any embodiment 19C to 24C, wherein one or more processors are further configured to add each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, based on whether each intra-prediction mode is available and has not yet been added to the total most probable mode list.

[0229] Embodiment 26C - An apparatus of any embodiment 19C to 25C, further comprising a camera configured to capture a picture containing the current block of video data.

[0230] It should be noted that, depending on the example, some of the actions or events of any of the techniques described herein may be performed in different sequences, and may be added, merged, or excluded entirely (for example, not all actions or events described may be necessary for the practice of the technique). Furthermore, in some examples, the actions or events may be performed not sequentially, but concurrently, for example, through multithreading, interrupt handling, or multiple processors.

[0231] In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or codes on a computer-readable medium or transmitted via a computer-readable medium and executed by a hardware-based processing unit. The computer-readable medium may include computer-readable storage media corresponding to tangible media such as data storage media, or communication media including any medium that facilitates the transfer of computer programs from one location to another, for example, according to a communication protocol. Thus, the computer-readable medium may generally correspond to (1) non-transient tangible computer-readable storage media, or (2) communication media such as signals or carrier waves. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes and / or data structures for implementing the techniques described herein. A computer program product may include computer-readable media.

[0232] As an example, and not an limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and can be accessed by a computer. Any connection is also appropriately referred to as computer-readable media. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of media. However, it should be understood that computer-readable storage media and data storage media do not include connections, carriers, signals, or other temporary media, but instead refer to non-temporary tangible storage media. The terms "disk" and "disc" as used herein include Compact Disc (CD), LaserDisc (registered trademark) (disc), Optical Disc (disc), Digital Multipurpose Disc (disc) (DVD), Floppy Disk (disk), and Blu-ray Disc (disc), where a Disk typically reproduces data magnetically, and a Disc (disc) reproduces data optically using a laser. Any combination of the above should also be included within the scope of computer-readable media.

[0233] Instructions may be executed by one or more processors, such as one or more DSPs, general-purpose microprocessors, ASICs, FPGAs, or other equivalent integrated or discrete logic circuits. Therefore, the terms “processor” and “processing circuit” as used herein may refer to any of the above-described structures or any other structure suitable for implementing the techniques described herein. In addition, in some embodiments, the functions described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a composite codec. Furthermore, the techniques may be fully implemented in one or more circuits or logic elements.

[0234] The techniques of this disclosure can be implemented in a wide variety of devices or apparatus, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). While various components, modules, or units have been described in this disclosure to highlight the functional aspects of devices configured to perform the disclosed techniques, they do not necessarily require implementation by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit, or they may be provided by a set of interoperable hardware units, including one or more processors as described above, along with suitable software and / or firmware.

[0235] We have described various examples. These and other examples fall within the scope of the following claims. [Explanation of symbols]

[0236] 100 video encoding and decoding systems, systems 102 Source Device 104 Video Sources 106 memory 108 Output Interfaces 110 Computer-readable media 112 Storage Devices 114 File Server 116 Destination device 118 Display Devices 120 memory 122 Input Interfaces 130 Quadriary-Bidriary (QTBT) Structure, QTBT Structure 132 Coding Tree Unit (CTU), CTU 200 video encoders 202 Mode Selection Unit 204 Residual Generation Unit 206 Conversion Processing Unit 208 Quantization Units 210 Inverse Quantization Unit 212 Inverse Transform Processing Unit 214 Reconfiguration Unit 216 Filter Unit 218 Decoded Picture Buffer (DPB), DPB 220 Entropy Coding Units 222 Motion Estimation Unit 224 Motion Compensation Unit 226 Intra Prediction Units 230 video data memory 300 video decoders 302 Entropy Decoding Unit 304 Predictive Processing Unit 306 Inverse Quantization Unit 308 Inverse Transform Processing Unit 310 Reconfiguration Unit 312 Filter Unit 314 Decoded Picture Buffer (DPB), DPB 316 Motion Compensation Unit 318 Intra Prediction Units 320 Encoded Picture Buffer (CPB) memory, CPB memory 400 CU 402 CU

Claims

1. A method for decoding video data, A step of constructing a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes, the first entry in the total most probable mode list is a planar mode, and the step of constructing the total most probable mode list is The steps include adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, The steps include adding a plurality of intra-prediction modes offset from each of the intra-prediction modes from each of the adjacent blocks to the total most probable mode list. Steps including, A step of constructing a linearly most likely mode list from the first Np entries in the total most likely mode list, wherein Np is less than N. The steps include constructing a quadratic most likely mode list from the remaining (N-Np) entries in the aforementioned total most likely mode list, A step of determining the current intra-predictive mode for the current block of video data using the primary most probable mode list or the secondary most probable mode list, The step of determining the current intra prediction mode is, A step of decoding an index to the primary most probable mode list or the secondary most probable mode list, wherein the index indicates a non-planar intra-predictive mode in the primary most probable mode list or the secondary most probable mode list; A step of determining the current intra-prediction mode for the current block of video data based on the index. Includes, The step of decrypting the aforementioned index is A step of determining a context for entropy decoding a first bin of an index based on a coding tool used for the current block of video data, wherein the coding tool is typically an intra-prediction mode, an intra-subpartition mode, or a multiple reference line mode, and determining the context includes deciding to use a first value for the context in the typically intra-prediction mode, a second value for the context in the intra-subpartition mode, and a third value for the context in the multiple reference line mode. The steps of entropy decoding the first bin of the index using the aforementioned context and Steps including, To generate a decoded block of video data, the steps include: decoding the current block of video data using the current intra prediction mode; A method that includes this.

2. The method according to claim 1, wherein N is 22 and Np is 6.

3. The method according to claim 1, wherein the step of adding each of the intra-predictive modes from each of the adjacent blocks of the current block of video data to the total most probable mode list includes adding each of the intra-predictive modes from each of the adjacent blocks of the current block of video data to the total most probable mode list based on the fact that each of the intra-predictive modes is available and has not yet been added to the total most probable mode list.

4. The step of determining the current intra-predictive mode for the current block of video data using the primary most probable mode list or the secondary most probable mode list is: The steps include: decoding a syntax element that indicates the current most likely mode list from either the primary most likely mode list or the secondary most likely mode list; The steps include: decrypting the index to the current most likely mode list; The steps of determining the current intra-prediction mode from the index to the current most probable mode list, and The method according to claim 1, including the method described in claim 1.

5. The method according to claim 1, further comprising the step of displaying a picture containing the decoded blocks of video data.

6. A device configured to decode video data, Memory configured to store the current block of video data, One or more processors implemented in the circuit and communicating with the memory The system includes, and the one or more processors Constructing a total most probable mode list containing N entries, wherein the N entries in the total most probable mode list are intra-predictive modes, the first entry in the total most probable mode list is a planar mode, and constructing the total most probable mode list is Adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, Adding a plurality of intra-prediction modes offset from each of the intra-prediction modes from each of the adjacent blocks to the total most probable mode list. This includes building, Constructing a linear most likely mode list from the first Np entries in the total most likely mode list, wherein Np is less than N. Constructing a quadratic most likely mode list from the remaining (N-Np) entries in the aforementioned total most likely mode list, Determining the current intra-predictive mode for the current block of video data using the primary most probable mode list or the secondary most probable mode list, Determining the current intra-prediction mode is Decoding an index to the primary most probable mode list or the secondary most probable mode list, wherein the index indicates a non-planar intra-predictive mode within the primary most probable mode list or the secondary most probable mode list. Based on the aforementioned index, the current intra-prediction mode for the current block of video data is determined. Includes, Decoding the aforementioned index Determining a context for entropy decoding a first bin of an index based on a coding tool used for the current block of video data, wherein the coding tool is typically an intra-prediction mode, an intra-subpartition mode, or a multiple reference line mode, and determining the context includes determining to use a first value for the context in the typically intra-prediction mode, a second value for the context in the intra-subpartition mode, and a third value for the context in the multiple reference line mode. Using the aforementioned context, entropy decode the first bin of the index. This includes making a decision, To generate a decoded block of video data, the current block of video data is decoded using the current intra prediction mode. A device configured to perform the following actions.

7. The apparatus according to claim 6, wherein N is 22 and Np is 6.

8. In order to add the respective intra-prediction modes from each adjacent block of the current block of video data to the total most probable mode list, one or more processors The apparatus according to claim 6, further configured to add each of the intra-prediction modes from each of the adjacent blocks of the current block of video data to the total most probable mode list, based on the fact that each of the intra-prediction modes is available and has not yet been added to the total most probable mode list.

9. To determine the current intra-predictive mode for the current block of video data using the primary most probable mode list or the secondary most probable mode list, one or more processors: Decoding a syntax element that indicates the current most likely mode list from either the primary most likely mode list or the secondary most likely mode list, Decrypting the index to the current most probable mode list, Determining the current intra-prediction mode from the index to the current most probable mode list. The apparatus according to claim 6, further configured to perform the following:

10. A display configured to display a picture containing the decoded blocks of video data. The apparatus according to claim 6, further comprising:

11. A non-temporary computer-readable storage medium storing instructions, wherein, when the instructions are executed, they cause one or more processors configured to decode video data to perform the method according to any one of claims 1 to 5.

12. A method for encoding video data, A step of constructing a total most probable mode list containing N entries, wherein the N entries of the total most probable mode list are intra-predictive modes, the first entry in the total most probable mode list is a planar mode, and the step of constructing the total most probable mode list is The steps include adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, The steps include adding a plurality of intra-prediction modes offset from each of the intra-prediction modes from each of the adjacent blocks to the total most probable mode list. Steps including, A step of constructing a linearly most likely mode list from the first Np entries in the total most likely mode list, wherein Np is less than N. The steps include constructing a quadratic most likely mode list from the remaining (N-Np) entries in the aforementioned total most likely mode list, A step of determining the current intra-predictive mode for the current block of video data using the primary most probable mode list or the secondary most probable mode list, The step of determining the current intra prediction mode is, A step of encoding an index to the primary most probable mode list or the secondary most probable mode list, wherein the index indicates a non-planar intra-predictive mode in the primary most probable mode list or the secondary most probable mode list. A step of determining the current intra-prediction mode for the current block of video data based on the index. Includes, The step of encoding the aforementioned index is A step of determining a context for entropy coding a first bin of an index based on a coding tool used for the current block of video data, wherein the coding tool is typically an intra-predictive mode, an intra-subpartition mode, or a multiple reference line mode, and determining the context includes determining to use a first value for the context in the typically intra-predictive mode, a second value for the context in the intra-subpartition mode, and a third value for the context in the multiple reference line mode. The steps of entropy encoding the first bin of the index using the aforementioned context and Steps including, To generate an encoded block of video data, the steps include: encoding the current block of video data using the current intra-prediction mode; A method that includes this.

13. A device configured to encode video data, Memory configured to store the current block of video data, One or more processors implemented in the circuit and communicating with the memory The system includes, and the one or more processors Constructing a total most probable mode list containing N entries, wherein the N entries in the total most probable mode list are intra-predictive modes, the first entry in the total most probable mode list is a planar mode, and constructing the total most probable mode list is Adding each intra-prediction mode from each adjacent block of the current block of video data to the total most probable mode list, Adding a plurality of intra-prediction modes offset from each of the intra-prediction modes from each of the adjacent blocks to the total most probable mode list. This includes building, Constructing a linear most likely mode list from the first Np entries in the total most likely mode list, wherein Np is less than N. Constructing a quadratic most likely mode list from the remaining (N-Np) entries in the aforementioned total most likely mode list, Determining the current intra-predictive mode for the current block of video data using the primary most probable mode list or the secondary most probable mode list, Determining the current intra-prediction mode is Encoding an index to the primary most probable mode list or the secondary most probable mode list, wherein the index represents a non-planar intra-predictive mode within the primary most probable mode list or the secondary most probable mode list. Based on the aforementioned index, the current intra-prediction mode for the current block of video data is determined. Includes, Encoding the aforementioned index Determining a context for entropy coding a first bin of an index based on a coding tool used for the current block of video data, wherein the coding tool is typically one of intra-predictive mode, intra-subpartition mode, or multiple reference line mode, and determining the context includes determining to use a first value for the context in typical intra-predictive mode, a second value for the context in intra-subpartition mode, and a third value for the context in multiple reference line mode. Entropy coding the first bin of the index using the aforementioned context and This includes making a decision, To generate an encoded block of video data, the current block of video data is encoded using the current intra-prediction mode. A device configured to perform the following actions.