INTRA-MODE DEPENDENT MULTIPLE TRANSFORM SELECTION FOR VIDEO CODING
Patent Information
- Authority / Receiving Office
- MX · MX
- Patent Type
- Patents
- Current Assignee / Owner
- QUALCOMM INC
- Filing Date
- 2023-10-05
- Publication Date
- 2026-06-12
AI Technical Summary
Existing video coding techniques do not effectively account for the varying residual characteristics of video blocks with different sizes and intra-prediction modes, leading to suboptimal video compression and quality.
A video encoder selects a multiple transform selection (MTS) scheme based on the size and intra-prediction mode of a block, using a classification system that maps block sizes and modes to specific transform pairs, including horizontal and vertical transforms, to improve compression efficiency.
This approach enhances video compression without degrading quality by tailoring transform selection to the specific characteristics of different block sizes and modes, resulting in improved encoding and decoding efficiency.
Smart Images

Figure MX435339B0
Abstract
Description
INTRA-MODE DEPENDENT MULTIPLE TRANSFORM SELECTION FOR VIDEO CODING This application claims priority to United States Patent Application No. 17 / 658,803, filed April 11, 2022 and United States Provisional Application No. 63 / 173,884, filed April 12, 2021, and the United States Provisional Application No. 63 / 223,377, filed July 19, 2021, the full contents of each are incorporated by reference herein. United States Patent Application No. 17 / 658,803, filed April 11, 2022 claims the benefit of United States Provisional Application No. 63 / 173,884, filed April 12, 2021 and the Provisional Application for United States No. 63 / 223,377, filed July 19, 2021. TECHNICAL FIELD OF THE INVENTION The present disclosure relates to video coding, including video encoding and decoding. BACKGROUND OF THE INVENTION Digital video capabilities can be incorporated into a wide variety of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite radio telephones, so-called “smartphones”, video teleconferencing devices, video streaming and the like. Digital video devices implement video coding techniques, such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, Coding Advanced Video Coding (AVC), ITU-T H.265 / High Efficiency Video Coding (HEVC), ITU-T H.266 / Versatile Video Coding (VVC) and extensions to these standards, as well as codec / formats proprietary videos such as AOMedia Video 1 (AV1) developed by the Alliance for Open Media. Video devices can transmit, receive, encode, decode and / or store digital video information more efficiently by implementing such video coding techniques. Video coding techniques include spatial prediction (intra-image) and / or prediction (inter-image) to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video segment (for example, a video image or a portion of a video image) can be divided into video blocks, which can also be referred to as tree coding units. (CTU), coding units (CU) and / or coding nodes. Video blocks in an intra-encoded (I) segment of an image are encoded using spatial prediction with respect to reference samples in neighboring blocks in the same image. Video blocks in an inter-encoded segment (P or B) of an image may use spatial prediction with respect to reference samples in neighboring blocks in the same image, or temporal prediction with respect to reference samples in other reference images. . Images may be referred to as frames, and reference images may be referred to as reference frames. BRIEF DESCRIPTION OF THE INVENTION Generally, this disclosure describes techniques for selecting a multiple transform selection (MTS) scheme for video coding. A video encoder can divide an image into blocks and encode each block individually. Encoding generally includes forming a prediction block according to a prediction mode and encoding a residual block, where the residual block represents the differences between the prediction block and the actual block. A video encoder can apply a transform to the residual block, while a video decoder can apply an inverse transform to a transform block to reproduce the residual block. An MTS scheme includes several transforms that are applied during residual block encoding, including a horizontal transform and a vertical transform. According to the techniques of this disclosure, a video encoder can be configured to select an MTS scheme according to the size of a block and an intra-prediction mode for the block. In some examples, the video encoder may determine the MTS scheme according to a group of sizes that includes the block size. For example, the size group can be a range of block sizes. The video encoder can be configured with a variety of groups of different sizes, each corresponding to different MTS schemes. Additionally or alternatively, in some examples, the video encoder may determine the MTS scheme according to a group of modes including the intra-prediction mode for the current block. For example, the mode group may be a set of intra-prediction modes. The video encoder can be configured with a variety of different mode groups, each corresponding to different MTS schemes. In some examples, the video encoder may apply size symmetry to select the MTS scheme. For example, a size of MXN, where M and N are non-equal integer values, and are predicted using a directional intra-prediction mode, can be mapped to an MTS scheme, and the video encoder can be configured to select the same iviA / a / ¿u¿ó / u i i ouo MTS scheme for a predicted NxM block using a symmetrical directional intra-prediction mode. In an example, a video data decoding method includes: determining a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determine a mode group that includes the determined intra-prediction mode, the mode group is one of a plurality of mode groups, each of the mode groups in the plurality of mode groups including the respective sets of intra-prediction modes prediction such that each possible intra-prediction mode is included in no more than one of the mode groups; determine a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes is a set of available MTS schemes of a plurality of sets of MTS schemes; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. In another example, a device for decoding (and potentially also encoding) video data may include memory configured to store video data; and one or more processors implemented in circuitry and configured to: determine a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determining a mode group that includes the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups of the plurality of mode groups including respective sets of intra-prediction modes -prediction, so that each possible intra-prediction mode is included in no more than one of the mode groups; determining a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes being a set of available MTS schemes from a plurality of sets of MTS schemes; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. In another example, a computer-readable storage medium has stored thereon instructions that, when executed, cause a processor of a device to decode video data to: determine the size of a current block of video data; determining an intra-prediction mode for the current block of video data; determining a mode group that includes the given intra-prediction mode, the mode group being one of a plurality of mode groups, each of the plurality of mode groups of mode groups includes the respective sets of intra-prediction modes, such that each possible intra-prediction mode is included in no more than one of the mode groups; determining a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes being a set of available MTS schemes from a plurality of sets of MTS schemes; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. In another example, a device for decoding (and potentially also encoding) video data includes means for determining the size of a current block of video data; means for determining an intra-prediction mode for the current block of video data; means for determining a mode group that includes the determined intra-prediction mode, the mode group is one of a plurality of mode groups, each of the mode groups in the plurality of mode groups including the respective sets of intra-prediction modes such that each possible intra-prediction mode is included in no more than one of the mode groups; means for determining a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes is a set of available MTS schemes of a plurality of sets of MTS schemes; means for determining an MTS scheme from the set of available MTS schemes according to the determined mode group; means for applying transforms of the MTS scheme to a transform block of the current block to produce a residual block for the current block; and means for decoding the current block using the residual block. Details of one or more examples are set forth in the accompanying drawings and in the description shown below. Other features, objects, and advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS FIGURE 1 is a block diagram illustrating an exemplary video encoding and decoding system that can perform the techniques of this disclosure. FIGURE 2 is a conceptual diagram illustrating the regular and wide-angle intra-prediction modes. iviA / a / zuzó / u i i ouo FIGURE 3 is a flowchart illustrating an example of a matrix intraprediction (MIP) process. FIGURE 4 is a conceptual diagram illustrating examples of histogram construction for gradient calculations for decoder-side intra-mode derivation and fused intra-prediction (DIMD). FIGURE 5 is a flow chart illustrating an example of prediction block generation and weight determination process for DIMD. FIGURE 6 is a conceptual diagram illustrating a template and reference samples used for template-based intra-mode derivation with fusion (TIMD). FIGURE 7 is a block diagram illustrating an exemplary video encoder that can perform the techniques of this disclosure. FIGURE 8 is a block diagram illustrating an exemplary video decoder that can perform the techniques of this disclosure. FIGURE 9 is a flowchart illustrating an exemplary method for encoding a current block according to the techniques of this disclosure. FIGURE 10 is a flowchart illustrating an exemplary method for decoding a current block in accordance with the techniques of this disclosure. FIGURE 11 is a flow chart illustrating another exemplary method for decoding a block of video data in accordance with the techniques of this disclosure. FIGURE 12 is a flowchart illustrating another exemplary method for decoding a block of video data in accordance with the techniques of this disclosure. FIGURE 13 is a flow chart illustrating another exemplary method for decoding a block of video data in accordance with the techniques of this disclosure. DETAILED DESCRIPTION OF THE INVENTION Video coding standards include ITU-T H.261, ISO / IEC MPEG-1 Visual, ITU-T H.262 or ISO / IEC MPEG-2 Visual, ITU-T H.263, ISO / IEC MPEG-4 Visual (MPEG-4 Part 2), ITUT H.264 (also known as ISO / IEC MPEG-4 AVC), including its Scalable Video Coding (SVC) and Multiview Video Coding (MVC) extensions (also known as ISO / IEC MPEG-4 HEVC (High Efficiency Video Coding)) with its extensions. During the April 2018 meeting of the Joint Video Expert Team (JVET), the Versatile Video Coding (VVC) (also known as ITU-T H.266) standardization activity was initiated, with the evaluation of video compression technologies submitted in response to a Call for Proposals. Generally, this disclosure describes techniques for selecting a multiple transform selection (MTS) scheme for video coding. A video encoder can divide an image into blocks and encode each block individually. ινΐΛ / a / zuzó / u i i ouo coding generally includes forming a prediction block according to a prediction mode and encoding a residual block, where the residual block represents the differences between the prediction block and the actual block . A video encoder can apply a transform to the residual block, while a video decoder can apply an inverse transform to a transform block to reproduce the residual block. An MTS scheme includes several transforms that are applied during residual block encoding, including a horizontal transform and a vertical transform. According to the techniques of this disclosure, a video encoder can be configured to select an MTS scheme according to the size of a block and an intra-prediction mode for the block. Said et al., “CE6.1.1: Extended AMT,” Joint Video Expert Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 11th Meeting: Ljubljana, SI, July 10-18, 2018, Document No. JVET-K0375-v2 (hereinafter “JVET-K0375”), describes an example process for determining an MTS scheme using only the shortest side of a non-square block . As a result, for example, a 16x4 block and a 4x4 block would be treated the same for MTS determination purposes. However, statistically, the respective residual characteristics for these blocks may be different, even if they use the same intra-prediction mode. Additionally, matrix intra-prediction (MIP) modes may have different residual characteristics compared to directional intra-prediction modes. However, JVET-K0375 does not specify different sets of transforms for MIP modes. This disclosure describes several techniques for selecting MTS schemes that can take advantage of residual characteristics for blocks of various sizes representing horizontal and vertical directions in block size, and also take into account the MIP mode as a possible intra-prediction mode. Therefore, these techniques can improve video compression without negatively affecting video quality. FIGURE 1 is a block diagram illustrating an exemplary video encoding and decoding system 100 that can perform the techniques of this disclosure. The techniques of this disclosure are generally directed at encoding (encoding and / or decoding) video data. In general, video data includes any data for processing a video. Therefore, video data may include raw, unencoded video, encoded video, decoded (e.g., reconstructed) video, and video metadata, such as signaling data. As shown in FIGURE 1, system 100 includes a source device 102 that provides encoded video data to be decoded and displayed by a destination device 116, in this example. In particular, the source device 102 provides the video data to the destination device 116 via a computer-readable medium 110. iviA / a / zuzó / u i i ouo The source device 102 and the destination device 116 may comprise any of a wide range of devices, including desktop computers, notebook computers (i.e., laptop), mobile devices, tablet computers, set-top boxes, telephones such as smartphones. , televisions, cameras, display devices, digital media players, video game consoles, video streaming device, transmission receiving devices or similar. In some cases, the source device 102 and the destination device 116 may be equipped for wireless communication and, therefore, may be referred to as wireless communication devices. In the example of FIGURE 1, the source device 102 includes a video source 104, memory 106, video encoder 200, and output interface 108. The destination device 116 includes an input interface 122, video decoder 300 , memory 120 and display device 118. In accordance with this 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 techniques to determine a selection scheme of multiple transform (MTS) according to a size and an intra-prediction mode for a current block. Therefore, the source device 102 represents an example of a video encoding device, while the destination device 116 represents an example of a video decoding device. In other examples, a source device and a 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. Additionally, the target device 116 may interface with an external display device, rather than including an integrated display device. System 100 as shown in FIGURE 1 is just an example. In general, any digital video encoding and / or decoding device can perform techniques to determine a multiple transform selection (MTS) scheme according to a size and an intra-prediction mode for a current block. The source device 102 and the destination device 116 are merely examples of such encoding devices wherein the source device 102 generates encoded video data for transmission to the destination device 116. This disclosure refers to an “encoding” device. ” such as a device that performs encryption (encoding and / or decoding) of data. Therefore, the video encoder 200 and the video decoder 300 represent examples of encoding devices, in particular, a video encoder and a video decoder, respectively. In some examples, the source device 102 and the destination device 116 may operate in a substantially symmetrical manner such that each of the source device 102 and the destination device 116 includes encoding and ινΐΛ / a / zuzó / u i i components. ouo video decoding. Thus, the system 100 may support unidirectional or bidirectional video transmission between the source device 102 and the destination device 116, for example, for video streaming, video playback, video broadcasting, or video telephony. Generally, the video source 104 represents a source of video data (e.g., raw, unencoded video data) and provides a sequential series of images (also referred to as "frames") of the video data to the encoder. video 200, which encodes data for the images. The video source 104 of the source device 102 may include a video capture device, such as a video camera, a video file containing previously captured raw video, and / or a video feed interface for receiving the video from a video content provider. As a further alternative, the video source 104 may generate computer graphics-based data as the source video, or a combination of live video, stored video, and computer-generated video. In each case, video encoder 200 encodes captured, previously captured, or computer-generated video data. The video encoder 200 may rearrange the images from the received order (sometimes referred to as “display order”) into an encoding order for encoding. The video encoder 200 may generate a bit stream including encoded video data. Subsequently, the source device 102 may release the encoded video data through the output interface 108 to the computer-readable medium 110 for receipt and / or retrieval, for example, by the input interface 122 of the destination device 116. . Memory 106 of source device 102 and memory 120 of destination device 116 represent general purpose memories. In some examples, memories 106, 120 may store raw video data, for example, raw video from a video source 104 and raw and decoded video data from a video decoder 300. Additionally or alternatively, The memories 106, 120 may store software instructions executable, for example, by the video encoder 200 and the video decoder 300, respectively. Although memory 106 and memory 120 are shown separately from video encoder 200 and video decoder 300 in this example, it should be understood that video encoder 200 and video decoder 300 may also include internal memories for purposes functionally similar or equivalent. Likewise, memories 106, 120 may store encoded video data, for example, output data from video encoder 200 and input data to video decoder 300. In some examples, portions of memories 106, 120 may be assigned as one or more video buffers, for example, to store raw, decoded and / or encoded video data. The computer-readable medium 110 may represent any type of media or device capable of transporting 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 for allowing the source device 102 to transmit encoded video data directly to the destination device 116 in real time, for example, over a radio frequency network or computer-based network. . The output interface 108 may modulate a transmission signal including the encoded video data, and the input interface 122 may demodulate the received transmission signal in accordance with a communication standard, such as a wireless communication protocol. The communication medium may comprise any wired or wireless communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may be part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful in facilitating communication from the source device 102 to the destination device 116. In some examples, the source device 102 may release encrypted data from the output interface 108 to the storage device 112. Similarly, the destination device 116 may access the encrypted data from the storage device 112 through the interface. input 122. The storage device 112 may include any of a variety of distributed or locally accessed data storage media such as a hard drive, Blu-ray discs, DVD, CD-ROM, flash memory, volatile or non-volatile memory. , or any other digital storage medium suitable for storing encoded video data. In some examples, the source device 102 may release encoded video data to a file server 114 or other intermediate storage device that may store the encoded video data generated by the source device 102. The destination device 116 may access to video data stored from file server 114 via streaming or download. The file server 114 may be any type of server device capable of storing encoded video data and transmitting said encoded video data to the destination device 116. The file server 114 may represent a web server (e.g., for a website ), a server configured to provide a file transfer protocol service (such as File Transfer Protocol (FTP) or File Delivery over One-Way Transport (FLUTE) protocol), a content delivery network device ( CDN), a hypertext transfer protocol (HTTP) server, a Multimedia Multicast Service (MBMS) or enhanced MBMS (eMBMS) server, and / or an iviA / a / ¿u¿ó / u i i ouo attached storage device to the network (ÑAS). The file server 114 may additionally or alternatively implement one or more HTTP streaming protocols, such as Dynamic Adaptive Streaming over HTTP (DASH), HTTP Live Streaming (HLS), Real Time Streaming Protocol (RTSP), HTTP Dynamic Transmission, or similar. The target device 116 can access encoded video data from the file server 114 over any standard data connection, including an Internet connection. This may include a wireless channel (for example, a Wi-Fi connection), a wired connection (for example, a digital subscriber line (DSL), cable modem, etc.), or a combination of both that is suitable for accessing encoded video data stored on the file server 114. The input interface 122 can be configured to operate according to one or more of the various protocols described above to retrieve or receive media data from file server 114, or other similar protocols to recover media data. Output interface 108 and input interface 122 may represent wireless transmitters / receivers, modems, wireless network components (e.g., Ethernet cards), wireless communication components operating in accordance with any of a variety of IEEE 802.11 standards. , or other physical components. In examples where the output interface 108 and the input interface 122 comprise wireless components, the output interface 108 and the input interface 122 may be configured to transfer data, such as encoded video data, in accordance with a cellular communication, such as 4G, 4G-LTE (Long Term Evolution), LTE Advanced, 5G, or similar. In some examples where the output interface 108 comprises a wireless transmitter, the output interface 108 and input interface 122 may be configured to transfer data, such as encoded video data, in accordance with other wireless standards, such as a specification. IEEE 802.11, an IEEE 802.15 specification (e.g., ZigBee™), a Bluetooth™ standard, or the like. In some examples, the source device 102 and / or the destination device 116 may include respective system-on-a-chip (SoC) devices. For example, the source device 102 may include an SoC device for performing functionality attributed to the video encoder 200 and / or output interface 108, and the destination device 116 may include an SoC device for performing functionality attributed to the decoder. video 300 and / or input interface 122. The techniques of this disclosure can be applied to video coding in support of any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television broadcasts, satellite television broadcasts, streaming video broadcasts. Internet, such as dynamic adaptive streaming over HTTP (DASH), digital video that is encoded on a data storage medium, ινΐΛ / a / zuzó / u i i ouo decoding of digital video stored on a data storage medium, or other Applications. The input interface 122 of the destination device 116 receives an encoded video bitstream from the computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, or the like). The encoded video bitstream may include signaling information defined by the video encoder 200, which is also used by the video decoder 300, such as syntax elements that have values that describe characteristics and / or processing of blocks of information. video or other encoded units (for example, segments, images, groups of images, sequences, or the like). The display device 118 displays decoded images of the decoded video data to the user. The display device 118 may represent any of a variety of display devices such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display. acronym), or other type of display device. Although not shown in FIGURE 1, in some examples, the video encoder 200 and the video decoder 300 may each be integrated with an audio encoder and / or audio decoder, and may include appropriate MUX-DEMUX units, or other hardware and / or software, to handle multiplexed streams that include both audio and video in a common data stream. The video encoder 200 and the video decoder 300 may each be implemented as any of a variety of suitable encoder and / or decoder circuitry, such as one or more microprocessors, digital signal processors (DSPs). , application specific integrated circuits (ASIO), field programmable gate arrays (FPGA), discrete logic, software, hardware, firmware or any combination thereof. When the techniques are partially implemented in software, a device may store storage instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in the hardware using one or more processors to perform the techniques of this disclosure. . Each of the video encoder 200 and the video decoder 300 may be included in one or more encoders or decoders, any of them being integrated as part of a combined encoder / decoder (CODEC) in a respective device. A device that includes a video encoder 200 and / or video decoder 300 may comprise an integrated circuit, a microprocessor, and / or a wireless communication device, such as a cellular telephone. The video encoder 200 and video decoder 300 may operate in accordance with a video coding standard, such as ITU-T H.265, also referred to as Video Coding. High Efficiency (HEVC) or extensions thereof, such as scalable and / or multi-window video encoding extensions. Alternatively, the video encoder 200 and video decoder 300 may operate in accordance with other proprietary or industry standards, such as ITU-T H.266, also referred to as Versatile Video Coding (VVC). in English). In other examples, the video encoder 200 and video decoder 300 may operate based on a proprietary video codec / format, such as AOMedia Video 1 (AV1), AVI extensions, and / or successor versions of AV1 (e.g., AV2). . In other examples, video encoder 200 and video decoder 300 may operate in accordance with other proprietary or industry standard formats. The techniques of this disclosure, however, are not limited to any particular encoding standard or format. In general, the video encoder 200 and the video decoder 300 can be configured to perform the techniques of this disclosure in conjunction with any video coding technique that uses the determination of a multiple transform selection (MTS) scheme in accordance with a size and intra-prediction mode for a current block. Generally, the video encoder 200 and the video decoder 300 can perform block-based image encodings. The term “block” generally refers to a structure that includes data to be processed (e.g., encoded, decoded, or otherwise used in the encoding and / or decoding process). For example, a block may include a two-dimensional array of luminance and / or chrominance data samples. Generally, video encoder 200 and video decoder 300 may encode video data represented in a YUV format (e.g., Y, Cb, Cr). That is, instead of encoding red, green, and blue (RGB) data for samples of an image, the video encoder 200 and video decoder 300 can encode the luminance and chrominance components, where 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 prior to encoding, and the video decoder 300 converts the YUV representation to the RGB format. Alternatively, pre- and post-processing units (not shown) can perform these conversions. This disclosure may generally refer to the encoding (e.g., encoding and decoding) of images to include the process of encoding or decoding image data. Similarly, this disclosure may refer to the coding of blocks of an image to include the process of encoding or decoding data for the blocks, for example, predictive and / or residual coding. An encoded video bitstream typically includes a series of values for syntax elements representative of encoding decisions (e.g., encoding modes) and partitioning of images into blocks. Therefore, references to encode an image or block should be generally understood as encoding values for syntax elements that make up the image or block. The HEVC defines several blocks, including coding units (CU), prediction units (PU), and transform units (TU). According to the HEVC, a video encoder (such as a video encoder 200) divides a coding tree unit (CTU) into CUs according to a quaternary tree structure. That is, the video encoder divides the CTU and CU into four equal non-overlapping squares, and each node of the quaternary tree has either zero or four child nodes. Nodes without child nodes may be referred to as “leaf nodes,” and the CUs of such leaf nodes may include one or more PUs and / or one or more TUs. The video encoder can also split PU and TU. For example, in HEVC, a residual quaternary tree (RQT) represents the TU partition. In HEVC, PUs represent interprediction data, while TUs represent residual data. CUs that are intra-predicted include intra-prediction information, such as an intra-mode indication. As another example, the video encoder 200 and video decoder 300 may be configured to operate in accordance with the VVC. According to VVC, a video encoder (such as video encoder 200) divides an image into a plurality of coding tree units (CTU). The video encoder 200 may divide a CTU according to a tree structure, such as a binary tree plus quaternary tree (QTBT) structure or a multi-type tree (MTT) structure. English). The QTBT framework removes the concepts of multiple partition types, such as the separation between CU, PU and TU of HEVC. A QTBT structure includes two levels: a first level divided according to a quaternary tree partition, and a second level divided according to a binary tree partition. A root node of the QTBT structure corresponds to a CTU. The leaf nodes of binary trees correspond to coding units (CUs). In an MTT partition structure, blocks can be partitioned using a quaternary tree (QT) partition, a binary tree (BT) partition, and one or more types of triple tree (TT) partitions. A triple or ternary tree partition is a partition where one block is divided into three subblocks. In some examples, a triple or ternary tree partition splits a block into three subblocks without splitting the original block down the center. Partition types in the MTT (for example, QT, BT, and TT) can be symmetric or asymmetric. When operating in accordance with the AV1 codec, the video encoder 200 and the video decoder 300 can be configured to encode video data in blocks. In iviA / a / ¿u¿ó / u i iouo AV1, the largest encoding block that can be processed is called a superblock. In AV1, a superblock can be 128x128 luma samples or 64x64 luma samples. However, in successor video coding formats (e.g. AV2), a superblock may be defined by different (e.g. larger) luma sample sizes. In some examples, a superblock is the top level of a quadratic block tree. The video encoder 200 may further split a superblock into smaller encoding blocks. The video encoder 200 may partition a superblock and other encoding blocks into smaller blocks using square or non-square partitions. Non-square blocks may include N / 2xN, NxN / 2, N / 4xN, and NxN / 4 blocks. The video encoder 200 and the video decoder 300 may perform independent prediction and transformation processes in each of the coding blocks. AV1 also defines a video data mosaic. A tile is a rectangular array of superblocks that can be encoded independently of other tiles. That is, the video encoder 200 and the video decoder 300 can respectively encode and decode encoding blocks within a tile without using video data from other tiles. However, the video encoder 200 and video decoder 300 may perform filtering across tile boundaries. Tiles can be uniform or non-uniform in size. Tile-based encoding can allow parallel processing and / or multi-threading for encoder and decoder implementations. 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 luminance and chrominance components, while in other examples, the video encoder 200 and the video decoder 300 may use a single QTBT or MTT structure to represent each of the luminance and chrominance components. video 300 may use two or more QTBT or MTT structures, such as one QTBT / MTT structure for the luminance component and another QTBT / MTT structure for both chrominance components (or two QTBT / MTT structures for the respective chrominance components). The video encoder 200 and video decoder 300 may be configured to use quaternary tree partitioning, QTBT partitioning, MTT partitioning, superblock partitioning, or other partition structures. In some examples, a CTU includes a coding tree block (CTB) of luma samples, two corresponding CTBs of chroma samples of an image having three arrays of samples, or a CTB of samples of a monochrome image or an image which is encoded using three separate color planes and syntax structures used to encode the samples. A CTB can be an NxN block of samples for some value of N, so partitioning a component into CTB is a partition. A component can iviA / a / ¿u¿ó / u i i ouo be a matrix or a single sample of one of the three matrices (luma and two chromas) for an image in 4:2:0, 4:2 color format: 2 or 4:4:4, or a matrix or a single sample of the matrix for a monochrome format image. In some examples, a coding block is an MXN block of samples for some values of M and N such that a division of a CTB into coding blocks is a partition. Blocks (for example, CTU or CU) can be grouped in several ways in an image. For example, a brick may refer to a rectangular region of CTU rows within a particular tile in an image. A mosaic can be a rectangular region of CTU within a particular mosaic column and a particular mosaic row in an image. A tile column refers to a rectangular CTU region that has a height equal to the height of the image and a width specified by syntax elements (for example, in a set of image parameters). A tile row refers to a rectangular CTU region that has a height specified by syntax elements (for example, in a set of image parameters) and a width equal to the width of the image. In some examples, a tile may be partitioned into multiple bricks, each of which may include one or more rows of CTUs within the tile. A tile that is not partitioned into multiple bricks may also be referred to as a brick. However, a brick that is a true subset of a mosaic cannot be referred to as a mosaic. The bricks in an image can also be arranged into a segment. A segment can be an integer number of bricks of an image that can be contained exclusively in a single network abstraction layer (NAL) unit. In some examples, a segment includes a number of complete tiles or just a consecutive sequence of complete bricks of a tile. This disclosure may use “NxN” and “N by N” interchangeably to refer to the sample dimensions of a block (such as a CU or other video block) in terms of vertical and horizontal dimensions, for example, samples of 16x16 or 16 by 16 samples. Generally, a 16x16 CU will have 16 samples in a vertical direction (y = 16) and 16 samples in a horizontal direction (x = 16). Likewise, an NxN CU generally has N samples in a vertical direction and N samples in a horizontal direction, where N represents a non-negative integer value. Samples in a CU can be arranged in rows and columns. Likewise, CUs do not need to have the same number of samples in the horizontal direction with respect to the vertical direction. For example, CUs may comprise NxM samples, where M is not necessarily equal to N. The video encoder 200 encodes video data for the CUs representing predictive and / or residual information, and other information. The prediction information indicates how the CU should be predicted in order to form a prediction block for the CU. The iviA / a / ¿u¿ó / u i i ouo residual information generally represents sample-by-sample differences between samples from the CU prior to encoding and the prediction block. To predict a CU, the video encoder 200 can generally form a prediction block for the CU through inter-prediction or intra-prediction. Inter-prediction generally refers to predicting CU from data from a previously encoded image, while intra-prediction generally refers to predicting CU from previously encoded data from the same image. To perform inter-prediction, the video encoder 200 may generate the prediction block using one or more motion vectors. The video encoder 200 may generally perform a motion search to identify a reference block that closely matches the CU, for example, in terms of differences between the CU and the reference block. The video encoder 200 may calculate a difference metric using a sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD). in English), mean square differences (MSD), or other such difference calculations to determine whether a reference block closely matches the current CU. In some examples, the video encoder 200 may predict the current CU using one-way prediction or two-way prediction. Some VVC examples also provide an affine motion compensation mode, which can be considered an inter-prediction mode. In affine motion compensation mode, the video encoder 200 may determine two or more motion vectors that represent non-translational motion, such as zooming, rotation, perspective motion, or other types of irregular motion. To perform intra-prediction, the video encoder 200 may select an intra-prediction mode to generate the prediction block. Some VVC examples provide sixty-seven intra-prediction modes, including several directional modes, as well as a flat mode and a DC mode. Generally, a video encoder 200 selects an intra-prediction mode that describes neighboring samples for a current block (e.g., a block of a CU) from which samples of the current block are predicted. Such samples can generally be top, top left, or top left of the current block in the same image as the current block, assuming CTU and CU of video encoder codes 200 in a grid-like scanning order (left to right, top to bottom). Video encoder 200 encodes data representing the prediction mode for a current block. For example, for inter-prediction modes, video encoder 200 may encode data representing which of the various available inter-prediction modes are used, as well as motion information for the corresponding mode. For example, for unidirectional or bidirectional inter-prediction, the video encoder 200 may encode motion vectors using an advanced motion vector prediction (AMVP) mode or fusion mode. . The video encoder 200 may use similar modes to encode motion vectors for an affine motion compensation mode. AV1 includes two general techniques for encoding and decoding an encoding block of video data. The two general techniques are intra-prediction (for example, frame intra-prediction or spatial prediction) and inter-prediction (for example, frame inter-prediction or temporal prediction). In the context of AV1, when predicting blocks of a current video data frame using an intra-prediction mode, the video encoder 200 and the video decoder 300 do not use video data from other video data frames. For most intra-prediction modes, the video encoder 200 encodes blocks of a current frame based on the difference between sample values in the current block and predicted values generated from reference samples in the current block. same plot. The video encoder 200 determines the predicted values generated from the reference samples based on the intra-prediction mode. Upon prediction, such as intra-prediction or inter-prediction of a block, the video encoder 200 may calculate residual data for the block. Residual data, such as a residual block, represents sample-by-sample differences between the block and a prediction block for the block, formed using the 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 instead of the 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. Additionally, a video encoder 200 may apply a secondary transform after the first transform, such as a mode-dependent non-separable secondary transform (MDNSST), a sign-dependent transform, a Karhunen-Loeve transform ( KLT, for its acronym in English), or similar. In some examples, the video encoder 200 and video decoder 300 may be configured to perform a multiple transform selection (MTS) scheme, which may include applying a horizontal transform and a vertical transform to a block. The video encoder 200 produces transformed coefficients upon application of one or more transforms. iviA / a / ¿u¿ó / u i iouo As noted above, after any transform to produce transformed coefficients, encoder 200 may perform quantization of the transform coefficients. Quantization generally refers to a process in which transform coefficients are quantized to possibly reduce the amount of data used to represent the transform coefficients, thereby providing greater compression. In performing the quantization process, the video encoder 200 may reduce the bit depth associated with some or all of the 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. Following quantization, the video encoder 200 may scan the transformed coefficients, producing a one-dimensional vector from the two-dimensional matrix including the quantized transformed coefficients. The scan can be designed to place higher energy (and therefore lower frequency) transform coefficients at the front of the vector, and to place lower energy (and therefore higher frequency) transform coefficients at the back. from behind the vector. In some examples, the video encoder 200 may use a predefined scan order to scan the quantized transformed coefficients to produce a signaled vector, and then entropically encode the quantized transformed coefficients of the vector. In other examples, the video encoder 200 may perform adaptive scanning. After scanning the quantized transformed coefficients to form the one-dimensional vector, the video encoder 200 may entropically encode the one-dimensional vector, for example, according to context-adaptive binary arithmetic coding (CABAC). The video encoder 200 may also entropically encode values for syntax elements that describe metadata associated with the encoded video data to be used by the video decoder 300 in decoding the video data. To perform CABAC, the video encoder 200 may assign a context within a context model to a symbol to be transmitted. For example, context may relate to whether the symbol's neighboring values are zero-value or not. The probability determination may be based on a context assigned to the symbol. The video encoder 200 may further generate syntax data, such as block-based syntax data, image-based syntax data, and sequence-based syntax data, to the video decoder 300, for example, in a block header, a segment header or other syntax data, such as a sequence parameter set (SPS), a picture parameter set (PPS), or a video parameter set (VPS, for its acronym in English). Likewise, the video decoder 300 may decode said syntax data to determine how to decode the corresponding video data. iviA / a / zuzó / u i i ouo In this way, the video encoder 200 can generate a bit stream including encoded video data, e.g., syntax elements describing the partitioning of an image into blocks (e.g., CU), and predictive and / or residual information. for the blocks. Ultimately, the video decoder 300 may receive the bitstream and decode the encoded video data. Generally, the video decoder 300 performs a reciprocal process to that performed by the video encoder 200 to decode the encoded video data from the bitstream. For example, the video decoder 300 may decode values for bitstream syntax elements using CABAC in a manner substantially similar, although reciprocal, to the CABAC encoding process of the video encoder 200. The syntax elements may define partition information to divide an image into CTU, and dividing each CTU according to a corresponding partition structure, such as a QTBT structure, to define CU of the CTU. Syntax elements may further define predictive and residual information for blocks (e.g., CU) of video data. The residual information can be represented, for example, by quantized transformed coefficients. The video decoder 300 may inverse quantize and inverse transform the quantized transformed coefficients of a block to reproduce a residual block for the block. The video decoder 300 uses a signaled prediction mode (intra-prediction or inter-prediction) and related prediction information (e.g., motion information for inter-prediction) to form a prediction block for the block. The video decoder 300 may then combine the prediction block and the residual block (sample by sample) to reproduce the original block. The video decoder 300 may perform additional processing, such as performing an unblocking process to reduce visual artifacts along block boundaries. Generally, when referring to “signaling,” the present disclosure may refer to certain information, such as elements of syntax. The term “signaling” can generally refer to the communication of values for syntax elements and / or other data used to decode encoded video data. That is, the video encoder 200 may signal values for syntax elements in the bitstream. In general, signaling refers to the generation of a value in the bit stream. As noted above, the source device 102 may carry substantially real-time, or non-real-time, bitstream to the destination device 116, as might occur when syntax elements are stored on the storage device 112. for later retrieval by the destination device 116. As noted above, video encoder 200 and video decoder 300 may be configured to apply an MTS scheme to a current block. For example, the video encoder 200 may apply an MTS scheme (including a horizontal transform and a vertical transform) to a residual block, while the video decoder 300 may apply the scheme MTS to a transform block to reconstruct the residual block. According to the techniques of this disclosure, the MTS scheme may correspond to one of a set of available MTS schemes, where the video encoder 200 and the video decoder 300 may select the set of available MTS schemes from a plurality of sets of MTS schemes according to a size of the current block and an intra-prediction mode for the current block. FIGURE 2 is a conceptual diagram illustrating the regular and wide-angle intra-prediction modes. To capture the arbitrary edge directions presented in natural video, the number of intra-directional modes in VTM5 is expanded from 33, as used in HEVC, to 65. The new directional modes in VVC are depicted in FIGURE 2, and the Flat and DO modes remain the same as in HEVC. These denser directional intra-prediction modes apply to all block sizes and to chroma and luma intra-predictions in VVC. Conventional (or “regular”) angular intra-prediction directions are defined in HEVC from 45 degrees to -135 degrees clockwise, which corresponds to mode 2 to mode 66 in FIGURE 2. To provide better prediction for the non-square blocks, in VVC, angles beyond 45 to -135 degrees are considered, shown in FIGURE 2 for modes [67, 80] and modes [-1, -14], These modes can be referred to as “wide angle” modes. For blocks with a width (W) greater than the height (H), the modes [67, 80] are considered, and for blocks with a width (W) less than the height (H) the modes [- 1, -14], These directional intra-prediction modes can be used in combination with multiple reference lines (MRL) or with an intra-sub partition (ISP) mode. Details can be found in J. Chen, Y. Ye, S. Kim, “Algorithm Description for Versatile Video Coding and Test Model 10 (VTM10)”, 19th JVET Meeting, Teleconference, July 2020, JVET- S2002 and B. Bross, J. Chen, S. Liu, “Versatile Video Coding (Proposal 10)”, 19th JVET Meeting, Teleconference, July 2020, JVET-S2001. FIGURE 3 is a flowchart illustrating an example of a matrix intraprediction (MIP) process. The matrix weighted intra-prediction (MIP) method is an intra-prediction technique in VVC. To predict samples of a rectangular block 129 of width IV and height H, a video encoder (e.g., video encoder 200 or video decoder 300) performing matrix-weighted intra-prediction (MIP) takes a line of H reconstructed neighboring contour samples (samples 130B) to the left of block 129 and a line of W reconstructed neighboring contour samples (samples 130A) iviA / a / zuzó / u i i ouo above block 129 as input. If the reconstructed samples are not available, the video encoder generates values for them as done in conventional intra-prediction. The generation of the prediction signal is based on three steps: averaging, matrix vector multiplication and linear interpolation, as shown in FIGURE 3. In particular, the video encoder may average the samples 130B to form averaged samples 132B, and average the samples 130A to form averaged samples 132A. The video encoder may then perform matrixvector multiplication using averaged samples 132A, 132B to form the intermediate prediction block 136. The video encoder may then perform linear interpolation on the samples of the intermediate prediction block 136 to form the prediction block 138. . There are three different size identifiers used for the MIP process in VVC. VVC defines an index idx = idx(W, H) as follows: í 0 for W = H = 4 idx(W, H~) = < 1 for max(W, H) = 8 ^2 formax(W, H) > 8. idx= 0, 1, and 2, there are 16, 12, and 6 matrices defined, respectively, which also define the number of modes for that given idx. Additionally, each mode can be transposed, where the left and top samples are swapped before performing matrixvector multiplication. Therefore, in addition, the video encoder may encode a transpose indicator (along with mode signaling) when a CU is MIP encoded, to indicate whether the mode is transposed. FIGURE 4 is a conceptual diagram illustrating examples of constructing histograms 140A, 140B for gradient calculations for decoder-side intra-mode derivation and fused intra-prediction (DIMD). FIGURE 5 is a flowchart illustrating an example of prediction block generation and weight determination process for DIMD. Abdoli et al., “No-CE3: Decoder-side intra-mode bypass with prediction fusion using planes,” Joint Video Expert Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 15§Meeting; Gothenburg, SE, July 3-12, 2019, Document No. JVET-O0449-v2, describes performing intra-prediction based on decoder-derived intra modes (using already decoded neighboring reconstructed samples) and merging it with predetermined samples flat. In JVET-O0449, two angular modes are selected from a Histogram of Gradient (HOG), calculated from the neighboring pixels of a current block. Once the two angular modes are selected, their predictors are calculated using the conventional intra-angular prediction modes (IPM) and the final predictor of the block. The flat mode weights are kept at 21 / 64 iviA / a / ¿u¿ó / u i i ouo (-=1 / 3) and the rest of 43 / 64 is distributed in two angular modes proportionally, depending on the corresponding amplitudes in the HoG. The HoG is calculated by sliding a 3x3 window along the left and above the neighboring reconstructed samples, as shown in FIGURE 4. The final prediction block 150 can be calculated using a weighted combination of prediction blocks formed at from the intraprediction modes Μ1, M2 and flat mode. FIGURE 6 is a conceptual diagram illustrating a template and reference samples used for template-based intra-mode derivation with fusion (TIMD). Wang et al., “Related to EE2: Template-based intra-mode derivation using MPM”, Joint Video Expert Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29, 22nd Meeting by teleconference, April 20-28, 2021, Document No. JVET-V0098-v2 proposed another decoder-side intra-mode bypass method as template-based intra-mode bypass. FIGURE 6 shows the general idea of TIMD. Given a current CU 160, a video encoder (e.g., video encoder 200 or video decoder 300) selects two template regions (e.g., above the current CU 160 and to the left of the current CU 160) and Select reference samples from the corresponding templates. For each mode in the MPM list, the video encoder can generate a prediction for the template region and calculate the sum of the absolute transform difference (SATD) cost in the template region between the prediction and reconstruction samples. The video encoder can select the mode with the lowest cost as the mode for TIMD. In addition, the video encoder can use a series of intra-angle modes (including wide-angle modes) that are spread (doubled) compared to VVC, that is, the angles are twice densely arranged. Additionally, Cao et al., “Related to EE2: Fusion for template-based intra-mode derivation,” Joint Video Expert Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 23rd Meeting, via teleconference, July 7-16, 2021, Document No. JVET-W0123-v2, proposed merger for TIMD. Instead of selecting only one mode with the smallest SATD cost, the video encoder can, according to JVET-W0123, choose the first two modes with the smallest SATD costs for the intra derived modes using the TIMD method and then merge these two modes with weights. The video encoder can use such weighted intra-prediction to encode the current CU. The video encoder can compare the costs of the two selected modes with a threshold, applying a cost factor of 2, for example, as follows: costMode2 costModel If this condition is true, the video encoder can apply fusion; Otherwise, the video encoder can use only model. The video encoder can calculate weights for the modes from their SATD costs as follows: weightl = costMode2 / (costMode1 + costMode2) weight2 = 1 - weightl In addition to DCT-II, which has been employed in HEVC, a Multiple Transform Selection (MTS) scheme is used for residual coding of inter- and intra-coded blocks in VVC. The MTS scheme uses several transforms selected from, for example, DCT8 / DST7. The newly introduced transform matrices are DST-7 and DCT-8. Both transform cores can be applied to both vertical and horizontal transforms, which corresponds to 4 different combinations for horizontal (trHor) and vertical (trVer) transforms, as follows: {trVer, trHor} = {DST7, DST7}, {DST7, DCT8}, {DCT8, DST7}, {DCT8, DCT8} In JVET-O0449, for a given coding unit, a flag (cu_mts_flag) is flagged to indicate whether DCT2 is used for both trHor and trVer (cu_mts_flag = 0) or not (cu_mts_flag = 1). If not, then another syntax, called cu_mts_idx, is flagged to indicate which transformation combination is used between these four DST7 / DCT8 combinations. JVET-K0375 describes additional transform kernels, including DCT5, DST1, DST4, and an identity transform. Seven transform sets are defined and each of them has 4 different transform pairs (for {trVer, trHor}). A lookup table is defined to map each of the 7 sets of transforms based on different intra-prediction modes and block sizes. The 7 sets of transforms are designed as: To, intra = {(DST-4, DST-4), (DST-7, DST-7), (DST-4, DCT-8), (DCT-8, DST-4)} Ti, ¡ntra = {(DST-7, DST-7), (DST-7, DCT-5), (DCT-5, DST-7), (DST-1, DCT-5)} T2, ¡ntra = {(DST-7, DST-7), (DST-7, DCT-8), (DCT-8, DST-7), (DCT-5, DCT-5)} T3, ntra = {(DST-4, DST-4), (DST-4, DCT-5), (DCT-8, DST-4), (DST-1, DST-7)} T4, ntra = {(DST-4, DST-7), (DST-7, DCT-5), (DCT-8, DST-7), (DST-1, DST-7)} T5, ¡ntra = {(DST-7, DST-7), (DST-7, DCT-5), (DCT-8, DST-7), (DST-1, DST-7)} T6, ntra = {(DST-7, DST-7), (DST-7, DCT-5), (DCT-5, DST-7), (DST-1, DST-7)} In JVET-K0375, an identity transform is applied for blocks that do not exceed 16x16 and have intra modes within the proximity of the horizontal and vertical intra directions, where the proximity is defined by a threshold based on the block size . If the transform index is equal to 3 and the block meets the previous condition, the horizontal and / or vertical identity transform is applied. iviA / a / ¿u¿ó / u i i ouo According to the techniques of this disclosure, the video encoder 200 and the video decoder 300 can be configured to select an MTS scheme according to a block size and an intra-prediction mode for the block. The video encoder 200 and video decoder 300 can classify a block into one of sixteen different size groups based on width and height, for example, as shown in Table 1 below, where the group size is represented as {WxH}, where W represents the width in the samples and H represents the height in the samples: TABLE 1 0 >{4x4} 1 > {4x8} 2 ->{4x16} 3 >{4xN} 4 >{8x4} 5 >{8x8} 6 ->{8x16} 7 >{8xN} 8 >{16x4} 9 >{16x8} 10 >{16x16} 11 >{16xN} 12 >{Nx4} 13 >{Nx8} 14 >{Nx16} 15 >{NxN} In the above, N is an integer value that is a power of 2 and greater than 16 (for example, greater than or equal to 32). The video encoder 200 and the video decoder 300 may additionally or alternatively classify the prediction mode into one of a plurality of intra-prediction mode groups (e.g., five mode groups) based on the information of the prediction mode. intra-prediction mode. Table 2 below represents an example of mode group classifications: TABLE 2 Mode Group Intra Mode ID 0 0 <= Intramode <=1 1 2 <= Intramode <=12 2 13 <= Intramode <=23 3 24 <= Intramode <=34 4 MIP Mode In examples where both size groups (e.g. 16 size groups) and mode groups (e.g. 5 mode groups) are used, in total, 16 * 5 = 80 groups can be considered. Therefore, an intra-prediction mode and a block size may correspond to a particular group of available MTS schemes. An MTS scheme usually represents a combination of transforms, for example, a horizontal transform and a vertical transform. All possible MTS schemes can be divided into sets of MTS schemes available for particular groups of block characteristics, for example, size groups and / or mode groups. Each size group and / or mode can have four MTS scheme options (transform pair), which can correspond to different signaled values of an MTS index, for example, cu_mts_idx. Therefore, cu_mts_idx can have a value in {0, 3}, inclusive, that represents a particular MTS scheme in a group of available MTS schemes, which is determined according to a size and intra-prediction mode for the current block . In particular, the group of available MTS schemes can be determined according to a size group that includes the block size (for example, according to Table 1) and / or a mode group that includes the intra-prediction mode (for example , according to Table 2) for the current block. In some examples, the number of transform pairs may depend on the shape of the block (for example, whether the width is greater than the height) and / or a quantization parameter of the corresponding transform block. Additionally, in some examples, the video encoder 200 and video decoder 300 may be configured to use a set mode and block symmetry for a transform pair design. For example, a mode i (>34) with block form AxB will be assigned to the same group corresponding to (68 - i) with block form BXA. However, for each pair of transforms in that group, the vertical and horizontal transform will be swapped. In other words, if a first block has a size of WxH, it is predicted using intra-prediction mode i, and transformed by a pair of transforms of a horizontal transform and a vertical transform, the video encoder 200 and the decoder video processor 300 can select the same pair of transforms for a second block that has a size of HxW and is predicted using the intra-prediction mode (68 i), but applying the horizontal transform as a vertical transform and the vertical transform as a transform horizontal. For example, suppose a 16x4 block with mode 18 (horizontal prediction) is mapped to a group and the pointed cu_mts_idx corresponds to a pair of transforms {trVer, trHor} = {DCT8, DST7}. Then, a 4x16 block with mode 50 (vertical prediction) will be mapped to the same group and with the same cu mts idx, the transform pair would be {trVer, trHor} = {DST7, DCT8}. For a MIP-coded block, the video encoder 200 and video decoder 300 may use the corresponding transpose indicator along with the block shape symmetry to determine the MTS scheme. For example, video encoder 200 and video decoder 300 may map an MIP encoded block of form AxB with MIP transpose flag enabled into the same group as that of block form BXA and with MIP transpose flag disabled. . If the block is encoded with the DIMD mode, the video encoder 200 and video decoder 300 may use the dominant angular mode (with the highest weighting) to derive the transform pairs. Alternatively, if the difference between two angular mode values is greater than a threshold, the video encoder 200 and video decoder 300 may treat the mode as a flat mode (mode 0) to determine the cores ινΐΛ / a / zuzó / u i i ouo MTS. Otherwise, if the difference between the two angular mode values is less than or equal to the threshold, the video encoder 200 and video decoder 300 may use only one dominant mode to determine the MTS cores. For wide-angle intra-prediction modes, video encoder 200 and video decoder 300 may use the nearest conventional angular mode for transform set determination. For example, video encoder 200 and video decoder 300 may use mode 2 for all modes between -2 and -14. Likewise, the video encoder 200 and video decoder 300 may use mode 66 to mode 67 to mode 80. An example of a mapping table is shown in Table 3 below to derive iA / a / ¿u¿ó / u i iouo an MTS group according to a prediction mode and block size (shape): TABLE 3 Size || mode [0,1] [2-12] [13-23] [24 - 34] MIP 4x4 0 1 2 3 4 4x8 5 6 7 8 9 4x16 10 11 12 13 14 4xN 15 16 17 18 19 8x4 20 21 22 23 24 8x8 25 26 27 28 29 8x16 30 31 32 33 34 8xN 35 36 37 38 39 16x4 40 41 42 43 44 16x8 45 46 47 48 49 16x16 50 51 52 53 54 16xN 55 56 57 58 59 32x4 60 61 62 63 64 32x8 65 66 67 68 69 32x16 70 71 72 73 74 32xN 75 76 77 78 79 Below is an example of mapping a transform pair index to a corresponding transform pair (i.e. MTS scheme): const uint8_t g_aucTrldxToTr
[25] [2] = { {DCT8, DCT8},{DCT8, DST7},{DCT8, DCT5},{DCT8, DST4}, {DCT8, DST1}, {DST7, DCT8},{DST7, DST7},{DST7, DCT5}, {DST7 , DST4}, {DST7, DST1}, {DCT5, DCT8},{DCT5, DST7}, {DCT5, DCT5}, {DCT5, DST4}, {DCT5, DST1}, {DST4, DCT8}, {DST4, DST7},{DST4, DCT5},{DST4, DST4}, {DST4, DST1}, {DST1, DCT8},{DST1, DST7},{DST1, DCT5},{DST1, DST4}, {DST1, DST1}, Below is an example of mapping each of the sets of four different transform pair indices to a corresponding transform pair (i.e., MTS scheme): const uint8_t g_aucTrSet
[80] [4] = {{17,18,23,24}, {3, 7, 18, 22}, {2, 17, 18, 22}, {3, 15, 17, 18} , {3, 12, 18, 19}, {12, 18, 19, 23}, {2, 12, 17, 18}, {2, 17, 18, 22}, {2, 11, 17, 18} , {12, 18, 19, 23}, {12, 13, 16, 24}, {2, 11, 16, 23}, {2, 13, 17, 22}, {2, 11, 17, 21} , {13, 16, 19, 22}, {7, 12, 13, 18}, {1,11,12, 16}, {3, 13, 17, 22}, {1, 6, 12, 22} , {12, 13, 15, 16}, {18, 19, 23, 24}, {2, 17, 18, 24}, {3, 4, 17, 22}, {12, 18, 19, 23} , {12, 18, 19, 23}, {6, 12, 18, 24}, {2, 6, 12, 21}, {1,11,17, 22}, {3, 11, 16, 17} , {8, 12, 19, 23}, {7, 13, 16, 23}, {1, 6, 11, 12}, iviA / a / ¿u¿ó / u i i ouo {1,11,17, 21}, {6, 11, 17, 21}, {8, 11, 14, 17}, {6, 11, 12, 21}, {1, 6, 11, 12}, {2, 6, 11, 12}, {1,6, 11,21}, {7, 11, 12, 16}, {8, 12, 19, 24}, {1, 13, 18, 22}, {2, 6, 17, 21}, {11, 12, 16, 19}, {8, 12, 17, 24}, {6, 12, 19, 21}, {6, 12, 13, 21}, {2, 16, 17, 21}, {6, 17, 19, 23}, {6, 12, 14, 17}, {6, 7, 11,21}, {1,11,12, 16}, {1, 6, 11, 12}, {6, 11, 12, 21}, {7, 8, 9, 11}, {6, 7, 11, 12}, {6, 7, 11, 12}, {1,11,12, 16}, {6, 11, 17, 21}, {6, 7, 11, 12}, {12, 14, 18, 21}, {1,11,16, 22}, {1,11,16, 22}, {7, 13, 15, 16}, {1, 8, 12, 19}, {6, 7, 9, 12}, {2, 6, 12, 13}, {1, 12, 16, 21}, > u r\ c N a 29S {7, 11, 16, 19},a {7, 8, 11, 12}, {6, 7, 11, 12}, {6, 7, 11, 12}, {1, 6, 11, 12}, {6, 7, 11, 16}, {6, 7, 11, 12}, {6, 7, 11, 12}, {6, 11, 12, 21}, {1, 6, 11, 12}, {6, 7, 11, 12}, {6, 7, 11, 12},}; In the examples above, the data structure g_aucTrldxToTr represents a collection of 25 possible MTS schemes (transform pairs). These MTS schemas are associated with respective index values from 1 to 25. The g_aucTrSet data structure represents a collection of 80 different sets of MTS schemas. In particular, the values in each of the MTS schema sets correspond to an index in the gaucTrldxToTr data structure. The size of a block (e.g., a group of sizes) and an intra-prediction mode (e.g., a group of modes) for the block can together be mapped to one of the entries of the g_aucTrldxToTr data structure. The video encoder 200 and video decoder 300 may further encode a transform index, which represents an index value (0, 1,2 or 3) in the set of available MTS schemes, that is, that of the inputs of the gaucTrldxToTr data structure to which the block size and intra-prediction mode are mapped. The video decoder 300 may use the decoded index value to determine one of the indices in the set of entries of the data structure g_aucTrldxToTr, then use the determined index of the indices of the set of entries in the data structure g_aucTrldxToTr to determine a corresponding MTS schema, for example, using the g_aucTrSet data structure. For example, if the size of the current block is 4x4 and the intra-prediction mode is mode 0 or mode 1, the size and intra-prediction mode for the current block are mapped (per Table 3) to the first entry of the g_aucTrldxToTr data structure (i.e. {17, 18, 23, 24}). If the decoded transform index has a value of 0, the video decoder 300 can determine that one of the indexes is 17. Using the g_aucTrSet data structure, the video decoder 300 can then determine that the MTS scheme is the 17th. pair of transforms, i.e. {DST4, DST7}. As another example, if the size of the current block is 4x16 and the intra-prediction mode for the current block is mode 0 or mode 1, the size and intra-prediction mode for the current block are mapped to the tenth g_aucTrldxToTr data structure entry (i.e., {12,18,19, 23}), according to Table 3. If the decoded transform index has a value of 3, the video decoder 300 may determine that one of the indices is 23. Using the g_aucTrSet data structure, the video decoder 300 can determine that the MTS scheme is the 23rd pair of transforms, that is, {DST1, DCT5}. As mentioned above, in some examples, when TIMD is activated, the video encoder 200 and the video decoder 300 may use an expanded (e.g., duplicated) number of intra modes. That is, the angles of the intra modes can be accommodated in a twice dense manner. Several techniques for deriving the transform kernel are described below. In an example, when the TIMD mode includes a mode for intra-prediction (i.e., without fusion), the video encoder 200 or the video decoder 300 can map that intra mode to the intra-VVC mode that has a closer angle. (selected from one of VVC's 67 + wide angle modes). Subsequently, the video encoder 200 or the video decoder 300 may use the mapped mode to determine the MTS cores. If the VVC intra-mode is a subset of the extended intra-modes (that is, each alternative intra-mode in the extended set corresponds to the VVC intra-mode), then this conversion can be as follows (mode 0 and mode 1 are non-angular modes, so the conversion does not affect the value of those modes): mode = (mode<2? mode:((mode»1 )+1)) When the TIMD mode uses fusion (two modes involved to generate the final intra-prediction), the video encoder 200 or the video decoder 300 can map only the dominant mode (with lower distortion) to a VVC intra-mode to determine the nuclei of MTS. According to conventional error concealment mode (ECM), a video encoder such as video encoder 200 or video decoder 300 would employ low frequency non-separable transforms (LFNST) based on an intra-mode. In accordance with the techniques of this disclosure, the video encoder 200 or the video decoder 300 can be configured to apply the techniques discussed above to the LFNST transform cores as well. In another example, a lookup table (LUT) or mapping table can be specified to map intra-mode to transform cores when using TIMD mode. The table can be specified for extended (double) angles and the video encoder 200 and video decoder 300 can be configured with this table. iviA / a / ¿u¿ó / u i i ouo When the video encoder 200 or the video decoder 300 apply TIMD with fusion (i.e., two modes are involved to generate the final intra-prediction), the video encoder 200 and the video decoder 300 may use only the dominant mode. to determine the cores of MTS. Alternatively, when the difference between two mode values is greater than a threshold, video encoder 200 and video decoder 300 may treat the mode as a flat mode (MODE 0) to determine the MTS cores. Otherwise, if the difference is less than or equal to the threshold, video encoder 200 and video decoder 300 can only use the dominant mode to determine the MTS cores. In another example, when using TIMD mode, video encoder 200 and video decoder 300 can disable MTS, that is, only DCT2 can be used for TIMD. In this case, the video encoder 200 may avoid mtsjdx signaling, and the video decoder 300 may determine that mtsjdx is not signaled and instead infer a value for mtsjdx. This disabling may also depend on the block size, for example MTS may be disabled for certain block sizes. Similarly, LFNST can also be disabled when TIMD encoding is used, optionally in combination with a block size restriction. FIGURE 7 is a block diagram illustrating an exemplary video encoder 200 that can perform the techniques of this disclosure. FIGURE 7 is provided for explanatory purposes and should not be considered limiting to the techniques as broadly exemplified and described in this disclosure. For purposes of explanation, this disclosure describes the video encoder 200 in accordance with the VVC (ITU-T H.266, in development) and HEVC (ITU-T H.265) techniques. However, the techniques of this disclosure can be performed by video coding devices that are configured with other video coding standards and video coding formats, such as AV1 and successors to the AV1 video coding format. In the example of FIGURE 7, the video encoder 200 includes video data memory 230, mode selection unit 202, residual generation unit 204, transform processing unit 206, quantization unit 208, inverse quantization unit 210, inverse transform processing unit 212, reconstruction unit 214, filter unit 216, decoded image buffer (DPB) 218 and entropic coding unit 220. Any or all of the following: data memory video 230, mode selection unit 202, residual generation unit 204, transform processing unit 206, quantization unit 208, inverse quantization unit 210, inverse transform processing unit 212, reconstruction unit 214, filter 216, DPB 218 MTS groups 232 and entropic coding unit 220, iviA / a / zuzó / u i i ouo may be implemented in one or more processors or in processing circuitry. For example, the video encoder units 200 may be implemented as one or more circuits or logic elements as part of hardware circuits, or as part of a processor, ASIC, or FPGA. Additionally, the video encoder 200 may include additional or alternative processors or processing circuitry to perform these and other functions. 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 the video data stored in the video data memory 230 from, e.g. , the video source 104 (FIGURE 1). The DPB 218 may act as a reference image memory that stores reference video data for use in the prediction of subsequent video data by the video encoder 200. The video data memory 230 and DPB 218 may be formed at from any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM) in English), resistive RAM (RRAM), or other types of memory devices. The video data memory 230 and the DPB 218 may be provided by the same memory device or separate memory devices. In various examples, the video data memory 230 may be incorporated on a chip with other components of the video encoder 200, as illustrated, or off a chip with respect to those components. In this disclosure, reference to video data memory 230 should not be construed as limiting to a memory internal to the video encoder 200, unless specifically described as such, or a memory external to the video encoder 200, unless specifically described as such. Instead, reference to video data memory 230 should be understood as a reference memory that stores video data that is received by video encoder 200 for encoding (e.g., video data for a current block to be encoded). ). The memory 106 of FIGURE 1 may also provide temporary storage of output data from the various units of the video encoder 200. The various units of FIGURE 7 are illustrated to help understand the operations performed by the video encoder 200. The units may be implemented as fixed function circuits, programmable circuits, or a combination thereof. Fixed function circuits refer to circuits that provide particular functionality, and that are preconfigured in the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks, and provide flexible functionality in the operations that can be performed. For example, the programmable circuits may run software or firmware that causes the programmable circuits to operate in the manner defined by the instructions in the software or firmware. Fixed-function circuits can execute software instructions (for example, receive parameters or generate parameters), but the types of operations that fixed-function circuits perform are generally immutable. In some examples, one or more of the units may be different circuit blocks (fixed or programmable function) and, in some examples, one or more of the units may be integrated circuits. The video encoder 200 may include arithmetic logic units (ALU), elementary function units (EFU), digital circuits, analog circuits and / or programmable cores, formed from circuits programmable. In examples where the operations of the video encoder 200 are performed using software executed by the programmable circuits, the memory 106 (FIGURE 1) may store the instructions (e.g., object code) of the software that the video encoder 200 receives and executes, or other memory within the video encoder 200 (not shown) may store such instructions. The video data memory 230 is configured to store received video data. The video encoder 200 may retrieve an image of the video data from the video data memory 230 and provide the video data to the residual generation unit 204 and mode selection unit 202. The video data in the memory Video data 230 may be raw video data that will be encoded. The mode selection unit 202 includes a motion estimation unit 222, a motion compensation unit 224, and an intra-prediction unit 226. The mode selection unit 202 may include additional functional units for performing motion prediction. video in accordance with other prediction modes. As examples, the mode selection unit 202 may include a paddle unit, an intra-block copy unit (which may be part of the motion estimation unit 222 and / or motion compensation unit 224), an affine unit , a linear model (LM) unit or similar. The mode selection unit 202 generally coordinates multiple encoding passes to test combinations of encoding parameters and resulting rate distortion values for such combinations. Encoding parameters may include partitioning of CTUs into CUs, prediction modes for CUs, transform types for CU residual data, quantization parameters for CU residual data, etc. The mode selection unit 202 may ultimately select the combination of encoding parameters that have rate distortion values that are improvements than the other combinations tested. iviA / a / ¿u¿ó / u i i ouo The video encoder 200 may split an image retrieved from the video data memory 230 into a series of CTUs, and encapsulate one or more CTUs within a segment. The mode selection unit 202 may split a CTU of the image according to a tree structure, such as the MTT structure, the QTBT structure, the superblock structure or the quaternary tree structure described above. As described above, the video encoder 200 may form one or more CUs from a CTU according to the tree structure. A CU as such may also be generally referred to as a “video block” or “block”. Generally, the mode selection unit 202 also controls the corresponding components (e.g., the motion estimation unit 222, the motion compensation unit 224, and the intra-prediction unit) to generate a prediction block for a current block (for example, a current CU, or in HEVC, the overlapping portion of a PU and a TU). For inter-prediction of a 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 images (e.g., one or more images previously encoded stored in DPB 218). In particular, the motion estimation unit 222 may calculate a value representative of how similar a potential reference block is to the current block, for example, according to the sum of absolute differences (SAD), sum of squared differences (SSD ), mean absolute difference (MAD), mean square differences (MSD), or similar. The motion estimation unit 222 may generally perform these calculations using sample-by-sample differences between the current block and the reference block being considered. The motion estimation unit 222 may identify a reference block that has a lower value resulting from these calculations, indicating a reference block that more closely matches the current block. The motion estimation unit 222 may form one or more motion vectors (MVs) that define the positions of the reference blocks in the reference images with respect to the position of the current block in a current image. The motion estimation unit 222 may then provide the motion vectors to the motion compensation unit 224. For example, for one-way 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 can then generate a prediction block using the motion vectors. For example, the motion compensation unit 224 may recover data from the reference block using the motion vector. As another example, if the motion vector iviA / a / ¿u¿ó / u i i ouo has fractional sample precision, the motion compensation unit 224 may interpolate values for the prediction block according to one or more interpolation filters. . Additionally, for bidirectional inter-prediction, the motion compensation unit 224 may retrieve data for two reference blocks identified by respective motion vectors and combine the recovered data, for example, through sample-by-sample averaging or weighted averaging. . When operating in accordance with the AV1 video coding format, the motion estimation unit 222 and the motion compensation unit 224 may be configured to encode blocks of video data (e.g., both luma and chroma encoding blocks). using translational motion compensation, affine motion compensation, overlapping block motion compensation (OBMC), and / or inter-intra compound prediction. As another example, for intra-prediction or intra-prediction coding, the intra-prediction unit 226 may generate the prediction block from samples that abut the current block. For example, for directional modes, the intra-prediction unit 226 may generally mathematically combine values from neighboring samples and populate said calculated values in the defined direction through the current block to produce the prediction block. As another example, for DC mode, the intra-prediction unit 226 may calculate an average of the samples neighboring the current block and generate the prediction block to include this resulting average for each sample of the prediction block. When operating in accordance with the AV1 video coding format, the intra prediction unit 226 can be configured to encode blocks of video data (e.g., both luma and chroma encoding blocks) using intra-directional prediction, intra-directional prediction , intra-directional prediction, recursive intra-filter prediction, chroma-from-luma prediction (CFL), intra-block copy (IBC), and / or color palette mode. The mode selection unit 202 may include additional functional units to perform video prediction in accordance with other prediction modes. The mode selection unit 202 provides the prediction block to the residual generation unit 204. The residual generation unit 204 receives a raw, unencoded version of the current block from the video data memory 230 and the prediction block from the mode selection unit 202. The residual generation unit 204 calculates sample-by-sample differences between the current block and the prediction block. The resulting sample-by-sample differences define a residual block for the current block. In some examples, the residual generation unit 204 may also determine differences between sample values in the residual block to generate a residual block using residual differential pulse code modulation (RDPCM). In some examples, the residual generation unit 204 may be formed using one or more subtraction circuits that perform binary subtraction. In examples where the mode selection unit 202 divides CUs into PUs, each PU may be associated with a luma prediction unit and corresponding chroma prediction units. The video encoder 200 and video decoder 300 can support PUs with different sizes. As stated above, the size of a CU may refer to the size of the luma encoding 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 symmetrical PU sizes of 2Nx2N, 2NxN, Nx2N, NxN, or the like, for inter-prediction. -prediction. The video encoder 200 and video decoder 300 can also support asymmetric partitioning for PU sizes of 2NxnU, 2NxnD, nl_x2N and nRx2N for inter-prediction. In examples where the mode selection unit 202 does not further divide a CU into PUs, each CU may be associated with a luma encoding block and corresponding chroma encoding blocks. As stated above, the size of a CU can refer to the size of the luma encoding block of the CU. The video encoder 200 and video decoder 300 can support CU sizes of 2Nx2N, 2NxN, or Nx2N. For other video coding techniques, such as intra-block copy mode coding, affine mode coding, and linear model (LM) mode coding, as some examples, the mode selection unit 202, Through respective units associated with the encoding techniques, it generates a prediction block for the current block being encoded. In some examples, such as in palette mode encoding, the mode selection unit 202 may not generate a prediction block and instead generates syntax elements that indicate how the block is reconstructed with based on a selected palette. In such models, the mode selection unit 202 may provide these syntax elements to the entropic encoding unit 220 to be encoded. As described above, the residual generation unit 204 receives the video data for the current block and the 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 sample-by-sample differences between the prediction block and the current block. The transform processing unit 206 applies one or more transforms to the residual block to generate a transform coefficient block (referred to herein as a "transform coefficient block"). The transform processing unit 206 may apply multiple transforms to a residual block to form the transform coefficient block. For example, the transform processing unit 206 may apply a discrete cosine transform (DCT), a directional transform, a Karhunen-Loeve transform (KLT), or a conceptually similar transform to a residual block. In some examples, the transform processing unit 206 may perform multiple transforms to a 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 transforms to a residual block. In accordance with the techniques of this disclosure, the transform processing unit 206 may receive data representing a size and a prediction mode (e.g., an intra-prediction mode) for a current block of video data. The transform processing unit 206 may determine an MTS group of the MTS groups 232 according to the size and prediction mode of the current block. For example, the transform processing unit 206 may determine a size group that includes the size of the current block, for example, according to Table 1 as discussed above. As another example, in addition or alternatively, the transform processing unit 206 may determine a mode group that includes the intra-prediction mode for the current block, for example, according to Table 2 above. The transform processing unit 206 may then select an MTS group from the MTS groups 232 to which the size and intra-prediction mode (e.g., size group and / or mode group) are mapped, for example, as discussed above with respect to Table 3. Likewise, in some examples, the transform processing unit 206 may take advantage of block size symmetry and / or intra-prediction modes, where a block of size MXN is can map to the same MTS group as a block of size NxM, for example, as mentioned above. The transform processing unit 206 may evaluate each of the MTS schemes in the given MTS group. The transform processing unit 206 may select one of the MTS schemes from the group that results in a lowest energy transform block (e.g., a transform block that has the greatest number of zero value coefficients or that has a lowest average coefficient value). The transform processing unit 206 may then send an index value to the entropic coding unit 220 to be encoded as a transform index, where the transform index identifies the given MTS scheme in the MTS group. The transform processing unit 206 may also provide the index value to the inverse transform processing unit 212. iviA / a / ¿u¿ó / u i iuuo When operating in accordance with AV1, the transform processing unit 206 may apply one or more transforms to the residual block to generate a transform coefficient block (referred to herein as a “transform coefficient block”). The transform processing unit 206 may apply multiple transforms to a residual block to form the transform coefficient block. For example, the transform processing unit 206 may apply a horizontal / vertical transform combination that may include a discrete cosine transform (DCT), an asymmetric discrete sine transform (ADST), an inverted ADST (e.g., an ADST in reverse order) and an identity transformation (IDTX). When an identity transformation is used, the transform is ignored in either the vertical or horizontal directions. In some examples, transform processing can be omitted. The quantization unit 208 may quantize the transform coefficients in a transform coefficient block to produce a quantized transform coefficient block. The quantization unit 208 may quantize transform coefficients a transform coefficient block according to a quantization parameter (QP) value associated with the current block. The video encoder 200 (e.g., through the mode selection unit 202) may adjust the degree of quantization applied to the transform coefficient blocks associated with the current block by adjusting the QP value associated with the CU. Quantization may introduce information loss and, therefore, the quantized transform coefficients may have lower precision than the original transform coefficients produced by the transform processing unit 206. The inverse quantization unit 210 and the inverse transform processing unit 212 may apply inverse quantization and inverse transforms to a quantized transform coefficient block, respectively, to reconstruct a residual block from the transform coefficient block. The reconstruction unit 214 may produce a reconstructed block that corresponds to the current block (although possibly with some degree of distortion) based on the reconstructed residual block and a prediction block generated by the mode selection unit 202. For example, the reconstruction unit 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 produce the reconstructed block. In accordance with the techniques of this disclosure, the inverse transform processing unit 212 may receive data representing a size and a prediction mode (e.g., an intra-prediction mode) for a current block of video data. The inverse transform processing unit 212 may determine an MTS group of iviA / a / ¿u¿ó / u i i ouo MTS groups 232 according to the size and prediction mode of the current block. For example, the inverse transform processing unit 212 may determine a size group that includes the size of the current block, for example, according to Table 1 as discussed above. As another example, in addition or alternatively, the inverse transform processing unit 212 may determine a mode group that includes the intra-prediction mode for the current block, for example, according to Table 2 above. The inverse transform processing unit 212 may further receive a transform index from the transform processing unit 206. Using the transform index, the inverse transform processing unit 212 may determine an MTS scheme in the MTS group of the groups. MTS 232 to which the intra-prediction size and mode (e.g., size group and / or mode group) are mapped, for example, as described above with respect to Table 3. Likewise, In some examples, the inverse transform processing unit 212 may take advantage of block size symmetry and / or intra-prediction modes, where a block of size MXN may be mapped to the same MTS group as a block of size NxM, for example, as mentioned above. The inverse transform processing unit 212 may inversely transform the transform block using the given MTS scheme. The filter unit 216 may perform one or more filter operations on reconstructed blocks. For example, the filter unit 216 may perform deblocking operations to reduce block distortion artifacts along the edges of the CUs. In some examples, the operations of the filter unit 216 may be skipped. When operating in accordance with AV1, the filter unit 216 may perform one or more filter operations on reconstructed blocks. For example, the filter unit 216 may perform deblocking operations to reduce block distortion artifacts along the edges of the CUs. In other examples, the filter unit 216 may apply a restricted directional enhancement filter (CDEF), which may be applied after unlocking, and may include the application of non-linear, non-separable low-pass directional filters based on edge directions. estimated. The filter unit 216 may also include a loop restoration filter, which is applied after CDEF, and may include a separable symmetric normalized Wiener filter or a dual homing filter. The video encoder 200 stores reconstructed blocks in the DPB 218. For example, in examples where the operations of the filter unit 216 are not performed, the reconstruction unit 214 may store reconstructed blocks in the DPB 218. In examples where perform the operations of the filter unit 216, the filter unit 216 may store the filtered reconstructed blocks in the DPB 218. The motion estimation unit 222 and the motion compensation unit motion 224 can retrieve a reference image from DPB 218, formed from the reconstructed (and potentially filtered) blocks, to interpredict blocks of subsequently encoded images. Additionally, the inter-prediction unit 226 may use reconstructed blocks in the DPB 218 of a current image to intra-predict other blocks in the current image. Generally, the entropic coding unit 220 may entropically encode syntax elements received from other functional components of the video encoder 200. For example, the entropic coding unit 220 may entropically encode quantized transform coefficient blocks of the quantization unit 208. As another example, the entropic coding unit 220 may entropically encode prediction syntax elements (e.g., motion information for inter-prediction or intra-mode information for intra-prediction) from the mode selection unit 202. The unit entropic encoding 220 may perform one or more entropic encoding operations on syntax elements, which are another example of video data, to generate entropically encoded data. For example, the entropic coding unit 220 may perform a context adaptive variable length coding (CAVLC) operation, a CABAC operation, a variable-to-variable length (V2V) coding operation. a syntax-based context-adaptive binary arithmetic coding (SBAC) operation, a probability interval partitioning entropy (PIPE) coding operation, or other type of entropic coding operation on the data. In some examples, the entropic encoding unit 220 may operate in bypass mode where syntax elements are not entropically encoded. The video encoder 200 may release a bitstream that includes the entropically encoded syntax elements needed to reconstruct blocks of a segment or image. In particular, the entropic coding unit 220 can release the bit stream. In accordance with AV1, the entropic coding unit 220 may be configured as a symbol-by-symbol adaptive multi-symbol arithmetic encoder. A syntax element in AV1 includes an alphabet of N elements, and a context (e.g., probability model) includes a set of N probabilities. The entropic coding unit 220 may store the probabilities as n-bit (e.g., 15-bit) cumulative distribution functions (CDF). The entropic coding unit 22 may perform recursive scaling, with an update factor based on the size of the alphabet, to update the contexts. The operations described above are described with respect to a block. Said description should be understood to be operations for a luma encoding block and / or chroma encoding blocks. As described above, in some examples, iviA / a / ¿u¿ó / u i i ouo the luma encoding block and the chroma encoding blocks are luma and chroma components of a CU. In some examples, the luma encoding block and the chroma encoding blocks are luma and chroma components of a PU. In some examples, operations performed with respect to a luma encoding block do not need to be repeated for chroma encoding blocks. As an example, the operations to identify a motion vector (MV) and a reference image for a luma encoding block do not need to be repeated to identify an MV and a reference image for the chroma blocks. Instead, the MV for the luma encoding block can be scaled to determine the MV for the chroma blocks, and the reference image can be the same. As another example, the intra-prediction process may be the same for the luma encoding block and the chroma encoding blocks. The video encoder 200 may be configured to apply any of the techniques of this disclosure to determine and signal an MTS scheme for a block of video data. FIGURE 8 is a block diagram illustrating an exemplary video decoder 300 that can perform the techniques of this disclosure. FIGURE 8 is provided for explanatory purposes and is not limited to the techniques as broadly exemplified and described in this disclosure. For purposes of explanation, this disclosure describes the video decoder 300 in accordance with the VVC (ITU-T H.266, in development) and HEVC (ITU-T H.265) techniques. However, the techniques of this disclosure can be performed by video coding devices that are configured with other video coding standards. 8, the video decoder 300 includes a coded picture buffer (CPB) memory 320, an entropic decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, a of inverse transform processing 308, a reconstruction unit 310, a filter unit 312, MTS groups 322 and a decoded image buffer (DPB) 314. Any or all of the following: CPB memory 230 , entropic decoding unit 302, prediction processing unit 304, inverse quantization unit 306, inverse transform processing unit 308, reconstruction unit 310, filter unit 312, groups of MTS 322 and DPB 314, can be implemented in one or more processors or in processing circuitry. For example, the video decoder units 300 may be implemented as one or more circuits or logic elements as part of hardware circuits, or as part of a processor, ASIC, or FPGA. Additionally, the video decoder 300 may include additional or alternative processors or processing circuitry to perform these and other functions. iviA / a / ¿u¿ó / u i i ouo 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 to perform prediction in accordance with other prediction modes. As examples, the prediction processing unit 304 may include a paddle unit, an intra-block copy unit (which may be part of the motion compensation unit 316), an affine unit, a linear model (LM) unit. or similar. In other examples, the video encoder 300 may include more, fewer, or different functional components. When operating in accordance with AV1, the compensation unit 316 may be configured to decode video data encoding blocks (e.g., both luma and chroma encoding blocks) using translational motion compensation, affine motion compensation, OBMC and / or or inter-intra-composite prediction, as described above. The intra-prediction unit 318 can be configured to decode video data encoding blocks (e.g., both luma and chroma encoding blocks) using directional intra-prediction, non-directional intra-prediction, recursive filter intra-prediction, CFL, intra-block copy (IBC) and / or color palette mode, as described above. The CPB memory 320 may store video data, such as an encoded video bitstream, to be decoded by the components of the video decoder 300. The video data stored in the CPB memory 320 may be obtained, for example, from the computer readable medium 110 (FIGURE 1). The CPB memory 320 may include a CPB that stores encoded video data (e.g., syntax elements) of an encoded video bitstream. Also, the CPB memory 320 may store video data other than syntax elements of an encoded image, such as temporal data representing output data from the various units of the video decoder 300. The DPB 314 generally stores decoded images, which which may be generated and / or used by the video decoder 300 as reference video data when decoding subsequent data or images from the decoded video bitstream. The memory of CPB 320 and DPB 314 may be formed from 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. The memory of CPB 320 and DPB 314 may be provided by the same memory device or separate memory devices. In various examples, the CPB memory 320 may be incorporated on a chip with other components of the video decoder 300, or off a chip with respect to those components. Additionally or alternatively, in some examples, the iviA / a / zuzó / u i i ouo video decoder 300 can retrieve the encoded video data from memory 120 (FIGURE 1). That is, memory 120 may store data, as discussed above, with CPB memory 320. Likewise, memory 120 may store instructions to be executed by video decoder 300, when some or all of the functionalities of the video decoder video 300 are implemented in the software to be executed by the processing circuitry of the video decoder 300. The various units of FIGURE 8 are illustrated to help understand the operations performed by the video decoder 300. The units may be implemented as fixed function circuits, programmable circuits, or a combination thereof. Similar to FIGURE 7, fixed function circuits refer to circuits that provide particular functionality, and that are preconfigured in the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks, and provide flexible functionality in the operations that can be performed. For example, the programmable circuits may run software or firmware that causes the programmable circuits to operate in the manner defined by the instructions in the software or firmware. Fixed-function circuits can execute software instructions (for example, receive parameters or generate parameters), but the types of operations that fixed-function circuits perform are generally immutable. In some examples, one or more of the units may be different circuit blocks (fixed or programmable function) and, in some examples, one or more of the units may be integrated circuits. The video decoder 300 may include ALU, EFU, digital circuits, analog circuits and / or programmable cores, formed from programmable circuits. In examples where the operations of the video decoder 300 are performed by software that executes programmable circuitry, on-chip or off-chip memory may store instructions (e.g., object code) of the software that retrieves and executes the video decoder. 300. The entropic decoding unit 302 may receive encoded video data from the CPB and entropically decode the video data to reproduce 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 bit stream. In general, the video decoder 300 reconstructs an image on a block-by-block basis. The video decoder 300 may perform a reconstruction operation on each block individually (where the block currently being reconstructed, i.e., decoded, may be referred to as a “current block”). iviA / a / zuzó / u i i ouo The entropic decoding unit 302 can entropically decode syntax elements by defining quantized transform coefficients of a quantized transform coefficient block, as well as transform information, such as a quantization parameter (QP) and / or indication(s). transform mode. The inverse quantization unit 306 may use the QP associated with the quantized transform coefficient block to determine a quantization degree and, likewise, an inverse quantization degree for the inverse quantization unit 306 to be applied. The inverse quantization unit 306 may, for example, perform a bitwise left shift operation to inversely quantize the quantized transform coefficients. The inverse quantization unit 306 may thus form a transform coefficient block that includes transform coefficients. 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, an inverse transform processing unit 308 may apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotation transform, an inverse directional transform, or another inverse transform to the block of transform coefficient. In accordance with the techniques of this disclosure, the inverse transform processing unit 308 may receive data representing a size and a prediction mode (e.g., an intra-prediction mode) for a current block of video data of the entropic decoding unit 302 and / or the prediction processing unit 304. The inverse transform processing unit 308 may determine an MTS group of the MTS groups 322 according to the size and prediction mode of the current block. For example, the inverse transform processing unit 308 may determine a size group that includes the size of the current block, for example, according to Table 1 as discussed above. As another example, in addition or alternatively, the inverse transform processing unit 308 may determine a mode group that includes the intra-prediction mode for the current block, for example, according to Table 2 above. The inverse transform processing unit 308 may further receive a transform index from the entropic decoding unit 302. Using the transform index, the inverse transform processing unit 308 may determine an MTS scheme in the MTS group of the MTS groups. 322 to which the size and the intra-prediction mode (e.g., size group and / or mode group) are mapped, for example, as described above with respect to Table 3. Likewise, in In some examples, the inverse transform processing unit 308 may take advantage of block size symmetry and / or intra-prediction modes, where a block of size MXN can be mapped to the same group. MTS than a block of size NxM, for example, as mentioned above. The inverse transform processing unit 308 may inversely transform the transform block using the given MTS scheme. Likewise, the prediction processing unit 304 generates a prediction block according to the prediction information syntax elements that were entropically decoded by the entropic decoding unit 302. For example, if the prediction information syntax elements indicate Once the current block is interpredicted, the motion compensation unit 316 may generate the prediction block. In this case, the prediction information syntax elements may indicate a reference image in the DPB 314 from which a reference block is retrieved, as well as a motion vector that identifies a location of the reference block in the reference image with respect to the location of the current block in the current image. The motion compensation unit 316 can generally perform the interprediction process in a manner that is substantially similar to that described with respect to the motion compensation unit 224 (FIGURE 7). As another example, if the prediction information syntax elements indicate that the current block is intra-predicted, the intra-prediction unit 318 may generate the prediction block according to an intra-prediction mode indicated by the prediction information syntax elements. prediction information syntax elements. Again, the intra-prediction unit 318 can generally perform the intra-prediction process in a manner that is substantially similar to that described with respect to the intra-prediction unit 226 (FIGURE 7). The intra-prediction unit 318 may retrieve data from neighboring samples for the current block of the DPB 314. The reconstruction unit 310 may reconstruct the current block using the prediction block and the residual block. For example, the reconstruction unit 310 may add samples of the residual block to corresponding samples of the prediction block to reconstruct the current block. The filter unit 312 may perform one or more filter operations on reconstructed blocks. For example, the filter unit 312 may perform deblocking operations to reduce block distortion artifacts along the edges of the reconstructed blocks. The operations of the filter unit 312 are not necessarily performed in all examples. The video decoder 300 may store the reconstructed blocks in the DPB 314. For example, in examples where the operations of the filter unit 312 are not performed, the reconstruction unit 310 may store reconstructed blocks in the DPB 314. In examples where the operations of the filter unit 312 are performed, the filter unit 312 may store the filtered reconstructed blocks in the DPB 314. As discussed above, the DPB 314 may provide reference information, such as samples of a current image for intra-prediction and previously decoded images for subsequent motion compensation, to the prediction processing unit 304. Additionally, the video decoder 300 may generate decoded images (e.g. , decoded video) of the DPB 314 for later presentation on a display device, such as the display device 118 of FIGURE 1. Thus, the video decoder 300 represents an example of a device for decoding video data, including a memory configured to store video data; and one or more processors implemented in circuitry and configured to: determine a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determining a mode group that includes the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups of the plurality of mode groups including the respective sets of intra-prediction modes prediction, so that each possible intra-prediction mode is included in no more than one of the mode groups; determining a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes being a set of available MTS schemes from a plurality of sets of MTS schemes; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. FIGURE 9 is a flowchart illustrating an exemplary method for encoding a current block according to the techniques of this disclosure. The current block may comprise a current CU. Although described with respect to the video encoder 200 (FIGURES 1 and 7), it should be understood that other devices can be configured to perform a method similar to that of FIGURE 9. In this example, the video encoder 200 initially predicts the current block (350). For example, the video encoder 200 may form a prediction block for the current block using an intra-prediction mode. The video encoder 200 may then calculate a residual block for the current block (352). To calculate the residual block, the video encoder 200 may calculate a difference between the original unencoded block and the prediction block for the current block. The video encoder 200 can then transform and ινΐΛ / a / zuzó / u i i ouo quantize transform coefficients of the residual block (354). In particular, the video encoder 200 may determine an MTS scheme to apply to the residual block according to any of various techniques of this disclosure, for example, based on the size of the block and the intra-prediction mode for the block. Subsequently, the video encoder 200 may scan the quantized transform coefficients of the residual block (356). During the scan, or after the scan, the video encoder 200 may entropy encode the transform coefficients (358). For example, video encoder 200 may encode transform coefficients using CAVLC or CABAC. The video encoder 200 may then output the entropy-encoded data from block (360). The video encoder 200 may also decode the current block after encoding the current block, to use the decoded version of the current block as reference data for subsequently encoded data (e.g., in inter- or intra-prediction modes). In this way, the video encoder 200 can inversely quantize and inversely transform the coefficients to reproduce the residual block (362). The video encoder 200 may combine the residual block with the prediction block to form a decoded block (364). The video encoder 200 may store the decoded block in DPB 218 (366). FIGURE 10 is a flowchart illustrating an exemplary method for decoding a current block of video data according to the techniques of this disclosure. The current block may comprise a current CU. Although described with respect to the video decoder 300 (FIGURES 1 and 8), it should be understood that other devices may be configured to perform a method similar to that of FIGURE 10. The video decoder 300 may receive entropy-encoded data for the 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 reproduce transform coefficients of the residual block (372). The video decoder 300 may predict the current block (374), for example, using the intra-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 may then reverse scan the reproduced transform coefficients (376) to create a block of quantized transform coefficients. The video decoder 300 may use the intra-prediction mode and a block size to determine an MTS scheme for the block according to any of various techniques of this disclosure. The video decoder 300 may then inverse quantize the transform coefficients and apply an inverse iviA / a / ¿u¿ó / u i i ouo transform to the transform coefficients, using the MTS scheme, to produce a residual block (378). . The video decoder 300 may ultimately decode the current block by combining the prediction block and the residual block (380). FIGURE 11 is a flowchart illustrating an exemplary method for decoding a block of video data in accordance with the techniques of this disclosure. The method of FIGURE 11 can be performed by the video decoder 300 (FIGURES 1 and 8) and is explained with respect to the video decoder 300 for example purposes. The video encoder 200 of FIGURES 1 and 7 and other video encoding devices (encoding and / or decoding devices) may be configured to perform this or a similar method. The method of FIGURE 11 may be performed as part of the method of FIGURE 9 (e.g., steps 354 and / or 362) or as part of the method of FIGURE 10 (e.g., step 378). Initially, the video decoder 300 determines a size of a current block of video data (400). For example, the video decoder 300 may determine a width W and a height H of the current block, where W and H represent a number of samples along the corresponding dimension of the current block. The video decoder 300 may also determine a current intra-prediction mode for the current block (402). For example, the video decoder 300 may decode one or more intra-prediction mode syntax elements that represent the intra-prediction mode for the current block. Alternatively, the video decoder 300 may use any of the various techniques discussed above with respect to FIGURES 3 to 6 to determine the intra-prediction mode. The video decoder 300 may then determine a group of modes including the determined intra-prediction mode (404). For example, the video decoder 300 may determine the mode group according to Table 2 as mentioned above. In other examples, other mode groupings may be used, which may include more or fewer groups and / or more or fewer modes in each group. The video decoder 300 may then determine a set of MTS schemes available for the current block based on the mode group and the size of the current block (406). For example, the video decoder 300 may determine the set of available MTS schemes according to Table 3 above. That is, the set of available MTS schemes may be one of a plurality of sets of available MTS schemes. Each of the sets (also known as “groups”) can include four MTS schemes, as discussed above. There can be, for example, 80 different sets of MTS schemas, as shown in the example g_aucTrSet data structure above. Each of the available MTS schema sets may include a value that represents an MTS schema, such as an index into a set of 25 possible MTS schemas, for example, iviA / a / zuzo / u i i ouo as mentioned above regarding the data structure g_aucTrldxToTr. The video decoder 300 may further determine one of the MTS schemes from the given set of MTS schemes (408) to be applied to the current block, i.e., the transform block of the current block. For example, the video decoder 300 may decode a transform index that represents which of the four MTS schemes from the given set of MTS schemes will be applied for the current block. The video decoder 300 can then apply the determined MTS scheme to the transform block for the current block (410). For example, the video decoder 300 may apply a vertical transform and a horizontal transform of the MTS scheme to the transform block. Application of the MTS scheme may result in a reproduced residual block. The video decoder 300 may then decode the current block (412) using the residual block, for example, by combining the residual block with a prediction block on a sample-by-sample basis. In this way, the method of FIGURE 11 represents an example of a video data decoding method that includes determining a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determining a group of modes that includes the determined intra-prediction mode; The mode group is one of a plurality of mode groups, each of the mode groups in the plurality of mode groups including respective sets of intra-prediction modes such that each possible intra-prediction mode is included in no more than one of the mode groups; determine a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes is a set of available MTS schemes of a plurality of sets of MTS schemes; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transformations of the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. FIGURE 12 is a flowchart illustrating an exemplary method for decoding a block of video data in accordance with the techniques of this disclosure. The method of FIGURE 12 can be performed by the video decoder 300 (FIGURES 1 and 8), and is explained with respect to the video decoder 300 for example purposes. The video encoder 200 of FIGURES 1 and 7 and other video encoding devices (encoding and / or decoding devices) may be configured to perform this or a similar method. The method of FIGURE 12 may be performed as part of the method of FIGURE 9 (e.g., steps 354 and / or 362) or as part of the method of FIGURE 10 (e.g., step 378). The iviA / a / ¿u¿ó / u i i ouo method of FIGURE 12 can be performed in conjunction with the method of FIGURE 11 in some examples. Initially, the video decoder 300 determines a size of a current block of video data (420). For example, the video decoder 300 may determine a width W and a height H of the current block, where W and H represent a number of samples along the corresponding dimension of the current block. The video decoder 300 may also determine a current intra-prediction mode for the current block (422). For example, the video decoder 300 may decode one or more intra-prediction mode syntax elements that represent the intra-prediction mode for the current block. Alternatively, the video decoder 300 may use any of the various techniques discussed above with respect to FIGURES 3 to 6 to determine the intra-prediction mode. The video decoder 300 may then determine a group of sizes including the determined intra-prediction mode (424). For example, the video decoder 300 may determine the size group according to Table 1 as mentioned above. In other examples, other size groupings may be used, which may include more or fewer groups and / or more or fewer sizes in each group. The video decoder 300 may then determine a set of MTS schemes available for the current block based on the size group and the intra-prediction mode for the current block (426). For example, the video decoder 300 may determine the set of available MTS schemes according to Table 3 above. That is, the set of available MTS schemes may be one of a plurality of sets of available MTS schemes. Each of the sets (also known as “groups”) can include four MTS schemes, as discussed above. There may be, for example, 80 different sets of MTS schemas, as shown in the example g aucTrSet data structure above. The video decoder 300 may further determine one of the MTS schemes from the given set of MTS schemes (428) to be applied to the current block, i.e., the transform block of the current block. For example, the video decoder 300 may decode a transform index that represents which of the four MTS schemes from the given set of MTS schemes will be applied for the current block. The video decoder 300 can then apply the determined MTS scheme to the transform block for the current block (430). For example, the video decoder 300 may apply a vertical transform and a horizontal transform of the MTS scheme to the transform block. Application of the MTS scheme may result in a reproduced residual block. The video decoder 300 may then decode the current block (432) iviA / a / zuzo / u i i ouo using the residual block, for example, by combining the residual block with a prediction block on a sample-by-sample basis. FIGURE 13 is a flowchart illustrating an exemplary method for decoding a block of video data in accordance with the techniques of this disclosure. The method of FIGURE 13 can be performed by the video decoder 300 (FIGURES 1 and 8), and is explained with respect to the video decoder 300 for example purposes. The video encoder 200 of FIGURES 1 and 7 and other video encoding devices (encoding and / or decoding devices) may be configured to perform this or a similar method. The method of FIGURE 13 may be performed as part of the method of FIGURE 9 (e.g., steps 354 and / or 362) or as part of the method of FIGURE 10 (e.g., step 378). Initially, the video decoder 300 determines a WxH size of a current block of video data (440). For example, the video decoder 300 may determine the width W and height H of the current block, where W and H represent a number of samples along the corresponding dimension of the current block. The video decoder 300 may also determine a current intra-prediction mode for the current block (442). For example, the video decoder 300 may decode one or more intra-prediction mode syntax elements that represent the intra-prediction mode for the current block. Alternatively, the video decoder 300 may use any of the various techniques discussed above with respect to FIGURES 3 to 6 to determine the intra-prediction mode. The video decoder 300 may determine a symmetric size (HxW) and an intra-prediction mode (444). In particular, if the actual size and intra-prediction mode of the current block are not included in Table 3, the video decoder 300 may determine the MTS scheme using symmetric sizes and intra-prediction modes. By simply reversing WxH to HxW, the video decoder 300 can obtain the symmetric block size. The symmetry of the intra-prediction modes can be determined according to a mirror image of modes 2 to 34 as shown in FIGURE 2, assuming that the mirror is parallel to mode 34 and crosses the upper left and lower corners right of the block in FIGURE 2. So, for example, mode 66 is symmetrical to mode 2, mode 65 is symmetrical to mode 3, and so on, until mode 33 is symmetrical to mode 35 (and mode 34 would be symmetrical with itself). The video decoder 300 may then determine a set of MTS schemes available for the current block according to the symmetric block size (HxW) and the symmetric intra-prediction mode (446). For example, the video decoder 300 may determine the set of available MTS schemes according to Table 3 above. That is, the set of available MTS schemes may be one of a plurality of sets iviA / a / ¿u¿ó / u i i ouo of available MTS schemes. Each of the sets (also known as “groups”) can include four MTS schemes, as discussed above. There can be, for example, 80 different sets of MTS schemas, as shown in the example g_aucTrSet data structure above. Each of the available MTS schema sets can include a value that represents an MTS schema, such as an index into a set of 25 possible MTS schemas, for example, as mentioned above with respect to the g_aucTrldxToTr data structure. If, for example, the current block has a size of 8x32 and an intra-prediction mode of 58, the video decoder 300 may determine that the symmetric size is 32x8, the symmetric intra-prediction mode is 10, and that the MTS schema set is the 66th entry of the g_aucTrSet data structure, according to the example in Table 3. The video decoder 300 may further determine one of the MTS schemes from the given set of MTS schemes (448) to be applied to the current block, i.e., the transform block of the current block. For example, the video decoder 300 may decode a transform index that represents which of the four MTS schemes from the given set of MTS schemes will be applied for the current block. The video decoder 300 can then apply the determined MTS scheme to the transform block for the current block (450). For example, the video decoder 300 may apply a vertical transform and a horizontal transform of the MTS scheme to the transform block. Application of the MTS scheme may result in a reproduced residual block. The video decoder 300 may then decode the current block (452) using the residual block, for example, by combining the residual block with a prediction block on a sample-by-sample basis. Various examples of the techniques in this disclosure are summarized in the following clauses: Clause 1: A method of decoding video data, the method comprises: determining a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determine a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes is a set of available MTS schemes of a plurality of MTS scheme sets; determining an MTS scheme from the set of available MTS schemes; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. Clause 2: The method of clause 1, wherein the current block size comprises a group of sizes according to a width of the current block and a height of the current block. Clause 3: The method of clause 2, wherein the size group of the current block is selected from one of a plurality of size groups including 4x4, 4x8, 4x16, 4xN, 8x4, 8x8, 8x16, 8xN, 16x4, 16x8, 16x16,16xN, Nx4, Nx8, Nx16, NxN, where N is an integer power of 2 and greater than 16. Clause 4: The method of clause 3, wherein determining the set of available MTS schemes according to the size of the current block comprises determining the set of available MTS according to the size group for the current block. Clause 5: The method of any of clauses 1 to 4, wherein the determination of the intra-prediction mode comprises the determination of a group of modes that includes the intra-prediction mode, and wherein the determination of the set of schemes MTS available according to the intra-prediction mode for the current block comprises determining the set of MTS available according to the group of modes for the current block. Clause 6: The method of clause 5, wherein the mode group is selected from one of a plurality of mode groups including a first group including intra-prediction modes 0 and 1, a second group including intra-prediction modes 2 to 12, a third group including intra-prediction modes 13 to 23, a fourth group including intra-prediction modes 24 to 34, and a fifth group including intra-prediction mode matrix prediction (MIP). Clause 7: The method of any of clauses 1 to 6, further comprising decoding an MTS index value representing the MTS scheme from the set of available MTS schemes, wherein determining the MTS scheme comprises determining the MTS scheme using the MTS index value. Clause 8: The method of clause 7, wherein the MTS index value has a value between 0 and 3, inclusive, wherein the plurality of MTS schema sets comprises: {17, 18, 23, 24}, {3, 7, 18, 22}, {2,17,18, 22}, {3, 15, 17, 18}, {3, 12, 18, 19}, {12, 18, 19, 23}, {2, 12, 17, 18}, {2, 17, 18, 22}, {2, 11, 17, 18}, {12, 18, 19, 23}, {12, 13, 16, 24}, {2, 11, 16, 23}, {2, 13, 17, 22}, {2, 11, 17, 21}, {13, 16, 19, 22}, {7, 12, 13, 18}, {1, 11, 12, 16}, {3, 13, 17, 22}, {1,6, 12, 22}, {12, 13, 15, 16}, {18, 19, 23, 24}, {2,17,18, 24}, {3, 4, 17, 22}, {12,18,19, 23}, {12, 18, 19, 23}, {6, 12, 18, 24}, {2, 6, 12, 21}, {1,11, 17, 22}, {3, 11, 16, 17}, {8, 12, 19, 23}, {7, 13, 16, 23}, {1, 6, 11, 12}, {1,11,17, 21}, {6, 11, 17, 21}, {8, 11, 14, 17}, {6, 11, 12, 21}, {1,6, 11, 12}, {2, 6, 11, 12}, {1,6, 11,21}, {7, 11, 12, 16}, {8, 12, 19, 24}, {1, 13, 18, 22}, {2, 6, 17, 21}, {11, 12, 16, 19}, {8, 12, 17, 24}, {6, 12, 19, 21}, {6, 12, 13, 21}, {2, 16, 17, 21}, {6, 17, 19, 23}, {6, 12, 14, 17}, {6, 7, 11,21}, {1, 11, 12, 16}, {1,6, 11, 12}, {6, 11, 12, 21}, {> u r\ c N a 54 S 7, 8, 9, 11}, {6, 7, 11, 12}, {6, 7, 11, 12}, {1, 11, 12, 16}, {6, 11, 17, 21}, {6, 7, 11, 12}, {12, 14, « 18, 21}, {1,11,16, 22}, {1,11,16, 22}, {7, 13, 15, 16}, {1,8, 12, 19}, {6, 7, 9, 12}, {2, 6, 12, ° 13}, {1, 12, 16, 21}, {7, 11, 16, 19}, {7, 8, 11, 12}, {6, 7, 11, 12}, {6, 7, 11, 12}, {1,6, 11, 12}, {6, 7, 11, 16}, {6, 7, 11, 12}, {6, 7, 11, 12}, {6, 11, 12, 21}, {1,6, 11, 12}, {6, 7, 11, 12}, {6, 7, 11, 12}, and where the MTS index indicates a pair of transforms from the set of MTS schemes available from according to: {DCT8, DCT8},{DCT8, DST7}, {DCT8, DCT5}, {DCT8, DST4}, {DCT8, DST1}, {DST7, DCT8}, {DST7, DST7}, {DST7, DCT5} ,{DST7, DST4}, {DST7, DST1}, {DCT5, DCT8},{DCT5, DST7},{DCT5, DCT5},{DCT5, DST4}, {DCT5, DST1}, {DST4, DCT8},{DST4, DST7},{DST4, DCT5},{DST4, DST4}, {DST4, DST1}, {DST1, DCT8},{DST1, DST7},{DST1, DCT5},{DST1, DST4}, {DST1, DST1}. Clause 9: The method of any of clauses 1 to 8, wherein each of the MTS scheme sets includes four options of respective transform pairs. Clause 10: The method of any of clauses 1 to 9, further comprising determining a number of transform pair options in the set of available MTS schemes according to a form of the current block. Clause 11: The method of any of clauses 1 to 10, further comprising determining a number of transform pair options in the set of available MTS schemes according to a quantization parameter of the current block. Clause 12: The method of any of clauses 1 to 11, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH, where W is not equal to H, wherein the intra-prediction mode comprises 11 and is an angular intra-prediction mode, the method further comprises: determining that a second block has a size of HxW; determine that the second block has an intra-prediction mode of (68 - 11); determine the set of MTS schemes available for the second block according to the HxW size for the second block and the intra-prediction mode of (68 - 11); determine the MTS scheme for the second block; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 13: The method of any of clauses 1 to 11, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH, where W is not equal to H, wherein the intra-prediction mode comprises the matrix intra-prediction (MIP) mode having a first transpose indicator value, the method further comprises: determining that a second block has a size of HxW; determining that an intra-prediction mode for the second block is the MIP intra-prediction mode with a second transpose indicator value different from the first transpose indicator value; determining the set of MTS schemes available for the second block according to the HxW size for the second block and the MIP intra-prediction mode with the second transpose indicator value; determining the MTS scheme for the second block from the set of available MTS schemes; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 14: The method of any of clauses 1 to 11, wherein when the current block is encoded using the decoder side intra mode derivation and the fused intra prediction mode (DIMD), the determination of the set of schemes MTS available according to the intra-prediction mode comprises determining the set of MTS schemes available according to a dominant angular mode determined using the DIMD mode. Clause 15: The method of clause 14, wherein the dominant angular mode comprises a mode having a higher weighting. Clause 16: The method of any of clauses 1 to 11, wherein when the current block is encoded using the decoder side intra mode derivation and the fused intra prediction mode (DIMD), the determination of the set of schemes MTS available according to the intra-prediction mode comprises: determining whether a difference between two angular mode values is greater than a threshold; when the difference is greater than the threshold, determining that the intra-prediction mode comprises determining the intra-prediction mode as a flat mode by determining the set of available MTS schemes; or when the difference is less than or equal to the threshold, determining that the intra-prediction mode comprises determining the intra-prediction mode as a dominant angular mode determined by the DIMD mode. Clause 17: The method of any of clauses 1 to 11, wherein when the intra-prediction mode comprises a wide-angle intra-prediction mode, determining the set of MTS schemes available according to the intra-prediction mode It comprises determining the set of available MTS schemes according to a conventional intra-prediction mode having an angle closest to an angle of the wide-angle intra-prediction mode. Clause 18: The method of any of clauses 1 to 17, wherein determining the set of available MTS schemes according to the size and intra-prediction mode for the current block comprises determining the set of available MTS schemes according to the following table: iviA / a / ¿u¿ó / u i i ouo Size || mode [0,1] [2-12] [13-23] [24 - 34] MIP 4x4 0 1 2 3 4 4x8 5 6 7 8 9 4x16 10 11 12 13 14 4xN 15 16 17 18 19 8x4 20 21 22 23 24 8x8 25 26 27 28 29 8x16 30 31 32 33 34 8xN 35 36 37 38 39 16x4 40 41 42 43 44 16x8 45 46 47 48 49 16x16 50 51 52 53 54 16xN 55 56 57 58 59 32x4 60 61 62 63 64 32x8 65 66 67 68 69 32x16 70 71 72 73 74 32xN 75 76 77 78 79 iA / a / ¿u¿ó / u i ιουο where N is an integer value equal to or greater than 32. Clause 19: The method of any of clauses 1 to 18, wherein determining the intra-prediction mode comprises determining the intra-prediction mode according to the template-based intra-mode derivation (TIMD) mode. Clause 20: The method of clause 19, wherein when the TIMD mode uses the fusion of two intra-prediction modes, the determination of the set of available MTS schemes comprises determining the set of available MTS schemes according to a mode of intra-prediction dominant of the two intra-prediction modes. Clause 21: The method of clause 19, where when the TIMD mode uses the fusion of two intra-prediction modes, the determination of the set of available MTS schemes comprises: when a difference between the two intra-prediction modes is greater at a threshold, determining the set of available MTS schemes comprises determining the set of available MTS schemes according to the flat mode; or when the difference between the two intra-prediction modes is less than or equal to the threshold, determining the set of available MTS schemes comprises determining the set of available MTS schemes according to an intra-prediction mode dominant of the two modes intra-prediction. Clause 22: The method of either of clauses 20 and 21, wherein the dominant intra-prediction mode comprises the intra-prediction mode of the two intra-prediction modes that produces the lowest distortion. Clause 23: The method of any of clauses 19 to 22, wherein determining the set of available MTS schemes comprises determining the set of available MTS schemes according to a table mapping the extended intra-prediction mode angles to MTS scheme sets available. Clause 24: A method of decoding video data, the method comprises: determining a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determining a mode group that includes the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups of the plurality of mode groups including the respective sets of modes intra-prediction, so that each possible intra-prediction mode is included in no more than one of the mode groups; determine a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes is a set of available MTS schemes of a plurality of MTS scheme sets; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. Clause 25: The method of clause 24, wherein the plurality of mode groups includes a first mode group including intra-prediction modes 0 and 1, a second group including intra-prediction modes 2 to 12 , a third group including intra-prediction modes 13 to 23, a fourth group including intra-prediction modes 24 to 34, and a fifth group including the matrix intra-prediction (MIP) mode. Clause 26: The method of clause 24, wherein the size of the current block comprises a width of the current block and a height of the current block, and wherein the size of the current block is included in a size group. Clause 27: The method of clause 26, wherein the size group of the current block is selected from one of a plurality of size groups including 4x4, 4x8, 4x16, 4xN, 8x4, 8x8, 8x16, 8xN, 16x4, 16x8, 16x16, 16xN, Nx4, Nx8, Nx16, NxN, where N is an integer power of 2 and greater than 16. Clause 28: The method of clause 27, wherein determining the set of available MTS schemes according to the size of the current block comprises determining the set of available MTS according to the size group for the current block. Clause 29: The method of clause 24, further comprising decoding an MTS index value representing the MTS scheme from the set of available MTS schemes, wherein determining the MTS scheme comprises determining the iviA / a / ¿u ¿ó / u i i ouo MTS scheme using the MTS index value. Clause 30: The method of clause 29, wherein the MTS index value has a value between 0 and 3, inclusive, wherein the plurality of MTS schema sets comprises: {17, 18, 23, 24}, {3, 7, 18, 22}, {2, 17, 18, 22}, {3, 15, 17, 18}, {3, 12, 18, 19}, {12, 18, 19, 23}, {2, 12, 17, 18}, {2, 17, 18, 22}, {2, 11, 17, 18}, {12, 18, 19, 23}, {12, 13, 16, 24}, {2, 11,16, 23}, {2, 13, 17, 22}, {2, 11, 17, 21}, {13, 16, 19, 22}, {7, 12, 13, 18}, {1, 11, 12, 16}, {3, 13, 17, 22}, {1,6, 12, 22}, {12, 13, 15, 16}, {18, 19, 23, 24}, {2, 17, 18, 24}, {3, 4, 17, 22}, {12, 18, 19, 23}, {12, 18, 19, 23}, {6, 12, 18, 24}, {2, 6, 12, 21}, {1,11,17, 22}, {3, 11, 16, 17}, {8, 12, 19, 23}, {7, 13, 16, 23}, {1,6, 11, 12}, {1,11,17, 21}, {6, 11, 17, 21}, {8, 11, 14, 17}, {6, 11, 12, 21}, {1,6, 11, 12}, {2, 6, 11, 12}, {1,6, 11,21}, {7, 11, 12, 16}, {8, 12, 19, 24}, {1,13, 18, 22}, {2, 6, 17, 21}, {11, 12, 16, 19}, {8, 12, 17, 24}, {6, 12, 19, 21}, {6, 12, 13, 21], {2, 16, 17, 21}, {6, 17, 19, 23}, {6, 12, 14, 17}, {6, 7, 11,21}, {1, 11, 12, 16}, {1,6, 11, 12}, {6, 11, 12, 21}, {7, 8, 9, 11}, {6, 7, 11, 12}, {6, 7, 11, 12}, {1, 11, 12, 16}, {6, 11, 17, 21}, {6, 7, 11, 12}, {12, 14, 18, 21}, {1, 11, 16, 22}, {1,11,16, 22}, {7, 13, 15, 16}, {1,8, 12, 19}, {6, 7, 9, 12}, {2, 6, 12, 13}, {1,12, 16, 21}, {7, 11, 16, 19}, {7, 8, 11, 12}, {6, 7, 11, 12}, {6, 7, 11, 12}, {1,6, 11, 12}, {6, 7, 11, 16}, {6, 7, 11, 12}, {6, 7, 11, 12}, {6, 11, 12, 21}, {1,6, 11, 12}, {6, 7, 11, 12}, {6, 7, 11,12}, and where the MTS index indicates a pair of transforms of the set of MTS schemes available according to: {DCT8, DCT8},{DCT8, DST7}, {DCT8, DCT5}, {DCT8, DST4}, {DCT8, DST1}, {DST7, DCT8}, {DST7, DST7} ,{DST7, DCT5},{DST7, DST4}, {DST7, DST1}, {DCT5, DCT8},{DCT5, DST7},{DCT5, DCT5},{DCT5, DST4}, {DCT5, DST1}, {DST4, DCT8},{DST4, DST7},{DST4, DCT5},{DST4, DST4}, {DST4, DST1}, {DST1, DCT8},{DST1, DST7},{DST1, DCT5},{DST1, DST4}, {DST1, DST1}. Clause 31: The method of clause 24, wherein each of the MTS scheme sets includes four respective transform pair options. Clause 32: The method of clause 24, further comprising determining a number of transform pair options in the set of available MTS schemes according to a form of the current block. Clause 33: The method of clause 24, further comprising determining a number of transform pair options in the set of available MTS schemes according to a quantization parameter of the current block. Clause 34: The method of clause 24, wherein the current block comprises a first block, where the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, where the first block has a size of WxH, where W is not equal to H, wherein the intra-prediction mode comprises 11 and is an angular intra-prediction mode, the method further comprises: determining that a second block has a size of HxW; determine that the second block has an intra iviA / a / ¿u¿ó / u i i ouo prediction mode of (68 - 11); determine the set of MTS schemes available for the second block according to the size of HxW for the second block and the intra-prediction mode of (68 - 11); determine the MTS scheme for the second block; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 35: The method of clause 24, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH , wherein W is not equal to H, wherein the intra-prediction mode comprises the matrix intra-prediction (MIP) mode having a first transpose indicator value, the method further comprises: determining that a second block has a size of HxW; determining that an intra-prediction mode for the second block is the MIP intra-prediction mode with a second transpose indicator value different from the first transpose indicator value; determining the set of MTS schemes available for the second block according to the HxW size for the second block and the MIP intra-prediction mode with the second transpose indicator value; determining the MTS scheme for the second block from the set of available MTS schemes; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 36: The method of clause 24, wherein when the current block is encoded using decoder-side intra-mode bypass and fused intra-prediction mode (DIMD), determining the set of available MTS schemes according to the intra-prediction mode comprises determining the set of available MTS schemes according to a dominant angular mode determined by the DIMD mode. Clause 37: The method of clause 36, wherein the dominant angular mode comprises a mode having a higher weighting. Clause 38: The method of clause 24, wherein when the current block is encoded using decoder-side intra-mode derivation and fused intra-prediction mode (DIMD), determining the set of available MTS schemes according with the intra-prediction mode it comprises: determining whether a difference between two angular mode values is greater than a threshold; when the difference is greater than the threshold, determining the intra-prediction mode comprises determining the intra-prediction mode as a flat mode by determining the set of available MTS schemes; or when the difference is less than or equal to the threshold, determining the intra-prediction mode comprises determining the intra-prediction mode as a dominant angular mode determined by the DIMD mode. iviA / a / ¿u¿ó / u i i ouo Clause 39: The method of clause 24, wherein when the intra-prediction mode comprises a wide-angle intra-prediction mode, determining the set of MTS schemes available according to the intra-prediction mode comprises determining the set of MTS schemes available according to a conventional intra-prediction mode having an angle closer to a wide-angle intra-prediction mode angle. Clause 40: The method of clause 24, wherein determining the set of available MTS schemes according to the size and intra-prediction mode for the current block comprises determining the set of available MTS schemes according to iviA / a / ¿u¿ó / u i i ouo the following table: Size || mode [0,1] [2-12] [13-23] [24 - 34] MIP 4x4 0 1 2 3 4 4x8 5 6 7 8 9 4x16 10 11 12 13 14 4xN 15 16 17 18 19 8x4 20 21 22 23 24 8x8 25 26 27 28 29 8x16 30 31 32 33 34 8xN 35 36 37 38 39 16x4 40 41 42 43 44 16x8 45 46 47 48 49 16x16 50 51 52 53 54 16xN 55 56 57 58 59 32x4 60 61 62 63 64 32x8 65 66 67 68 69 32x16 70 71 72 73 74 32xN 75 76 77 78 79 where N is an integer value equal to or greater than 32. Clause 41: The method of clause 24, wherein determining the intra-prediction mode comprises determining the intra-prediction mode according to the template-based intra-mode derivation (TIMD) mode. Clause 42: The method of clause 41, wherein when the TIMD mode uses the fusion of two intra-prediction modes, the determination of the set of available MTS schemes comprises determining the set of available MTS schemes according to a mode of intra-prediction dominant of the two intra-prediction modes. Clause 43: The method of clause 41, wherein when the TIMD mode uses the fusion of two intra-prediction modes, the determination of the set of available MTS schemes comprises: when a difference between the two intra-prediction modes is greater at a threshold, determining the set of available MTS schemes comprises determining the set of available MTS schemes according to the flat mode; or when the difference between the two intra-prediction modes is less than or equal to the threshold, determining the set of available MTS schemes comprises determining the set of available MTS schemes according to a dominant intra-prediction mode of the two modes of intra-prediction. Clause 44: The method of clause 43, wherein the dominant intra-prediction mode comprises the intra-prediction mode of the two intra-prediction modes that produce lower distortion. Clause 45: The method of clause 43, wherein determining the set of available MTS schemes comprises determining the set of available MTS schemes according to a table that maps the extended intra-prediction mode angles to sets of MTS schemes available. Clause 46: The method of clause 24, wherein decoding the current block comprises: forming a prediction block for the current block using the intra-prediction mode; and adding samples of the prediction block to the corresponding samples of the residual block. Clause 47: The method of clause 24, further comprising encoding the current block before decoding the current block. Clause 48: A device for decoding video data, the device comprises: a memory configured to store video data; and one or more processors implemented in circuitry and configured to: determine a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determining a mode group that includes the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups in the plurality of mode groups including the respective sets of modes of intra-prediction, so that each possible intra-prediction mode is included in no more than one of the mode groups; determining a set of available multiple transform selection (MTS) schemes for the current block according to the size and intraprediction mode for the current block, the set of available MTS schemes being a set of available MTS schemes from a plurality of MTS scheme sets; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. Clause 49: The device of clause 48, wherein the plurality of mode groups includes a first mode group including intra-prediction modes 0 and 1, a second group including intra-prediction modes 2 to 12, a third group that includes the iviA / a / ¿u¿ó / u i i ouo intra-prediction modes 13 to 23, a fourth group that includes the intra-prediction modes 24 to 34, and a fifth group that includes the matrix intra-prediction (MIP) mode. Clause 50: The device of clause 48, wherein the current block size comprises a current block width and a current block height, and wherein the current block size is included in a size group. Clause 51: The device of clause 48, wherein one or more processors are configured to decode an MTS index value representing the MTS scheme from the set of available MTS schemes, and wherein one or more processors are configured to determine the scheme MTS using the MTS index value. Clause 52: The device of clause 48, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH , where W is not equal to H, wherein the intra-prediction mode comprises 11 and is an angular intra-prediction mode, and wherein one or more processors are configured to: determine that a second block has a size of HxW; determine that the second block has an intra-prediction mode of (68 - 11); determine the set of MTS schemes available for the second block according to the size of HxW for the second block and the intra-prediction mode of (68 - 11); determine the MTS scheme for the second block; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 53: The device of clause 48, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH , wherein W is not equal to H, wherein the intra-prediction mode comprises the matrix intra-prediction (MIP) mode having a first transpose indicator value, and wherein one or more processors are configured to: determine that a second block has a size of HxW; determining that an intra-prediction mode for the second block is the MIP intra-prediction mode with a second transpose indicator value different from the first transpose indicator value; determining the set of MTS schemes available for the second block according to the HxW size for the second block and the MIP intra-prediction mode with the second transpose indicator value; determining the MTS scheme for the second block from the set of available MTS schemes; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. iviA / a / zuzó / u i i ouo Clause 54: The device of clause 48, wherein one or more processors are configured to encode the current block before decoding the current block. Clause 55: The device of clause 48, further comprising a display configured to display the decoded video data. Clause 56: The device of clause 48, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiving device or a decoder. Clause 57: A computer-readable storage medium that has stored on it instructions that, when executed, cause a processor of a device to decode video data to: determine a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determining a mode group that includes the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups of the plurality of mode groups including the respective sets of modes intra-prediction, so that each possible intra-prediction mode is included in no more than one of the mode groups; determining a set of available multiple transform selection (MTS) schemes for the current block according to the size and intraprediction mode for the current block, the set of available MTS schemes being a set of available MTS schemes from a plurality of MTS scheme sets; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. Clause 58: The computer-readable storage medium of clause 57, wherein the plurality of mode groups includes a first mode group including intra-prediction modes 0 and 1, a second group including intra-prediction modes -prediction 2 to 12, a third group including intra-prediction modes 13 to 23, a fourth group including intra-prediction modes 24 to 34, and a fifth group including matrix intra-prediction mode (MIP ). Clause 59: The computer-readable storage medium of clause 57, wherein the size of the current block comprises a width of the current block and a height of the current block, and wherein the size of the current block is included in a group of sizes . Clause 60: The computer-readable storage medium of clause 57, further comprising instructions that cause the processor to decode an MTS index value representing the MTS scheme from the set of available MTS schemes, and wherein the instructions that cause The processor determines the MTS scheme comprise iviA / a / zuzó / u i i ouo instructions that cause the processor to determine the MTS scheme using the MTS index value. Clause 61: The device of clause 48, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH , where W is not equal to H, wherein the intra-prediction mode comprises 11 and is an angular intra-prediction mode, further comprising instructions that cause the processor to: determine that a second block has a size of HxW ; determine that the second block has an intra-prediction mode of (68 - 11); determine the set of MTS schemes available for the second block according to the size of HxW for the second block and the intra-prediction mode of (68 - 11); determine the MTS scheme for the second block; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 62: The device of clause 48, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH , where W is not equal to H, wherein the intra-prediction mode comprises the matrix intra-prediction (MIP) mode having a first transpose indicator value, further comprising instructions that cause the processor to: determine that a second block has a size of HxW; determine that an intra-prediction mode for the second block is the MIP intra-prediction mode with a second transpose indicator value different from the first transpose indicator value; determine the set of MTS schemes available for the second block according to the HxW size for the second block and the MIP intraprediction mode with the second transpose indicator value; determine the MTS scheme for the second block from the set of available MTS schemes; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 63: The device of clause 48, further comprising instructions that cause the processor to encode the current block before decoding the current block. Clause 64: A device for decoding video data, the device comprises: means for determining a size of a current block of video data; means for determining an intra-prediction mode for the current block of video data; means for determining a mode group that includes the determined intra-prediction mode, the mode group is one of a plurality of mode groups, each of the mode groups in the plurality of mode groups including the respective sets of intraινΐΛ / a / zuzó / u i i ouo prediction modes such that each possible intra-prediction mode is included in no more than one of the mode groups; means for determining a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes is a set of available MTS schemes of a plurality of sets of MTS schemes; means for determining an MTS scheme from the set of available MTS schemes according to the determined mode group; means for applying transforms of the MTS scheme to a transform block of the current block to produce a residual block for the current block; and means for decoding the current block using the residual block. Clause 65: A method of decoding video data, the method comprises: determining a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determining a mode group that includes the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups of the plurality of mode groups including the respective sets of modes intra-prediction, so that each possible intra-prediction mode is included in no more than one of the mode groups; determine a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes is a set of available MTS schemes of a plurality of sets of MTS schemes; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. Clause 66: The method of clause 65, wherein the plurality of mode groups includes a first mode group including intra-prediction modes 0 and 1, a second group including intra-prediction modes 2 to 12 , a third group including intra-prediction modes 13 to 23, a fourth group including intra-prediction modes 24 to 34, and a fifth group including the matrix intra-prediction (MIP) mode. Clause 67: The method of either of clauses 65 and 66, wherein the current block size comprises a current block width and a current block height, and wherein the current block size is included in a size group. Clause 68: The method of clause 67, wherein the size group of the current block is selected from one of a plurality of size groups including 4x4, 4x8, 4x16, 4xN, 8x4, 8x8, 8x16, 8xN, 16x4, 16x8, 16x16, 16xN, Nx4, Nx8, Nx16, NxN, where N is an integer power of 2 and greater than 16. ινΐΛ / a / zuzó / u i i ouo Clause 69: The method of clause 68, wherein determining the set of available MTS schemes according to the size of the current block comprises determining the set of available MTS according to the size group for the current block. Clause 70: The method of any of clauses 65 to 69, further comprising decoding an MTS index value representing the MTS scheme from the set of available MTS schemes, wherein determining the MTS scheme comprises determining the MTS scheme using the MTS index value. Clause 71: The method of clause 70, wherein the MTS index value has a value between 0 and 3, inclusive, wherein the plurality of MTS schema sets comprises: {17, 18, 23, 24}, {3, 7, 18, 22}, {2, 17, 18, 22}, {3, 15, 17, 18}, {3, 12, 18, 19}, {12, 18, 19, 23}, {2, 12, 17, 18}, {2, 17, 18, 22}, {2, 11, 17, 18}, {12, 18, 19, 23}, {12, 13, 16, 24}, {2, 11,16, 23}, {2, 13, 17, 22}, {2, 11, 17, 21}, {13, 16, 19, 22}, {7, 12, 13, 18}, {1, 11, 12, 16}, {3, 13, 17, 22}, {1,6, 12, 22}, {12, 13, 15, 16}, {18, 19, 23, 24}, {2, 17, 18, 24}, {3, 4, 17, 22}, {12, 18, 19, 23}, {12, 18, 19, 23}, {6, 12, 18, 24}, {2, 6, 12, 21}, {1, 11, 17, 22}, {3, 11, 16, 17}, {8, 12, 19, 23}, {7, 13, 16, 23}, {1,6, 11, 12}, {1,11,17, 21}, {6, 11, 17, 21}, {8, 11, 14, 17}, {6, 11, 12, 21}, {1,6, 11, 12}, {2, 6, 11, 12}, {1,6, 11,21}, {7, 11, 12, 16}, {8, 1 2, 19, 24], {1,13, 18, 22}, {2, 6, 17, 21}, {11,12, 16, 19}, {8, 12, 17, 24}, {6, 12, 19, 21}, {6, 12, 13, 21}, {2, 16, 17, 21}, {6, 17, 19, 23}, {6, 12, 14, 17}, {6, 7, 11,21}, {1, 11, 12, 16}, {1,6, 11, 12}, {6, 11, 12, 21}, {7, 8, 9, 11}, {6, 7, 11, 12}, {6, 7, 11, 12}, {1, 11, 12, 16}, {6, 11, 17, 21}, {6, 7, 11, 12}, {12, 14, 18, 21}, {1, 11, 16, 22}, {1,11,16, 22}, {7, 13, 15, 16}, {1,8, 12, 19}, {6, 7, 9, 12}, {2, 6, 12, 13}, {1,12, 16, 21}, {7, 11, 16, 19}, {7, 8, 11, 12}, {6, 7, 11, 12}, {6, 7, 11, 12}, {1,6, 11, 12}, {6, 7, 11, 16}, {6, 7, 11, 12}, {6, 7, 11, 12}, {6, 11, 12, 21}, {1,6, 11, 12}, {6, 7, 11, 12}, {6, 7, 11, 12}, and where the MTS index indicates a pair of transforms of the set of MTS schemes available according to: {DCT8, DCT8},{DCT8, DST7}, {DCT8, DCT5}, {DCT8, DST4}, {DCT8, DST1}, {DST7, DCT8}, {DST7, DST7},{DST7, DCT5},{DST7, DST4}, {DST7, DST1}, {DCT5, DCT8},{DCT5, DST7},{DCT5, DCT5},{DCT5, DST4}, {DCT5, DST1}, {DST4, DCT8},{DST4, DST7},{DST4, DCT5},{DST4, DST4}, {DST4, DST1}, {DST1, DCT8},{DST1, DST7},{DST1, DCT5},{DST1 , DST4}, {DST1, DST1}. Clause 72: The method of any of clauses 65 to 71, wherein each of the MTS scheme sets includes four options of respective transform pairs. Clause 73: The method of any of clauses 65 to 72, further comprising determining a number of transform pair options in the set of available MTS schemes according to a form of the current block. Clause 74: The method of any of clauses 65 to 73, further comprising determining a number of transform pair options in the set of available MTS schemes in accordance with a quantization parameter of the current block. Clause 75: The method of any of clauses 65 to 74, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH, where W is not equal to H, wherein the intra-prediction mode comprises 11 and is an angular intra-prediction mode, the method further comprises: determining that a second block has a size of HxW; determine that the second block has an intra-prediction mode of (68 - 11); determine the set of MTS schemes available for the second block according to the HxW size for the second block and the intra-prediction mode of (68 - 11); determine the MTS scheme for the second block; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 76: The method of any of clauses 65 to 74, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH, where W is not equal to H, wherein the intra-prediction mode comprises the matrix intra-prediction (MIP) mode having a first transpose indicator value, the method further comprises: determining that a second block has a size of HxW; determining that an intra-prediction mode for the second block is the MIP intra-prediction mode with a second transpose indicator value different from the first transpose indicator value; determining the set of MTS schemes available for the second block according to the HxW size for the second block and the MIP intra-prediction mode with the second transpose indicator value; determining the MTS scheme for the second block from the set of available MTS schemes; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 77: The method of any of clauses 65 to 76, wherein when the current block is encoded using the decoder side intra mode derivation and the fused intra prediction mode (DIMD), determining the set of schemes MTS available according to the intra-prediction mode comprises determining the set of MTS schemes available according to a dominant angular mode determined using the DIMD mode. Clause 78: The method of clause 77, wherein the dominant angular mode comprises a mode having a higher weighting. iviA / a / ¿u¿ó / u i i ouo Clause 79: The method of any of clauses 65 to 78, wherein when the current block is encoded using decoder-side intra-mode derivation and fused intra-prediction mode (DIMD), determining the set of schemes MTS available according to the intra-prediction mode comprises: determining whether a difference between two angular mode values is greater than a threshold; when the difference is greater than the threshold, determining the intra-prediction mode comprises determining the intra-prediction mode as a flat mode by determining the set of available MTS schemes; or when the difference is less than or equal to the threshold, determining the intra-prediction mode comprises determining the intra-prediction mode as a dominant angular mode determined by the DIMD mode. Clause 80: The method of any of clauses 65 to 79, wherein when the intra-prediction mode comprises a wide-angle intra-prediction mode, determining the set of MTS schemes available according to the intra-prediction mode comprises determining the set of available MTS schemes according to a conventional intra-prediction mode having an angle closest to a wide-angle intra-prediction mode angle. Clause 81: The method of any of clauses 65 to 80, wherein determining the set of available MTS schemes according to the size and intra-prediction mode for the current block comprises determining the set of iviA / a schemes / ¿u¿ó / u i i ouo MTS available according to the following table: Size || mode [0,1] [2-12] [13-23] [24 - 34] MIP 4x4 0 1 2 3 4 4x8 5 6 7 8 9 4x16 10 11 12 13 14 4xN 15 16 17 18 19 8x4 20 21 22 23 24 8x8 25 26 27 28 29 8x16 30 31 32 33 34 8xN 35 36 37 38 39 16x4 40 41 42 43 44 16x8 45 46 47 48 49 16x16 50 51 52 53 54 16xN 55 56 57 58 59 32x4 60 61 62 63 64 32x8 65 66 67 68 69 32x16 70 71 72 73 74 32xN 75 76 77 78 79 where N is an integer value equal to or greater than 32. Clause 82: The method of any of clauses 65 to 81, wherein determining the intra-prediction mode comprises determining the intra-prediction mode according to the template-based intra-mode derivation (TIMD) mode. Clause 83: The method of clause 82, wherein when the TIMD mode uses the fusion of two intra-prediction modes, determining the set of available MTS schemes comprises determining the set of available MTS schemes according to a mode of dominant intra-prediction of the two intra-prediction modes. Clause 84: The method of clause 82, wherein when the TIMD mode uses the fusion of two intra-prediction modes, the determination of the set of available MTS schemes comprises: when a difference between the two intra-prediction modes is greater at a threshold, determining the set of available MTS schemes comprises determining the set of available MTS schemes according to the flat mode; or when the difference between the two intra-prediction modes is less than or equal to the threshold, determining the set of available MTS schemes comprises determining the set of available MTS schemes according to an intra-prediction mode dominant of the two modes intra-prediction. Clause 85: The method of clause 84, wherein the dominant intra-prediction mode comprises the intra-prediction mode of the two intra-prediction modes that produce lower distortion. Clause 86: The method of any of clauses 84 and 85, wherein determining the set of available MTS schemes comprises determining the set of available MTS schemes according to a table mapping the extended intra-prediction mode angles to MTS scheme sets available. Clause 87: The method of any of clauses 65 to 86, wherein decoding the current block comprises: forming a prediction block for the current block using the intra-prediction mode; and adding samples of the prediction block to the corresponding samples of the residual block. Clause 88: The method of any of clauses 65 to 87, further comprising encoding the current block before decoding the current block. Clause 89: A device for decoding video data, the device comprises: a memory configured to store video data; and one or more processors implemented in circuitry and configured to: determine a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determining a mode group that includes the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups in the plurality of mode groups including the respective sets of modes intra-prediction, so that each possible intra-prediction mode is included in no more than one of the mode groups; determining a set of available multiple transform selection (MTS) schemes for the current block according to the size and intraprediction mode for the current block, the set of available MTS schemes being a set of available MTS schemes from a plurality of MTS scheme sets; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. Clause 90: The device of clause 89, wherein the plurality of mode groups includes a first mode group including intra-prediction modes 0 and 1, a second group including intra-prediction modes 2 to 12 , a third group including intra-prediction modes 13 to 23, a fourth group including intra-prediction modes 24 to 34, and a fifth group including the matrix intra-prediction (MIP) mode. Clause 91: The device of either of clauses 89 and 90, wherein the current block size comprises a current block width and a current block height, and wherein the current block size is included in a size group. Clause 92: The device of any of clauses 89 to 91, wherein one or more processors are further configured to decode an MTS index value representing the MTS scheme from the set of available MTS schemes, and wherein one or more processors are configured to determine the MTS scheme using the MTS index value. Clause 93: The device of any of clauses 89 to 92, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH, where W is not equal to H, wherein the intra-prediction mode comprises h and is an angular intra-prediction mode, and wherein one or more processors are configured to: determine that a second block has a size of HxW; determine that the second block has an intra-prediction mode of (68 - h); determine the set of MTS schemes available for the second block according to the size of HxW for the second block and the intra-prediction mode of (68 - h); determine the MTS scheme for the second block; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 94: The device of any of clauses 89 to 93, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block ινΐΛ / a / zuzó / u i i ouo has a size of WxH, where W is not equal to H, wherein the intra-prediction mode comprises the matrix intra-prediction (MIP) mode having a first transpose indicator value , and where one or more processors are configured to: determine that a second block has a size of HxW; determining that an intra-prediction mode for the second block is the MIP intra-prediction mode with a second transpose indicator value different from the first transpose indicator value; determining the set of MTS schemes available for the second block according to the HxW size for the second block and the MIP intra-prediction mode with the second transpose indicator value; determining the MTS scheme for the second block from the set of available MTS schemes; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 95: The device of any of clauses 89-94, wherein one or more processors are configured to encode the current block before decoding the current block. Clause 96: The device of any of clauses 89 to 95, further comprising a display configured to display the video data. Clause 97: The device of any of clauses 89 to 96, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiving device or a decoder. Clause 98: A computer-readable storage medium that has stored on it instructions that, when executed, cause a processor of a device to decode video data to: determine a size of a current block of video data; determining an intra-prediction mode for the current block of video data; determining a mode group that includes the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups of the plurality of mode groups including the respective sets of modes intra-prediction, so that each possible intra-prediction mode is included in no more than one of the mode groups; determining a set of available multiple transform selection (MTS) schemes for the current block according to the size and intraprediction mode for the current block, the set of available MTS schemes being a set of available MTS schemes from a plurality of MTS scheme sets; determining an MTS scheme from the set of available MTS schemes according to the determined mode group; applying transforms from the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block. iviA / a / ¿u¿ó / u i i ouo Clause 99: The computer-readable storage medium of clause 98, wherein the plurality of mode groups includes a first mode group including intra-prediction modes 0 and 1, a second group including intra-prediction modes -prediction 2 to 12, a third group including intra-prediction modes 13 to 23, a fourth group including intra-prediction modes 24 to 34, and a fifth group including matrix intra-prediction mode (MIP ). Clause 100: The computer-readable storage medium of any of clauses 98 and 99, wherein the size of the current block comprises a width of the current block and a height of the current block, and wherein the size of the current block is included in a group of sizes. Clause 101: The computer-readable storage medium of any of clauses 98 to 100, further comprising instructions that cause the processor to decode an MTS index value representing the MTS scheme from the set of available MTS schemes, and wherein the Instructions that cause the processor to determine the MTS scheme comprise instructions that cause the processor to determine the MTS scheme using the MTS index value. Clause 102: The device of any of clauses 98 to 101, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH, where W is not equal to H, wherein the intra-prediction mode comprises li and is an angular intra-prediction mode, further comprising instructions that cause the processor to: determine that a second block has a size of HxW; determine that the second block has an intra-prediction mode of (68 - h); determine the set of MTS schemes available for the second block according to the size of HxW for the second block and the intra-prediction mode of (68 - h); determine the MTS scheme for the second block; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 103: The device of any of clauses 98 to 102, wherein the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH, where W is not equal to H, wherein the intra-prediction mode comprises the matrix intra-prediction (MIP) mode having a first transpose indicator value, further comprising instructions that cause the processor: determine that a second block has size HxW; determine that an intra-prediction mode for the second block is the MIP intra-prediction mode with a second transpose indicator value different from the first transpose indicator value; determine the set of MTS schemes available for the second block according to the HxW size for the second block and the MIP intra-prediction mode with the second transpose indicator value; determine the MTS scheme for the second block from the set of available MTS schemes; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block. Clause 104: The device of any of clauses 98-103, further comprising instructions that cause the processor to encode the current block before decoding the current block. Clause 105: A device for decoding video data, the device comprises: means for determining a size of a current block of video data; means for determining an intra-prediction mode for the current block of video data; means for determining a mode group that includes the determined intra-prediction mode, the mode group is one of a plurality of mode groups, each of the mode groups in the plurality of mode groups including the respective sets of intra-prediction modes such that each possible intra-prediction mode is included in no more than one of the mode groups; means for determining a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes is a set of available MTS schemes of a plurality of sets of MTS schemes; means for determining an MTS scheme from the set of available MTS schemes according to the determined mode group; means for applying transforms of the MTS scheme to a transform block of the current block to produce a residual block for the current block; and means for decoding the current block using the residual block. It should be recognized that, depending on the example, certain acts or events of any of the techniques described here may be performed in a different sequence, may be added, merged, or removed entirely (for example, not all acts or events described are necessary for the implementation of the techniques). Likewise, in certain examples, acts or events may be performed concurrently, for example, through multi-threaded processing, interrupt processing, or multiple processors, rather than sequentially. In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which is a tangible medium such as data storage media, or communication media, which includes any medium that facilitates the transfer of a computer program from one location to another. , for example, according to a communication protocol. Thus, computer-readable media can generally correspond to (1) tangible, computer-readable storage media that is non-transitory, or (2) a communication medium such as a signal or carrier wave. Storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for the implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium. By way of example, but not limited to, such computer-readable storage media may comprise, RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave are included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other transient media, but rather are directed to non-transitory tangible storage media. The term disk as used herein includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc. , where disks usually reproduce data magnetically, while disks (disks) reproduce data optically with lasers. Combinations of the above must also be included within the scope of computer-readable media. The 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 logic circuitry. discrete or equivalent integrated. As a consequence, the terms “processor” and “processing circuitry” as used herein may refer to any of the above structures or any other structure suitable for the implementation of the techniques. described here. Additionally, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured to encode and decode, or incorporated into a combined codec. Also, the techniques could be fully implemented in one or more circuits or logical elements. The techniques of this disclosure can be implemented in a wide variety of devices or apparatus, including a wireless telephone, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require their realization by different hardware units. Instead, as described above, multiple units may be combined into a codec hardware unit or provided by a collection of interoperable hardware units, including one or more processors as described above, in conjunction with software and / or suitable firmware. Several examples have been described. These and other examples are within the scope of the following claims.
Claims
1. A method for decoding video data, characterized in that the method comprises: determining a size for an actual block of video data; determining an intra-prediction mode for the actual block of video data; determining a mode group that includes the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups being one of a plurality of mode groups, each of the mode groups being one of the respective sets of intra-prediction modes, such that each possible intra-prediction mode is included in no more than one of the mode groups; determining a set of available multiple transform selection (MTS) schemes for the actual block according to the size and the intra-prediction mode for the actual block, the set of available MTS schemes being one set of available MTS schemes from a plurality of sets of MTS schemes;determine an MTS scheme from the set of available MTS schemes according to the determined mode group; apply transforms of the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block.
2. The method according to claim 1, characterized in that the plurality of mode groups includes a first mode group comprising intra-prediction modes 0 and 1, a second group comprising intra-prediction modes 2 to 12, a third group comprising intra-prediction modes 13 to 23, a fourth group comprising intra-prediction modes 24 to 34, and a fifth group comprising the matrix intra-prediction mode (MIP).
3. The method according to claim 1, characterized in that the actual block size comprises an actual block width and an actual block height, and wherein the actual block size is included in a group of sizes.
4. The method according to claim 3, characterized in that the current block size group is selected from one of a plurality of size groups including 4x4, 4x8, 4x16, 4xN, 8x4, 8x8, 8x16, 8xN, 16x4, 16x8, 16x16, 16xN, Nx4, Nx8, Nx16, NxN, where N is a power of an integer of 2 and greater than 16.
5. The method according to claim 4, characterized in that determining the set of available MTS schemes according to the current block size comprises determining the set of available MTS schemes according to the size group for the current block.
6. The method according to claim 1, characterized in that it further comprises decoding an MTS index value representing the MTS scheme from the set of available MTS schemes, wherein determining the MTS scheme comprises determining the MTS scheme using the MTS index value.
7. The method according to claim 6, characterized in that the value of the MTS index has a value between 0 and 3 inclusive, wherein the plurality of MTS scheme sets comprises: {17, 18, 23, 24}, {3, 7, 18, 22}, {2, 17, 18, 22}, {3, 15, 17, 18}, {3, 12, 18, 19}, {12, 18, 19, 23}, {2, 12, 17, 18}, {2, 17, 18, 22}, {2, 11, 17, 18}, {12, 18, 19, 23}, {12, 13, 16, 24}, { 2, 11, 16, 23}, { 2, 13, 17, 22}, { 2, 11, 17, 21}, { 13, 16, 19, 22}, { 7, 12, 13, 18}, { 1, 11, 12, 16}, { 3, 13, 17, 22}, { 1, 6, 12, 22}, { 12, 13, 15, 16}, { 18, 19, 23, 24}, { 2, 17, 18, 24}, { 3, 4, 17, 22}, { 12, 18, 19, 23}, { 12, 18, 19, 23}, { 6, 12, 18, 24}, { 2, 6, 12, 21}, { 1,11,17, 22}, { 3, 11, 16, 17}, iviA / a / ¿u¿ó / uii ouo { 8, 12, 19,23}, { 7, 13, 16,23}, { 1, 6, 11, 12}, { 1,11,17, 21}, { 6, 11, 17, 21}, { 8, 11, 14, 17}, { 6, 11, 12, 21}, { 1, 6, 11, 12}, { 2, 6, 11, 12}, { 1, 6, 11, 21}, { 7, 11, 12, 16}, { 8, 12, 19, 24}, { 1, 13, 18, 22}, { 2, 6, 17, 21}, { 11, 12,16, 19}, { 8, 12, 17, 24}, { 6, 12, 19, 21}, { 6, 12, 13, 21}, { 2, 16, 17, 21}, { 6, 17, 19, 23}, { 6, 12, 14, 17}, { 6, 7, 11, 21}, { 1, 11, 12, 16}, { 1, 6, 11, 12}, { 6, 11, 12, 21}, { 7, 8, 9, 11}, { 6, 7, 11, 12}, { 6, 7, 11, 12}, { 1, 11, 12, 16}, { 6, 11, 17, 21}, { 6, 7, 11, 12}, { 12, 14, 18, 21}, { 1,11,16, 22}, { 1,11,16, 22}, { 7, 13, 15, 16}, { 1, 8, 12, 19}, > u r\ c N a 79Ξ { 6, 7, 9, 12},a { 2, 6, 12, 13}, { 1, 12, 16, 21}, { 7, 11, 16, 19}, { 7, 8, 11, 12}, { 6, 7, 11, 12}, { 6, 7, 11, 12}, { 1, 6, 11, 12}, { 6, 7, 11, 16}, { 6, 7, 11, 12}, { 6, 7, 11, 12}, { 6, 11, 12, 21}, { 1, 6, 11, 12}, { 6, 7, 11, 12}, { 6, 7, 11, 12}, and where the MTS index indicates a pair of transforms from the set of available MTS schemes according to: { DCT8, DCT8},{ DCT8, DST7},{ DCT8, DCT5},{ DCT8, DST4}, {DCT8, DST1}, { DST7, DCT8},{ DST7, DST7},{ DST7, DCT5},{ DST7, DST4}, {DST7, DST1}, { DCT5, DCT8},{ DCT5, DST7},{ DCT5, DCT5},{ DCT5, DST4}, {DCT5, DST1}, { DST4, DCT8},{ DST4, DST7}, { DST4, DCT5}, { DST4, DST4}, { DST4, DST1}, { DST1, DCT8}, { DST1, DST7}, { DST1, DCT5}, { DST1, DST4}, { DST1, DST1}., 8. The method according to claim 1, characterized in that each of the MTS scheme sets includes four respective transform pair options.
9. The method according to claim 1, characterized in that it further comprises the determination of a number of transform pair options in the set of available MTS schemes according to a current block form.
10. The method according to claim 1, characterized in that it further comprises the determination of a number of transform pair options in the set of available MTS schemes according to a current block quantization parameter.
11. The method according to claim 1, characterized in that the current block comprises a first block, wherein the MTS scheme includes a pair of transforms comprising a horizontal transform and a vertical transform, wherein the first block has a size of WxH, wherein W is not equal to H, wherein the intra-prediction mode comprises h and is an angular intra-prediction mode, the method further comprises: determining that a second block has a size of HxW; determining that the second block has an intra-prediction mode of (68 - h); determining the set of MTS schemes available for the second block according to the size of HxW for the second block and the intra-prediction mode of (68 - h); determining the MTS scheme for the second block; applying the horizontal transform of the MTS scheme as a vertical transform to the second block; and applying the vertical transform of the MTS scheme as a horizontal transform to the second block.
12. The method according to claim 1, characterized in that the actual block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH, wherein W is not equal to H, wherein the intra-prediction mode comprises the matrix intra-prediction mode (MIP) having a first transpose indicator value, the method further comprises: determining that a second block has a size of HxW; determining that an intra-prediction mode for the second block is the MIP intra-prediction mode with a second transpose indicator value different from the first transpose indicator value; determining the set of MTS schemes available for the second block according to the size of HxW for the second block and the MIP intra-prediction mode with the second transpose indicator value;determine the MTS scheme for the second block from the set of available MTS schemes; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block.
13. The method according to claim 1, characterized in that when the current block is encoded using the decoder-side intra-mode derivation and the fused intra-prediction mode (DIMD), the determination of the set of available MTS schemes according to the intra-prediction mode comprises determining the set of available MTS schemes according to a dominant angular mode determined by the DIMD mode.
14. The method according to claim 13, characterized in that the dominant angular mode comprises a mode having a higher weighting.
15. The method according to claim 1, characterized in that when the current block is encoded using decoder-side intra-mode derivation and fused intra-prediction mode (DIMD), the determination of the set of available MTS schemes according to the intra-prediction mode comprises: determining whether a difference between two angle mode values is greater than a threshold; when the difference is greater than the threshold, the determination of the intra-prediction mode comprises determining the intra-prediction mode as a flat mode when determining the set of available MTS schemes; or when the difference is less than or equal to the threshold, the determination of the intra-prediction mode comprises determining the intra-prediction mode as a dominant angle mode determined by the DIMD mode.
16. The method according to claim 1, characterized in that when the intra-prediction mode comprises a wide-angle intra-prediction mode, the determination of the set of available MTS schemes according to the intra-prediction mode comprises determining the set of available MTS schemes according to a conventional intra-prediction mode having an angle closer to an angle of the wide-angle intra-prediction mode.
17. The method according to claim 1, characterized in that the determination of the set of available MTS schemes according to the size and intra-prediction mode for the current block comprises determining the set of available MTS schemes according to the following table: Size || mode [0,1] [2-12] [13-23] [24 - 34] MIP 4x4 0 1 2 3 4 4x8 5 6 7 8 9 4x16 10 11 12 13 14 4xN 15 16 17 18 19 8x4 20 21 22 23 24 8x8 25 26 27 28 29 8x16 30 31 32 33 34 8xN 35 36 37 38 39 16x4 40 41 42 43 44 16x8 45 46 47 48 49 16x16 50 51 52 53 54 16xN 55 56 57 58 59 32x4 60 61 62 63 64 32x8 65 66 67 68 69 32x16 70 71 72 73 74 32xN 75 76 77 78 79 where N is an integer equal to or greater than 32.
18. The method according to claim 1, characterized in that the determination of the intra-prediction mode comprises determining the intra-prediction mode according to the template-based intra-mode derivation mode (TIMD).
19. The method according to claim 18, characterized in that when the TIMD mode uses the fusion of two intra-prediction modes, determining the set of available MTS schemes comprises determining the set of available MTS schemes according to a dominant intra-prediction mode of the two intra-prediction modes.
20. The method according to claim 18, characterized in that when the TIMD mode uses the fusion of two intra-prediction modes, the determination of the set of available MTS schemes comprises: when a difference between the two intra-prediction modes is greater than a threshold, the determination of the set of available MTS schemes comprises determining the set of available MTS schemes according to the flat mode; or when the difference between the two intra-prediction modes is less than or equal to the threshold, the determination of the set of available MTS schemes comprises determining the set of available MTS schemes according to a dominant intra-prediction mode of the two intra-prediction modes.
21. The method according to claim 20, characterized in that the dominant intra-prediction mode comprises the intra-prediction mode of the two intra-prediction modes producing a lower distortion.
22. The method according to claim 20, characterized in that the determination of the set of available MTS schemes comprises determining the set of available MTS schemes according to a table that maps the extended intra-prediction mode angles to sets of available MTS schemes.
23. The method according to claim 1, characterized in that the decoding of the current block comprises: forming a prediction block for the current block by means of the intraprediction mode; and adding samples from the prediction block to the corresponding samples of the residual block.
24. The method according to claim 1, characterized in that it further comprises encoding the current block before decoding the current block.
25. A device for decoding video data, characterized in that the device comprises: a memory configured to store video data; and one or more processors implemented in circuitry and configured to: determine a size of an actual block of video data; determine an intra-prediction mode for the actual block of video data; determine a group of modes that includes the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups of the plurality of mode groups including the respective sets of intra-prediction modes, such that each possible intra-prediction mode is included in no more than one of the mode groups;determine a set of available multiple transform selection (MTS) schemes for the current block according to the size and intra-prediction mode for the current block, the set of available MTS schemes being a set of available MTS schemes from a plurality of sets of MTS schemes; determine an MTS scheme from the set of available MTS schemes according to the determined mode group; apply transforms of the MTS scheme to a transform block of the current block to produce a residual block for the current block; and decode the current block using the residual block.
26. The device according to claim 25, characterized in that the plurality of mode groups includes a first mode group comprising intra-prediction modes 0 and 1, a second group comprising intra-prediction modes 2 to 12, a third group comprising intra-prediction modes 13 to 23, a fourth group comprising intra-prediction modes 24 to 34, and a fifth group comprising the matrix intra-prediction mode (MIP).
27. The device according to claim 25, characterized in that the actual block size comprises an actual block width and an actual block height, and wherein the actual block size is included in a group of sizes.
28. The device according to claim 25, characterized in that one or more processors are further configured to decode an MTS index value representing the MTS scheme from the set of available MTS schemes, and wherein one or more processors are configured to determine the MTS scheme using the MTS index value.
29. The device according to claim 25, characterized in that the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH, wherein W is not equal to H, wherein the intra-prediction mode comprises h and is an angular intra-prediction mode, and wherein one or more processors are configured to: determine that a second block has a size of HxW; determine that the second block has an intra-prediction mode of (68 - h); determine the set of MTS schemes available to the second block according to the size of HxW for the second block and the intra-prediction mode of (68 - h); determine the MTS scheme for the second block; apply the horizontal transform of the MTS scheme as a vertical transform to the second block;and apply the vertical transform of the MTS scheme as a horizontal transform to the second block.; 30. The device according to claim 25, characterized in that the current block comprises a first block, wherein the MTS scheme includes a pair of transforms including a horizontal transform and a vertical transform, wherein the first block has a size of WxH, wherein W is not equal to H, wherein the intra-prediction mode comprises the matrix intra-prediction (MIP) mode having a first transpose indicator value, and wherein one or more processors are configured to: determine that a second block has a size of HxW; determine that an intra-prediction mode for the second block is the MIP intra-prediction mode with a second transpose indicator value different from the first transpose indicator value; determine the set of MTS schemes available for the second block according to the size of HxW for the second block and the MIP intra-prediction mode with the second transpose indicator value;determine the MTS scheme for the second block from the set of available MTS schemes; apply the horizontal transform of the MTS scheme as a vertical transform to the second block; and apply the vertical transform of the MTS scheme as a horizontal transform to the second block.
31. The device according to claim 25, characterized in that one or more processors are configured to encode the current block before decoding the current block.
32. The device according to claim 25, characterized in that it further comprises a screen configured to display video data.
33. The device according to claim 25, characterized in that the device comprises one or more of a camera, a computer, a mobile device, a transmission receiver device, or a decoder.
34. A device for decoding video data, characterized in that the device comprises: means for determining the size of an actual block of video data; means for determining an intra-prediction mode for the actual block of video data; means for determining a group of modes, including the determined intra-prediction mode, the mode group being one of a plurality of mode groups, each of the mode groups being one of a plurality of mode groups, each of the mode groups being one of the plurality of mode groups including the respective sets of intra-prediction modes, such that each possible intra-prediction mode is included in no more than one of the mode groups; means for determining a set of available multiple transform selection (MTS) schemes for the actual block according to the size and the intra-prediction mode for the actual block, the set of available MTS schemes being one set of available MTS schemes from a plurality of sets of MTS schemes;means for determining an MTS scheme from the set of available MTS schemes according to the determined mode group; means for applying transforms of the MTS scheme to a transform block of the current block to produce a residual block for the current block; and means for decoding the current block using the residual block.