Signaling of matrix intra prediction parameters in video coding
By determining a union of default and additional MIP parameter sets, the method improves coding efficiency and reduces complexity in video coding, addressing suboptimal performance of predefined MIP sets.
Patent Information
- Application Number
- CN202080043723.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-06-18
- Filing Date
- 2020-06-19
- Publication Date
- 2024-12-13
- Estimated Expiration
- 2040-06-19
AI Technical Summary
Existing video coding techniques using predefined matrix intra prediction (MIP) parameter sets may not be optimal for all types of blocks, leading to suboptimal coding efficiency, and increasing decoder complexity and signaling cost.
Implementing a method to determine a union of default and additional MIP parameter sets, allowing selection of new MIP modes for improved coding efficiency, while reducing decoder complexity and signaling costs.
Enhances coding efficiency by selecting optimal MIP modes for different block types, reducing decoder complexity and signaling costs, and enabling content-specific tuning of MIP modes.
Smart Images

Figure CN114009020B_ABST
Abstract
Description
[0001] This application claims priority to U.S. Patent Application No. 16 / 905,182, filed on June 18, 2020, which claims priority to U.S. Provisional Patent Application No. 62 / 865,077, filed on June 21, 2019, U.S. Provisional Patent Application No. 62 / 868,754, filed on June 28, 2019, and U.S. Provisional Patent Application No. 62 / 872,070, filed on July 9, 2019, the entire contents of each of the above applications are incorporated by reference. Technical Field
[0002] The present disclosure relates to video encoding and video decoding. Background Art
[0003] Digital video capabilities may be incorporated into a wide range of devices, including digital televisions, digital live 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 game devices, video game consoles, cellular or satellite wireless telephones, so-called "smart phones", video teleconferencing devices, video streaming devices, etc. Digital video devices implement video coding techniques (such as those described in 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 of such standards). By implementing such video coding techniques, video devices may more efficiently send, 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 remove redundancy inherent in video sequences. For block-based video coding, a video slice (e.g., a video picture or a portion of a video picture) may be partitioned into video blocks, which may also be referred to as coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in an intra-coded (I) slice of a picture are encoded using spatial prediction relative to reference samples in neighboring blocks in the same picture. Video blocks in an inter-coded (P or B) slice of a picture may use spatial prediction relative to reference samples in neighboring blocks in the same picture or temporal prediction relative to reference samples in other reference pictures. Pictures may be referred to as frames, and reference pictures may be referred to as reference frames. Summary of the invention
[0005] In summary, the present disclosure describes techniques for intra prediction, including deriving and signaling an affine linear weighted intra prediction (ALWIP) mode (also referred to as matrix intra prediction (MIP)). Typically, MIP is performed using a set of MIP modes. Each of the MIP modes corresponds to a different predefined MIP parameter set. However, the predefined MIP parameter set may not be optimal for all types of blocks. For example, a MIP parameter set outside the predefined MIP parameter set may result in higher coding efficiency for a particular block. As described in the present disclosure, the available MIP parameter sets for a picture may include predefined MIP parameter sets, and may also include additional MIP parameter sets associated with a new MIP mode. Using such additional MIP parameter sets may improve coding efficiency.
[0006] In one example, the present disclosure describes a method of decoding video data, the method comprising: obtaining a bitstream comprising an encoded representation of the video data encoded using a codec; determining a plurality of available matrix intra prediction (MIP) parameter sets (MPSs) for a picture of the video data, wherein: the plurality of available MPSs are a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, each of the default MPSs being associated with a predefined MIP mode in the codec, and each additional MPS in the set of additional MPSs being associated with a new MIP mode in a set of new MIP modes; generating a prediction block for a current block of the picture using a MIP mode associated with an MPS in the plurality of available MPSs; and reconstructing the current block based on the prediction block for the current block and residual data for the current block.
[0007] In another example, the present disclosure describes a method for encoding video data using a codec, the method comprising: determining a plurality of available matrix intra prediction (MIP) parameter sets (MPSs) for a picture of the video data, wherein: the plurality of available MPSs is a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, each of the default MPSs being associated with a predefined MIP mode in the codec, and each additional MPS in the set of additional MPSs being associated with a new MIP mode; signaling the set of additional MPSs in a bitstream comprising an encoded representation of the video data; generating a prediction block for a current block of the picture using a MIP mode associated with an MPS from the plurality of available MPSs; and generating residual data for the current block based on the prediction block for the current block and samples of the current block.
[0008] In another example, the present disclosure describes a device for decoding video data, the device comprising: a memory for storing the video data; and one or more processors implemented in circuits, the one or more processors configured to: obtain a bitstream comprising an encoded representation of the video data encoded using a codec; determine a plurality of available matrix intra prediction (MIP) parameter sets (MPSs) for a picture of the video data, wherein: the plurality of available MPSs are a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, each of the default MPSs being associated with a predefined MIP mode in the codec, and each additional MPS in the set of additional MPSs being associated with a new MIP mode in a set of new MIP modes; generate a prediction block for a current block of the picture using a MIP mode associated with an MPS in the plurality of available MPSs; and reconstruct the current block based on the prediction block for the current block and residual data for the current block.
[0009] In another example, the present disclosure describes a device for encoding video data using a codec, the device comprising: a memory for storing the video data; and one or more processors implemented in circuits, the one or more processors configured to: determine a plurality of available matrix intra prediction (MIP) parameter sets (MPSs) for a picture of the video data, wherein: the plurality of available MPSs are a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, each of the default MPSs being associated with a predefined MIP mode in the codec, and each additional MPS in the set of additional MPSs being associated with a new MIP mode; signaling the set of additional MPSs in a bitstream comprising an encoded representation of the video data; generating a prediction block for a current block of the picture using a MIP mode associated with an MPS in the plurality of available MPSs; and generating residual data for the current block based on the prediction block for the current block and samples of the current block.
[0010] In another example, the present disclosure describes an apparatus for decoding video data, the apparatus comprising: a unit for obtaining a bitstream comprising an encoded representation of the video data encoded using a codec; a unit for determining a plurality of available matrix intra prediction (MIP) parameter sets (MPSs) for a picture of the video data, wherein: the plurality of available MPSs is a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, each of the default MPSs being associated with a predefined MIP mode in the codec, and each additional MPS in the set of additional MPSs being associated with a new MIP mode in a set of new MIP modes; a unit for generating a prediction block for a current block of the picture using a MIP mode associated with an MPS in the plurality of available MPSs; and a unit for reconstructing the current block based on the prediction block for the current block and residual data for the current block.
[0011] In another example, the present disclosure describes an apparatus for encoding video data using a codec, the apparatus comprising: a unit for determining a plurality of available matrix intra prediction (MIP) parameter sets (MPSs) for a picture of the video data, wherein: the plurality of available MPSs is a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, each of the default MPSs being associated with a predefined MIP mode in the codec, and each additional MPS in the set of additional MPSs being associated with a new MIP mode; a unit for signaling the set of additional MPSs in a bitstream comprising an encoded representation of the video data; a unit for generating a prediction block for a current block of the picture using a MIP mode associated with an MPS in the plurality of available MPSs; and a unit for generating residual data for the current block based on the prediction block for the current block and samples of the current block.
[0012] In another example, the present disclosure describes a computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors to perform the following operations: obtain a bitstream comprising an encoded representation of the video data encoded using a codec; determine a plurality of available matrix intra prediction (MIP) parameter sets (MPSs) for a picture of the video data, wherein: the plurality of available MPSs are a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, each of the default MPSs being associated with a predefined MIP mode in the codec, and each additional MPS in the set of additional MPSs being associated with a new MIP mode in a set of new MIP modes; generate a prediction block for a current block of the picture using a MIP mode associated with an MPS in the plurality of available MPSs; and reconstruct the current block based on the prediction block for the current block and residual data for the current block.
[0013] In another example, the present disclosure describes a computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors to perform the following operations: determine a plurality of available matrix intra prediction (MIP) parameter sets (MPSs) for a picture of the video data, wherein: the plurality of available MPSs are a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, each of the default MPSs being associated with a predefined MIP mode in the codec, and each additional MPS in the set of additional MPSs being associated with a new MIP mode; signal the set of additional MPSs in a bitstream including an encoded representation of the video data; generate a prediction block for a current block of the picture using a MIP mode associated with an MPS in the plurality of available MPSs; and generate residual data for the current block based on the prediction block for the current block and samples of the current block.
[0014] The details of one or more examples are set forth in the accompanying drawings and the description below.Other features, objects, and advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0015] Figure 1 is a block diagram illustrating an example video encoding and decoding system that may perform the techniques of this disclosure.
[0016] Figure 2 is a conceptual diagram showing the intra prediction direction in which the arrow points to the reference sample.
[0017] Figure 3 is a conceptual diagram of an example 8x4 rectangular block, where instead of using "closer" reference samples, farther reference samples may be used.
[0018] Figure 4 is a conceptual diagram showing a wide-angle intra prediction mode.
[0019] Figure 5 , 6 7 and 8 are conceptual diagrams illustrating a mode mapping process for an intra prediction mode outside a diagonal direction range.
[0020] Figure 8 is a conceptual diagram showing wide angles (-1 to -14 and 67 to 80) other than modes 2 and 66 (93 angle modes in total).
[0021] Fig. 9 is a table that provides specifications for intra prediction angles.
[0022] Fig.10is a conceptual diagram of example partitioning of 4x8 blocks and 8x4 blocks.
[0023] Fig.11 is a conceptual diagram of an example partitioning of all blocks except blocks of size 4x8, 8x4, and 4x4.
[0024] Fig.12 is a conceptual diagram illustrating reference samples from multiple reference rows that may be used for intra prediction of a coding block.
[0025] Fig.13 An example of DC-mode PDPC weights for sample positions (0,0) and (1,0) within a 4x4 block is shown.
[0026] Fig.14 is a conceptual diagram showing the intra prediction angle mode.
[0027] Fig.15 is a conceptual diagram showing a diagonal upper right mode.
[0028] Fig.16 is a conceptual diagram showing a diagonal lower left mode.
[0029] Fig.17 is a conceptual diagram showing the adjacent diagonal upper right mode.
[0030] Fig.18 is a conceptual diagram showing the adjacent diagonal lower left mode.
[0031] Fig.19 is a conceptual diagram of an example of an affine weighted linear intra prediction (ALWIP) process on an 8x8 block.
[0032] Fig. 20 is a block diagram illustrating an example video encoder that may perform the techniques of this disclosure.
[0033] Fig.21 is a block diagram illustrating an example video decoder that may perform the techniques of this disclosure.
[0034] Fig. 22 is a flowchart illustrating an example method for encoding a current block in accordance with one or more techniques of this disclosure.
[0035] Fig.23 is a flow chart illustrating an example method for decoding a current block of video data, in accordance with one or more techniques of this disclosure.
[0036] Fig.24 is a flow diagram illustrating example operation of a video encoder to encode a block using MIP mode in accordance with one or more techniques of this disclosure.
[0037] Fig.25 is a flow diagram illustrating example operation of a video decoder to decode a block using MIP mode in accordance with one or more techniques of this disclosure. DETAILED DESCRIPTION
[0038] Matrix intra prediction (MIP) is a technique adopted into general video coding (VVC). MIP can also be referred to as "affine linear weighted intra prediction" (ALWIP). MIP is a form of intra prediction in which a prediction block is generated by downsampling the reference samples of the block, multiplying the vector of reference samples by a matrix and adding a bias vector, mapping the resulting sample values to predetermined positions within the prediction block, and performing linear interpolation on the sample values in the prediction block in some examples to determine the sample values for the remaining positions within the prediction block. The vector of reference samples can be a downsampled set of reference samples. For some types of blocks, using MIP can result in better decoding efficiency, but for other types of blocks, conventional intra prediction techniques can result in better decoding efficiency than MIP. Therefore, some blocks within a picture can be decoded using MIP, and some blocks within a picture can be decoded using conventional intra prediction techniques (such as plane intra prediction mode, DC intra prediction mode, or directional intra prediction mode).
[0039] The following document is the latest draft of VVC: Bross et al., "Versatile Video Coding (Draft 5)", Joint Video Experts Group (JVET) of ITU-T SG 16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 14th Meeting: Geneva, Switzerland, March 19-27, 2019, JVET-N1001-v8 (hereinafter referred to as "VVC Draft 5"). VVC Draft 5 uses several predefined matrices to generate prediction blocks when using MIP. The video encoder can signal an index that indicates which of the predefined matrices will be used to generate a prediction block for a block encoded using MIP. Since different blocks have different characteristics, different matrices can generate more accurate prediction blocks for different blocks. Therefore, when there are more matrices to choose from in the MIP, decoding efficiency can be improved. However, storing more predefined matrices may increase the cost and complexity of the video decoder, and may increase the cost of signaling the index.
[0040] The present disclosure describes techniques that can solve one or more of these problems. For example, a video encoder can determine multiple available MIP parameter sets (MPS) for a picture of video data. The multiple available MPSs are the union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs. Each default MPS in the default MPS is associated with a predefined MIP mode in the codec. Each additional MPS in the set of additional MPSs is associated with a new MIP mode. The present disclosure refers to MIP modes other than predefined MIP modes as new MIP modes. The video encoder can signal a set of additional MPSs in a bitstream that includes an encoded representation of the video data. In addition, the video encoder can use a MIP mode associated with an MPS in the multiple available MPSs to generate a prediction block for a current block of the picture. The video encoder can generate residual data for the current block based on the prediction block for the current block and the samples of the current block.
[0041] Similarly, a video decoder can obtain a bitstream including a coded representation of video data encoded using a codec. The video decoder can determine multiple available MPSs for pictures of the video data. Multiple available MPSs are the union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream. Each default MPS in the default MPS is associated with a predefined MIP mode in the codec. Each additional MPS in the set of additional MPSs is associated with a new MIP mode in the set of new MIP modes. In this example, the video decoder can use a MIP mode associated with an MPS in multiple available MPSs to generate a prediction block for a current block of a picture. The video decoder can reconstruct the current block based on the prediction block for the current block and the residual data for the current block.
[0042] Thus, techniques of this disclosure may allow flexibility in selecting between a MIP mode corresponding to a default MPS or a MIP mode corresponding to an additional MPS, which may improve coding efficiency because the video encoder may be able to select a MIP mode with a matrix that results in better coding efficiency (compared to when the video encoder is restricted to a set of predefined MIP modes). Furthermore, in some examples, the video encoder may be able to train or tune an MPS corresponding to a new MIP mode specifically for the content being encoded by the video encoder.
[0043] Figure 11 is a block diagram illustrating an example video encoding and decoding system 100 that can perform the techniques of the present disclosure. In general, the techniques of the present disclosure relate to coding (encoding and / or decoding) video data. In general, video data includes any data used to process video. Thus, video data can include original unencoded video, encoded video, decoded (e.g., reconstructed) video, and video metadata (such as signaling data).
[0044] like Figure 1 As shown, in this example, system 100 includes 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 include any of a wide variety of devices, including desktop computers, notebook computers (i.e., laptop computers), tablet computers, mobile devices (e.g., notebook computers (i.e., laptop computers), tablet computers, telephone handsets (such as smart phones, cameras, or other types of devices configured to support wireless communication), set-top boxes, televisions, broadcast receiver devices, cameras, display devices, digital media players, video game consoles, video streaming devices, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication and, therefore, may be referred to as wireless communication devices.
[0045] exist Figure 1 In the example of , the source device 102 includes a video source 104, a memory 106, a video encoder 200, and an output interface 108. The 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, the video encoder 200 of the source device 102 and the video decoder 300 of the destination device 116 can be configured to apply a technique for performing intra-frame prediction (including the derivation and signaling of a mode for linear weighted intra-frame prediction). Therefore, the source device 102 represents an example of a video encoding device, and the destination device 116 represents an example of a video decoding device. In other examples, the source device and the destination device may include other components or arrangements. For example, the source device 102 may receive video data from an external video source such as an external camera. Similarly, the destination device 116 may be docked with an external display device instead of including an integrated display device.
[0046] exist Figure 1The system 100 shown in is only one example. In general, any digital video encoding and / or decoding device can perform techniques for intra-frame prediction (including the derivation and signaling of a mode for linear weighted intra-frame prediction). The source device 102 and the destination device 116 are only examples of such decoding devices, wherein the source device 102 generates decoded video data for transmission to the destination device 116. The present disclosure refers to a "decoding" device as a device that performs decoding (e.g., encoding and / or decoding) of data. Therefore, the video encoder 200 and the video decoder 300 represent examples of decoding devices (specifically, video encoders and video decoders), respectively. In some examples, the devices 102 and 116 can operate in a substantially symmetrical manner, so that each of the devices 102 and 116 includes video encoding and decoding components. Therefore, the system 100 can support unidirectional or bidirectional video transmission between video devices 102 and 116, for example, for video streaming, video playback, video broadcasting, or video telephony.
[0047] Typically, video source 104 represents the source of video data (i.e., original, unencoded video data), and provides a series of pictures (also referred to as "frames") of the order of the video data to video encoder 200, which encodes the data for the pictures. The video source 104 of source device 102 may include a video capture device, such as a camera, a video archive unit containing previously captured original video, and / or a video feed interface for receiving video from a video content provider. As another alternative, video source 104 may generate computer graphics-based data as source video, or a combination of real-time video, archived video, and computer-generated video. In each case, video encoder 200 may encode captured, pre-captured, or computer-generated video data. Video encoder 200 may rearrange pictures from the received order (sometimes referred to as "display order") to a decoding order for decoding. Video encoder 200 may generate a bitstream comprising encoded video data. Source device 102 may then output the encoded video data onto computer-readable medium 110 via output interface 108 to be received and / or retrieved by, for example, input interface 122 of destination device 116 .
[0048] The memory 106 of the source device 102 and the memory 120 of the destination device 116 represent general purpose memories. In some examples, the memories 106, 120 can store original video data, for example, original video from the video source 104 and original decoded video data from the video decoder 300. In addition or alternatively, the memories 106, 120 can store software instructions that can be executed by, for example, the video encoder 200 and the video decoder 300, respectively. Although the memory 106 and the memory 120 are shown as separate from the video encoder 200 and the video decoder 300 in this example, it should be understood that the video encoder 200 and the video decoder 300 can also include internal memories for functionally similar or equivalent purposes. In addition, the memories 106, 120 can store, for example, encoded video data output from the video encoder 200 and input to the video decoder 300. In some examples, portions of the memories 106, 120 can be allocated as one or more video buffers, for example, to store original decoded and / or encoded video data.
[0049] The computer-readable medium 110 may represent any type of medium or device capable of transmitting the encoded video data from the source device 102 to the destination device 116. In one example, the computer-readable medium 110 represents a communication medium that enables the source device 102 to directly send the encoded video data to the destination device 116 in real time, for example, via a radio frequency network or a computer-based network. The output interface 108 may modulate the transmission signal including the encoded video data according to a communication standard such as a wireless communication protocol, and the input interface 122 may demodulate the received transmission information according to a communication standard such as a wireless communication protocol. The communication medium may include any wireless or wired communication medium, for example, a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form a portion 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 a router, a switch, a base station, or any other device that may be useful for facilitating communication from the source device 102 to the destination device 116.
[0050] In some examples, computer-readable medium 110 may include storage device 112. Source device 102 may output the encoded data from output interface 108 to storage device 112. Similarly, destination device 116 may access the encoded data from storage device 112 via input interface 122. 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.
[0051] In some examples, the computer-readable medium 110 may include a file server 114 or another intermediate storage device that can store the encoded video data generated by the source device 102. The source device 102 may output the encoded video data to the file server 114 or another intermediate storage device that can store the encoded video generated by the source device 102. The destination device 116 may access the stored video data from the file server 114 via streaming or downloading. The file server 114 may be any type of server device capable of storing the encoded video data and sending the encoded video data to the destination device 116. The file server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. The destination device 116 may access the encoded video data from the file server 114 via any standard data connection (including an Internet connection). This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of the two suitable for accessing the encoded video data stored on the file server 114. The file server 114 and the input interface 122 may be configured to operate according to a streaming transfer protocol, a download transfer protocol, or a combination thereof.
[0052] Output interface 108 and input interface 122 may represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components that operate according to any of a variety of IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 may be configured to transmit data (such as encoded video data) according to a cellular communication standard (such as 4G, 4G-LTE (Long Term Evolution), Advanced LTE, 5G, etc.). In some examples where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 may be configured to transmit data (such as encoded video data) according to other wireless standards (such as IEEE 802.11 specifications, IEEE 802.15 specifications (e.g., ZigBee TM ), Bluetooth TMStandards, etc.) to transmit data (such as encoded video data). In some examples, source device 102 and / or destination device 116 may include corresponding system-on-chip (SoC) devices. For example, source device 102 may include a SoC device for performing the functions assigned to video encoder 200 and / or output interface 108, and destination device 116 may include a SoC device for performing the functions assigned to video decoder 300 and / or input interface 122.
[0053] The techniques of the present disclosure may be applied to video decoding to support 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 onto a data storage medium, decoding of digital video stored on a data storage medium, or other applications.
[0054] The input interface 122 of the destination device 116 receives the encoded video bitstream from the 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 such as the following syntax elements defined by the video encoder 200 (which are also used by the video decoder 300): the syntax elements have values that describe the characteristics and / or processing of video blocks or other decoding units (e.g., slices, pictures, groups of pictures, sequences, etc.). The display device 118 displays the decoded pictures of the decoded video data to the user. The display device 118 can represent any of a variety of display devices, such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device.
[0055] Despite Figure 1 2, but in some examples, the video encoder 200 and the video decoder 300 may each be integrated with an audio encoder and / or an audio decoder, and may include appropriate MUX-DEMUX units or other hardware and / or software to process multiplexed streams including both audio and video in a common data stream. If applicable, the MUX-DEMUX units may follow the ITU H.223 multiplexer protocol or other protocols such as the User Datagram Protocol (UDP).
[0056] The video encoder 200 and the video decoder 300 can each be implemented as any of a variety of 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 technology is partially implemented in software, the device can store instructions for the software in a suitable non-transitory computer-readable medium, and use one or more processors to execute the instructions in hardware to perform the technology of the present disclosure. Each of the video encoder 200 and the video decoder 300 can be included in one or more encoders or decoders, and any of the encoders or decoders can be integrated as part of a combined encoder / decoder (CODEC) in the corresponding device. The device including the video encoder 200 and / or the video decoder 300 can include an integrated circuit, a microprocessor, and / or a wireless communication device (such as a cellular phone).
[0057] The video encoder 200 and the video decoder 300 may operate according to a video coding standard such as the ITU-T H.265 (also known as the High Efficiency Video Coding (HEVC) standard) or an extension thereof such as a multi-view and / or scalable video coding extension. Alternatively, the video encoder 200 and the video decoder 300 may operate according to other proprietary or industry standards such as the Joint Exploration Test Model (JEM) or the ITU-T H.266 standard, also known as Versatile Video Coding (VVC). An important goal of VVC is to provide significant improvements in compression performance over the existing HEVC standard, thereby facilitating the deployment of higher quality video services and emerging applications such as 360° omnidirectional immersive multimedia and high dynamic range (HDR) video. The latest draft of the VVC standard is described in the following document: Bross et al., "Versatile Video Coding (Draft 5)", Joint Video Experts Group (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 14th Meeting: Geneva, Switzerland, March 19-27, 2019, JVET-N1001-v8 (hereinafter referred to as "VVC Draft 5"). However, the techniques of the present disclosure are not limited to any particular coding standard.
[0058] Typically, the video encoder 200 and the video decoder 300 can perform block-based decoding of the picture. The term "block" generally refers to a structure that includes data to be processed (e.g., to be encoded, decoded, or otherwise used in the encoding and / or decoding process). For example, a block may include a two-dimensional matrix of samples of luminance and / or chrominance data. Typically, the video encoder 200 and the video decoder 300 can decode video data represented in a YUV (e.g., Y, Cb, Cr) format. That is, instead of decoding red, green, and blue (RGB) data for samples of a picture, the video encoder 200 and the video decoder 300 can decode luminance and chrominance components, wherein the chrominance components may include both red hue and blue hue chrominance components. In some examples, the video encoder 200 converts the received RGB formatted data to a YUV representation before encoding, and the video decoder 300 converts the YUV representation to an RGB format. Alternatively, a pre-processing and post-processing unit (not shown) may perform these conversions.
[0059] In general, the present disclosure may relate to the decoding (e.g., encoding and decoding) of a picture to include the process of encoding or decoding data for the picture. Similarly, the present disclosure may relate to the decoding of a block of a picture to include the process of encoding or decoding data for the block (e.g., prediction and / or residual decoding). The encoded video bitstream typically includes a series of values for syntax elements that represent decoding decisions (e.g., decoding modes) and partitioning of the picture into blocks. Therefore, references to decoding a picture or a block should generally be understood as decoding the values of the syntax elements used to form the picture or the block.
[0060] HEVC defines various blocks, including coding units (CUs), prediction units (PUs), and transform units (TUs). According to HEVC, a video decoder (such as the video encoder 200) partitions a coding tree unit (CTU) into CUs according to a quadtree structure. That is, the video decoder partitions the CTU and the CU into four equal, non-overlapping squares, and each node of the quadtree has zero or four child nodes. A node without child nodes may be referred to as a "leaf node", and the CU of such a leaf node may include one or more PUs and / or one or more TUs. The video decoder may further partition the PU and TU. For example, in HEVC, a residual quadtree (RQT) represents a partition of a TU. In HEVC, a PU represents inter-frame prediction data, and a TU represents residual data. An intra-predicted CU includes intra-frame prediction information, such as an intra-frame mode indication.
[0061] As another example, the video encoder 200 and the video decoder 300 may be configured to operate according to JEM or VVC. According to JEM or VVC, a video decoder (such as the video encoder 200) partitions a picture into a plurality of coding tree units (CTUs). The video encoder 200 may partition the CTUs according to a tree structure (such as a quadtree-binary tree (QTBT) structure or a multi-type tree (MTT) structure). The QTBT structure removes the concept of multiple partition types, such as the separation between CU, PU, and TU of HEVC. The QTBT structure includes two levels: a first level partitioned according to quadtree partitioning, and a second level partitioned according to binary tree partitioning. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of the binary tree correspond to coding units (CUs).
[0062] In the MTT segmentation structure, blocks can be segmented using quadtree (QT) segmentation, binary tree (BT) segmentation, and one or more types of ternary tree (TT) segmentation. A ternary tree segmentation is a segmentation in which a block is divided into three sub-blocks. In some examples, the ternary tree segmentation divides the block into three sub-blocks without dividing the original block through the center. The segmentation types in MTT (e.g., QT, BT, and TT) can be symmetric or asymmetric.
[0063] In some examples, the video encoder 200 and the video decoder 300 may use a single QTBT or MTT structure to represent each of the luma component and the chroma components, while in other examples, the video encoder 200 and the video decoder 300 may use two or more QTBT or MTT structures, such as one QTBT / MTT structure for the luma component and another QTBT / MTT structure for the two chroma components (or two QTBT / MTT structures for the respective chroma components).
[0064] The video encoder 200 and the video decoder 300 may be configured to use quadtree segmentation, QTBT segmentation, MTT segmentation, or other segmentation structures according to HEVC. For the purpose of explanation, a description of the technology of the present disclosure is given with respect to QTBT segmentation. However, it should be understood that the technology of the present disclosure may also be applied to a video decoder configured to use quadtree segmentation or also use other types of segmentation.
[0065] Blocks (e.g., CTUs or CUs) may be grouped in a picture in various ways. As an example, a brick may refer to a rectangular area of a CTU row within a particular tile in a picture. A tile may be a rectangular area of a CTU within a particular tile column and a particular tile row in a picture. A tile column refers to a rectangular area of a CTU having a height equal to the height of the picture and a width specified by a syntax element (e.g., such as in a picture parameter set). A tile row refers to a rectangular area of a CTU having a height specified by a syntax element (e.g., such as in a picture parameter set) and a width equal to the width of the picture.
[0066] In some examples, a tile may be partitioned into multiple bricks, each of which may include one or more CTU rows within the tile. Tiles that are not partitioned into multiple bricks may also be referred to as bricks. However, bricks that are true subsets of tiles may not be referred to as tiles.
[0067] Tiles in a picture can also be arranged in slices. A slice can be an integer number of tiles of a picture that can be uniquely contained in a single network abstraction layer (NAL) unit. In some examples, a slice includes a continuous sequence of multiple complete tiles or only complete tiles of one tile.
[0068] This disclosure may use "NxN" and "N by N" interchangeably to refer to the sample size of a block (such as a CU or other video block) in terms of vertical and horizontal dimensions, for example, 16x16 samples or 16 by 16 samples. Typically, a 16x16 CU will have 16 samples in the vertical direction (y=16) and 16 samples in the horizontal direction (x=16). Similarly, an NxNCU typically has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer value. The samples in a CU may be arranged in rows and columns. In addition, a CU does not necessarily need to have the same number of samples in the horizontal direction as in the vertical direction. For example, a CU may include NxM samples, where M is not necessarily equal to N.
[0069] The video encoder 200 encodes video data representing prediction and / or residual information and other information for a CU. The prediction information indicates how the CU will be predicted in order to form a prediction block for the CU. The residual information typically represents the sample-by-sample difference between the samples of the CU before encoding and the prediction block.
[0070] In order to predict a CU, the video encoder 200 can generally form a prediction block for the CU by inter-frame prediction or intra-frame prediction. Inter-frame prediction generally refers to predicting a CU based on data of a previously decoded picture, while intra-frame prediction generally refers to predicting a CU based on previously decoded data of the same picture. In order to perform inter-frame prediction, the video encoder 200 can use one or more motion vectors to generate a prediction block. The video encoder 200 can generally perform motion search to identify a reference block that closely matches the CU, for example, in terms of the difference between the CU and the reference block. The video encoder 200 can use the sum of absolute differences (SAD), the sum of squared differences (SSD), the mean absolute difference (MAD), the mean square difference (MSD), or other such difference calculations to calculate a difference metric to determine whether the reference block closely matches the current CU. In some examples, the video encoder 200 can use unidirectional prediction or bidirectional prediction to predict the current CU.
[0071] Some examples of JEM or VVC also provide an affine motion compensation mode, which can be considered an inter-frame prediction mode. In the affine motion compensation mode, the video encoder 200 can determine two or more motion vectors representing non-translational motion (such as zooming in or out, rotation, perspective motion, or other irregular motion types).
[0072] In order to perform intra prediction, the video encoder 200 can select an intra prediction mode to generate a prediction block. Some examples of JEM or VVC provide sixty-seven intra prediction modes, including various directional modes, as well as plane modes and DC modes. Typically, the video encoder 200 selects an intra prediction mode that describes the neighboring samples of the current block according to which the samples of the current block (e.g., the block of the CU) are to be predicted. Assuming that the video encoder 200 decodes the CTU and CU in raster scan order (from left to right, from top to bottom), such samples can typically be above, above left, or to the left of the current block in the same picture as the current block.
[0073] The video encoder 200 encodes data representing a prediction mode for the current block. For example, for an inter-frame prediction mode, the video encoder 200 may encode data representing which inter-frame prediction mode of various available inter-frame prediction modes is used and motion information for the corresponding mode. For unidirectional or bidirectional inter-frame prediction, for example, the video encoder 200 may encode motion vectors using advanced motion vector prediction (AMVP) or merge mode. The video encoder 200 may use a similar mode to encode motion vectors for affine motion compensation mode.
[0074] After a prediction, such as intra prediction or inter prediction of a block, the video encoder 200 may calculate residual data for the block. The residual data, such as a residual block, represents the sample-by-sample difference between the block and a prediction block for the block, which is formed using a corresponding prediction mode. The video encoder 200 may apply one or more transforms to the residual block to produce transformed data in a transform domain rather than in a sample domain. For example, the video encoder 200 may apply a discrete cosine transform (DCT), an integer transform, a wavelet transform, or a conceptually similar transform to the residual video data. In addition, the video encoder 200 may apply a secondary transform, such as a mode-dependent non-separable secondary transform (MDNSST), a signal-dependent transform, a Karhunen-Loeve transform (KLT), etc., after the first transform. The video encoder 200 generates transform coefficients after applying one or more transforms.
[0075] As described above, after any transform to produce transform coefficients, the video encoder 200 may perform quantization of the transform coefficients. Quantization generally refers to a process in which transform coefficients are quantized to potentially reduce the amount of data used to represent the transform coefficients, thereby providing further compression. By performing the quantization process, the video encoder 200 may reduce the bit depth associated with some or all of the transform coefficients. For example, the video encoder 200 may round down 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.
[0076] After quantization, the video encoder 200 can scan the transform coefficients to generate a one-dimensional vector according to a two-dimensional matrix including the quantized transform coefficients. The scan can be designed to place the transform coefficients of higher energy (and therefore lower frequency) in front of the vector, and the transform coefficients of lower energy (and therefore higher frequency) are placed behind the vector. In some examples, the video encoder 200 can scan the quantized transform coefficients using a predefined scan order to generate a serialized vector, and then entropy encode the quantized transform coefficients of the vector. In other examples, the video encoder 200 can perform adaptive scanning. After scanning the quantized transform coefficients to form a one-dimensional vector, the video encoder 200 can entropy encode the one-dimensional vector, for example, according to context adaptive binary arithmetic coding (CABAC). The video encoder 200 can also entropy encode the values of the syntax elements used to describe the metadata associated with the encoded video data for use by the video decoder 300 when decoding the video data.
[0077] To perform CABAC, the video encoder 200 may assign context within a context model to a symbol to be transmitted. The context may relate to, for example, whether neighboring values of the symbol are zero values. The probability determination may be based on the context assigned to the symbol.
[0078] The video encoder 200 may also generate syntax data (such as block-based syntax data, picture-based syntax data, and sequence-based syntax data) for the video decoder 300, for example, in a picture header, a block header, a slice header, or other syntax data (such as a sequence parameter set (SPS), a picture parameter set (PPS), or a video parameter set (VPS). Likewise, the video decoder 300 may decode such syntax data to determine how to decode the corresponding video data.
[0079] In this way, the video encoder 200 can generate a bitstream that includes encoded video data, such as a syntax element describing the partitioning of a picture into blocks (e.g., CUs) and prediction and / or residual information for the blocks. Finally, the video decoder 300 can receive the bitstream and decode the encoded video data.
[0080] In general, the video decoder 300 performs a process that is reciprocal to the process performed by the video encoder 200 to decode the encoded video data of the bitstream. For example, the video decoder 300 may use CABAC to decode the values of the syntax elements for the bitstream in a manner substantially similar to the CABAC encoding process of the video encoder 200, but reciprocal. The syntax elements may define partitioning information for partitioning a picture into CTUs, and partitioning each CTU according to a corresponding partitioning structure (such as a QTBT structure) to define CUs of the CTUs. The syntax elements may also define prediction and residual information for a block (e.g., CU) of video data.
[0081] The residual information may be represented by, for example, quantized transform coefficients. The video decoder 300 may inverse quantize and inverse transform the quantized transform coefficients of the block to regenerate a residual block for the block. The video decoder 300 uses the signaled prediction mode (intra-frame prediction or inter-frame prediction) and related prediction information (e.g., motion information for inter-frame prediction) to form a prediction block for the block. The video decoder 300 may then combine the prediction block and the residual block (on a sample-by-sample basis) to regenerate the original block. The video decoder 300 may perform additional processing, such as performing a deblocking process to reduce visual artifacts along the boundaries of the blocks.
[0082] The video encoder 200 and the video decoder 300 may implement any of the techniques of the present disclosure. For example, the video encoder 200 may determine a plurality of available MIP parameter sets (MPS) for a picture of the video data. The plurality of available MPSs are a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream. Each default MPS in the default MPS is associated with a predefined MIP mode in the codec. Each additional MPS in the set of additional MPSs is associated with a new MIP mode. The available MPSs do not need to include all default MPSs or each additional MPS signaled in the bitstream. In addition, the video encoder 200 may generate a prediction block for a current block of the picture using a MIP mode associated with an MPS in the plurality of available MPSs. The video encoder may generate residual data for the current block based on the prediction block for the current block and the sample of the current block.
[0083] Likewise, the video decoder 300 may obtain a bitstream including a coded representation of video data encoded using a codec. The video decoder 300 may determine multiple available MPSs for a picture of the video data. Multiple available MPSs are a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream. Each default MPS in the default MPS is associated with a predefined MIP mode in the codec. Each additional MPS in the set of additional MPSs is associated with a new MIP mode in a set of new MIP modes. The available MPSs do not need to include all default MPSs or each additional MPS signaled in the bitstream. In this example, the video decoder 300 may generate a prediction block for a current block of a picture using a MIP mode associated with an MPS in a plurality of available MPSs. The video decoder 300 may reconstruct the current block based on the prediction block for the current block and the residual data for the current block.
[0084] In general, the present disclosure may involve "signaling" certain information (such as syntax elements). The term "signaling" may generally refer to the transmission of values for syntax elements and / or other data used to decode encoded video data. That is, video encoder 200 may signal values for syntax elements in a bitstream. Generally, signaling refers to generating values in a bitstream. As described above, source device 102 may transmit the bitstream to destination device 116 in substantially real time or not in real time (such as may occur when storing syntax elements to storage device 112 for later retrieval by destination device 116).
[0085] As mentioned above, the video encoder 200 and the video decoder 300 may perform intra prediction to generate a prediction block for a block of video data. The video encoder 200 and the video decoder 300 may use several different intra prediction modes to generate the prediction block. For example, the intra prediction may include a DC prediction mode, a planar prediction mode, and a direction (or angle) prediction mode. In the Versatile Video Coding Test Model 2 (VTM2) (J. Chen, Y. Ye, S. Kim, "Algorithm description for Versatile Video Coding and Test Model 2 (VTM2)", the 11th JVET meeting, Ljubljana, Slovenia, July 2018, JVET-K1002), the direction prediction mode for a square block corresponds to a direction between -135 degrees and 45 degrees of the current block, as Figure 2 shown.
[0086] In VTM2, the block structure for specifying the prediction block for intra prediction is not limited to a square (i.e., where width w = height h). Rather, based on content characteristics, rectangular or non-square prediction blocks (w > h or w < h) may be used to improve the decoding efficiency. In such a rectangular block, restricting the direction of intra prediction to within -135 degrees to 45 degrees may result in a situation where a farther reference sample rather than a nearer reference sample is used for intra prediction. Such a design is likely to have an impact on the decoding efficiency. For example, it may be more beneficial to widen the restriction range so that nearer reference samples (angles outside -135 to 45 degrees) can be used for prediction. An example of such a situation is given in Figure 3 . In other words, Figure 3 is a block diagram of an example 8x4 rectangular block, where, since the intra prediction direction is restricted to within the range of -135 degrees to 45 degrees, the "nearer" reference sample (upper right dashed circle) is not used, while the farther reference sample (lower left dashed circle) can be used.
[0087] Figure 4 is an illustration of the wide-angle intra prediction mode. In Figure 4 , in addition to 65 angle modes, wide angles (-1 to -10 and 67 to 76) are depicted. In other words, Figure 4 is a conceptual diagram showing wide angles (-1 to -14 and 67 to 80) outside modes 2 and 66, for a total of 93 angle modes.
[0088] During the 12th JVET meeting, the modifications to wide-angle intra prediction were adopted into VVC Test Model 3 (VTM3) (see the following documents: L. Zhao, X. Zhao, S. Liu, X. Li, "CE3-related: Unification of angular intra prediction for square and non-square blocks", 12th JVET Meeting, Macau SAR, China, October 2018, JVET-L0279; J. Chen, Y. Ye, S. Kim, "Algorithm description for Versatile Video Coding and Test Model 3 (VTM3)", 12th JVET Meeting, Macau SAR, China, October 2018, JVET-L1002; and B. Bross, J. Chen, S. Liu, "Versatile Video Coding (Draft 2018) for Wide-angle Intra Prediction"). 3)”, 12th JVET Meeting, Macau SAR, China, October 2018, JVET-L1001). This adoption includes two modifications to unify the angular intra prediction for square and non-square blocks. First, the angular prediction direction is modified to cover the diagonal direction for all block shapes. Second, as Figure 5 , 6 As shown in Figures 7 and 8, for all block aspect ratios (square and non-square), all angular directions are kept in the range between the lower left diagonal direction and the upper right diagonal direction. Figure 5 , 6 7 and 8 are conceptual diagrams showing a mode mapping process for an intra prediction mode outside the diagonal direction range. Figure 5 In, square blocks do not require angular mode remapping; Figure 6 Angle mode remapping for horizontal non-square blocks is shown; and Figure 7 Angular mode remapping for vertical non-square blocks is shown. In addition, the number of reference samples in the top reference row and left reference column is restricted to 2*width+1 and 2*height+1 for all block shapes.
[0089] exist Figure 8 A wider angle illustration of the method used in VTM3 is provided in FIG. Figure 8is a conceptual diagram showing wide angles (-1 to -14 and 67 to 80) beyond intra prediction modes 2 and 66 (93 angle modes in total). Although VTM3 defines 95 intra prediction modes, only 67 intra prediction modes are allowed for any block size. The exact intra prediction modes allowed depend on the ratio of the block width to the block height. This is achieved by limiting the range of modes used for certain block sizes.
[0090] Fig. 9 is a table that provides specifications for intra-prediction angles (intraPredAngle). Specifically, Fig. 9 The mapping table between predModeIntra and the angle parameter intraPredAngle in VTM3 (JVET-L1001) is shown. Fig. 9 In the figure, the angular intra modes corresponding to the non-square block corners are underlined. Fig. 9 In , vertical and horizontal modes are indicated in italics. Fig. 9 In the figure, the square block diagonal mode is underlined and italicized. In this disclosure, the angle mode with positive intraPredAngle value is called positive angle mode (intra-frame prediction mode index <18 or >50), and the angle mode with negative intraPredAngle value is called negative angle mode (intra-frame prediction mode index >18 and <50).
[0091] The inverse angle parameter invAngle may be derived based on intraPredAngle as follows.
[0092]
[0093] It should be noted that, as is the case in the VTM3 specification, intraPredAngle values that are multiples of 32 (0, 32, 64, 128, 256, 512) always correspond to predictions from non-fractional reference array samples.
[0094] Table 1: Diagonal patterns corresponding to various block aspect ratios
[0095] Block aspect ratio (width / height) Diagonal Mode 1(square) 2,34,66 2 8,28,72 4 12,24,76 8 14,22,78 16 16,20,80 1 / 2 -6,40,60 1 / 4 -10,44,56 1 / 8 -12,46,54 1 / 16 -14,48,52
[0096] Intra-Sub-Partition Coding (ISP) (see S. De Luxán Hernández, V. George, J. Ma, T. Nguyen, H. Schwarz, D. Marpe, T. Wiegand (HHI), "CE3: Intra Sub-Partitions Coding Mode", JVET-M0102) is a method of partitioning a coding block into two or four sub-blocks and reconstructing each sub-block within the block in decoding order (before reconstructing subsequent sub-blocks in decoding order). Fig.10 is a conceptual diagram of an example partitioning of block 1000 into 4x8 blocks 1002A, 1002B or 8x4 blocks 1004A, 1004B. Fig.11 is a conceptual diagram of an example partitioning of blocks (such as block 1006) other than blocks of size 4x8, 8x4, and 4x4. In the following document, ISP is applied only to luma coding blocks: Bross et al., "Versatile Video Coding (Draft 4)", Joint Video Experts Group (JVET) of ITU-T ST 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 13th Meeting, Marrakech, Morocco, January 9-18, 2019, document JVET-M1001 (hereinafter referred to as "VVC Draft 4"), ISP is applied only to luma coding blocks. The reference samples for these ISP-coded blocks are restricted to the reference rows from the closest coded block (see, for example, as described below with respect to Fig.12 As described, MRLIdx=0).
[0097] One bit is used to signal whether the decoded block is split into ISPs, and the second bit is used to indicate the split type: horizontal or vertical. Based on the intra-frame mode and split type used, two different categories of processing order can be used. These two categories of processing order are called "normal order" and "reverse order". In normal order, the first sub-partition to be processed is the sub-partition containing the upper left sample of the CU and then continues to the bottom (horizontal split) or to the right (vertical split). On the other hand, the reverse processing order starts with the sub-partition containing the lower left sample of the CU (horizontal split) and then continues upward, or starts with the sub-partition containing the upper right sample of the CU and continues to the left (vertical split).
[0098] A variation of ISP that uses only normal processing order is used in VVC draft 4. It should be noted that the terms "sub-block" and "sub-partition" are used interchangeably in this document, and both refer to blocks obtained by splitting a coded block using ISP. Some syntax and semantics related to ISP in VVC draft 4 are shown in the following syntax tables 1 and 2, where the relevant syntax is indicated by <! >…< / !> Label to indicate.
[0099] Syntax Table 1
[0100]
[0101]
[0102] Syntax Table 2
[0103]
[0104]
[0105]
[0106] Semantics of decoding units
[0107] <!> intra_subpartitions_mode_flag[x0][y0] equal to 1 specifies that the current intra decoding unit is partitioned into NumIntraSubPartitions[x0][y0] rectangular transform block subpartitions. intra_subpartitions_mode_flag[x0][y0] equal to 0 specifies that the current intra decoding unit is not partitioned into rectangular transform block subpartitions. When intra_subpartitions_mode_flag[x0][y0] is not present, it is inferred to be equal to 0.
[0108] intra_subpartitions_split_flag[x0][y0] specifies whether the intra-subpartition split type is horizontal or vertical. When intra_subpartitions_mode_flag[x0][y0] is not present, it is inferred to be equal to 0. The variable IntraSubPartitionsSplitType specifies the split type used for the current luma coding block, as shown in Table 2-3. IntraSubPartitionsSplitType is derived as follows:
[0109] – If intra_subpartitions_mode_flag[x0][y0] is equal to 0, IntraSubPartitionsSplitType is set equal to 0.
[0110] – Otherwise, IntraSubPartitionsSplitType is set equal to 1 + intra_subpartitions_split_flag[x0][y0].
[0111] Table 2-3 - Name associations with IntraSubPartitionsSplitType
[0112] IntraSubPartitionsSplitType Name of IntraSubPartitionsSplitType 0 ISP_NO_SPLIT 1 ISP_HOR_SPLIT 2 ISP_VER_SPLIT
[0113] The variable NumIntraSubPartitions specifies the number of transform block subpartitions that the intra luma coding block is divided into. NumIntraSubPartitions is derived as follows:
[0114] – If IntraSubPartitionsSplitType is equal to ISP_NO_SPLIT, then NumIntraSubPartitions is set equal to 1.
[0115] – Otherwise, NumIntraSubPartitions is set equal to 2 if one of the following conditions is true:
[0116] –cbWidth is equal to 4, and cbHeight is equal to 8,
[0117] –cbWidth is equal to 8, and cbHeight is equal to 4.
[0118] – Otherwise, NumIntraSubPartitions is set equal to 4.< / !>
[0119] Samples in the neighborhood of a coded block are used for intra prediction of the block. Typically, the reconstructed reference sample rows closest to the left and top boundaries of the coded block are used as reference samples for intra prediction. However, VVC draft 4 also enables other samples in the neighborhood of a coded block to be used as reference samples. Fig.12 Reference sample rows that can be used for intra prediction are shown. For each coded block, an index indicating the used reference row is signaled.
[0120] In VVC draft 4, only reference rows with MRLIdx equal to 0, 1, and 3 can be used. In VVC draft 4, the index of the reference row used to decode the block (values 0, 1, and 2 indicate rows with MRLIdx 0, 1, and 3, respectively) is decoded using a truncated unary codeword. In some versions of VVC, when the reference row index is greater than 0 (i.e., when MRLIdx>0), the plane and DC modes are not used. In later versions of VVC, when reference rows with MRLIdx>0 are used for intra prediction, the use of DC mode is allowed.
[0121] Block-based intra prediction is part of video standards such as AVC, HEVC, VVC, etc. Typically, reference sample rows from neighboring reconstructed blocks are used to predict samples within the current block. One or more sample rows can be used for prediction. Reference samples are used by typical intra prediction modes such as DC, planar, and angular / directional modes.
[0122] Position-dependent intra prediction combination (PDPC) is described in the following document: J. Pfaff et al., “CE3: Affinelinear weighted intra prediction (CE3-4.1, CE3-4.2)”, Joint Video Experts Group (JVET) of ITU-T ST 16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 14th meeting, Geneva, Switzerland, March 19-27, 2019, document JVET-N0217 (hereinafter referred to as “JVET-N0217”); and PDPC is further simplified in the following document: S. De Luxán Hernández et al., “CE3: Intra Sub-Partitions Coding Mode”, Joint Video Experts Group (JVET) of ITU-T ST 16WP3 and ISO / IEC JTC 1 / SC 29 / WG 11, 13th meeting, Marrakech, Morocco, January 9-18, 2019, document JVET-M0102. As outlined below, PDPC is applied to planar, DC, horizontal, and vertical modes without signaling in the following document: J. Chen et al., “Algorithm description for Versatile Video Coding and Test Model 3 (VTM3)”, Joint Video Experts Group (JVET) of ITU-T ST 16WP 3 and ISO / IEC JTC1 / SC 29 / WG 11, 12th Meeting, Macau, China, October 3-12, 2018, document JVET-L1002 (hereinafter referred to as “JVET-L1002”). PDPC is further extended to diagonal modes and modes adjacent to diagonal modes in the following document: F. Bossen, “Non-CE3: A unified luma intra mode list construction process”, Joint Video Experts Group (JVET) of ITU-T ST 16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 13th meeting, Marrakech, Morocco, January 9-18, 2019, document JVET-M0528.
[0123] The prediction sample pred(x,y) at position (x,y) is predicted using the intra prediction mode (DC, planar, angular) and its value is modified using the PDPC expression for a single reference sample row:
[0124] pred(x,y)=(wL×R -1,y +wT×R x,-1 –wTL×R -1,-1 +(64–wL–wT+wTL)×pred(x,y)+32)>>6, (Equation 1)
[0125] Among them, R x,-1 , R -1,y represent the reference samples located at the top and left of the current sample (x, y), and R -1,-1 Represents the reference sample located at the top left corner of the current block. For DC mode, for a block with dimensions width and height, the weights are calculated as follows:
[0126] wT=32>>((y<<1)>>shift), wL=32>>((x<<1)>>shift), wTL=(wL>>4)+(wT>>4),
[0127] Among them, shift = (log2 (width) + log2 (height) + 2) >> 2,
[0128] Whereas for planar mode wTL=0, for horizontal mode wTL=wT, and for vertical mode wTL=wL. The PDPC weights can be calculated using only addition and shifting. The value of pred(x,y) can be calculated in a single step using Equation 1 above.
[0129] Fig.13 The DC mode PDPC weights (wL, wT, wTL) for the (0,0) and (1,0) positions within a 4x4 block are shown. If PDPC is applied to DC, planar, horizontal, and vertical intra modes, no additional boundary filters such as the DC mode boundary filter or horizontal / vertical mode edge filters are applied.
[0130] Equation 1 can be generalized to include additional reference sample rows. In this case, x,-1 , R -1,y , R -1,-1 Multiple reference samples in the field are available, and each may have an assigned weight, which may be optimized, for example, by training.
[0131] U.S. Patent Publication 2019 / 0306513, published on October 3, 2019, extends PDPC to diagonal intra modes and angular modes adjacent to diagonal modes. The expected diagonal intra modes are modes predicted according to the lower left direction and the upper right direction, and several adjacent angular modes (e.g., N adjacent modes between the lower left diagonal mode and the vertical mode, and N or M adjacent modes between the upper right diagonal mode and the horizontal mode). Fig.14 The identification of the angle patterns is shown. In general, the adjacent patterns may be a selected subset of the available angle patterns. The spacing between angle patterns may be uneven, and some angle patterns may be skipped.
[0132] Fig.15 , 16 , 17 and 18 provide definitions of the samples used by the PDPC extension to diagonal and adjacent angle intra modes. Fig.15 Reference sample R is shown for extending PDPC to the upper right diagonal mode x,-1 , R -1,y and R -1,-1 The prediction sample pred(x',y') is located at (x',y') in the prediction block. The reference sample R x,-1 The coordinate x of is given by the equation: x = x'+y'+1, and the reference sample R -1,y The coordinate y of is similarly given by the following equation: y=x'+y'+1.
[0133] The PDPC weights for the upper right diagonal mode are, for example:
[0134] wT=16>>((y'<<1)>>shift),wL=16>>((x'<<1)>>shift),wTL=0
[0135] Similarly, Fig.16 Reference sample R is shown for extending PDPC to the lower left diagonal mode x,-1 , R -1,y and R -1,-1 Definition of. Reference sample R x,-1 The coordinate x of is given by the equation: x = x'+y'+1, and the reference sample R -1,y The coordinate y is: y=x'+y'+1.
[0136] The PDPC weights for the upper right diagonal mode are, for example:
[0137] wT=16>>((y'<<1)>>shift), wL=16>>((x'<<1)>>shift), wTL=0.
[0138] exist Fig.17 The case of the adjacent upper right diagonal pattern is shown in FIG. Fig.14 The angle α defined in is determined as follows: -1,y The y coordinate of:
[0139] y=y'+tan(α)×(x'+1),
[0140] R x,-1 The x-coordinate of is given by:
[0141] x=x'+cotan(α)×(y'+1),
[0142] Where tan(α) and cotan(α) are the tangent and cotangent of the angle α, respectively. For example, the PDPC weights for the adjacent upper right diagonal pattern are:
[0143] wT=32>>((y'<<1)>>shift),wL=32>>((x'<<1)>>shift),wTL=0, or wT=32>>((y'<<1)>>shift),wL=0,wTL=0
[0144] Similarly, in Fig.18 The case of the adjacent lower left diagonal pattern is shown in FIG.
[0145] Usually, for Fig.14 The angle β defined in is determined as follows: x,-1 The x-coordinate is:
[0146] x=x'+tan(β)×(y'+1),
[0147] And R -1,y The y coordinate of is given by the following equation:
[0148] y=y'+cotan(β)×(x'+1),
[0149] Where tan(β) and cotan(β) are the tangent and cotangent of the angle β, respectively. For example, the PDPC weights for the adjacent lower left diagonal pattern are:
[0150] wL=32>>((x'<<1)>>shift),wT=32>>((y'<<1)>>shift),wTL=0, or wL=32>>((x'<<1)>>shift),wT=0,wTL=0
[0151] As is the case for DC, planar, horizontal, and vertical mode PDPC, there is no additional boundary filtering for diagonal and adjacent diagonal modes (when PDPC is extended to these modes), as specified in the following document: J. Yao et al., "Non-CE3: Intra prediction information coding", Joint Video Experts Group (JVET) of ITU-T SG 16WP 3 and ISO / IEC JTC 1 / SC29 / WG 11, 13th Meeting: Marrakech, Morocco, January 9-18, 2019, document JVET-M0210 (hereinafter referred to as "JVET-M0210").
[0152] Affine Linear Weighted Intra Prediction (ALWIP) described in JVET-N0217 uses an affine linear weighted prediction model to generate a prediction of a block from neighboring reference samples. First, the neighboring samples are processed (e.g., in some cases, the neighboring samples are downsampled); the processed neighboring samples are then used to derive a reduced set of samples (using an affine model), which may be similar to an intermediate downsampled version of the prediction samples. The final prediction may be obtained by upsampling the intermediate values (if necessary). ALWIP may also be referred to as Matrix Intra Prediction (MIP).
[0153] exist Fig.19 An illustration of the MIP process is given in FIG. The reference samples 150 (also referred to as boundary samples) of the block are downsampled to obtain reduced boundary samples 152. The vector representation bdry of the boundary samples 154 is red With the matrix A k Multiply and add the offset / bias term b k , to obtain a downsampled version pred of the prediction block 156 red . It can be done by predicting the sample pred red The boundary samples 150 are upsampled to obtain the final prediction block 158. The matrix A is selected based on the mode value indicated for the block. k and the offset / bias vector b k .
[0154] The derivation of the intermediate prediction samples uses an affine linear weighted prediction model (ie, MIP model). Three types are defined, and the number of intermediate samples derived for each type is different, as follows:
[0155] 1) For a block size where both width and height are equal to 4, it is 4x4.
[0156] 2) 8x8 for block sizes where both width and height are less than or equal to 8 (i.e., 4x8, 8x4, and 8x8 blocks), except when both width and height are equal to 4.
[0157] 3) 16x16 for blocks where at least one of the width and height is greater than 8.
[0158] In each of these three types, a different number of ALWIP patterns are used: 35, 19, and 11, respectively.
[0159] ALWIP signaling can include:
[0160] a) A flag (alwip_flag), which is used to indicate that the current block is decoded using ALWIP.
[0161] b) When the block is decoded using ALWIP, another flag is signaled to indicate whether the current block is decoded using ALWIP MPM mode.
[0162] a. If ALWIP MPM, then signal the MPM index.
[0163] b. Otherwise, signal the index of the remaining mode values.
[0164] alwip_flag is used for context decoding using the four allowed contexts:
[0165] – If block width > 2*height or height > 2*width, use context 3.
[0166] – Otherwise, the context ctxId is used, where ctxId is derived as follows:
[0167] οInitialize ctxId to 0.
[0168] o If the left neighboring block is decoded using ALWIP, ctxId++.
[0169] o If the upper neighboring block is decoded using ALWIP, ctxId++.
[0170] In other examples, different signaling may be used for ALWIP.
[0171] The derivation of the ALWIP MPM may involve the following steps:
[0172] 1) Initialize LeftIntraMode and AboveIntraMode to -1.
[0173] 2) If the left neighboring block is intra-coded:
[0174] a. If the left adjacent block is decoded using ALWIP mode L:
[0175] i. If L has the same ALWIP type as the current block, then LeftIntraMode is set to be equal to L.
[0176] b. The intra mode of the left neighboring block is mapped to an ALWIP mode of the same type as the current block and is assigned to LeftIntraMode.
[0177] 3) If the above neighboring block is intra-coded:
[0178] a. If the above neighboring block is coded using ALWIP mode A:
[0179] i. If A has the same ALWIP type as the current block, then AboveIntraMode is set to be equal to A.
[0180] b. The intra mode of the above neighboring block is mapped to an ALWIP mode of the same type as the current block and is assigned to AboveIntraMode.
[0181] 4) Then, MPM is derived based on LeftIntraMode and AboveIntraMode.
[0182] In other examples, the derivation of the ALWIP MPM may involve other steps or may not be performed.
[0183] In the remainder of the present disclosure, a block coded using ALWIP may be referred to as an ALWIP-coded block, an ALWIP block, a MIP-coded block, or a MIP block; other blocks (coded using conventional intra prediction, intra sub-partitioning, or multiple reference lines) may be referred to as non-ALWIP blocks or non-MIP blocks.
[0184] For a W×H block (where max(W,H)≥8), the prediction signal is generated by linear interpolation from the reduced prediction signal pred on W red ×H red . According to the block shape, linear interpolation is performed in the vertical, horizontal, or both directions. If linear interpolation is to be applied in both directions, if W < H, then linear interpolation is first applied in the horizontal direction, and otherwise, linear interpolation is first applied in the vertical direction. red ver
[0185] Consider, without loss of generality, a W×H block, where max(W,H)≥8 and W≥H. Then, one-dimensional linear interpolation can be performed as follows. Without loss of generality, it is sufficient to describe linear interpolation in the vertical direction. First, the reduced prediction signal is extended to the top by the boundary signal. Define the vertical upsampling factor U ver = H / Hred And written as Then, the extended reduced prediction signal is defined by the following equation:
[0186]
[0187] Then, from this extended reduced prediction signal, a vertically linearly interpolated prediction signal can be generated by the following equation:
[0188]
[0189] For 0≤x <W red ,0≤y <H red And 0≤k ver .
[0190] The MIP uses several predefined parameters (matrices, offset vectors) to generate a prediction block using the above method. The mpm_index or mode index is signaled to determine the specific matrix to be used for the block. Both the video encoder 200 and the video decoder 300 have a set of predefined matrices to choose from. These matrices / parameters are usually generated by training several sequences. Ideally, the more matrices defined for the MIP, the better the prediction will be. However, as the number of parameters increases, the signaling cost of specifying the matrices to be used also increases. In addition, the more parameters are defined, the more memory is required to store these matrices in the read-only memory (ROM) of the device.
[0191] An optimal solution (such as a trade-off between prediction accuracy and memory / signaling cost) may not be possible. However, different matrices may be beneficial for MIP for different content. Therefore, it would be beneficial to allow more MIP matrices. A VVC encoder may have the computational resources to derive matrices tuned for specific content. Such matrices may perform well for specific content, but may not be general enough to be used for prediction for all other content. Having a fixed set of MIP matrices may be inefficient.
[0192] For ease of description, some terms are defined / clarified below; it is noted that in the rest of the description, the term "matrix" is used to refer to a set of parameters for a MIP; the parameter set may contain parameters for deriving predictions for more than one sample, and may be defined / derived as a set of parameter subsets, each subset being used to derive a sample. Thus, although the term matrix indicates a two-dimensional representation of the parameters, such a representation may not be available or even possible; in general terms, the term matrix may refer only to a set of parameter subsets. Each parameter subset may be a list of parameters associated with:
[0193] 1. MIP mode matrix: The MIP mode matrix is a matrix containing parameters for performing prediction associated with the MIP mode; for ease of explanation, this disclosure may refer to the MIP mode matrix as a matrix.
[0194] 2. Default MIP mode (D-MIP mode): D-MIP mode is a MIP mode predefined in the codec. The default MIP mode may be associated with some blocks based on one or more block characteristics or information derived from other syntax elements.
[0195] 3. Explicit MIP mode (E-MIP mode): E-MIP mode is a MIP mode derived from a matrix that is not included in the predefined MIP mode in the codec; the matrix can be explicitly signaled. Explicit MIP mode can be associated with some blocks based on one or more block characteristics or information derived from other syntax elements. This association can also be signaled and derived / inferred at the video decoder 300.
[0196] 4. Reference Sample Location Array (RSLA): RSLA is a set of reference sample locations used in MIP in the neighborhood of the current block. Typically, RSLA is associated with a MIP mode.
[0197] 5. Prediction Sample Position Array (PSLA): PSLA is a set of sample positions in the current block that correspond to the positions where the MIP mode directly generates prediction values. Typically, a prediction sample position array is associated with a specific MIP mode. Fig.19 In the context of , the shaded non-reference samples of prediction block 156 are PSLA.
[0198] 6. Explicit Sample Predictor Parameter Subset (ESPPS): The explicit sample predictor parameter subset is a subset of the matrix and contains parameters used to predict samples in the PSLA. Typically, the ESPPS is associated with a MIP mode and a predicted sample location. In some examples, a machine learning system is used to determine the ESPPS. Thus, in such examples, a machine learning system can be used to determine a new MIP mode.
[0199] 7. MIP mode set: A MIP mode set is a group of MIP modes. A MIP mode set may include a D-MIP mode and an E-MIP mode. Multiple MIP mode sets may be defined based on the signaling of the E-MIP mode. A MIP mode set may be defined at the level of a codec, a sequence parameter set, a picture parameter set, a picture, a slice, a tile, or another level.
[0200] 8. MIP mode list: A MIP mode list is a set of MIP modes, which may be a subset of a MIP mode set and may be available for a specific picture.
[0201] 9. Default MIP mode list: The default MIP mode list is a MIP mode list derived from the MIP mode set for the current picture using a default derivation method.
[0202] 10. MIP mode list modification: MIP mode list modification is the process of modifying the default MIP mode list to generate a modified MIP mode list for the current picture. The MIP mode list modification process may include removing one or more MIP modes from the default MIP mode list and adding one or more MIP modes from the MIP mode set.
[0203] This disclosure describes techniques that can improve the efficiency of MIP. According to the techniques of this disclosure, the following concepts can be defined.
[0204] 1. Default MIP (D-MIP) mode set: A set of D-MIP modes forms a D-MIP mode set. A set of D-MIP modes forming a D-MIP mode set may be specified in a codec and available at the video encoder 200 and the video decoder 300. A matrix may be specified for each MIP mode. In some examples, a D-MIP mode set may include all MIP modes specified in the codec. In other examples, a D-MIP mode set or a particular block may include only those D-MIP modes associated with the current block.
[0205] 2. Explicit MIP (E-MIP) mode set: The explicit MIP mode set is specified as a set of MIP modes that is different from the D-MIP mode set in the codec. In some examples, the E-MIP mode set contains E-MIP modes. The E-MIP mode set can be transmitted to the video decoder 300 by signaling or other means. The video encoder 200 can always select a predefined mode set for a specific content. The video encoder 200 can transmit these modes to the video decoder 300 by one or more means disclosed in this document. In some examples, the E-MIP mode set can only contain the E-MIP mode associated with the current block.
[0206] 3. Total MIP (T-MIP) mode set: The total MIP mode set is a set of D-MIP and E-MIP modes. In some examples, the T-MIP mode set may contain only the D-MIP mode and E-MIP mode associated with the current block. The T-MIP mode set may be simply referred to as a MIP mode set for a picture or a set of pictures.
[0207] In some examples of the present disclosure, a MIP mode may be defined for a particular block or picture. For example, in some such examples, a syntax element may be specified to indicate whether to use a D-MIP mode for a current block or an E-MIP mode for a current block. For example, a default MIP flag (e.g., default_mip_flag) may be signaled in a coded block syntax structure. In this example, default_mip_flag equal to 1 specifies that the D-MIP mode is used, and default_mip_flag equal to 0 specifies that the D-MIP mode is not used, and the E-MIP mode is used instead.
[0208] A syntax element may be signaled to specify whether the E-MIP mode is specified relative to an already specified mode (i.e., whether the E-MIP mode is a dependent E-MIP mode) or is specified independently (i.e., whether the E-MIP mode is an independent E-MIP mode). When the E-MIP mode is specified independently, the video encoder 200 and the video decoder 300 may derive the parameters of the E-MIP mode without using the parameters of another MIP mode. In other cases, the video encoder 200 and the video decoder 300 may derive the parameters of the E-MIP mode using the parameters of one or more MIP modes.
[0209] Signaling a matrix associated with the new MIP mode may include signaling a list of ESPPS.Signaling the ESPPS may be performed using independent ESPPS signaling or dependent ESPPS signaling.
[0210] When independent ESPPS signaling is used to signal the ESPPS, the parameters of the ESPPS are signaled independently of other ESPPSs. The number of parameters in the ESPPS is derived at the video decoder 300. The number of parameters in the ESPPS can be derived based on block characteristics or signaled in the bitstream.
[0211] In some examples, each parameter in the ESPPS is signaled using a specified decoding scheme (such as fixed length decoding, exponential Golomb decoding, or another type of decoding). The parameters used to decode these syntax elements can be derived from other syntax elements in the bitstream. For example, the number of bits used to signal the parameter can depend on the MIP category to which the E-MIP mode belongs. In some examples, the number of bits can be limited to a specific range that can be predetermined or signaled. In some examples, one or more parameters of the ESPPS can be incrementally decoded with the previous parameter in the same ESPPS.
[0212] In the dependent ESPPS signaling, the parameters of the ESPPS may be signaled as one or more ESPPSs (referred to as reference ESPPSs) that are dependent on the same MIP mode. In some examples, one or more syntax elements may be signaled with an ESPPS that specifies the reference ESPPS from which the ESPPS parameters are to be derived. For example, in some examples, an index of the reference ESPPS may be specified, or an increment to the index of the reference ESPPS may be specified.
[0213] In some examples, the indication for the reference ESPPS can be associated with the location of the sample associated with the ESPPS. Fig.19 In the example of , the shaded blocks in the prediction block 156 are samples in the PSLA. If (x, y) specifies the relative position of the current sample in the PSLA, the reference index can be specified as the ESPPS of another sample from the PSLA. Or in other words, if (x1, y1) and (x2, y2) are two positions in the PSLA, the ESPSS of (x1, y1) can be derived from the ESPSS of (x2, y2); in this case, the reference index can specify the position of (x2, y2) based on the position of (x1, y1) relative to the block or (x2, y2) or both. In some examples, the x-coordinates of the (x, y) positions of the current sample and the reference sample can be constrained to be the same. In some examples, the y-coordinates of the (x, y) positions of the current sample and the reference sample can be constrained to be the same.
[0214] In some examples, the reference sample can be constrained to be within a neighborhood of the (x,y) sample of the ESPPS. The neighborhood can be specified by one or more thresholds indicating x,y coordinate offsets or other means of specifying coordinates. For example, the reference sample can be constrained to the (x-1,y) or (x,y-1) position in the PSLA.
[0215] In some examples, there may be a constraint that states that the number of parameters in an ESPPS and its reference ESPPS should be the same.
[0216] Furthermore, in some examples, only the number of parameters is signaled as being dependent on the reference ESPPS, and the parameters are signaled independently. For example, when the number of parameters in the ESPPS is different from the number of parameters in the reference ESPPS, the delta between the two parameter numbers may be signaled.
[0217] In some examples, a first parameter of the ESPPS may be signaled as a parameter (e.g., a first) that is dependent on the parameters of the reference ESPPS. In some examples, one or more parameters in the ESPPS may be signaled relative to corresponding one or more parameters in the reference ESPPS. In some examples, the syntax element may indicate that the ESPPS may be obtained from the reference ESPPS by an operation (e.g., transposition, shift, rotation, addition, subtraction, etc.).
[0218] In some examples, the syntax element may indicate that the E-MIP parameters may be obtained from the reference MIP parameters by an operation (e.g., transposition, shift, rotation, addition, subtraction, etc.). In some examples, the syntax element may indicate that the E-MIP parameters may be obtained from the reference MIP parameters based on a combination of two or more operations (e.g., shift and delta coding, default value initialization and delta coding, two or more shift operations, etc.).
[0219] In some examples, the reference ESPPS may belong to different MIP modes. In such examples, one or more syntax elements may be specified to indicate the MIP mode of the reference ESPPS (e.g., a MIP mode index; or a MIP mode category followed by a MIP mode index; an increment of the index of the reference MIP mode and the current MIP mode). In some examples, an indication of whether the reference ESPPS is a D-MIP mode or an E-MIP mode may also be signaled; this may be as simple as a syntax element, or may be derived from the specified reference MIP index (e.g., an index belonging to a certain range may be a D-MIP mode, while an index belonging to another range may be an E-MIP mode).
[0220] If fixed length codewords are used for ESPPS, the number of bits used for the codewords may be predefined or signaled in the bitstream.
[0221] Signaling a set of modes - For a given picture, one or more E-MIP modes can be signaled. These E-MIP modes can be added to the E-MIP mode set.
[0222] The video encoder 200 and the video decoder 300 may refresh the E-MIP modes set at various points. Refreshing the E-MIP mode set removes the E-MIP mode from the MIP mode set available for the picture. In some examples, the E-MIP mode set is refreshed at the end of each picture. In some examples, the E-MIP mode set is refreshed at the end of each access unit. An access unit may be a set of one or more picture units belonging to different layers and contains decoded pictures associated with the same time for output from a decoded picture buffer. In some examples, the E-MIP mode set is refreshed at the end of each decoded layer video sequence or a decoded video sequence.
[0223] In some examples, the video encoder 200 and the video decoder 300 may perform parameterization of the E-MIP mode. In some examples, a parameter form may be specified to define a matrix of the E-MIP mode. In this case, signaling the E-MIP mode may include signaling one or more of these parameters. For example, the matrix parameters associated with each mode may be specified as a set of piecewise linear functions (where each segment may be continuous or may not be continuous); in this case, only the slope and intercept of the piecewise linear function need to be signaled, rather than all parameters; the parameters may be derived from the piecewise linear function. The video decoder 300 may derive the MIP mode matrix of the E-MIP mode based on the parameter values. In some examples, a cubic expression may be used to describe the MIP mode matrix of the E-MIP mode, or a cubic expression may be used to describe the ESPPS of the E-MIP mode. Parameters in parameter form may be explicitly signaled or incrementally decoded relative to other parameters.
[0224] In some examples, the video encoder 200 and the video decoder 300 may implement a dynamic MIP mode set update process. The dynamic MIP mode set update process is a dynamic update process for a MIP mode set, which may include one or more of the following steps:
[0225] 1. Generate a default MIP mode set according to the MIP modes predefined in the codec.
[0226] 2. Update the sequence MIP mode set according to the MIP mode specified in the sequence level parameter set (e.g., SPS). The operation for updating the sequence MIP mode set may include adding one or more MIP modes to the MIP mode set or removing one or more modes from the MIP mode set. The video encoder 200 and the video decoder 300 may derive the sequence MIP mode set from the default MIP mode set and the MIP mode specified in the parameter set.
[0227] 3. The picture MIP mode set is derived from the sequence MIP mode set and any MIP mode explicitly specified for the current picture. The picture MIP mode set may have a temporary effect (i.e., the picture MIP mode set only affects the current picture), or the picture MIP mode set may be used to update the sequence MIP mode set. For example, in one example, when the picture MIP mode set is used to update the sequence MIP mode set, one or more MIP mode sets in the sequence MIP mode set may be removed, and one or more MIP mode sets specified for the current picture may be included in the sequence MIP mode set. In this example, the updated sequence MIP mode set may be applied to one or more pictures after the current picture. Other factors may be used to determine whether the update to the MIP mode set is temporary. Factors that may be used to determine whether the picture MIP mode set is temporary may include one or more of the following: whether the current picture is a reference picture, the temporal ID of the picture, the layer ID of the picture, the NAL unit type of the picture, the number of MIP modes that can be used for the picture and / or signaled for the picture, and the like.
[0228] 4. Determine a MIP mode list. Although one or more MIP modes may be available, only a subset of the MIP modes may be available for prediction for the current picture. This subset of available MIP modes is represented in the MIP mode list for the current picture and may be derived based on syntax elements associated with MIP mode list generation in the bitstream, or may be derived based on a predetermined process.
[0229] 5. Perform MIP mode list modification. One or more slices in a picture may use different MIP mode lists based on the characteristics of the picture. The video encoder 200 and the video decoder 300 may generate such a MIP mode list based on modification instructions / signaling in the bitstream, which adopt the MIP mode list and modify the content by one or more of the following operations: changing the position of some MIP modes in the MIP mode in the list, adding one or more modes from the picture MIP mode set, removing one or more modes from the picture MIP mode set, and so on.
[0230] The signaling of the MIP mode index may be modified according to the number of MIP modes present in the MIP mode list. For example, if there are k modes in the MIP mode list, the number of bits required for decoding the MIP mode index may be modified so as to efficiently decode the k MIP modes; a maximum value associated with signaling the MIP mode index may be set so as to efficiently decode the k MIP modes. When the number of MIP modes (k) is 1, the MIP mode index may not be signaled, and the indication of the MIP (i.e., the indication of decoding the block using the MIP) may be directly associated with the MIP mode. When the number of MIP modes (k) in the MIP mode list is zero, restrictions may be imposed on the parameters of the MIP signaling. For example, a syntax element specifying the use of a MIP to decode a block may be restricted to indicate that the MIP is not enabled. Therefore, in some examples, the MIP mode index may be signaled in the bitstream, and the signaling of the MIP mode index depends on the number of MIP modes in the MIP mode list. The MIP mode index indicates the MIP mode.
[0231] In some examples, the codec may impose constraints on other intra prediction modes. For example, in some examples, a syntax element may be signaled in the bitstream to indicate that only a MIP mode (E-MIP or D-MIP) may be used for intra prediction for one or more pictures. In such a case, syntax elements associated with other intra prediction modes may not be signaled.
[0232] In some examples, RSLA for MIP mode may be specified to be aligned to reference samples to the left and above the current block that share a boundary with the current block or are immediately adjacent to the boundary of the current block. In other examples, RSLA may be specified to be a subset of reference samples above and to the left of the current block. More generally, RSLA may include a subset of samples in the neighborhood of the current block.
[0233] When the RSLA samples of the MIP mode do not include all reference samples, a selection or derivation mechanism may be specified to derive a subset of samples forming the RSLA (e.g., downsampling, random selection, etc.). For example, the video encoder 200 may select and signal a derivation mechanism to derive a subset of samples forming the RSLA.
[0234] In some examples, the PSLA for a MIP mode may be specified as a fixed set of sample positions. For example, the PSLA for a MIP mode may include all sample positions of a prediction block. In other examples, a subset of the sample positions of a prediction block may be specified as the PSLA. When the PSLA for a MIP mode does not include all sample positions of a prediction block, a process may be specified to derive values at the remaining / missing sample positions not covered by the PSLA (e.g., upsampling). For example, the video encoder 200 may signal which process to use to derive values at the remaining / missing sample positions not covered by the PSLA. Signaling the PSLA for particular MIP modes may improve the coding efficiency of those MIP modes. Fig.19 In the context of , the remaining / missing sample positions are indicated by white squares in the prediction block 156 .
[0235] In some examples, for each MIP mode, RSLA and / or PSLA may be specified. For example, the RSLA for the D-MIP mode may be specified as all reference samples above and to the left of the current block that are immediately adjacent to the current block boundary, and the PSLA for the D-MIP mode may be specified as all sample positions in the prediction block. In this example, the RSLA for the E-MIP mode may be a subsampled version of the reference samples, and the PSLA for the E-MIP mode is a subsampled version of the sample positions in the prediction block. More generally, the signaling / derivation mechanism may be specified to identify the RSLA (e.g., an index to an RSLA candidate list) and the MIP mode for a particular block. Similarly, the signaling / derivation mechanism may be specified to identify the PSLA (e.g., an index to a PSLA candidate list) and the MIP mode for a particular block.
[0236] Therefore, in some examples, the RSLA for the MIP mode is signaled in the bitstream. The RSLA for the MIP mode indicates a set of reference sample positions used in the MIP mode in the neighborhood of the current block. As part of generating a prediction block using the MIP mode, a video decoder (e.g., the video encoder 200 or the video decoder 300) can determine a prediction value for each sample position in the PSLA of the MIP mode by multiplying the reference sample at the reference sample position indicated by the RSLA for the MIP mode by the matrix coefficients of the matrix specified in the MPS associated with the MIP mode, and adding the offset value specified in the MPS associated with the MIP mode. In some cases, signaling the RSLA for the MIP mode can improve decoding efficiency.
[0237] Various relationships may exist between MIP mode and other processes (filtering, PDPC, etc.). For example, one or more of the following processes may be associated with MIP mode, or more specifically, with E-MIP mode. In this example, the association may be derived based on predefined rules, or the association may be signaled as part of E-MIP mode:
[0238] 1. Reference sample filtering
[0239] 2. The interpolation filter used (e.g., Gaussian, HEVC chroma interpolation filter, etc.)
[0240] 3.PDPC
[0241] 4. Boundary filtering
[0242] One or more constraints specified above may be specified at the picture level. However, in other examples, one or more of the constraints specified above may be specified at a level other than the picture level. For example, an E-MIP mode associated with a picture may be associated with all pictures in an access unit. In another example, the above constraints on other intra-frame prediction modes may be applied at the access unit level, sequence level, etc.
[0243] In some examples, the number of bits used to signal MIP parameters (e.g., matrices, offsets, etc.) can be fixed, or the number of bits used to signal MIP parameters can be signaled in the bitstream. In some examples, MIP parameters can be signaled using codewords that do not explicitly have a specific number of bits (e.g., exponential Golomb decoding).
[0244] As described above, using the MIP mode to generate a prediction block may include multiplying the reference sample by the matrix coefficient and adding an offset value. The result of the multiplication and addition may be referred to as an intermediate value, and the bit depth of the intermediate value may be referred to as an intermediate bit depth. In typical fixed-point operations including multiplication or addition / subtraction, there are cases where the precision (or number of bits) required to store the result of the operation is greater than the precision of one or more operands. For example, when an n-bit number is multiplied by an m-bit number, the maximum precision of the output may be n+m bits; similarly, when an n-bit number is added to an m-bit number, the maximum precision of the output may be max(n,m)+1 bits. Although the precision of these intermediate values may be higher, the final result may have a smaller precision / bit depth (this is usually achieved by rounding or shifting). The intermediate bit depth of the prediction operation may be specified to be the same as the intermediate bit depth of the D-MIP mode. More generally, the intermediate bit depth of the prediction operation may also be specified for each E-MIP mode separately. For example, the intermediate bit depth for the prediction operation may be determined / derived by a predefined process or signaled in the bitstream.
[0245] In some examples, the MIP parameter may be used to collectively indicate all parameters signaled together with the MIP mode parameter. The coding of one or more syntax elements for the parameter may be signaled using any method such as fixed length coding, Golomb coding, truncated binary coding, truncated unary coding, etc. One or more parameters associated with the coding (e.g., the number of bits used to signal the syntax element, a binarization parameter such as a Rice parameter, a maximum symbol value, etc.) may depend on one or more syntax elements signaled in the bitstream.
[0246] One or more constraints specified in the present disclosure may be subject to further constraints or limitations based on the characteristics of the block shape, block width and height, aspect ratio, intra-modes used, or other syntax elements, or variables derived therefrom. For example, the decision to add additional modes may only apply to certain aspect ratios, such as not equal to 1 (i.e., non-square blocks), or a MIP parameter set update may only be applied to block sizes greater than a certain threshold (such as width or height greater than or equal to 8).
[0247] In some examples, one or more syntax elements may be signaled to indicate a set of available D-MIP modes. For example, a D-MIP mode that is deemed unavailable may not be used for a MIP for a block / picture that references a parameter set or syntax structure indicating such availability. Signaling may include a loop or a list of flags that indicates which D-MIP mode is to be considered included in a MIP mode set or MIP mode list. Each flag in the loop or flag list corresponds to a D-MIP mode. In this context, if there are K D-MIP modes, K flags are signaled. In some examples, a flag with a value of 1 indicates that D-MIP is included in a MIP mode set or MIP mode list; a flag with a value of 0 indicates that D-MIP is not included in the MIP mode set of the MIP mode list. Signaling of one or more syntax elements related to the MIP mode may also be modified based on the number of available E-MIP modes and the number of D-MIP modes. The availability of the MIP mode may be derived at the sequence level, or may be at a frame / picture, block, bitstream, tile, brick, or other level. The determination as to where the availability of a MIP mode is derived may be based on a signaled syntax element, the location of an associated syntax structure, or in another manner.
[0248] When MPS signaling is performed at multiple levels (e.g., at SPS, PPS, APS, etc.), one set of signaling may override or modify a MIP set or MIP list derived from another level. For example, MPS signaling at the APS or PPS level may modify a MIP set or list derived at the sequence level. This modification may be temporary or permanent.
[0249] One or more examples disclosed above are applicable to MIP modes or may be applicable to MIP matrices. In some examples, a matrix or a set of methods may be used to derive more than one MIP mode. For example, a matrix may be associated with one parameter, and its transpose may be associated with another parameter.
[0250] One or more techniques may be defined to derive one or more MIP modes from a parameter set. For example, in some examples, deriving one or more MIP modes from a MIP parameter set may involve regular or irregular downsampling of the MIP parameters. The downsampling of these MIP parameters may be associated with a downsampling filter. Thus, a MIP parameter set (which is associated with a MIP mode) may be used to derive MIP parameters that may be associated with another MIP mode. For example, MIP parameters applicable to an 8x8 block may be downsampled by a factor of 2 to obtain MIP parameters for a 4x4 block. The selection of filters (e.g., filter lengths, filter coefficients, etc.) and / or downsampling factors may be determined by one or more of the following parameters: a MIP mode and / or category associated with a matrix, a MIP mode and / or category associated with a MIP mode, a block size, etc.
[0251] Although this disclosure describes techniques for signaling MIP parameters, the techniques of this disclosure may be applicable to any prediction method in which parameters for prediction may be signaled in the bitstream. This may include other matrix prediction techniques, or more generally, any prediction method.
[0252] Fig. 20 is a block diagram illustrating an example video encoder 200 that may perform the techniques of this disclosure. Fig. 20 The present disclosure generally illustrates the video encoder 200 in the context of video coding standards such as the HEVC video coding standard and the developing H.266 / VCC video coding standard. However, the techniques of the present disclosure are not limited to these video coding standards and are generally applicable to video encoding and decoding.
[0253] exist Fig. 20In the example of , the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual generation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a filter unit 216, a decoded picture buffer (DPB) 218, and an entropy coding unit 220. Any one or all of the video data memory 230, the mode selection unit 202, the residual generation unit 204, the transform processing unit 206, the quantization unit 208, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the filter unit 216, the DPB 218, and the entropy coding unit 220 may be implemented in one or more processors or in processing circuitry. In addition, the video encoder 200 may include additional or alternative processors or processing circuitry to perform these and other functions. For example, as Fig. 20 As shown in the example of , the intra prediction unit 226 may include a MIP unit 227.
[0254] The video data memory 230 may store video data to be encoded by the components of the video encoder 200. The video encoder 200 may receive video data from, for example, the video source 104 ( Figure 1 ) receives the video data stored in the video data memory 230. DPB 218 can act as a reference picture memory, which stores reference video data for use when subsequent video data is predicted by the video encoder 200. Video data memory 230 and DPB 218 can be formed by any of a variety of 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. Video data memory 230 and DPB 218 can be provided by the same memory device or separate memory devices. In various examples, video data memory 230 can be on chip with other components of video encoder 200 (as shown), or off chip relative to those components.
[0255] In the present disclosure, references to the video data memory 230 should not be interpreted as limited to memory internal to the video encoder 200 (unless specifically described as such) or memory external to the video encoder 200 (unless specifically described as such). Rather, references to the video data memory 230 should be understood as a reference memory that stores video data received by the video encoder 200 for encoding (e.g., video data for a current block to be encoded). Figure 1 The memory 106 may also provide temporary storage for outputs from the various units of the video encoder 200 .
[0256] Explained Fig. 20 The various units of the video encoder 200 are provided to help understand the operations performed by the video encoder 200. The unit may be implemented as a fixed-function circuit, a programmable circuit, or a combination thereof. A fixed-function circuit refers to a circuit that provides a specific function and is pre-set with respect to the operations that can be performed. A programmable circuit refers to a circuit that can be programmed to perform various tasks and provide flexible functions with the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. A fixed-function circuit can execute software instructions (e.g., to receive parameters or output parameters), but the type of operation performed by the fixed-function circuit is generally immutable. In some examples, one or more of the units in the unit may be different circuit blocks (fixed-function or programmable), and in some examples, one or more units may be integrated circuits.
[0257] The video encoder 200 may include an arithmetic logic unit (ALU), an elementary function unit (EFU), a digital circuit, an analog circuit, and / or a programmable core formed from programmable circuits. In an example where the operation of the video encoder 200 is performed using software executed by a programmable circuit, the memory 106 ( Figure 1 ) may store object code for software received and executed by the video encoder 200, or another memory (not shown) within the video encoder 200 may store such instructions.
[0258] The video data memory 230 is configured to store the received video data. The video encoder 200 may retrieve pictures 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 original video data to be encoded.
[0259] 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 that perform video prediction according to other prediction modes. As an 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, etc.
[0260] The mode selection unit 202 typically coordinates multiple encoding passes to test combinations of encoding parameters and the resulting rate-distortion values for such combinations. The encoding parameters may include partitioning of a CTU into CUs, a prediction mode for a CU, a transform type for residual data of a CU, a quantization parameter for residual data of a CU, etc. The mode selection unit 202 may ultimately select a combination of encoding parameters that has a better rate-distortion value than other tested combinations.
[0261] The video encoder 200 may partition the picture retrieved from the video data memory 230 into a series of CTUs, and encapsulate one or more CTUs in a slice. The mode selection unit 202 may partition the CTUs of the picture according to a tree structure (such as the QTBT structure or quadtree structure of HEVC described above). As described above, the video encoder 200 may form one or more CUs by partitioning the CTUs according to the tree structure. Such CUs may also be generally referred to as "video blocks" or "blocks".
[0262] Typically, the mode selection unit 202 also controls its components (e.g., the motion estimation unit 222, the motion compensation unit 224, and the intra prediction unit 226) to generate a prediction block for the current block (e.g., the current CU, or the overlapping portion of the PU and TU in HEVC). In order to inter-predict the current block, the motion estimation unit 222 may perform a motion search to identify one or more closely matching reference blocks in one or more reference pictures (e.g., one or more previously decoded pictures stored in the DPB 218). Specifically, the motion estimation unit 222 may calculate a value representing the degree of similarity of the potential reference block to the current block, for example, based on the sum of absolute differences (SAD), the sum of squared differences (SSD), the mean absolute difference (MAD), the mean squared difference (MSD), etc. The motion estimation unit 222 may typically perform these calculations using the sample-by-sample difference between the current block and the reference block under consideration. The motion estimation unit 222 may identify the reference block with the lowest value obtained from these calculations, which indicates the reference block that most closely matches the current block.
[0263] The motion estimation unit 222 may form one or more motion vectors (MVs) that define the position of the reference block in the reference picture relative to the position of the 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, for unidirectional inter prediction, the motion estimation unit 222 may provide a single motion vector, while for bidirectional inter prediction, the motion estimation unit 222 may provide two motion vectors. The motion compensation unit 224 may then use the motion vectors to generate a prediction block. For example, the motion compensation unit 224 may use the motion vectors to retrieve data for the reference block. As another example, if the motion vectors have fractional sample precision, the motion compensation unit 224 may interpolate the values for the prediction block according to one or more interpolation filters. In addition, for bidirectional inter prediction, the motion compensation unit 224 may retrieve data for two reference blocks identified by corresponding motion vectors and combine the retrieved data, for example, by sample-by-sample averaging or weighted averaging.
[0264] As another example, for intra prediction or intra prediction decoding, the intra prediction unit 226 can generate a prediction block based on samples adjacent to the current block. For example, for directional mode, the intra prediction unit 226 can generally mathematically combine the values of adjacent samples and fill these calculated values across the current block in a defined direction to produce a prediction block. As another example, for DC mode, the intra prediction unit 226 can calculate the average of adjacent samples of the current block and generate a prediction block to include the resulting average for each sample of the prediction block.
[0265] exist Fig. 20 In the example of , MIP unit 227 may use the MIP mode to generate a prediction block for a current block of video data. For example, MIP unit 227 may perform Fig.19 to generate a prediction block. However, according to one or more techniques of the present disclosure, the MIP unit 227 may determine multiple available matrix intra prediction (MIP) parameter sets (MPS) for a picture of the video data. The multiple available MPSs are a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs. Each default MPS in the default MPSs is associated with a predefined MIP mode in a codec (e.g., VVC or another video codec). Each additional MPS in the set of additional MPSs is associated with a new MIP mode. The MIP unit 227 may use a MIP mode associated with an MPS in the multiple available MPSs to generate a prediction block for the current block of the picture. The video encoder 200 may signal a set of additional MPSs in a bitstream comprising an encoded representation of the video data.
[0266] The mode selection unit 202 provides the prediction block to the residual generation unit 204. The residual generation unit 204 receives the original uncoded 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 a residual block for the current block. In some examples, the residual generation unit 204 may also determine the difference between the sample values in the residual block to generate the residual block using residual differential 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.
[0267] In an example where the mode selection unit 202 partitions the CU into PUs, each PU may be associated with a luma prediction unit and a corresponding chroma prediction unit. The video encoder 200 and the video decoder 300 may support PUs of various sizes. As noted above, the size of a CU may refer to the size of a luma coding block of the CU, and the size of a PU may refer to the size of a luma prediction unit of the PU. Assuming that the size of a particular CU is 2Nx2N, the video encoder 200 may support PU sizes of 2Nx2N or NxN for intra-prediction, and 2Nx2N, 2NxN, Nx2N, NxN, or similar symmetrical PU sizes for inter-prediction. The video encoder 200 and the video decoder 300 may also support asymmetric partitioning for PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for inter-prediction.
[0268] In an example where the mode selection unit does not further split the CU into PUs, each CU may be associated with a luma coding block and a corresponding chroma coding block. As described above, the size of a CU may refer to the size of the luma coding block of the CU. The video encoder 200 and the video decoder 300 may support a CU size of 2Nx2N, 2NxN, or Nx2N.
[0269] For other video coding techniques (such as intra block copy mode coding, affine mode coding, and linear model (LM) mode coding, to name a few examples), the mode selection unit 202 generates a prediction block for the current block being encoded via a corresponding unit associated with the coding technique. In some examples (such as palette mode coding), the mode selection unit 202 may not generate a prediction block, but instead generate syntax elements indicating how to reconstruct the block based on the selected palette. In such a mode, the mode selection unit 202 may provide these syntax elements to the entropy coding unit 220 for encoding.
[0270] As described above, the residual generation unit 204 receives video data for a current block and a corresponding prediction 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 prediction block and the current block.
[0271] The transform processing unit 206 applies one or more transforms to the residual block to generate a block of transform coefficients (referred to herein as a "transform coefficient block"). The transform processing unit 206 can apply various transforms to the residual block to form a transform coefficient block. For example, the transform processing unit 206 can apply a discrete cosine transform (DCT), a directional transform, a Karhunen-Loeve transform (KLT), or a conceptually similar transform to the residual block. In some examples, the transform processing unit 206 can perform a variety of transforms on the residual block, for example, a primary transform and a secondary transform (such as a rotation transform). In some examples, the transform processing unit 206 does not apply a transform to the residual block.
[0272] The quantization unit 208 may quantize the transform coefficients in the transform coefficient block to produce a quantized transform coefficient block. The quantization unit 208 may quantize the transform coefficients of the transform coefficient block according to a quantization parameter (QP) value associated with the current block. The video encoder 200 (e.g., via the mode selection unit 202) may adjust the degree of quantization applied to the transform coefficient block associated with the current block by adjusting the QP value associated with the CU. Quantization may cause a loss of information, and therefore, the quantized transform coefficients may have a lower precision than the original transform coefficients produced by the transform processing unit 206.
[0273] The inverse quantization unit 210 and the inverse transform processing unit 212 may apply inverse quantization and inverse transform, respectively, to the quantized transform coefficient block to reconstruct a residual block from the transform coefficient block. The reconstruction unit 214 may generate a reconstructed block corresponding to the current block (although potentially with some degree of distortion) based on the reconstructed residual block and the prediction block generated by the mode selection unit 202. For example, the reconstruction unit 214 may add samples of the reconstructed residual block to corresponding samples of the prediction block generated by the mode selection unit 202 to generate a reconstructed block.
[0274] Filter unit 216 may perform one or more filter operations on the reconstructed block. For example, filter unit 216 may perform a deblocking operation to reduce blocking artifacts along the edge of the CU. In some examples, the operations of filter unit 216 may be skipped.
[0275] The video encoder 200 stores the reconstructed blocks in the DPB 218. For example, in an example where the operation of the filter unit 216 is not required, the reconstruction unit 214 can store the reconstructed blocks in the DPB 218. In an example where the operation of the filter unit 216 is required, the filter unit 216 can store the filtered reconstructed blocks in the DPB 218. The motion estimation unit 222 and the motion compensation unit 224 can retrieve the reference picture formed according to the reconstructed (and potentially filtered) blocks from the DPB 218 to perform inter-frame prediction on the blocks of the subsequently encoded pictures. In addition, the intra-frame prediction unit 226 can use the reconstructed blocks of the current picture in the DPB 218 to perform intra-frame prediction on other blocks in the current picture.
[0276] In general, the entropy coding unit 220 may entropy encode syntax elements received from other functional components of the video encoder 200. For example, the entropy coding unit 220 may entropy encode a quantized transform coefficient block from the quantization unit 208. As another example, the entropy coding unit 220 may entropy encode a prediction syntax element (e.g., motion information for inter-frame prediction or intra-frame mode information for intra-frame prediction) from the mode selection unit 202. The entropy coding unit 220 may perform one or more entropy coding operations on syntax elements as another example of video data to generate entropy-encoded data. For example, the entropy coding unit 220 may perform a context-adaptive variable length coding (CAVLC) operation, a CABAC operation, a variable-to-variable (V2V) length coding operation, a syntax-based context-adaptive binary arithmetic coding (SBAC) operation, a probability interval partitioning entropy (PIPE) coding operation, an 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 the syntax elements are not entropy encoded.
[0277] The video encoder 200 may output a bitstream including entropy-encoded syntax elements required for reconstructing a block of a slice or picture. Specifically, the entropy encoding unit 220 may output a bitstream.
[0278] The above operations are described with respect to blocks. Such descriptions should be understood as operations for luma coding blocks and / or chroma coding blocks. As described above, in some examples, the luma coding blocks and chroma coding blocks are the luma components and chroma components of a CU. In some examples, the luma coding blocks and chroma coding blocks are the luma components and chroma components of a PU.
[0279] In some examples, operations performed with respect to luma coding blocks need not be repeated for chroma coding blocks. As an example, operations for identifying motion vectors (MVs) and reference pictures for luma coding blocks need not be repeated to identify MVs and reference pictures for chroma blocks. Instead, the MVs for luma coding blocks may be scaled to determine MVs for chroma blocks, and the reference pictures may be the same. As another example, the intra prediction process may be the same for luma coding blocks and chroma coding blocks.
[0280] The video encoder 200 represents an example of a device configured to encode video data, the device comprising: a memory configured to store video data; and one or more processors implemented in a circuit and configured to implement any of the techniques of the present disclosure. For example, in one example, the video encoder 200 represents an example of a device configured to encode video data, the device comprising: a memory configured to store video data; and one or more processors implemented in a circuit and configured to perform the following operations: determine multiple available MPSs for a picture of the video data. The multiple available MPSs are the union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs. In this example, each default MPS in the default MPS is associated with a predefined MIP mode in the codec, and each additional MPS in the set of additional MPSs is associated with a new MIP mode. In addition, in this example, one or more processors may be configured to: use a MIP mode associated with an MPS in the multiple available MPSs to generate a prediction block for a current block of the picture. The processor may signal the set of additional MPSs in a bitstream comprising an encoded representation of the video data. The processor may be further configured to generate residual data for the current block based on the prediction block for the current block and the samples of the current block.
[0281] Fig.21 is a block diagram illustrating an example video decoder 300 that may perform the techniques of this disclosure. Fig.21 It is provided for the purpose of explanation and does not limit the techniques broadly illustrated and described in this disclosure. For the purpose of explanation, this disclosure describes the video decoder 300 with the techniques of JEM, VVC, and HEVC. However, the techniques of this disclosure can be performed by video decoding devices configured for other video decoding standards.
[0282] exist Fig.21In the example of , 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 transform 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, the entropy decoding unit 302, the prediction processing unit 304, the inverse quantization unit 306, the inverse transform processing unit 308, the reconstruction unit 310, the filter unit 312, and the DPB 314 may be implemented in one or more processors or in processing circuitry. Furthermore, the video decoder 300 may include additional or alternative processors or processing circuitry to perform these and other functions. For example, in Fig.21 In the example of , the intra prediction unit 226 may include a MIP unit 227 .
[0283] 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 that perform predictions according to other prediction modes. As an example, the prediction processing unit 304 may include a palette unit, an intra-block copy unit (which may form part of the motion compensation unit 316), an affine unit, a linear model (LM) unit, etc. In other examples, the video decoder 300 may include more, fewer, or different functional components.
[0284] CPB memory 320 may store video data, such as an encoded video bitstream, to be decoded by components of video decoder 300. For example, the video bitstream may be obtained from computer readable medium 110 ( Figure 1 ) obtains video data stored in CPB memory 320. CPB memory 320 may include a CPB that stores encoded video data (e.g., syntax elements) from an encoded video bitstream. In addition, CPB memory 320 may store video data other than syntax elements of decoded pictures, such as temporary data representing outputs from various units of video decoder 300. DPB314 typically stores decoded pictures, and video decoder 300 may output decoded pictures, and / or use decoded pictures as reference video data when decoding subsequent data or pictures of the encoded video bitstream. CPB memory 320 and DPB 314 may be formed by any of a variety of memory devices, such as DRAM, including SDRAM, MRAM, RRAM or other types of memory devices. CPB memory 320 and DPB 314 may be provided by the same memory device or separate memory devices. In various examples, CPB memory 320 may be on-chip with other components of video decoder 300, or off-chip relative to those components.
[0285] Additionally or alternatively, in some examples, video decoder 300 may retrieve the video from memory 120 ( Figure 1 ) to retrieve the decoded video data. That is, memory 120 may utilize CPB memory 320 to store data as discussed above. Likewise, when some or all of the functions of video decoder 300 are implemented in software to be executed by processing circuitry of video decoder 300, memory 120 may store instructions to be executed by video decoder 300.
[0286] It explains Fig.21 The various units shown in FIG. 3 are shown 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. Fig. 20 , fixed-function circuits refer to circuits that provide specific functions and are pre-set with respect to the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functions with respect to the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits can execute software instructions (e.g., to receive parameters or output parameters), but the types of operations performed by fixed-function circuits are 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 units may be integrated circuits.
[0287] The video decoder 300 may include an ALU, an EFU, a digital circuit, an analog circuit, and / or a programmable core formed from programmable circuits. In an example where the operation of the video decoder 300 is performed by software executed on the programmable circuits, an on-chip or off-chip memory may store instructions (e.g., object code) of the software that the video decoder 300 receives and executes.
[0288] The entropy decoding unit 302 may receive the encoded video data from the CPB and entropy decode the video data to regenerate the syntax elements. The prediction processing unit 304, the inverse quantization unit 306, the inverse transform processing unit 308, the reconstruction unit 310, and the filter unit 312 may generate decoded video data based on the syntax elements extracted from the bitstream.
[0289] Generally, the video decoder 300 reconstructs a picture block by block. The video decoder 300 may perform a reconstruction operation on each block individually (wherein a block currently being reconstructed (ie, decoded) may be referred to as a "current block").
[0290] The entropy decoding unit 302 may entropy decode syntax elements defining the quantized transform coefficients of the quantized transform coefficient block and transform information such as a quantization parameter (QP) and / or a transform mode indication. The inverse quantization unit 306 may use the QP associated with the quantized transform coefficient block to determine a degree of quantization, and likewise, determine a degree of inverse quantization for the inverse quantization unit 306 to apply. The inverse quantization unit 306 may, for example, perform a bitwise left shift operation to inverse quantize the quantized transform coefficients. The inverse quantization unit 306 may thereby form a transform coefficient block including the transform coefficients.
[0291] After the inverse quantization unit 306 forms the transform coefficient block, the inverse transform processing unit 308 may apply one or more inverse transforms to the transform coefficient block to generate a residual block associated with the current block. For example, the inverse transform processing unit 308 may apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotational transform, an inverse directional transform, or another inverse transform to the transform coefficient block.
[0292] In addition, prediction processing unit 304 generates a prediction block based on the prediction information syntax elements entropy decoded by entropy decoding unit 302. For example, if the prediction information syntax elements indicate that the current block is inter-predicted, motion compensation unit 316 can generate a prediction block. In this case, the prediction information syntax elements can indicate a reference picture in DPB 314 from which to retrieve the reference block, and a motion vector that identifies the position of the reference block in the reference picture relative to the position of the current block in the current picture. Motion compensation unit 316 can generally generate a prediction block in the same manner as described for motion compensation unit 224 ( Fig. 20 )The inter-frame prediction process is performed in a manner substantially similar to that described in detail above.
[0293] 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 prediction block according to the intra-prediction mode indicated by the prediction information syntax element. Again, the intra-prediction unit 318 may generally generate a prediction block in the same manner as described with respect to the intra-prediction unit 226 ( Fig. 20 The intra prediction process is performed in a substantially similar manner as described in the foregoing description. The intra prediction unit 318 may retrieve data of neighboring samples of the current block from the DPB 314.
[0294] According to the technology of the present disclosure, the MIP unit 227 of the intra prediction unit 318 can generate a prediction block. For example, the MIP unit 227 can determine multiple available MPSs for a picture of the video data. The multiple available MPSs are the union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream. Each default MPS in the set of default MPSs is associated with a predefined MIP mode in the codec. Each additional MPS in the set of additional MPSs is associated with a new MIP mode in the set of new MIP modes. The MIP unit 227 can use the MIP mode associated with the MPS in the multiple available MPSs to generate a prediction block for the current block of the picture.
[0295] The reconstruction unit 310 may reconstruct the current block using the prediction block and the residual block. For example, the reconstruction unit 310 may reconstruct the current block by adding samples of the residual block to corresponding samples of the prediction block.
[0296] The filter unit 312 may perform one or more filter operations on the reconstructed block. For example, the filter unit 312 may perform a deblocking operation to reduce blocking artifacts along the edges of the reconstructed block. The operations of the filter unit 312 may not necessarily be performed in all examples.
[0297] The video decoder 300 may store the reconstructed block in the DPB 314. For example, in examples where the operation of the filter unit 312 is not performed, the reconstruction unit 310 may store the reconstructed block in the DPB 314. In examples where the operation of the filter unit 312 is performed, the filter unit 312 may store the filtered reconstructed block in the DPB 314. As discussed above, the DPB 314 may provide reference information (such as samples of the current picture for intra-frame prediction and previously decoded pictures for subsequent motion compensation) to the prediction processing unit 304. In addition, the video decoder 300 may output the decoded picture from the DPB 314 for use in, for example, Figure 1 Subsequent presentation on a display device such as display device 118.
[0298] In this way, the video decoder 300 represents an example of a video decoding device, which includes: a memory configured to store video data; and one or more processors, which are implemented in circuits and configured to implement any of the techniques of the present disclosure. For example, in one example, the video decoder 300 may represent an example of a video decoding device, which includes: a memory configured to store video data; and one or more processors, which are implemented in circuits and configured to: obtain a bitstream, which includes an encoded representation of video data encoded using a codec. The one or more processors may also be configured to determine multiple available MPSs for pictures of the video data. In this example, the multiple available MPSs are a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, each of the default MPSs being associated with a predefined MIP mode in the codec, and each of the additional MPSs in the set of additional MPSs being associated with a new MIP mode in the set of new MIP modes. In addition, the one or more processors may be configured to generate a prediction block for a current block of the picture using a MIP mode associated with an MPS in a plurality of available MPSs. The one or more processors may also be configured to reconstruct the current block based on the prediction block for the current block and the residual data for the current block.
[0299] The following text describes examples of how one or more techniques disclosed in this disclosure may be implemented. According to a first example implementation, specify N D A set of D-MIP modes and specifies N for the current picture E =A set of E-MIP modes. Each D-MIP mode belongs to a RSLA and a PSLA, which covers a subsampled version of the prediction block. In this example, all E-MIP modes belong to the same RSLA and PSLA. The ESPPS for each D-MIP mode is represented as a parameter vector. numParamPSLA(nW,nH) and numParamRSLA(nW,nH) can be used to indicate the number of parameters in the i-th ESPP of a prediction block of size nWxnH for PSLA and RSLA, respectively.
[0300] A k (k=0..N D –1) can be used to represent N for the current block of size nWxnH D D-MIP matrix, where A k is a nPxnR matrix, where nP=numParamPSLA(nW,nH) and nR=numParamRSLA(nW,nH). Matrix A kis predefined and already available in the video encoder 200 and the video decoder 300 .
[0301] Signal N as follows E The signaling can be a coding unit syntax structure, SPS, PPS, or any syntax structure in the bitstream. When signaled in a specific parameter set (e.g., SPS, PPS, or other type of parameter set), N is specified for all slices that reference the specific parameter set. E For example, if the video encoder 200 determines that an E-MIP mode set is beneficial for a particular video content, the video encoder 200 can signal these E-MIP modes in the SPS, thereby making the E-MIP mode set available for all pictures that reference the SPS. The following is an example syntax table that contains syntax elements for signaling an E-MIP mode.
[0302] Syntax Table 3
[0303]
[0304] In syntax table 3, num_emip_modes specifies the number of emip modes signaled immediately following this syntax element. The value of num_emip_modes may be in the range of 0 to 15 (inclusive).
[0305] In addition, in syntax table 3, emip_type_flag[i] equal to 0 specifies that the parameters of the i-th E-MIP mode can be derived independently of the parameters of other MIP modes. emip_type_flag[i] equal to 1 specifies that the parameters of the i-th E-MIP mode can be derived from the parameters of one or more MIP modes. The MIP mode from which the parameters of the i-th E-MIP mode are derived is called the reference MIP mode of the i-th E-MIP mode.
[0306] Thus, in some examples, a syntax element (e.g., emip_type_flag) in the bitstream indicates whether the MIP mode is specified relative to an already specified MIP mode or whether the MIP mode is specified independently. Based on the syntax element indicating that the MIP mode is specified relative to an already specified mode, the video decoder 300 may use parameters of one or more MIP modes to derive parameters of the MIP mode. Otherwise, based on the syntax element indicating that the E-MIP mode is specified independently, the video decoder 300 may derive parameters of the MIP mode without using any parameters of any other MIP mode. Similarly, the video encoder 200 may derive parameters of the MIP mode using parameters of one or more MIP modes, and signal in the bitstream a syntax element indicating that the MIP mode is specified relative to an already specified MIP mode (e.g., emip_type_flag=1). Alternatively, the video encoder 200 may derive parameters of the MIP mode without using any parameters of any other MIP mode, and may signal in the bitstream a syntax element indicating that the MIP mode is specified independently (e.g., emip_type_flag=0).
[0307] In syntax Table 3, emip_num_rsl[] and emip_num_psl[] may be used to specify the number of entries associated with the i th E-MIP mode in RSLA and PSLA, respectively.
[0308] In syntax Table 3 above, emip_infer_num_psla_flag[] (and similarly, emip_infer_num_rsla_flag[]) may be used to specify the number of entries in PSLA that may be inferred or derived from other MIP modes.
[0309] In some examples, an additional syntax element emip_num_addn_params[] may be specified to indicate additional parameters required for performing the MIP. For example, an offset parameter may be defined in each ESPPS used in prediction, in which case emip_num_addn_params[] may be set to 1.
[0310] emip_param[i][m][n] specifies the nth E-MIP parameter associated with the mth predicted sample position of the i-th E-MIP mode. When not present, one or more syntax elements specified in the present disclosure (e.g., num_emip_modes, emip_type_flag, emip_num_rsl, emip_num_psl, emip_infer_num_psla_flag, emip_infer_num_rsla_flag, emip_num_addn_params, etc.) may be inferred to be a default value (e.g., zero). The nth E-MIP parameter may be a matrix coefficient or an offset value.
[0311] In some examples, an additional syntax element may be signaled that specifies the index of the reference MIP mode for the i th MIP mode.
[0312] In some examples, emip_param is signaled (such as for the first parameter of the ESPS), and the subsequent E-MIP parameters are delta-coded relative to the previous E-MIP parameters. In other words, the subsequent E-MIP parameters are signaled using syntax elements that indicate the difference between the subsequent E-MIP parameters and the previous E-MIP parameters. The following syntax table shows an example syntax in which the subsequent E-MIP parameters are delta-coded.
[0313] Syntax Table 4
[0314]
[0315] In syntax Table 4, delta_emip_param[i][m][n] may be used to specify a delta value associated with an E-MIP parameter. The delta value may be used to derive an nth E-MIP parameter associated with the mth prediction sample position of the ith E-MIP.
[0316] In some examples, a reference MIP index may be signaled for an E-MIP mode. The reference MIP index may point to a D-MIP mode or a previously signaled E-MIP mode. emip_param[][][], emip_num_addn_params[][] and other related parameters may be delta-coded relative to corresponding values of the reference MIP.
[0317] In some examples, in addition to the above signaling, the video encoder 200 may also signal the positions of the PSLA and RSLA of the E-MIP mode. For example, the samples of the position array of the E-MIP mode (i.e., PSLA and RSLA) may be specified as a set of (x, y) coordinates and signaled. In some examples, the samples of the position array of the E-MIP mode are specified as offsets from the boundaries of block boundaries, picture boundaries, tile boundaries, brick boundaries, or any type of spatial region that can be defined and contains the current block. In some examples, the samples of the position array of the E-MIP mode are specified as offsets in a scan order that traverses the region containing the current block. Example scan orders may include a raster scan order, a z scan order, a diagonal scan order, a reverse scan order, or any other scan order that may be defined. The spatial region that may be used to specify the scan order may be different from the region of the block (e.g., the scan order may be at the CU level, and the block may be a TU block). The reference point of the coordinates (corresponding to the coordinates (0, 0)) may be selected as the upper left sample of a block, CU, TU, tile, picture, brick, or any other position that has some relationship to the current block. In some examples, PSLA and RSLA may not have specifications for different signaling methods.
[0318] Thus, in some examples, as part of generating a prediction block for a current block using a MIP mode, the video encoder 200 and the video decoder 300 may, for each sample position in a PSLA for the MIP mode, predict a sample for the sample position using parameters corresponding to the sample position contained in an ESPPS. The video encoder 200 and the video decoder 300 may interpolate the remaining samples of the prediction block based on the predicted samples for the sample position of the PSLA for the MIP mode. In such examples, the ESPPS for the MIP mode may be signaled in the bitstream as being dependent on another ESPPS or independent of any other ESPPS. Additionally, in some examples, the PSLA for the MIP mode may be signaled in the bitstream.
[0319] A second example implementation of the technology of the present disclosure implements a variation on the idea of signaling MIP parameters. In the second example implementation, it is assumed that the positions of the reference samples and the prediction samples are not modified. For example, different categories of MIP modes may be specified, and each category may have a specific definition of RSLA and PSLA for a specific category and a specific block size. For example, in JVET-N1008-v8, three categories of blocks are specified for a specific block size:
[0320] category Block size Number of MIP modes Number of parameters 0 4x4 35 1440 1 4x8,8x4,8x8 19 1440 2 Other block sizes 11 3456
[0321] The positions of RSLA and PSLA are also defined in JVET-N1008-v8 (based on a subset of reference sample positions (which can be derived from a downsampled grid of reference samples), and a subset of prediction block samples (which can be a downsampled grid of reference samples)).
[0322] In this example, the defined MIP modes are associated with defined MIP mode categories. For each defined category of MIP modes, a new MIP mode may be included in the category. In addition, some existing MIP modes (ie, D-MIP modes) may also be considered unavailable.
[0323] The following definitions may apply with respect to the second example implementation:
[0324] • MIP parameter set (MPS): A parameter set associated with a MIP mode, which is used to predict blocks coded using the MIP mode. MPS refers collectively to all parameters associated with a MIP mode (eg, matrix coefficients, offset vectors, etc.).
[0325] MPS subset: A parameter subset of the MPS used to predict a sample in a prediction block. Under the current MIP design, the sample may belong to a downsampled grid in the prediction block. An MPS subset may refer to a row of a matrix used by a MIP mode and one entry of its offset vector.
[0326] • Default MIP Parameter Set (DMPS): An MPS associated with a predefined MIP mode (ie D-MIP mode) in the codec.
[0327] Additional MIP Parameter Set (AMPS): An MPS that is signaled in the bitstream and is associated with a new MIP mode (i.e., E-MIP mode). The AMPS may be signaled independently or as being dependent on one or more MPSs. The AMPS may be signaled in a sequence parameter set or other types of parameter sets.
[0328] Available MIP parameter sets (available MPS): MIP parameter sets available for a particular block. In some examples, the available MIP parameter set is the same for all blocks of a picture in a sequence (such as a coded video sequence). The available MIP parameter set is the union of a subset of all AMPSs and all DMPSs signaled in an SPS (or other type of parameter set).
[0329] The MPS A associated with the MIP mode can be defined as a parameter vector. Let N MPS (A) is the number of parameters associated with the MIP mode. The parameters in A can be used to define matrices and offset vectors.
[0330] In addition, N DMPS [i] can be the number of DMPSs belonging to the i-th category specified in the codec. When an AMPS is specified to be dependent on a previously defined MPS (i.e., a reference DMPS), the index of the reference DMPS is signaled and the parameters are signaled as incremental values to those of the reference DMPS.
[0331] In some examples, the video encoder 200 and the video decoder 300 are allowed to predict an AMPS based on other AMPSs specified in the bitstream, such as those AMPSs signaled before the AMPS. In other words, an AMPS with index i may be allowed to reference an AMPS with index j, where j <i。
[0332] Furthermore, in a second example implementation, the available MPS for each picture is determined by an indication in the bitstream. In addition to the AMPS signaled in the SPS, the signaling may also indicate which predefined DMPSs will not be considered for the sequence (i.e., not available in the sequence). The determination of the available MPS may be performed once per sequence and does not change within a sequence.
[0333] In some examples (where the available_mps syntax structure or a subset of available_mps may be signaled in other parameter sets (e.g., APS, PPS, VPS, DPS, etc.) or other parts of the bitstream (e.g., slice header), or is defined for a granularity other than a sequence (e.g., picture, frame, slice, tile, brick, block, tile group, etc.), the available MPS may be determined / derived at the corresponding granularity, or the available MPS may be determined / derived at a granularity that is different from a previously derived available MPS.
[0334] In some examples, when there are more than one category of blocks, a different set of DMPSs is specified for each category. Similarly, in some examples, a set of AMPSs is specified separately for each category. Thus, in some examples, the available MPSs for a picture may include at least one MPS for each of the multiple categories. In some such examples, each of the multiple categories may correspond to a different set of block sizes, or may be defined in other ways.
[0335] According to a second example implementation, the syntax structure for AMPS may be specified in a sequence parameter set, as shown in syntax tables 5 and 6 below.
[0336] Syntax Table 5
[0337]
[0338] Syntax Table 6
[0339]
[0340]
[0341] In some examples, amps_type_idc[] is not signaled and can be signaled separately for each MIP category in different loops. In the syntax structure shown in the syntax table 7 below, the number of AMPS used for each category is signaled separately. The signaling and definition of other syntax elements are also modified accordingly. In some alternatives, a modify_available_dmps_flag is signaled to remove the entire group.
[0342] Syntax Table 7
[0343]
[0344] In some examples, the binarization and coding of the above syntax elements (e.g., num_amps, pred_amps_flag, and / or other syntax elements, including syntax elements described elsewhere in the present disclosure) is only one example, and other codewords and binarization schemes may also be used for one or more syntax elements. For example, the syntax elements may be coded using exponential Golomb coding, Golomb coding, Rice coding, fixed length coding, unary coding, truncated unary coding, truncated binary coding, etc., or a combination thereof.
[0345] In some examples, the modify_available_dmps_flag syntax element may be signaled separately for each category. In other examples, other ways of signaling the available DMPS set may be employed, such as a list of indices corresponding to included DMPSs, a list of indices corresponding to non-included DMPSs, and so on.
[0346] In the syntax table 6 above, the variables NumPredSamples[] and NumRefSamples[] depend on the block size category. In addition, the following semantics may be specified for the syntax elements in the syntax tables 5-7 above.
[0347] available_mps_present_flag equal to 1 specifies that the available_mps_syntax() syntax structure is signaled in the SPS. available_mps_present_flag equal to 0 specifies that the available_mps_syntax() structure is not signaled in the SPS.
[0348] num_amps specifies the number of additional MPSs signaled in the amps_syntax() structure. The value of num_amps should be in the range of 0 to 15 (inclusive).
[0349] amps_type_idc[i] specifies the MIP size ID associated with the i-th AMPS. The value of amps_type_idc[i] shall be in the range of 0 to 2 (inclusive).
[0350] In some examples, AMPS signaling may be allowed to define a matrix for new categories of MIP modes. Categories specific to one or more of the following parameters may be defined: block size, width, height, RSLA, PLSA or other identifiers, including but not limited to prediction mode, characteristics of neighboring blocks, etc. In some cases, such categories may be defined in the specification of the codec. In some cases, signaling associated with defining such categories (e.g., signaling one or more parameters defining the categories) may also be included in the bitstream. For example, in addition to some categories already defined in the matrix, a set of MIP mode categories may be signaled and defined (these categories are predefined, and the signaled types may be included in different lists, or may be included in the same list), and each AMPS may specify an index to the category (an index, e.g., a syntax element used to specify a predefined or signaled, and an index to a specific category). In this example, three predefined categories are specified, and the signaled category is not included.
[0351] In some examples where the number of categories is other than 2, the signaling may be modified to reflect that, for example, there are five categories and therefore the value range should be 0 to 4 (inclusive). Similarly, the number of categories may be derived / signaled, in which case the value range will vary accordingly. The binarization or coding of one or more syntax elements may also vary accordingly.
[0352] pred_amps_flag[i] equal to 1 specifies that the i-th AMPS is dependent on another MPS specified by ref_mps_idx[i]. pred_amps_flag[i] equal to 0 specifies that the i-th AMPS is signaled independently of other MPSs.
[0353] num_bits_for_amps_param_val_minus1[i] plus 1 specifies the number of bits used to signal the syntax element amps_param_val[i][j][k]. The value of num_bits_for_amps_param_val_minus1[i] shall be in the range of 0 to 5, inclusive.
[0354] In some examples, other constraints may apply to the number of bits of num_bits_for_amps_param_val_minus1. For example, the number of bits may be limited to be less than a certain threshold, and the threshold may be signaled in the bitstream (eg, in any parameter set or other part of the bitstream).
[0355] In some examples, the number of bits used to specify the syntax element MPS parameter may depend on the MPS category or other syntax elements. In some examples, the number of bits may be derived from the syntax element num_bits_for_amps_param_val_minus1[].
[0356] In other examples, the number of bits may be different for different MPS parameters. For each MPS parameter or MPS parameter subset, the video coder (e.g., video encoder 200 or video decoder 300) may explicitly signal or infer the number of bits. In other examples, the number of bits may be specified to be subject to a signaled threshold constraint.
[0357] ref_mps_idx[i] specifies the MPS index used to derive the i-th MPS parameters. The value of ref_mps_idx[i] shall be between 0 and N. DMPS The MPS indicated by ref_mps_idx[i] is referred to as the reference MPS for the i-th AMPS.
[0358] In some examples, when pred_amps_flag[i] is equal to 1, a requirement for bitstream conformance is that the value of MipSizeId[][] associated with the reference MPS of the i-th AMPS should be equal to amps_type_idc[i].
[0359] The number of bits used to signal ref_mps_idx[] may depend on the number of DPMSs available. For example, the number of bits used to represent ref_mps_idx[i] may be set equal to Ceil(Log2(N DMPS [i]-1)). In other examples, the number of bits may depend on the number of MPSs or the number of available MPSs. In other examples, the number of bits may depend on the number of MPSs derived by the sum of the signaled number of DMPSs and the number of AMPSs.
[0360] pred_amps_subset_flag[i][j] equal to 1 specifies that the j-th subset of the i-th MPS is predicted from the j-th subset of the reference MPS. pred_amps_subset_flag[i][j] equal to 0 specifies that the j-th subset of the i-th MPS is not predicted from the reference MPS. When pred_amps_flag[i] is equal to 1, the value of pred_amps_subset_flag[i][j] is inferred to be equal to 0 for all j in the range of 0 to NumPredSamples[amps_type_idc[i]]–1, inclusive. When pred_amps_flag[i] is equal to 1, the value of pred_amps_subset_flag[i][j] shall be equal to 1 for at least one value of j in the range of 0 to NumPredSamples[amps_type_idc[i]]–1, inclusive.
[0361] In some examples, when pred_amps_flag[i] is equal to 1 and the value of pred_amps_subset_flag[i][j] is in the range of 0 to NumPredSamples[amps_type_idc[i]]–2 (inclusive), the syntax element pred_amps_subset_flag[i][j] (for j=NumPredSamples[amps_type_idc[i]]–1) may not be signaled and may be inferred to be equal to 1.
[0362] In some examples, other methods may be specified to indicate that an MPS or MPS subset is derived from another MPS or MPS subset. The techniques disclosed herein are applicable to any such reference methods. The idea is to indicate an MPS or MPS subset as a reference from which the parameters of the current MPS or MPS subset are derived. For example, one or more MPS subsets of an MPS may have reference MPS subsets belonging to different MPSs. In other examples, MPS subsets may be restricted to subsets referring to the same MPS. In addition, in some examples, an MPS or MPS subset may also reference any MPS or any MPS subset for reference; in some such cases, additional signaling may be required to indicate the reference MPS of an MPS subset.
[0363] In some examples, a syntax element may be signaled to specify that an AMPS subset of an MPS may be derived from another AMPS subset of the same MPS. In some examples, one or more parameters of an AMPS subset may be derived from other parameters of the same AMPS subset.
[0364] In some cases, a subset of parameters for an AMPS subset may be derived from another AMPS subset even if the number of entries in the AMPS subset is different than the reference AMPS subset. In some examples, one or more syntax elements may be signaled to indicate MIP parameters predicted from other MIP parameters. Additional syntax elements may be signaled to specify reference parameters for derivation.
[0365] amps_param_val[i][j][k] is used to derive the kth parameter of the jth subset of the i-th AMPS. The number of bits used to signal amps_param_val[i][j][k] is equal to num_bits_for_amps_param_val_minus1[i]+1. DMPS For i in the range [i]–1 (inclusive), DmpsParamVal[i][j][k] may specify the kth parameter of the jth subset of the i-th DMPS. AMPS For i in the range of –1 (inclusive), AmpsParamVal[i][j][k] can specify the kth parameter of the jth subset of the i-th AMPS. The variable AmpsParamVal[i][j][k] is derived as follows:
[0366]
[0367] modify_available_dmps_flag equal to 1 specifies that the syntax element dmps_included_flag[][] is signaled. modify_available_dmps_flag equal to 0 specifies that the syntax element dmps_included_flag[][] is not signaled, and all DMPSs are considered available for pictures referencing SPSs.
[0368] In some examples, modify_available_dmps_flag may be signaled for each MIP category. In some examples, syntax elements specifying that one or more MIP modes are not available or will not be used for prediction may be signaled. In other examples, syntax elements specifying that one or more MIP modes in a MIP category are not available or will not be used for prediction may be signaled. Syntax elements may also indicate whether MIP modes for an entire category are to be considered unavailable or not used for prediction. Although the semantics of one or more syntax elements in the present disclosure may specify a specific decision (e.g., available mode), it must be understood that the disclosed methods may also be applied to other interpretations of syntax elements (e.g., modify_available_dmps_flag may be signaled as modify_unavailable_dmps_flag).
[0369] dmps_included_flag[m][n] equal to 1 specifies that the nth DMPS corresponding to the MPS of the mth category can be used for prediction of the picture referencing the SPS. dmps_included_flag[m][n] equal to 0 specifies that the nth DMPS corresponding to the MPS of the nth category should not be used for prediction of the picture referencing the SPS. In some examples, when not signaled, the value of dmps_included_flag[m][n] is inferred to be equal to 1. Therefore, in some examples, the video encoder 200 may include a syntax element (e.g., dmps_included_flag) in the SPS of the bitstream indicating whether a particular DMPS in the DMPS can be used for prediction of the picture of the video data referencing the SPS. In other words, the syntax element indicates whether the particular DMPS is included in a subset of the default MPS, which is included in the available MPSs for the picture. Similarly, the video decoder 300 may determine, based on a syntax element (eg, dmps_included_flag) signaled in an SPS of a bitstream, that a particular default MPS among the default MPSs may be used for prediction of a picture of video data that references the SPS.
[0370] In other examples, the number of DMPSs signaled as unavailable may be specified, and an index list of the specified unavailable DMPSs may be signaled.
[0371] The available MPS for a picture referencing an SPS is derived as follows:
[0372]
[0373] In other examples, the DMPSs and AMPSs can all be placed in one MPS list. In one example, only the available DMPSs and AMPSs can be placed in the list. It will be understood that multiple ways of describing a set of DMPSs and AMPSs are possible, and the methods disclosed herein cover one or all of them. The idea here is to define a set of available MPSs (including a subset of DMPSs and a subset of AMPSs), and limit the indication of the MIP mode to those MPSs within the available MPSs. This can also modify the signaling of the MIP mode index accordingly.
[0374] In some examples, there is no mapping from the modes of the MIP mode to the regular intra mode, and vice versa. When deriving the non-MIP MPM, all MIP modes defined by the AMPS can be considered planar modes. If a meaningful mapping from MIP to the regular intra mode, and vice versa, is used, additional syntax elements may need to be included in the signaling to indicate the mapping associated with the AMPS. If MIP MPM derivation is used, some alternatives may not consider including the AMPS in the MIP MPM.
[0375] The signaling of the MIP mode index can be modified to depend on the variable NumAvailableMps[m]. For example, the maximum value of the MPSs in category m can now be NumAvailableMps[m], instead of N DMPS [m]. If mpsIdx is specified to indicate the MIP mode for category m, then when mpsIdx < NumAvailableDmps[m], a DMPS with an index equal to AvailableMpsIdx[m][mpsIdx] is selected. Otherwise, an AMPS with an index equal to AvailableMpsIdx[m][mpsIdx] is selected.
[0376] In some examples, constraints on the value of NumAvailableDmps[] can be specified such that NumAvailableDmps[] is greater than a predetermined or signaled threshold. In other examples, constraints on the value of NumAvailableMps[] can be specified such that NumAvailableMps[] is greater than a predetermined or signaled threshold. In some examples, the signaling of one or more MPS parameters can be modified based on the constraints imposed on NumAvailableDmps or NumAvailableMPS.
[0377] In some examples, constraints on the value of NumAvailableDmps[] may be specified such that NumAvailableDmps[] is less than a predetermined or signaled threshold. In other examples, constraints on the value of NumAvailableMps[] may be specified such that NumAvailableMps[] is greater than a predetermined or signaled threshold. In some examples, signaling of one or more signaled MPS parameters may be modified based on constraints imposed on NumAvailableDmps or NumAvailableMPS.
[0378] In some examples, the variables NumAvailableDmps, NumAvailableMps, or the number of new modes signaled (num_amps) may be constrained based on one or more considerations of: the maximum number of MPSs (which may depend on or be specific to each MIP category), or the maximum memory / maximum number of parameters used by one or more of the total MPS, DMPs, AMPS, or available MPSs. For example, the MIP modes may be coded as truncated binary codewords, and for a particular category m, the maximum value of the codeword as a parameter to be coded may be set to NumAvailableMps[m].
[0379] In some examples, AMPS may also be specified as unavailable when MPS parameters are signaled in multiple parameter sets and slice headers.
[0380] The signaling technique proposed in the present disclosure may have at least two main benefits: (1) the ability to define or add new MIP modes, and (2) marking one or more predefined MIP modes as unavailable. This mechanism supports multiple use cases, some of which are listed below:
[0381] 1) Encoders (e.g., video encoder 200) that have the ability to train MIP mode parameters for specific content will now have the flexibility to signal their newly trained parameters. The signaled parameters will be defined as a new mode that can be used to compress content more efficiently. For example, the video encoder 200 may have multiple test sequences and use training (machine learning or other methods) to derive matrix parameters that give the minimum error in the reconstructed data for these sequences. The sample values in the sequence can be divided into smaller regions, and predictions can be performed using different compressed versions of these training sequences. The minimum error can be the minimum mean square error of the reconstructed value and the original value. In some cases, training can also include a rate component (i.e., rate-distortion optimization) by estimating the number of bits that can be used to signal the MIP mode.
[0382] 2) For some content, some of the predefined matrices may not be used at all, or may not provide sufficient performance. However, predefined modes are currently included and have a negative impact on the signaling cost of the MIP mode. If unused modes are specified in the bitstream, the video encoder 200 will be able to specify the MIP mode more efficiently, and the video decoder 300 will be able to identify the correct mode. For example, the following document indicates that several predefined matrices in VVC may not be useful for VVC Common Test Conditions (CTC): Salehifar et al., "CE3 Related: Low Memory and Computational Complexity Matrix Based Intra Prediction (MIP)", Joint Video Experts Group (JVET) of ITU-T SG 16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 15th Meeting: Gothenburg, Sweden, July 3-12, 2019, document JVET-O0139 submitted on June 21, 2019. Instead of removing these matrices completely, a robust solution could be to indicate that some matrices are not used for specific bitstreams. This would preserve the predefined matrices for non-CTC content (where it may be beneficial), but also allow more efficient / less complex MIP mode signaling for some cases (e.g., CTC).
[0383] 3) Some encoders (e.g., video encoder 200) may not have the resources to train completely new matrices, but may have the ability to re-tune / modify existing mode parameters; if these modified parameters are not significantly different from the predefined parameters, parameter prediction of available_mps_syntax() using pred_amps_flag and ref_mps_idx can be used to signal the modified mode parameters. This allows some flexibility in adding new modes without incurring the cost of signaling the parameters of independent new modes.
[0384] Fig. 22 1 is a flowchart of an example method for encoding a current block according to one or more techniques of the present disclosure. The current block may be a current CU. Although with respect to the video encoder 200 ( Figure 1 and Fig. 20 ), but it should be understood that other devices may be configured to perform the same Fig. 22 A similar approach to the one used in this paper.
[0385] In this example, video encoder 200 initially predicts a current block (350). For example, video encoder 200 may form a prediction block for the current block. Video encoder 200 (e.g., MIP unit 227 ( Fig. 20 )) A MIP mode such as an E-MIP mode may be used to form a prediction block. The video encoder 200 may signal the E-MIP mode according to any of the examples provided in the present disclosure.
[0386] Video encoder 200 may then calculate a residual block for the current block (352). To calculate the residual block, video encoder 200 may calculate the difference between the original unencoded block and the prediction block for the current block.
[0387] The video encoder 200 may then transform the residual block to generate a transform coefficient block (354). The video encoder 200 may quantize the transform coefficients (356). Next, the video encoder 200 may scan the quantized transform coefficients of the residual block (358). During or after the scan, the video encoder 200 may entropy encode the transform coefficients (360). For example, the video encoder 200 may encode the transform coefficients using CAVLC or CABAC. The video encoder 200 may then output the entropy encoded data of the block (362).
[0388] Fig.23 1 is a flowchart illustrating an example method for decoding a current block of video data according to one or more techniques of the present disclosure. The current block may be a current CU. Although with respect to the video decoder 300 ( Figure 1 and 21 ), but it should be understood that other devices may be configured to perform the same Fig.23 A similar approach to the one used in this paper.
[0389] The video decoder 300 may receive entropy-encoded data for a current block, such as entropy-encoded prediction information and entropy-encoded data for transform coefficients of a residual block corresponding to the current block (370). The video decoder 300 may entropy decode the entropy-encoded data to determine prediction information for the current block and regenerate transform coefficients of the residual block (372).
[0390] The video decoder 300 may predict the current block (374), for example, using an intra-frame or inter-frame prediction mode as indicated by the prediction information for the current block to calculate a prediction block for the current block. The video decoder 300 (e.g., the MIP unit 319 ( Fig.21 )) may use a MIP mode (eg, an E-MIP mode) to generate a prediction block for a current block. The video decoder 300 may determine the E-MIP mode according to any of the examples provided in the present disclosure.
[0391] In addition, Fig.23In the example of , video decoder 300 may inverse scan the regenerated transform coefficients to create a block of quantized transform coefficients (376). Video decoder 300 may then inverse quantize and inverse transform the transform coefficients to produce a residual block (378). Video decoder 300 may decode the current block by combining the prediction block for the current block and the residual block (380).
[0392] Fig.24 is a flow chart illustrating example operation of video encoder 200 to encode a block using MIP mode in accordance with one or more techniques of this disclosure. Fig.24 In the example of the video encoder 200 (eg, the MIP unit 227 ( Fig.21 )) can determine multiple available MPSs (400) for pictures of video data. The multiple available MPSs are the union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream. In this example, each default MPS in the default MPSs is associated with a predefined MIP mode in the codec. Each additional MPS in the set of additional MPSs is associated with a new MIP mode. In some examples, the multiple available MPSs include at least one MPS for each of a plurality of categories. In some examples, each of the plurality of categories may correspond to a different set of block sizes. The available MPSs for a picture may apply only to the picture, may apply to a sequence including the picture, or may be defined at another level.
[0393] The video encoder 200 may signal a set of additional MPSs in the bitstream (402). For example, the video encoder 200 may signal a set of additional MPSs in the bitstream using syntax elements shown in Syntax Table 3, Syntax Table 4, Syntax Table 5, Syntax Table 6, or other examples of the present disclosure.
[0394] In addition, Fig.24 In the example of , video encoder 200 may use a MIP mode associated with an MPS in a plurality of available MPSs to generate a prediction block for a current block of a picture (404). For example, video encoder 200 may use a matrix of MPSs and an offset / bias term to determine prediction block 156 ( Fig.19 ) sample value. In some examples, the video encoder 200 may use the PSLA of the MPS to determine the location of the prediction sample in the prediction block 156. In addition, in some examples, the video encoder 200 may use the RSLA of the MPS to determine the location of the boundary sample 152 ( Fig.19 ).
[0395] In some examples where the MIP mode is in a set of new MIP modes and is an explicit MIP (E-MIP) mode, the video encoder 200 may use parameters of one or more MIP modes to derive parameters of the MIP mode. In addition, the video encoder 200 may signal in the bitstream a syntax element indicating that the MIP mode is specified relative to an already specified MIP mode. In other examples, the video encoder 200 may derive parameters of the MIP mode without using any parameters of any other MIP mode. In such examples, the video encoder 200 may signal in the bitstream a syntax element indicating that the MIP mode is specified independently.
[0396] In some examples where the MIP mode is in a set of new MIP modes and is an explicit MIP (E-MIP) mode, the video encoder 200 may signal an ESPPS list for the MIP mode in the bitstream. The MPS associated with the MIP mode includes an ESPPS list for the MIP mode. The PSLA of the MIP mode is a set of sample positions in the current block corresponding to positions where the MIP mode directly generates prediction values. Each ESPPS in the ESPPS corresponds to a sample position in the PSLA of the MIP mode. As part of using the MIP mode to generate a prediction block for the current block, the video encoder 200 may, for each sample position in the PSLA of the MIP mode, use the parameters contained in the ESPPS corresponding to the sample position to predict the sample for the sample position. In addition, the video encoder 200 may interpolate the remaining samples of the prediction block based on the predicted samples of the sample positions of the PSLA for the MIP mode. In some such examples, the video encoder 200 may signal an ESPPS for the MIP mode in the bitstream as being dependent on another ESPPS. Another ESPPS may be another E-MIP mode or a specific predefined MIP mode in the codec.In addition, in some examples, the video encoder 200 may signal the PSLA of the MIP mode in the bitstream.
[0397] Additionally, in some examples, the video encoder 200 can signal a MIP mode index indicating a MIP mode. In this example, signaling the MIP mode index can depend on the number of MIP modes in the MIP mode list. For example, depending on the number of MIP modes in the MIP mode list, the MIP mode index can be decoded using different coding schemes (such as exponential Golomb coding, Golomb coding, fixed length coding, or other coding types).
[0398] In some examples, the video encoder 200 may signal an RSLA for a MIP mode in a bitstream. The RSLA for a MIP mode indicates a set of reference sample positions used in the MIP mode in a neighborhood of a current block. As part of generating a prediction block using the MIP mode, the video encoder 200 may determine a prediction value for each sample position in the PSLA of the MIP mode by multiplying a reference sample at a reference sample position indicated by the RSLA for the MIP mode by a matrix coefficient of a matrix specified in an MPS associated with the MIP mode and adding an offset value specified in the MPS associated with the MIP mode.
[0399] exist Fig.24 In the example of , the video encoder 200 may generate residual data for the current block based on the prediction block for the current block and the samples of the current block (406). For example, the video encoder 200 (eg, the residual generation unit 204 ( Fig. 20 )) may generate residual data for the current block by subtracting samples of the prediction block from corresponding samples of the current block. In some examples, the video encoder 200 may then perform transform, quantization, and entropy encoding operations as described elsewhere in this disclosure.
[0400] Fig.25 is a flow chart illustrating example operation of video decoder 300 to decode a block using MIP mode in accordance with one or more techniques of this disclosure. Fig.25 In the example of , video decoder 300 can obtain a bitstream (450) including an encoded representation of video data encoded using a codec. For example, video decoder 300 can obtain a bitstream (450) from an input interface (such as input interface 122 ( Figure 1 )) from CPB memory 320 ( Fig.21 ) to obtain the bitstream.
[0401] The video decoder 300 may determine a plurality of available MPSs for a picture of the video data (452). The plurality of available MPSs may be a union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream. Each of the default MPSs is associated with a predefined MIP mode in the codec. Each of the additional MPSs in the set of additional MPSs is associated with a new MIP mode in the set of new MIP modes. The available MPSs for a picture may apply only to the picture, may apply to a sequence including the picture, or may be defined at another level.
[0402] The video decoder 300 may determine the available MPSs according to any of the examples provided in the present disclosure. For example, in some examples, the video decoder 300 may determine the available MPSs such that the plurality of MPSs include at least one MPS for each of a plurality of categories. In some examples, each of the plurality of categories corresponds to a different set of block sizes.
[0403] In addition, in some examples, the bitstream may include a syntax element indicating whether the E-MIP mode is specified relative to an already specified MIP mode or whether the E-MIP mode is specified independently. The E-MIP mode is a MIP mode in the new MIP mode. In this example, the video decoder 300 may derive the parameters of the E-MIP mode using parameters of one or more MIP modes based on the syntax element indicating that the E-MIP mode is specified relative to an already specified mode. Otherwise, based on the syntax element indicating that the E-MIP mode is specified independently, the video decoder 300 may derive the parameters of the E-MIP mode without using the parameters of any other MIP mode.
[0404] The video decoder 300 may use the MIP mode associated with the MPS in the plurality of available MPSs to generate a prediction block for the current block of the picture (454). For example, the video decoder 300 may use the matrix of the MPS and the offset / bias term to determine the prediction block 156 ( Fig.19 ) sample value. In some examples, the video decoder 300 may use the PSLA of the MPS to determine the location of the prediction sample in the prediction block 156. In addition, in some examples, the video decoder 300 may use the RSLA of the MPS to determine the location of the boundary sample 152 ( Fig.19 ). For example, regarding Fig.19 , the video decoder 300 may determine the boundary 152 using the reference samples of the RSLA of the MPS.
[0405] A MIP mode index may be signaled in the bitstream to indicate the MIP mode. In some examples of the present disclosure, the signaling of the MIP mode index depends on the number of MIP modes in the MIP mode list. For example, depending on the number of MIP modes in the MIP mode list, the MIP mode index may be decoded using different decoding schemes (such as exponential Golomb decoding, Golomb decoding, fixed length decoding, or other decoding types). Each of the available MPSs may be associated with a different MIP mode in the MIP mode list.
[0406] In some examples, the MIP mode is in a set of new MIP modes and is an explicit MIP (E-MIP) mode. Furthermore, in some such examples, a syntax element (e.g., in a bitstream) indicates whether the MIP mode is specified relative to an already specified MIP mode or whether the MIP mode is specified independently. In this example, based on the syntax element indicating that the MIP mode is specified relative to an already specified mode, the video decoder 300 may derive parameters of the MIP mode using parameters of one or more MIP modes. Otherwise, based on the syntax element indicating that the MIP mode is specified independently, the video decoder 300 may derive parameters of the MIP mode without reference to parameters of any other MIP mode.
[0407] In some examples, the MIP mode is in a set of new MIP modes and is an explicit MIP (E-MIP) mode. In addition, the PSLA of the MIP mode is a set of sample positions in the current block corresponding to the positions where the MIP mode directly generates prediction values, and the MPS associated with the MIP mode includes an ESPPS list for the MIP mode. In such an example, the ESPPS list for the MIP mode is signaled in the bitstream. Each ESPPS in the ESPPS corresponds to a sample position in the PSLA of the MIP mode. In this example, as part of generating a prediction block for the current block using the MIP mode, the video decoder 300 may predict a sample for each sample position in the PSLA of the MIP mode using parameters contained in the ESPPS corresponding to the sample position. The video decoder 300 may interpolate the remaining samples of the prediction block based on the predicted samples of the sample positions of the PSLA for the MIP mode. In some examples, the ESPPS for the MIP mode is signaled in the bitstream as being dependent on another ESPPS. Another ESPPS may be another E-MIP mode or a specific predefined MIP mode in the codec. In other examples, the ESPPS for the MIP mode is predetermined. In addition, in some examples, the PSLA for the MIP mode may be signaled in the bitstream. In other examples, the PLSA for the MIP mode is predetermined.
[0408] In some examples, the RSLA for the MIP mode is signaled in the bitstream. The RSLA for the MIP mode indicates a set of reference sample positions used in the MIP mode in a neighborhood of the current block. In such examples, as part of generating a prediction block using the MIP mode, the video decoder 300 can determine a prediction value for each sample position in the PSLA of the MIP mode by multiplying the reference sample at the reference sample position indicated by the RSLA for the MIP mode by the matrix coefficients of the matrix specified in the MPS associated with the MIP mode and adding an offset value specified in the MPS associated with the MIP mode.
[0409] In addition, Fig.25 In the example of , video decoder 300 may reconstruct the current block based on the prediction block for the current block and the residual data for the current block (456). For example, video decoder 300 (eg, Fig.25 The reconstruction unit 310 ( Fig.23 ))The samples of the prediction block used for the current block can be added to the corresponding samples of the residual data to reconstruct the current block.
[0410] The following is a non-limiting list of examples of one or more techniques in accordance with the present disclosure.
[0411] Example 1. A method of decoding video data, the method including any of the techniques set forth in this disclosure.
[0412] Example 2. The method according to Example 1, wherein the decoding includes decoding.
[0413] Example 3. A method according to any one of Examples 1-2, wherein decoding includes encoding.
[0414] Example 4. A method according to any one of Examples 1-3, wherein: a bitstream includes an encoded representation of video data, a syntax element in the bitstream includes whether an explicit matrix intra prediction (E-MIP) mode is specified relative to an already specified mode or the E-MIP mode is specified independently, and the method includes: based on the syntax element indicating that the E-MIP mode is specified relative to the already specified mode, deriving parameters of the E-MIP mode using parameters of one or more MIP modes; and using an affine linear weighted prediction model to generate a prediction block for the current block based on neighboring reference samples of the current block of the video data and the parameters of the E-MIP mode.
[0415] Example 5. A method according to Example 4, wherein the syntax element is a first syntax element and a second syntax element in the bitstream indicates that the parameters of the E-MIP mode are obtainable from reference MIP parameters based on a combination of two or more operations.
[0416] Example 6. A method according to any one of Examples 4-5, wherein: parameters of an explicit sample predictor parameter subset (ESPPS) are signaled as a reference ESPP that depends on the same MIP mode, and the bitstream includes one or more syntax elements specifying the reference ESPPS, an index of the reference ESPPS, or an increment of the index of the reference ESPPS, which are signaled together with the ESPPS.
[0417] Example 7. A method according to any one of Examples 4-6, wherein: decoding includes decoding, and the method also includes reconstructing the current block based on the prediction block for the current block.
[0418] Example 8. A method according to any one of Examples 4-6, wherein: decoding includes encoding, and the method also includes generating residual data based on the prediction block for the current block.
[0419] Example 9. An apparatus for decoding video data, the apparatus comprising one or more units for performing the method according to any one of Examples 1-8.
[0420] Example 10. An apparatus according to Example 9, wherein the one or more units include one or more processors implemented in a circuit.
[0421] Example 11. The device according to any one of Examples 9 and 10 further includes: a memory for storing the video data.
[0422] Example 12. The apparatus of any one of Examples 9-11, further comprising: a display configured to display the decoded video data.
[0423] Example 13. A device according to any of Examples 9-12, wherein the device includes one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.
[0424] Example 14. A device according to any of Examples 9-13, wherein the device includes a video decoder.
[0425] Example 15. A device according to any of Examples 9-14, wherein the device includes a video encoder.
[0426] Example 16. A computer-readable storage medium having instructions stored thereon, which instructions, when executed, cause one or more processors to perform a method according to any one of Examples 1-8.
[0427] It is to be appreciated that, according to examples, certain actions or events of any of the techniques described herein may be performed in a different order, may be added, combined, or omitted entirely (e.g., not all described actions or events are necessary for the practice of the techniques). In addition, in some examples, actions or events may be performed concurrently rather than sequentially, such as through multithreading, interrupt handling, or multiple processors.
[0428] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or sent through a computer-readable medium as one or more instructions or codes and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium corresponding to a tangible medium such as a data storage medium or a communication medium, the communication medium including, for example, any medium that facilitates the transfer of a computer program from one place to another according to a communication protocol. In this manner, a computer-readable medium may generally correspond to (1) a non-temporary tangible computer-readable storage medium, or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to obtain instructions, codes, and / or data structures for implementing the techniques described in the present disclosure. A computer program product may include a computer-readable medium.
[0429] By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, 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. In addition, any connection is appropriately referred to as a computer-readable medium. For example, if a coaxial cable, optical fiber cable, twisted pair, digital subscriber line (DSL) or wireless technology (such as infrared, radio and microwave) is used to send instructions from a website, server or other remote source, then the coaxial cable, optical fiber cable, twisted pair, DSL or wireless technology (such as infrared, radio and microwave) is included in the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other temporary media, but are instead directed to non-temporary tangible storage media. As used herein, disks and optical disks include compact disks (CDs), laser optical disks, optical disks, digital versatile disks (DVDs), floppy disks and blue-ray disks, wherein disks usually copy data magnetically, while optical disks use lasers to optically copy data. Combinations of the above should also be included within the scope of computer-readable media.
[0430] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the terms "processor" and "processing circuitry" as used herein may refer to any of the aforementioned structures or any other structure suitable for implementing the techniques described herein. In addition, in some aspects, the functions described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. In addition, the techniques may be fully implemented in one or more circuits or logic elements.
[0431] The techniques of the present disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in the present disclosure to emphasize the functional aspects of a device configured to perform the disclosed techniques, but do not necessarily need to be implemented by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit, or provided by a collection of interoperable hardware units (including one or more processors as described above) in combination with appropriate software and / or firmware.
[0432] Various examples have been described. These and other examples are within the scope of the following claims.
Claims
1. A method for decoding video data, the method comprising: obtaining a bitstream comprising an encoded representation of the video data encoded using a codec; A plurality of available matrix intra prediction MIP parameter sets MPS for a picture of the video data is determined, wherein: The plurality of available MPSs is the union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, Each of the default MPSs is associated with a predefined MIP mode in the codec, and Each additional MPS in the set of additional MPSs is associated with a new MIP pattern in the set of new MIP patterns, wherein the new MIP pattern is an explicit MIP (E-MIP) mode; generating a prediction block for a current block of the picture using a MIP mode associated with an MPS of the plurality of available MPSs; and The current block is reconstructed based on the prediction block for the current block and the residual data for the current block.
2. The method according to claim 1, wherein: The plurality of available MPSs includes at least one MPS for each of a plurality of categories, and Each category of the plurality of categories corresponds to a different set of block sizes.
3. The method according to claim 1, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, a syntax element in the bitstream indicating whether the MIP mode is specified relative to an already specified MIP mode or whether the MIP mode is specified independently, and The method further includes deriving parameters of the MIP mode using parameters of one or more MIP modes based on the syntax element indicating that the MIP mode is specified relative to the already specified mode.
4. The method according to claim 1, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, The prediction sample position array PSLA of the MIP mode is a set of sample positions in the current block corresponding to positions where the MIP mode directly generates prediction values. the MPS associated with the MIP mode comprises a list of explicit sample predictor parameter subsets ESPPS for the MIP mode, the ESPPS list for the MIP mode is signaled in the bitstream, Each of the ESPPSs corresponds to a sample position in the PSLA of the MIP mode, and Generating the prediction block for the current block using the MIP mode includes: for each sample position in the PSLA of the MIP mode, predicting a sample for the sample position using parameters contained in the ESPPS corresponding to the sample position; and Remaining samples of the prediction block are interpolated based on the predicted samples of the sample positions of the PSLA for the MIP mode.
5. The method according to claim 4, wherein The ESPPS for the MIP mode is signaled in the bitstream as being dependent on another ESPPS.
6. The method according to claim 5, wherein: The another ESPPS is one of another E-MIP mode or a specific predefined MIP mode in the codec.
7. The method according to claim 1, further comprising: A specific default MPS among the default MPSs is determined to be available for prediction of pictures of the video data that reference the SPS based on syntax elements signaled in a sequence parameter set (SPS) of the bitstream.
8. The method according to claim 1, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, a syntax element in the bitstream indicating whether the MIP mode is specified relative to an already specified MIP mode or whether the MIP mode is specified independently, and The method further includes deriving parameters of the MIP mode without using any parameters of any other MIP mode based on the syntax element indicating that the MIP mode is independently specified.
9. The method according to claim 1, wherein: A MIP mode index is signaled in the bitstream, and the signaled MIP mode index depends on the number of MIP modes in the MIP mode list, and The MIP mode index indicates the MIP mode.
10. The method of claim 1, wherein: A reference sample position array RSLA for the MIP mode is signaled in the bitstream, the RSLA for the MIP mode indicating a set of reference sample positions used in the MIP mode in a neighborhood of the current block, and Generating the prediction block using the MIP mode includes: For each sample position in the prediction sample position array PSLA of the MIP mode, a prediction value is determined by multiplying the reference sample at the reference sample position indicated by the RSLA for the MIP mode by the matrix coefficients of the matrix specified in the MPS associated with the MIP mode and adding an offset value specified in the MPS associated with the MIP mode.
11. A method for encoding video data using a codec, the method comprising: A plurality of available matrix intra prediction MIP parameter sets MPS for a picture of the video data is determined, wherein: The plurality of available MPSs is the union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, Each of the default MPSs is associated with a predefined MIP mode in the codec, and Each additional MPS in the set of additional MPSs is associated with a new MIP mode, wherein the new MIP mode is an explicit MIP (E-MIP) mode; signaling the set of additional MPSs in the bitstream comprising an encoded representation of the video data; generating a prediction block for a current block of the picture using a MIP mode associated with an MPS of the plurality of available MPSs; and Residual data for the current block is generated based on the prediction block for the current block and samples of the current block.
12. The method according to claim 11, wherein: The plurality of available MPSs includes at least one MPS for each of a plurality of categories, and Each category of the plurality of categories corresponds to a different set of block sizes.
13. The method according to claim 11, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, The method further comprises: using parameters of one or more MIP modes to derive parameters of the MIP mode; and A syntax element indicating that the MIP mode is specified relative to an already specified MIP mode is signaled in the bitstream.
14. The method according to claim 11, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, The prediction sample position array PSLA of the MIP mode is a set of sample positions in the current block corresponding to positions where the MIP mode directly generates prediction values. the MPS associated with the MIP mode comprises a list of explicit sample predictor parameter subsets ESPPS for the MIP mode, The method further comprises: signaling the ESPPS list for the MIP mode in the bitstream, Each of the ESPPSs corresponds to a sample position in the PSLA of the MIP mode, and Generating the prediction block for the current block using the MIP mode includes: for each sample position in the PSLA of the MIP mode, predicting a sample for the sample position using parameters contained in the ESPPS corresponding to the sample position; and Remaining samples of the prediction block are interpolated based on the predicted samples of the sample positions of the PSLA for the MIP mode.
15. The method according to claim 14, wherein The method further comprises signaling in the bitstream the ESPPS for the MIP mode as being dependent on another ESPPS.
16. The method according to claim 15, wherein The another ESPPS is one of another E-MIP mode or a specific predefined MIP mode in the codec.
17. The method according to claim 11, further comprising: A syntax element indicating that a specific default MPS among the default MPSs is available for prediction of a picture of the video data that references the SPS is included in a sequence parameter set (SPS) of the bitstream.
18. The method of claim 11, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, The method further comprises: deriving parameters of the MIP mode without using any parameters of any other MIP mode; and A syntax element indicating that the MIP mode is independently specified is signaled in the bitstream.
19. The method according to claim 11, wherein The method further includes signaling a MIP mode index indicating the MIP mode, wherein signaling the MIP mode index depends on the number of MIP modes in a MIP mode list.
20. The method of claim 11, wherein: The method further comprises signaling in the bitstream a reference sample position array RSLA for the MIP mode, the RSLA for the MIP mode indicating a set of reference sample positions used in the MIP mode in a neighborhood of the current block, and Generating the prediction block using the MIP mode includes: For each sample position in the prediction sample position array PSLA of the MIP mode, a prediction value is determined by multiplying the reference sample at the reference sample position indicated by the RSLA for the MIP mode by the matrix coefficients of the matrix specified in the MPS associated with the MIP mode and adding an offset value specified in the MPS associated with the MIP mode.
21. A device for decoding video data, the device comprising: a memory for storing the video data; as well as One or more processors implemented in circuitry, the one or more processors configured to: obtaining a bitstream comprising an encoded representation of the video data encoded using a codec; A plurality of available matrix intra prediction MIP parameter sets MPS for a picture of the video data is determined, wherein: The plurality of available MPSs is the union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, Each of the default MPSs is associated with a predefined MIP mode in the codec, and Each additional MPS in the set of additional MPSs is associated with a new MIP pattern in the set of new MIP patterns, wherein the new MIP pattern is an explicit MIP (E-MIP) mode; generating a prediction block for a current block of the picture using a MIP mode associated with an MPS of the plurality of available MPSs; and The current block is reconstructed based on the prediction block for the current block and the residual data for the current block.
22. The apparatus of claim 21, wherein: The plurality of available MPSs includes at least one MPS for each of a plurality of categories, and Each category of the plurality of categories corresponds to a different set of block sizes.
23. The apparatus of claim 21, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, a syntax element in the bitstream indicating whether the MIP mode is specified relative to an already specified MIP mode or whether the MIP mode is specified independently, and The one or more processors are further configured to derive parameters of the MIP mode using parameters of one or more MIP modes based on the syntax element indicating that the MIP mode is specified relative to the already specified mode.
24. The apparatus of claim 21, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, The prediction sample position array PSLA of the MIP mode is a set of sample positions in the current block corresponding to positions where the MIP mode directly generates prediction values. the MPS associated with the MIP mode comprises a list of explicit sample predictor parameter subsets ESPPS for the MIP mode, the ESPPS list for the MIP mode is signaled in the bitstream, Each of the ESPPSs corresponds to a sample position in the PSLA of the MIP mode, and The one or more processors are configured such that, as part of generating the prediction block for the current block using the MIP mode, the one or more processors perform the following operations: for each sample position in the PSLA of the MIP mode, predicting a sample for the sample position using parameters contained in the ESPPS corresponding to the sample position; as well as Remaining samples of the prediction block are interpolated based on the predicted samples of the sample positions of the PSLA for the MIP mode.
25. The apparatus of claim 24, wherein: The ESPPS for the MIP mode is signaled in the bitstream as being dependent on another ESPPS.
26. The apparatus of claim 25, wherein: The another ESPPS is one of another E-MIP mode or a specific predefined MIP mode in the codec.
27. The apparatus of claim 21, wherein The one or more processors are further configured to determine, based on syntax elements signaled in a sequence parameter set (SPS) of the bitstream, that a particular one of the default MPSs is available for prediction of a picture of the video data that references the SPS.
28. The apparatus of claim 21, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, a syntax element in the bitstream indicating whether the MIP mode is specified relative to an already specified MIP mode or whether the MIP mode is specified independently, and The one or more processors are further configured to derive parameters of the MIP mode without using any parameters of any other MIP mode based on the syntax element indicating that the MIP mode is independently specified.
29. The apparatus of claim 21, wherein: A MIP mode index is signaled in the bitstream, and the signaled MIP mode index depends on the number of MIP modes in the MIP mode list, and The MIP mode index indicates the MIP mode.
30. The apparatus of claim 21, wherein: A reference sample position array RSLA for the MIP mode is signaled in the bitstream, the RSLA for the MIP mode indicating a set of reference sample positions used in the MIP mode in a neighborhood of the current block, and The one or more processors are configured such that, as part of generating the prediction block using the MIP mode, the one or more processors perform the following operations: For each sample position in the prediction sample position array PSLA of the MIP mode, a prediction value is determined by multiplying the reference sample at the reference sample position indicated by the RSLA for the MIP mode by the matrix coefficients of the matrix specified in the MPS associated with the MIP mode and adding an offset value specified in the MPS associated with the MIP mode.
31. The apparatus of claim 21 , further comprising: A display configured to display the decoded video data.
32. The apparatus of claim 21, wherein The device includes one or more of a camera, a computer, a mobile device, or a broadcast receiver device.
33. An apparatus for encoding video data using a codec, the apparatus comprising: a memory for storing the video data; as well as One or more processors implemented in circuitry, the one or more processors configured to: A plurality of available matrix intra prediction MIP parameter sets MPS for a picture of the video data is determined, wherein: The plurality of available MPSs is the union of: (i) a subset of all default MPSs, and (ii) a set of additional MPSs signaled in the bitstream, Each of the default MPSs is associated with a predefined MIP mode in the codec, and Each additional MPS in the set of additional MPSs is associated with a new MIP mode, wherein the new MIP mode is an explicit MIP (E-MIP) mode; signaling the set of additional MPSs in the bitstream comprising an encoded representation of the video data; generating a prediction block for a current block of the picture using a MIP mode associated with an MPS of the plurality of available MPSs; and Residual data for the current block is generated based on the prediction block for the current block and samples of the current block.
34. The apparatus of claim 33, wherein: The plurality of available MPSs includes at least one MPS for each of a plurality of categories, and Each category of the plurality of categories corresponds to a different set of block sizes.
35. The apparatus of claim 33, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, The one or more processors are further configured to: using parameters of one or more MIP modes to derive parameters of the MIP mode; and A syntax element indicating that the MIP mode is specified relative to an already specified MIP mode is signaled in the bitstream.
36. The apparatus of claim 33, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, The prediction sample position array PSLA of the MIP mode is a set of sample positions in the current block corresponding to positions where the MIP mode directly generates prediction values. the MPS associated with the MIP mode comprises a list of explicit sample predictor parameter subsets ESPPS for the MIP mode, The one or more processors are further configured to: signal the ESPPS list for the MIP mode in the bitstream, Each of the ESPPSs corresponds to a sample position in the PSLA of the MIP mode, and The one or more processors are configured such that, as part of generating the prediction block for the current block using the MIP mode, the one or more processors perform the following operations: for each sample position in the PSLA of the MIP mode, predicting a sample for the sample position using parameters contained in the ESPPS corresponding to the sample position; as well as Remaining samples of the prediction block are interpolated based on the predicted samples of the sample positions of the PSLA for the MIP mode.
37. The apparatus of claim 36, wherein: The one or more processors are further configured to signal, in the bitstream, the ESPPS for the MIP mode as being dependent on another ESPPS.
38. The apparatus of claim 37, wherein: The another ESPPS is one of another E-MIP mode or a specific predefined MIP mode in the codec.
39. The apparatus of claim 33, wherein: The one or more processors are further configured to include, in a sequence parameter set (SPS) of the bitstream, a syntax element indicating that a specific default MPS among the default MPSs is available for prediction of a picture of the video data that references the SPS.
40. The apparatus of claim 33, wherein: The MIP mode is in the set of new MIP modes and is an explicit MIP (E-MIP) mode, The one or more processors are further configured to: deriving parameters of the MIP mode without using any parameters of any other MIP mode; and A syntax element indicating that the MIP mode is independently specified is signaled in the bitstream.
41. The apparatus of claim 33, wherein: The one or more processors are further configured to signal a MIP mode index indicating the MIP mode, wherein signaling the MIP mode index depends on a number of MIP modes in a MIP mode list.
42. The apparatus of claim 33, wherein: The one or more processors are further configured to: signal a reference sample position array RSLA for the MIP mode in the bitstream, the RSLA for the MIP mode indicating a set of reference sample positions used in the MIP mode in a neighborhood of the current block, and The one or more processors are configured such that, as part of generating the prediction block using the MIP mode, the one or more processors perform the following operations: For each sample position in the prediction sample position array PSLA of the MIP mode, a prediction value is determined by multiplying the reference sample at the reference sample position indicated by the RSLA for the MIP mode by the matrix coefficients of the matrix specified in the MPS associated with the MIP mode and adding an offset value specified in the MPS associated with the MIP mode.
43. The apparatus of claim 33, wherein: The device includes one or more of a camera, a computer, a mobile device, or a broadcast receiver device.
