Methods for encoding and decoding video data, and devices configured for encoding and decoding video data.
Patent Information
- Application Number
- BR112025021273
- Authority / Receiving Office
- BR · BR
- Patent Type
- Applications
- Publication Date
- 2026-09-08
Smart Images

Figure 00000000_0000_ABST
Description
1 / 84 Selection of Multiple Transforms for Intrablock Copying and Intratemplate Matching in Video Coding
[0001] This application claims priority over U.S. Patent Application No. 18 / 631,415, filed April 10, 2024, and over U.S. Provisional Patent Application No. 63 / 495,976, filed April 13, 2023, the contents of which are incorporated herein by reference in their entirety. U.S. Patent Application No. 18 / 631,415, filed April 10, 2024, claims the benefit of priority over U.S. Provisional Patent Application No. 63 / 495,976, filed April 13, 2023. TECHNICAL FIELD
[0002] This disclosure relates to video encoding and video decoding. BACKGROUND
[0003] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite radiotelephones, so-called smartphones, video conferencing devices, video streaming devices, 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, Advanced Video Coding (AVC). Petition 870250089768, dated 02 / 10 / 2025, page 94 / 199 2 / 84 - advanced video coding), ITU-T H.265 / high-efficiency video coding (HEVC), ITU-T H.266 / versatile video coding (VVC) and extensions of these standards, as well as proprietary video codecs / formats such as AOMedia Video 1 (AV1) which was developed by the Alliance for Open Media. Video devices can transmit, receive, encode, decode, and / or store digital video information more efficiently through the implementation of these video encoding techniques.
[0004] Video coding techniques include spatial (intra-image) and / or temporal (inter-image) prediction to reduce or remove the inherent redundancy in video sequences. For block-based video coding, a video slice (e.g., a video image or a portion of a video image) can be partitioned into video blocks, which may also be called coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in an intracoded slice (I) of an image are coded using spatial prediction with respect to reference samples in neighboring blocks in the same image. Video blocks in an intercoded slice (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 can be called frames, and reference images can be called reference frames. Petition 870250089768, dated 02 / 10 / 2025, p. 95 / 199 3 / 84 SUMMARY
[0005] In general, this disclosure describes techniques for video coding. In particular, this disclosure describes techniques related to transform coding. This disclosure describes a multiple transform selection (MTS) technique for an intra-block copy (IBC) mode, as well as an MTS scheme for an intra-template matching prediction (TMP) mode. A video encoder can determine one of a plurality of transform pairs to use when encoding a block encoded with the IBC and / or TMP mode. The technique in this disclosure can improve coding efficiency in the enhanced compression model (ECM) based on versatile video coding (VVC / H.266).The techniques described in the present invention can be used in other advanced video codecs, including HEVC extensions and the next generation of video encoding standards.
[0006] In one example, this disclosure describes a method for decoding video data, the method comprising receiving a block of video data encoded using an IBC mode or an intraTMP mode, determining a pair of transforms, from among a plurality of pairs of transforms, to decode the block using an MTS process and decoding the block using the pair of transforms.
[0007] In another example, this disclosure describes an apparatus configured to decode video data, the apparatus comprising a memory configured to receive a block of video data and a set of circuits for Petition 870250089768, dated 02 / 10 / 2025, pp. 96 / 199 4 / 84 processing in communication with memory, the set of processing circuits being configured to receive the block of video data encoded using an IBC mode or an intraTMP mode, determine a pair of transforms, from among a plurality of transform pairs, to decode the block using an MTS process and decode the block using the transform pair.
[0008] In another example, this disclosure describes a method for encoding video data, the method comprising receiving a block of video data to be encoded using an IBC mode or an intraTMP mode, determining a pair of transforms, from among a plurality of pairs of transforms, to decode the block using an MTS process and encoding the block using the pair of transforms.
[0009] In another example, this disclosure describes an apparatus configured to encode video data, the apparatus comprising a memory configured to receive a block of video data and a set of processing circuits in communication with the memory, the set of processing circuits being configured to receive the block of video data to be encoded using an IBC mode or an intraTMP mode, determine a pair of transforms, from among a plurality of pairs of transforms, to decode the block using an MTS process and encode the block using the pair of transforms.
[0010] Details of one or more examples are presented in the attached drawings and in the description below. Other attributes, objectives and advantages will become apparent from the description, drawings and claims. Petition 870250089768, dated 02 / 10 / 2025, pp. 97 / 199 5 / 84 BRIEF DESCRIPTION OF THE DRAWINGS
[0011] Figure 1 is a block diagram illustrating an example video encoding and decoding system that can perform the techniques of the present disclosure.
[0012] Figure 2 is a conceptual diagram that illustrates an example of IBC.
[0013] Figure 3 is a conceptual diagram that illustrates an example of template matching in a search area around an initial motion vector.
[0014] Figure 4 is a conceptual diagram of an example of an intratemplate match search area.
[0015] Figure 5 is a conceptual diagram illustrating IBC reference regions depending on the current CU position.
[0016] Figure 6 is a block diagram illustrating an example video encoder that can perform the techniques of this disclosure.
[0017] Figure 7 is a block diagram illustrating an example video decoder that can perform the techniques of the present disclosure.
[0018] Figure 8 is a flowchart illustrating an example method for coding an actual block in accordance with the techniques of this disclosure.
[0019] Figure 9 is a flowchart illustrating an example method for decoding a current block according to the techniques of this disclosure.
[0020] Figure 10 is a flowchart illustrating another example method for coding an actual block in accordance with the techniques of this disclosure. Petition 870250089768, dated 02 / 10 / 2025, pp. 98 / 199 6 / 84
[0021] Figure 11 is a flowchart illustrating another example method for decoding a current block according to the techniques of the present disclosure. DETAILED DESCRIPTION
[0022] Transform coding is a technique used in video coding to compress video data. For example, a video encoder can generate a block of residual values for a block of video data using a prediction process (e.g., interprediction). The residual values can then be transformed from the spatial domain to the frequency domain using horizontal and vertical transforms (e.g., a transform pair). Applying such transform pairs produces transform coefficients that, compared to residual values, generally require fewer bits to represent. The transform coefficients can then be quantized and entropy-encoded to further compress the data. In some examples, a discrete cosine transform of type 2 (DCT-2) can be used in video codecs to perform both direct and inverse transforms.
[0023] In addition to the DCT-2 transforms, which have been employed in HEVC, a multiple transform selection (inter-MTS) scheme is used for residual coding of intercoded blocks in other example codecs, such as VVC. In one example, an inter-MTS mode includes the use of multiple transforms selected from a plurality of transform kernels, including DCT type 8 (DCT-8) and a discrete sine transform type 7 (DST-7). Both transform kernels can be applied to Petition 870250089768, dated 02 / 10 / 2025, pp. 99 / 199 7 / 84 vertical and horizontal transformations, which corresponds to four possible different combinations of transformations.
[0024] In some instances, the use of inter-MTS has been restricted to certain encoding modes. This disclosure describes techniques related to transform encoding, including an MTS technique for IBC and TMP modes. A video decoder can determine one of a plurality of transform pairs to be used when encoding a block encoded with IBC and / or TMP modes. For example, a video decoder might receive a block of video data encoded using an IBC mode or an intraTMP mode, determine a pair of transforms, from among a plurality of transform pairs, to decode the block using an MTS process, and then decode the block using the transform pair.
[0025] The technique of this disclosure can improve coding efficiency in the enhanced compression model (ECM) based on versatile video coding (VVC / H.266). The techniques described in the present invention can be used in other advanced video codecs, including HEVC extensions and the next generation of video coding standards.
[0026] Figure 1 is a block diagram illustrating an example 100 video encoding and decoding system that can perform the techniques of this disclosure for transform encoding. The techniques of this disclosure generally refer to the process of encoding (encoding and / or decoding) video data. In general, video data includes any data to process a video. Thus, video data can include raw, unencoded video, video Petition 870250089768, dated 02 / 10 / 2025, pages 100 / 199 8 / 84 encoded, decoded (e.g., reconstructed) video and video metadata, such as signaling data.
[0027] As shown in Figure 1, the 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. The source device 102 and the destination device 116 may be or include any of a wide range of devices, such as desktop computers, notebook computers (i.e., laptops), mobile devices, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, broadcast receiving devices, or similar devices.In some cases, the source device 102 and the destination device 116 may be equipped for wireless communication and, in this way, may be referred to as wireless communication devices.
[0028] In the example in Figure 1, source device 102 includes video source 104, memory 106, video encoder 200, and output interface 108. Destination device 116 includes input interface 122, video decoder 300, memory 120, and display device 118. According to this disclosure, the video encoder 200 of source device 102 and the video decoder 300 of destination device 116 can be configured to apply the techniques for transform coding. In this way, source device 102 represents an example of a device of Petition 870250089768, dated 02 / 10 / 2025, page 101 / 199 9 / 84 video encoding, while 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, source device 102 may receive video data from an external video source, such as an external camera. Similarly, destination device 116 may interface with an external display device, rather than including an integrated display device.
[0029] As shown in Figure 1, system 100 is merely an example. In general, any digital video encoding and / or decoding device can perform transform encoding techniques. Source device 102 and destination device 116 are merely examples of such encoding devices in which source device 102 generates encoded video data for transmission to destination device 116. This disclosure refers to an encoding device as a device that performs the data encoding (encoding and / or decoding) process. Thus, video encoder 200 and video decoder 300 represent examples of encoding devices, in particular, a video encoder and a video decoder, respectively.In some examples, source device 102 and destination device 116 may operate in a substantially symmetrical manner, such that each of the source device 102 and destination device 116 includes video encoding and decoding components. In this way, system 100 can support unidirectional or bidirectional video transmission between the devices. Petition 870250089768, dated 02 / 10 / 2025, page 102 / 199 10 / 84 source 102 and destination device 116, for example, for video streaming, video playback, video broadcasting or video telephony.
[0030] In general, the video source 104 represents a video data source (i.e., raw, unencoded video data) and provides a sequential series of images (also called frames) of video data to the video encoder 200, which encodes data into images. The video source 104 from 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 video from a video content provider. As an additional alternative, the video source 104 may generate computer graphics-based data, such as the source video, or a combination of live video, archived video, and computer-generated video. In each case, the video encoder 200 encodes the captured, pre-captured, or computer-generated video data.The video encoder 200 can rearrange the images from the received order (sometimes called the display order) into an encoding order for encoding. The video encoder 200 can generate a bitstream that includes encoded video data. The source device 102 can then output the encoded video data via the output interface 108 to the computer-readable medium 110 for reception and / or retrieval, for example, via the input interface 122 of the destination device 116.
[0031] Memory 106 of source device 102 and memory 120 of destination device 116 represent Petition 870250089768, dated 02 / 10 / 2025, page 103 / 199 11 / 84 general-purpose memories. In some examples, memories 106 and 120 may store raw video data, for example, raw video from video source 104 and raw and decoded video data from video decoder 300. Additionally or alternatively, memories 106 and 120 may store executable software instructions, for example, by video encoder 200 and 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 functionally similar or equivalent purposes. In addition, memories 106 and 120 can store encoded video data, for example, output from video encoder 200 and input to video decoder 300.In some examples, memory portions 106, 120 can be allocated as one or more video buffers, for example, to store raw, decoded and / or encoded video data.
[0032] The computer-readable medium 110 may represent any type of medium or device with the capability to carry 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 to enable the source device 102 to transmit encoded video data directly to the destination device 116 in real time, for example, via a radio frequency network or computer-based network. The output interface 108 may modulate a transmission signal that includes the encoded video data, and the interface of Petition 870250089768, dated 02 / 10 / 2025, page 104 / 199 12 / 84 input 122 can demodulate the received transmission signal according to a communication standard, such as a wireless communication protocol. The communication medium can include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can 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 can include routers, switches, base stations, or any other equipment that may be useful in facilitating communication between the source device 102 and the destination device 116.
[0033] In some examples, source device 102 may output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 may access encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as a hard disk, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other digital storage media suitable for storing encoded video data.
[0034] In some examples, source device 102 may output encoded video data to file server 114 or another intermediate storage device that may store the encoded video data generated by source device 102. The device of Petition 870250089768, dated 02 / 10 / 2025, page 105 / 199 13 / 84 destination 116 can access video data stored from file server 114 via streaming or download.
[0035] The file server 114 can be any type of server device with the ability to store encoded video data and transmit such encoded video data to the destination device 116.File server 114 can represent a web server (for example, for a website), a server configured to provide a file transfer protocol service (such as File Transfer Protocol (FTP) or File Delivery over Unidirectional Transport (FLUTE)), a content delivery network (CDN) device, a hypertext transfer protocol (HTTP) server, a multimedia broadcast multicast service (MBMS) or enhanced MBMS (eMBMS) server, and / or a network attached storage (NAS) device.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), or similar protocols.
[0036] The target device 116 can access encoded video data from the file server 114 through any standard data connection, including an internet connection. This may include a wireless channel. Petition 870250089768, dated 02 / 10 / 2025, pp. 106 / 199 14 / 84 (e.g., a Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both suitable for accessing encoded video data stored on file server 114. Input interface 122 can be configured to operate according to any one or more of the various protocols discussed above for retrieving or receiving media data from file server 114, or other protocols for retrieving media data.
[0037] Output interface 108 and input interface 122 may represent wireless transmitters / receivers, modems, wired network communication components (e.g., Ethernet cards), wireless communication components operating in accordance with any of a variety of Institute of Engineers standards. Electrical and Electronics Engineers (IEEE - Institute of Electrical and Electronics Engineers) 802.11 or other physical components. In examples where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 can be configured to transfer data, such as encoded video data, according to a cellular communication standard such as 4G, 4G-LTE (long-term evolution), LTE-Advanced, 5G, or similar. In some examples where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 can be configured to transfer data, such as encoded video data, according to other wireless standards such as an IEEE 802.11 specification, an IEEE 802.15 specification (e.g., ZigBee™), a Bluetooth™ standard, or similar. Petition 870250089768, dated 02 / 10 / 2025, page 107 / 199 15 / 84 In some examples, the source device 102 and / or the destination device 116 may include the respective system-on-a-chip (SoC) devices. For example, the source device 102 may include a SoC device to perform the functionality assigned to the video encoder 200 and / or the output interface 108, and the destination device 116 may include a SoC device to perform the functionality assigned to the video decoder 300 and / or the input interface 122.
[0038] The techniques of this disclosure can be applied to video encoding to support any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television broadcasts, satellite television broadcasts, Internet streaming video transmissions, such as dynamic adaptive streaming over HTTP (DASH), digital video that is encoded on a data storage medium, decoding of digital video stored on a data storage medium, or other applications.
[0039] The input interface 122 of the destination device 116 receives a video bitstream encoded from the computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, or similar). 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 describing characteristics and / or processing video blocks or other encoded units (e.g., slices, images, image groups, sequences, or similar). The device of Petition 870250089768, dated 02 / 10 / 2025, pp. 108 / 199 16 / 84 display 118 displays decoded images from decoded video data to a user. Display device 118 can represent any of several display devices, such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or another type of display device.
[0040] Although not shown in Figure 1, in some examples, the video encoder 200 and the video decoder 300 can each be integrated with an audio encoder and / or audio decoder and may include suitable MUX-DEMUX units, or other hardware and / or software, to handle multiplexed streams that include audio and video in a common data stream.
[0041] Each of the 200 video encoder and 300 video decoder can be implemented as any of several suitable sets of encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are implemented partially in software, a device may store instructions for the software in a suitable non-transient, computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Each of the 200 video encoder and 300 video decoder Petition 870250089768, dated 02 / 10 / 2025, pp. 109 / 199 17 / 84 video 300 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined encoder / decoder (CODEC combined encoder / decoder) in a respective device. A device that includes video encoder 200 and / or video decoder 300 can implement video encoder 200 and / or video decoder 300 in a processing circuit assembly, such as an integrated circuit and / or a microprocessor. This device can be a wireless communication device, such as a cell phone or any other type of device described in the present invention.
[0042] The Video Encoder 200 and Video Decoder 300 may operate according to a video coding standard, such as ITU-T H.265, also called High Efficiency Video Coding (HEVC), or extensions thereof, such as scalable and / or multi-view video coding extensions. Alternatively, the Video Encoder 200 and Video Decoder 300 may operate according to other proprietary or industry standards, such as ITU-T H.266, also called Versatile Video Coding (VVC). In other examples, the Video Encoder 200 and Video Decoder 300 may operate according to a proprietary video codec / format, such as AOMedia Video 1 (AV1), AV1 extensions and / or successor versions of AV1 (e.g., AV2). In other examples, the Video Encoder 200 and Video Decoder 300 may operate according to other proprietary formats or industry standards.The techniques of this disclosure, however, are not limited to any particular encoding standard or format. Generally, the video encoder 200 and the video decoder... Petition 870250089768, dated 02 / 10 / 2025, page 110 / 199 18 / 84 300 can be configured to perform the techniques of this disclosure in conjunction with any video encoding techniques that use multiple transform kernels.
[0043] In general, the Video Encoder 200 and Video Decoder 300 can perform image block-based encoding. 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 might include a two-dimensional array of luminance and / or chrominance data samples. In general, the Video Encoder 200 and Video Decoder 300 can encode video data represented in a YUV format (e.g., Y, Cb, Cr). In other words, instead of encoding red, green, and blue (RGB) data for samples of an image, the 200 video encoder and the 300 video decoder can encode luminance and chrominance components, where the chrominance components can include both red and blue hue chrominance components.In some examples, the 200 video encoder converts received RGB formatted data to a YUV representation before encoding, and the 300 video decoder converts the YUV representation to RGB format. Alternatively, pre- and post-processing units (not shown) can perform these conversions.
[0044] This disclosure may refer generally to the encoding (e.g., encoding and decoding) of images to include the process of encoding or decoding image data. Petition 870250089768, dated 02 / 10 / 2025, page 111 / 199 19 / 84 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, prediction and / or residual coding. A coded video bitstream generally includes a series of values for syntax elements representing coding decisions (e.g., coding modes) and image block partitioning. Thus, references to the coding of an image or a block should generally be understood as coding values for syntax elements that form the image or block.
[0045] HEVC defines several blocks, including coding units (CUs), prediction units (PUs), and transform units (TUs). According to HEVC, a video encoder (such as video encoder 200) partitions a coding tree unit (CTU) into CUs according to a quadtree structure. That is, the video encoder partitions CTUs and CUs into four equal, non-overlapping squares, and each node in the quadtree has zero or four child nodes. Nodes without child nodes can be called leaf nodes, and the CUs of these leaf nodes may include one or more PUs and / or one or more TUs. The video encoder may additionally partition PUs and TUs. For example, in HEVC, a residual quadtree (RQT) represents the partitioning of TUs. In HEVC, PUs represent interprediction data, while TUs represent residual data.Intraprediction CUSs include intraprediction information, such as an indication of intramode. Petition 870250089768, dated 02 / 10 / 2025, page 112 / 199 20 / 84
[0046] As another example, the Video Encoder 200 and Video Decoder 300 can be configured to operate according to VVC. According to VVC, a video encoder (such as the Video Encoder 200) partitions an image into a plurality of CTUs. The Video Encoder 200 can partition a CTU according to a tree structure, such as a quadtree-binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure removes the concepts of multiple partition types, such as the separation between CUs, PUs, and TUs of HEVC. A QTBT structure includes two levels: a first level partitioned according to the quadtree partition and a second level partitioned according to the binary tree partition. A root node of the QTBT structure corresponds to a CTU. The leaf nodes of the binary trees correspond to the CUs.
[0047] In an MTT partitioning structure, blocks can be partitioned using a quadtree (QT) partition, a binary tree (BT) partition, and one or more triple tree (TT) partitions (also called ternary tree (TT) partitions). A triple or ternary tree partition is a partition where a block is divided into three sub-blocks. In some examples, a triple or ternary tree partition divides a block into three sub-blocks without splitting the original block through the center. The partitioning types in MTT (e.g., QT, BT, and TT) can be symmetric or asymmetric.
[0048] When operating according to the AV1 codec, the Video Encoder 200 and Video Decoder 300 can be configured to encode video data in blocks. In Petition 870250089768, dated 02 / 10 / 2025, page 113 / 199 21 / 84 In AV1, the largest coding 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 can be defined by different (e.g., larger) luma sample sizes. In some examples, a superblock is the top level of a block quadtree. The Video Encoder 200 can further partition a superblock into smaller coding blocks. The Video Encoder 200 can partition a superblock and other coding blocks into smaller blocks using quadratic or non-quadratic partitioning. Non-quadratic blocks can include N / 2xN, NxN / 2, N / 4xN, and NxN / 4 blocks. The Video Encoder 200 and the Video Decoder 300 can perform separate prediction and transform processes on each of the coding blocks.
[0049] AV1 also defines a video data tile. A tile is a rectangular array of superblocks that can be independently encoded from other tiles. That is, the 200 video encoder and the 300 video decoder can encode and decode, respectively, encoding blocks in a tile without using video data from other tiles. However, the 200 video encoder and the 300 video decoder can perform filtering between tile boundaries. Tiles can be of uniform or non-uniform size. Tile-based encoding can enable parallel and / or multi-threaded processing for encoder and decoder implementations.
[0050] In some examples, the 200 video encoder and the 300 video decoder may use a single Petition 870250089768, dated 02 / 10 / 2025, page 114 / 199 22 / 84 QTBT or MTT structure to represent each of the luminance and chrominance components, while, in other examples, the 200 video encoder and the 300 video decoder 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).
[0051] The 200 video encoder and the 300 video decoder can be configured to use quadtree partition, QTBT partition, MTT partition, superblock partition, or other partition structures.
[0052] In some examples, a CTU includes a coding tree block (CTB) of luma samples, two corresponding CTBs of chroma samples from an image that has three sample arrays, or a CTB of samples from a monochrome image or an image that 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 that dividing a component into CTBs is a partitioning. A component is an array or a single sample of one of the three arrays (luma and two chroma) that make up a 4:2:0, 4:2:2, or 4:4:4 color format image, or the array or a single sample of the array that makes up a monochrome format image. In some examples, a coding block is an MxN block of samples for some values of M and N, so that dividing a CTB into coding blocks is a partitioning.
[0053] Blocks (for example, CTUs or CUs) can be grouped in various ways in an image. As a Petition 870250089768, dated 02 / 10 / 2025, p. 115 / 199 23 / 84 For example, a brick can refer to a rectangular region of CTU rows in a particular tile in an image. A tile can be a rectangular region of CTUs in a particular column of tiles and a particular row of tiles in an image. A column of tiles refers to a rectangular region of CTUs that has a height equal to the height of the image and a width specified by the syntax elements (for example, as in an image parameter set). A row of tiles refers to a rectangular region of CTUs that has a height specified by the syntax elements (for example, as in an image parameter set) and a width equal to the width of the image.
[0054] In some examples, a tile can be partitioned into multiple bricks, each of which can include one or more rows of CTUs in the tile. A tile that is not partitioned into multiple bricks can also be called a brick. However, a brick that is a true subset of a tile may not be called a tile. The bricks in an image can also be arranged in a slice. A slice can be an integer number of bricks in an image that can be contained exclusively within a single network abstraction layer (NAL) unit. In some examples, a slice includes a number of complete tiles or just a consecutive sequence of complete bricks of a tile.
[0055] This disclosure can use NxN and N by N interchangeably refers to the sample dimensions of a block (such as a CU or another video block) in terms of vertical and horizontal dimensions, for example, 16x16 samples or 16 by 16 samples. Generally, Petition 870250089768, dated 02 / 10 / 2025, pp. 116 / 199 24 / 84 A 16x16 CU will have 16 samples in a vertical direction (y = 16) and 16 samples in a horizontal direction (x = 16). Similarly, 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. The samples in a CU can be arranged in rows and columns. Furthermore, CUs do not necessarily have to have the same number of samples in the horizontal direction as in the vertical direction. For example, CUs can include NxM samples, where M is not necessarily equal to N.
[0056] The Video Encoder 200 encodes video data into CUs that represent residual and / or prediction information and other information. Prediction information indicates how the CU should be predicted to form a prediction block for the CU. Residual information generally represents sample-by-sample differences between samples of the CU before encoding and the prediction block.
[0057] To predict a CU, the Video Encoder 200 can generally form a prediction block for the CU through interprediction or intraprediction. Interprediction generally refers to predicting the CU from data from a previously encoded image, while intraprediction generally refers to predicting the CU from previously encoded data from the same image. To perform interprediction, the Video Encoder 200 can generate the prediction block using one or more motion vectors. The Video Encoder 200 can 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 Petition 870250089768, dated 02 / 10 / 2025, page 117 / 199 The 25 / 84 Video Encoder 200 can calculate a difference metric using a sum of absolute differences (SAD), a sum of squared differences (SSD), a mean absolute difference (MAD), mean squared differences (MSD), or other such difference calculations to determine whether a reference block closely matches the current CU. In some instances, the Video Encoder 200 can predict the current CU using one-way prediction or two-way prediction.
[0058] Some VVC examples also provide an affine motion compensation mode, which can be considered an interprediction mode. In affine motion compensation mode, the 200 video encoder can determine two or more motion vectors that represent non-translational motion, such as zooming in or out, rotation, perspective motion, or other types of irregular motion.
[0059] To perform intraprediction, the Video Encoder 200 can select an intraprediction mode to generate the prediction block. Some VVC examples provide sixty-seven intraprediction modes, including several directional modes, as well as planar mode and DC mode. In general, the Video Encoder 200 selects an intraprediction mode that describes neighboring samples for a current block (e.g., a CU block), from which samples of the current block are predicted. Such samples can generally be above, above and to the left, or to the left of the current block in the same image as the current block, assuming that Petition 870250089768, dated 02 / 10 / 2025, pp. 118 / 199 The 26 / 84 video encoder 200 encodes CTUs and CUs in raster scan order (left to right, top to bottom).
[0060] The Video Encoder 200 encodes data representing the prediction mode for a current block. For example, for interprediction modes, the Video Encoder 200 can encode data representing which of the various available interprediction modes are used, as well as motion information for the corresponding mode. For one-way or two-way interprediction, for example, the Video Encoder 200 can encode motion vectors using Advanced Motion Vector Prediction (AMVP) or fusion mode. The Video Encoder 200 can use similar modes to encode motion vectors for affine motion compensation mode.
[0061] AV1 includes two general techniques for encoding and decoding a block of video data. The two general techniques are intraprediction (e.g., intraframe prediction or spatial prediction) and interprediction (e.g., interframe prediction or temporal prediction). In the context of AV1, when predicting blocks of a current video data frame using an intraprediction mode, the Video Encoder 200 and Video Decoder 300 do not use video data from other video data frames. For most intraprediction 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 same frame. The Video Encoder 200 determines the predicted values generated from the reference samples based on the intraprediction mode. Petition 870250089768, dated 02 / 10 / 2025, pp. 119 / 199 27 / 84
[0062] After prediction, such as intraprediction or interprediction of a block, the Video Encoder 200 can calculate residual data for the block. The residual data, such as a residual block, represents the sample by sample differences between the block and a prediction block for the block, formed using the corresponding prediction mode. The Video Encoder 200 can apply one or more transforms to the residual block to produce transformed data in a transform domain, rather than the sample domain. For example, the Video Encoder 200 can apply a discrete cosine transform (DCT), an integer transform, a wavelet transform, or a conceptually similar transform to the residual video data.Additionally, the Video 200 encoder can apply a secondary transform after the first transform, such as a mode-dependent non-separable secondary transform (MDNSST), a signal-dependent transform, a Karhunen-Loeve transform (KLT), or similar transforms. The Video 200 encoder produces transform coefficients after the application of one or more transforms.
[0063] As mentioned above, after any transformations to produce transform coefficients, the Video 200 encoder can perform quantization of the transform coefficients. Quantization generally refers to a process in which the transform coefficients are quantized to possibly reduce the amount of data used to represent the transform coefficients, providing additional compression. Petition 870250089768, dated 02 / 10 / 2025, pp. 120 / 199 28 / 84 To perform the quantization process, the Video 200 encoder can reduce the bit depth associated with some or all of the transform coefficients. For example, the Video 200 encoder can round an n-bit value to an m-bit value during quantization, where n is greater than m. In some instances, to perform quantization, the Video 200 encoder can perform a right shift in the bit direction of the value to be quantized.
[0064] After quantization, the Video 200 encoder can scan the transform coefficients, producing a one-dimensional vector from the two-dimensional array that includes the quantized transform coefficients. The scanning can be designed to place higher-energy (and therefore lower-frequency) transform coefficients at the front of the vector and lower-energy (and therefore higher-frequency) transform coefficients at the rear of the vector. In some examples, the Video 200 encoder may use a predefined scanning order to scan the quantized transform coefficients in order to produce a serialized vector and then entropically encode the quantized transform coefficients of the vector. In other examples, the Video 200 encoder may perform adaptive scanning.After scanning the quantized transform coefficients to form the one-dimensional vector, the Video Encoder 200 can entropically encode the one-dimensional vector, for example, according to context-adaptive binary arithmetic coding (CABAC). The Video Encoder 200 can also encode... Petition 870250089768, dated 02 / 10 / 2025, pp. 121 / 199 29 / 84 entropically the values for syntax elements that describe metadata associated with video data encoded for use by the 300 video decoder in decoding the video data.
[0065] To perform CABAC, the video encoder 200 can assign a context in a context model to a symbol to be transmitted. The context can refer, for example, to the possibility of neighboring values of the symbol being zero or non-zero values. Probability determination can be based on a context assigned to the symbol.
[0066] The Video Encoder 200 can additionally generate syntax data, such as block-based syntax data, image-based syntax data, and sequence-based syntax data, for the Video Decoder 300, for example, in an image header, a block header, a slice header, or other syntax data, such as a sequence parameter set (SPS), a picture parameter set (PPS), or a video parameter set (VPS). The Video Decoder 300 can similarly decode this syntax data to determine how to decode corresponding video data.
[0067] In this way, video encoder 200 can generate a bitstream that includes encoded video data, for example, syntax elements that describe the partitioning of an image into blocks (e.g., CUs) and residual and / or prediction information for the blocks. Finally, video decoder 300 can receive the bitstream and decode the encoded video data. Petition 870250089768, dated 02 / 10 / 2025, page 122 / 199 30 / 84
[0068] In general, the 300 video decoder performs a reciprocal process with respect to that performed by the 200 video encoder to decode the encoded video data from the bitstream. For example, the 300 video decoder can decode values for bitstream syntax elements using CABAC in a substantially similar, though reciprocal, manner to the 200 video encoder's CABAC encoding process. Syntax elements can define partition information for partitioning an image into CTUs, and partitioning each CTU according to a corresponding partition structure, such as a QTBT structure, to define CTU CUs. Syntax elements can additionally define residual and prediction information for blocks (e.g., CUs) of video data.
[0069] Residual information can be represented, for example, by quantized transform coefficients. The Video Decoder 300 can inversely quantize and inversely transform the quantized transform coefficients of a block to reproduce a residual block for the block. The Video Decoder 300 uses a signaled prediction mode (intra- or interprediction) and related prediction information (e.g., motion information for interprediction) to form a prediction block for the block. The Video Decoder 300 can then combine the prediction block and the residual block (on a sample-by-sample basis) to reproduce the original block. The Video Decoder 300 can perform additional processing, such as performing a deblocking process to reduce visual artifacts along block boundaries. Petition 870250089768, dated 02 / 10 / 2025, page 123 / 199 31 / 84
[0070] This disclosure may generally refer to the signaling of certain information, such as syntax elements. The term signaling may generally refer to the communication of values for syntax elements and / or other data used to decode 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 bitstream. As mentioned above, the source device 102 may transport the bitstream to the destination device 116 substantially in real time or in non-real time, as may occur during the storage of syntax elements in the storage device 112 for later retrieval by the destination device 116.
[0071] In general, this disclosure describes techniques for video coding. In particular, this disclosure describes techniques related to transform coding. This disclosure describes a multiple transform selection (MTS) technique for intrablock copy mode (IBC), as well as an MTS scheme for intratemplate match prediction mode (TMP). The technique in this disclosure can improve coding efficiency in the enhanced compression model (ECM) based on versatile video coding (VVC / H.266). The techniques described in the present invention can be used in other advanced video codecs, including HEVC extensions and the next generation of video coding standards.
[0072] As will be explained in more detail below, the 300 video decoder can be configured to receive a block of encoded video data using Petition 870250089768, dated 02 / 10 / 2025, pp. 124 / 199 32 / 84 an IBC mode or an intraTMP mode, determine a pair of transforms, from among a plurality of transform pairs, to decode the block using an MTS process and decode the block using the transform pair.
[0073] Conversely, the 200 video encoder can be configured to receive a block of video data to be encoded using an IBC mode or an intraTMP mode, determine a pair of transforms, from among a plurality of transform pairs, to decode the block using an MTS process, and encode the block using the transform pair. Overview of tools related to the transformation
[0074] In the example of video encoding standards prior to HEVC, only one fixed separable transform is used where DCT-2 is used vertically and horizontally. In HEVC, in addition to DCT-2, DST-7 (DCT type 7) is also employed for 4 x 4 blocks as a fixed separable transform. Different transform combinations can be considered depending on the block type (e.g., INTRA, INTER, or IBC). A technique used to consider multiple transforms for a block is called multiple transform selection (MTS). In MTS, multiple pairs of different transforms can be tested by the video encoder 200, and one of the transform pairs is selected and signaled. Note that MTS was formerly called Adaptive Multiple Transforms (AMT). The video encoder 200 indicates the transform pair to be used by signaling an index (hereinafter referred to as MTSIdx), which is an integer value. MTSIdx Signage Petition 870250089768, dated 02 / 10 / 2025, page 125 / 199 33 / 84
[0075] In one version of ECM, MTSIdx values of 0 and 1 are considered special cases. For example, MTSIdx = 0 indicates that DCT-2 transforms should be used (e.g., horizontal and vertical DCT-2 transforms), while MTSIdx = 1 indicates skip transforms. That is, the block is encoded without a transform.
[0076] First, the 300 video decoder decodes a transform skip flag (trSkip) that indicates whether a transform is applied (e.g., trSkip=true) or not (e.g., trSkip=false). In the case of trSkip=false, the 300 video decoder additionally decodes an mts_flag indicating whether MTS transforms are used (e.g., mts_flag=true) or not (e.g., mts_flag=false). If mts_flag=false, the DCT-2 transforms are used by the video decoder 300. If mts_flag=true, the video decoder 300 decodes the MTSIdx as a truncated binary code. The application of the truncated binary code uses knowledge of the maximum possible number of candidate transform pairs, indicated here as nCands. The value of nCands can be selected adaptively (e.g., for INTRA-blocks, including TMP), or it can be constant (e.g., for INTER-blocks).
[0077] In an ECM example, INTER-blocks and INTRA-blocks use the same MTSIdx signaling, with the index referring to different combinations of transforms for INTER (interMTS) and INTRA (intraMTS) blocks. The nCands value is set to 4 for INTER-blocks. The nCands value is adaptively adjusted to 1, 4, or 6 (adaptive intraMTS) for INTRA-blocks. IBC blocks do not support Petition 870250089768, dated 02 / 10 / 2025, p. 126 / 199 34 / 84 nothing but DCT-2 and skip transforms (i.e., in the current ECM, IBC is not encoded using MTS). Signal prediction
[0078] The sign of the transform coefficients can be predicted as part of the signal prediction algorithm. In an ECM example, the prediction area is adaptively extended to 32x32 and the number of predicted signals is configurable. IBC Mode
[0079] Figure 2 is a conceptual diagram illustrating an example of intrablock copy (IBC) mode. IBC mode is one of the encoding tools for screen content. For a current coding unit (CU) of 260, a video codec, such as video encoder 200 or video decoder 300 using IBC, will search a plurality of block vectors and find the best matching block in the reference region for prediction, as shown in Figure 2. Then, a prediction of the chosen block vector is generated, and the difference between the chosen block vector and the predicted block vector, known as the block vector difference (BVD), is signaled in the bitstream. For example, video encoder 200 might generate the chosen block vector and the BVD, and signal the BVD in the bitstream to video decoder 300.
[0080] Template matching (TM template matching) is a decoder-side MV derivation technique for refining the motion information of the current CU by finding the closest match between a template (e.g., upper and / or left neighboring blocks of the current CU, such as the current template above 262A and Petition 870250089768, dated 02 / 10 / 2025, p. 127 / 199 35 / 84 the current left template 262B) in the image and current templates (e.g., reference template above 272A and / or reference template to the left 272B) of a block (e.g., reference block 270) in a reference image. For example, a closer match might be a closer size match. TM can be applied to AMVP mode and regular fusion mode, respectively called TM-AMVP and TM-MRG modes. Similarly, the same TM techniques can also be applied to IBC AMVP mode and IBC fusion. The only difference between The Inter TM and IBC TM reference image is the reconstructed area (encoded area 252) in the current frame (current frame 250). Therefore, the reference block for the current CU 260 with IBC TM can be a reference block within encoded area 252 (as opposed to unencoded area 254), such as reference block 270. Without loss of generality, this disclosure generally uses MV or motion to represent that the current CU is an interblock and has motion information, or that the current CU is an IBC block and has block vector information.
[0081] Figure 3 is a conceptual diagram illustrating example template matching in a search area around an initial motion vector. As illustrated in Figure 3, a search is made for a MV better than an initial MV 390 around the current CU's initial MV 390 within a search range of [-8, +8]-pel. For example, video encoder 200 or video decoder 300 can perform such a search. Template matching techniques in Chen, et al., Description of SDR, HDR and 360° video coding technology proposal by Qualcomm and Technicolor Petition 870250089768, dated 02 / 10 / 2025, pp. 128 / 199 36 / 84 - low and high complexity versions, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 10th meeting: San Diego, US, April 10 to 20, 2018, JVET-J0021 can be used with the following modifications: the search step size can be determined based on the AMVR mode, and TM can be cascaded with the bilateral matching process in fusion modes.
[0082] The 200 video encoder or the 300 video decoder can operate in TM-AMVP mode. In TM-AMVP mode, an MVP candidate is determined based on template mismatch error to select the candidate that achieves the minimum difference between the current block template and the reference block template, and then the TM is performed only for that particular MVP candidate for MV refinement. TM can refine that candidate to MVP, starting from the MVD accuracy of total pel (or 4-pel for 4-pel AMVR mode) in a search range of [-8, +8]-pel by using an iterative diamond search. The AMVP candidate can be further refined using a cross-search with full MVD precision (or 4pel for 4-pel AMVR mode), sequentially followed by half-pel and quarter-pel cross-searches, depending on the AMVR mode, as specified in TABLE 1 below. This search process can ensure that the MVP candidate retains the same MV precision, as indicated by the AMVR mode after a TM process. In the search process, if the difference between the previous minimum cost and the current minimum cost in an iteration is less than a threshold equal to the block area, the search process can be terminated. Petition 870250089768, dated 02 / 10 / 2025, pp. 129 / 199 37 / 84 Table 1 - AMVR search patterns and AMVR fusion mode Search Pattern AMVR Mode Fusion Mode 4-pel Full pel Half pel Quarter pel AltIF=0 AltIF=1 4-pel Diamond v 4-pel Crossover v Full pel Diamond vvvvv Full pel Crossover vvvvv Half pel Crossover vvvv Quarter pel Crossover vv 1 / 8-pel Crossover v
[0083] In TM-MRG fusion mode, similar search techniques are applied to the fusion candidate indicated by the fusion index. Video encoder 200 or video decoder 300 can operate in TMMRG fusion mode. As Table 1 shows, TM can perform the entire path up to MVD precision of 1 / 8 pel or skip those beyond MVD precision of half pel, depending on whether the alternative interpolation filter (which is used when AMVR is in half pel mode) is used according to the fusion motion information. When TM mode is enabled, intratemplate matching can function as a standalone process or an extra MV refinement process between block- and sub-block-based bilateral matching (BM bilateral matching) processes, depending on whether BM can be enabled or not according to its enable condition check. TMP Mode Petition 870250089768, dated 02 / 10 / 2025, pp. 130 / 199 38 / 84
[0084] The intratemplate matching prediction mode (IntraTMP) is a special intraprediction mode in which the Video Encoder 200 or Video Decoder 300 copies the best prediction block from the reconstructed portion of the current frame, whose L-shaped template matches the current template. For a predefined search range, Video Encoder 200 searches for the template most similar to the current template in a reconstructed portion of the current frame and uses the matching block as a prediction block. Video Encoder 200 then signals the use of this mode, and the same prediction operation is performed by Video Decoder 300.
[0085] Figure 4 is a conceptual diagram of an example of an intratemplate match search area. The 200 video encoder or the 300 video decoder can use a prediction signal. The prediction signal is generated by matching the L-shaped causal neighbor of a current block 400 with another block in a predefined search area in Figure 4 including R1 402 (the current CTU), R2 404 (the upper left CTU), R3 406 (the upper CTU), and R4 408 (the left CTU). SAD can be used as a cost function. Within each region (R1 402, R2 404, For example, in video decoder 300 (R3 406 and R4 408), the video decoder 300 searches for the template with the lowest SAD relative to the current block template 400 and uses the corresponding block from the template with the lowest SAD relative to the current block template 400 as a prediction block. For example, video decoder 300 might determine that the corresponding block 410 is the prediction block for the current block 400. Petition 870250089768, dated 02 / 10 / 2025, pp. 131 / 199 39 / 84
[0086] The dimensions of all regions (SearchRange_w, SearchRange_h) can be set proportionally to the block dimension (BlkW, BlkH) to have a fixed number of SAD comparisons per pixel. That is: SearchRange_w = 5 * BlkW SearchRange_h = 5 * BlkH Equation (1)
[0087] The intratemplate matching tool can be enabled for CUs with a size less than or equal to 64 in width and height. This maximum CU size for intratemplate matching can be configured. The intratemplate matching prediction mode is signaled at a CU level via a dedicated flag when decoder-side intra-mode derivation (DIMD) is not used for the current CU.
[0088] Template matching can be used in IBC for IBC fusion mode and IBC AMVP mode, referred to respectively as IBC-TM-AMVP and IBC-TM-MRG. Video encoder 200 or video decoder 300 can use such modes.
[0089] In IBC-TM-MRG, the merge list is modified compared to that used by the regular IBC merge mode, so that candidates are selected according to a pruning method with a movement distance between candidates as in the regular TM merge mode. The final zero-movement padding is replaced by left (-W, 0), top (0, -H) and left movement vectors. Petition 870250089768, dated 02 / 10 / 2025, p. 132 / 199 40 / 84 top left (-W, -H), where W is the width and H the height of the current CU. Furthermore, the selected candidates are refined using template matching techniques before the RDO or decoding process. The IBC-TM-MRG mode was pitted against the regular IBC fusion mode, and a TM fusion flag is signaled.
[0090] In IBC-TM AMVP mode, up to 3 candidates are selected from the IBC-TM-MRG merge list. Each of these 3 selected candidates is refined using template matching techniques and ranked according to the resulting template matching cost. Only the first 2 candidates are then considered in the motion estimation process.
[0091] Figure 5 is a conceptual diagram illustrating IBC reference regions depending on the position of the current CU. Refining the template matching for both IBC-TM and AMVP fusion modes is quite straightforward once the IBC motion vectors are restricted (i) to being integers and (ii) within a reference region, as shown in Figure 5. Specifically, in the example in Figure 5, each small square corresponds to a CU. Squares with darker borders around groups of four CUs may correspond to CTUs. In some examples, each of the CTUs may be sized 128 x 128, while each of the CUs may be sized 64 x 64. Furthermore, Figure 5 shows a current CU 500 at different locations within a CTU. The shaded CUs are causal to the current CU 500. Different CUs are available for IBC depending on the position of the current CU 500. In Figure 5, the CUs marked with an X are not available for IBC. Petition 870250089768, dated 02 / 10 / 2025, pp. 133 / 199 41 / 84 Examples
[0092] This describes techniques where MTS is used for IBC-blocks, as well as novel techniques for using MTS for INTRA-blocks using the TMP (Intra-TMP) mode. Coding efficiency is improved by adding combinations of additional transforms to be selected for IBC-coded blocks and / or TMP-coded blocks. In some examples, the MTS techniques in this disclosure can improve the coding efficiency of natural content video data when encoding such video data using either IBC or TMP mode.
[0093] Natural content video data refers to video data that captures real-world scenes involving real objects, people, landscapes, and animals. This type of video data is typically characterized by its organic and unmanipulated nature, including realistic textures, continuous motion, dynamic color range, varied lighting conditions, and depth and perspective. In contrast, screen content video data primarily refers to content generated by computer screens or electronic displays, including text, graphics, and animations. Screen content is typically characterized by high contrast, sharp edges, uniform colors, and often includes still images or text, which are distinct from the more fluid and textured appearance of natural content. MTSIdx decoding process for IBC blocks
[0094] The 300 video decoder can first decode a transform jump flag. If the transform jump flag is true (for example, equal to 1), the 300 video decoder can apply a jump of Petition 870250089768, dated 02 / 10 / 2025, page 134 / 199 42 / 84 transform to block. If the transform jump flag is false (e.g., equal to 0), the Video Decoder 300 decodes a first bin of the MTSIdx using a context. The first bin of the MTSIdx indicates whether DCT-2 is used or not. If the first bin is true, the Video Decoder 300 determines a separable DCT-2 (vertical) / DCT-2 (horizontal) for the IBC-encoded block. If the first bin is false, the Video Decoder 300 may determine that the MTS kernel (e.g., the transform pair) is derived by decoding the remaining 2 bins of the MTSIdx, assuming nCands=4 and equal probability (e.g., truncated unary encoding). The remaining 2 bins of the decoded MTSIdx = {2,3,4,5} (0 = DCT, 1 = TrSkip) refer to a set of combinations of transforms used for INTER-blocks, for example, interMTS.
[0095] If the width and height of the transformation unit block are greater than 16: i. MTSIdx=2: DST7 / DST7 ii. MTSIdx=3: DCT8 / DST7 iii. MTSIdx=4: STD7 / DCT8 iv. MTSIdx=5: DCT8 / DCT8
[0096] If the width and height of the transformed units block are less than or equal to 16: i. MTSIdx=2: KLT0 / KLT0 ii. MTSIdx=3: KLT1 / KLT0 iii. MTSIdx=4: KLT0 / KLT1 iv. MTSIdx=5: KLT1 / KLT1. Restriction to certain IBC modes Petition 870250089768, dated 02 / 10 / 2025, pp. 135 / 199 43 / 84
[0097] In one example, the MTSIdx decoding process described above can be used for certain IBC modes. Case 1: MTS is used only for IBC-encoded blocks using an AMVP mode. In this case, the condition must maintain that, for a given IBC-encoded block, the merge flag is set to false. Case 2: MTS is additionally used for IBC-blocks using AMVP, as well as the fusion mode. MTS for INTRA-blocks with TMP mode
[0098] For INTRA-coded blocks using TMP mode, the transform selection is aligned with IBC mode, as described above. Consequently, instead of adaptive intraMTS, interMTS with nCands=4 is used for intraTMP mode. Extensions
[0099] The MTSIdx decoding process, as well as the selected transforms described above, can be extended while maintaining alignment between IBC-encoded blocks and INTRA-encoded blocks using TMP mode.
[0100] Case 1: Instead of using a constant number of candidate transform pairs where nCands = 4, the maximum value of MTSIdx is derived adaptively, for example, 1, 2, or 4. For example, the number of candidate transform pairs for MTS can be based on a sum of coefficients in the transform block compared to a threshold. The selection of transforms is made from the interMTS kernels described above. If fewer than 4 pairs of Petition 870250089768, dated 02 / 10 / 2025, pp. 136 / 199 If 44 / 84 transforms are determined to be used, the 200 video encoder and the 300 video decoder can truncate the list by discarding the transform pairs later in the lists shown above.
[0101] Case 2: Instead of using interMTS kernels, decoder-side intra-mode derivation (DIMD) is introduced for IBC-encoded blocks in order to derive an intra-mode index. In this case, the following intraMTS kernels can be selected: a. Using the same predefined options as for INTRA-coded blocks using intraMTS; b. A separate set of options, different from that used for INTRAcoded blocks.
[0102] Case 3: Instead of encoding the candidate number or MTSIdx bins with equal probability using a truncated unary code, the two bins are encoded by CABAC using a dedicated context.
[0103] Consequently, in view of the above, the Video Decoder 300 can be configured to receive a block of video data encoded using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode. The Video Decoder 300 can determine a pair of transforms, from a plurality of transform pairs, to decode the block using a multiple transform selection (MTS) process and decode the block using the transform pair. In one example, the video data block is encoded using the IBC mode and the IBC mode is an AMVP IBC mode. In another example, the video data block is encoded using the IBC mode. Petition 870250089768, dated 02 / 10 / 2025, page 137 / 199 45 / 84 and the IBC mode is either an AMVP IBC mode or a fusion IBC mode. In either of the above examples, the video data is natural content video data.
[0104] To determine the transform pair from a plurality of transform pairs, the 300 video decoder is additionally configured to receive an MTS index and determine the transform pair based on the MTS index (for example, as described above). In another example, to determine the transform pair from a plurality of transform pairs, the 300 video decoder is additionally configured to receive an MTS index and determine the transform pair based on the MTS index and a block size.
[0105] The plurality of transform pairs may include a vertical discrete cosine transform type 2 (DCT-2), a horizontal DCT-2, and four other transform pairs. In other examples, the number of other transform pairs may be variable, and the Video Decoder 300 may determine the number of the plurality of transform pairs. To determine the number of the plurality of transform pairs, the Video Decoder 300 may be configured to decode a syntax element indicating the number of the plurality of transform pairs using context-adaptive binary arithmetic encoding and a dedicated context.In another example, to determine the number of transform pair pluralities, the 300 video decoder can be configured to determine an intramode for the block based on a decoder lateral intramode derivation (DIMD) process and determine the number of transform pair pluralities based on the intramode. Petition 870250089768, dated 02 / 10 / 2025, pp. 138 / 199 46 / 84
[0106] The video encoder 200 can perform an operation reciprocal to that of the video decoder 300. For example, the video encoder 200 can receive a block of video data to be encoded using an IBC mode or an intraTMP mode, determine a pair of transforms, from among a plurality of transform pairs, to decode the block using an MTS process, and encode the block using the transform pair. The video encoder 200 can encode an MTS index that indicates the transform pair.
[0107] Figure 6 is a block diagram illustrating an example Video 200 encoder that can perform the techniques of this disclosure. Figure 6 is provided for explanatory purposes and should not be considered limiting of the techniques, as extensively exemplified and described in this disclosure. For explanatory purposes, this disclosure describes the Video 200 encoder according to VVC and HEVC techniques. However, the techniques of this disclosure can be performed by video encoding devices that are configured for other video encoding standards and video encoding formats, such as AV1 and successors to the AV1 video encoding format.
[0108] In the example in Figure 6, 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 picture buffer (DPB) 218 and unit of Petition 870250089768, dated 02 / 10 / 2025, pp. 139 / 199 47 / 84 Entropic encoding 220. Any or all of the 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, DPB 218, and entropic encoding unit 220 may be implemented in one or more processors or in a set of processing circuits. For example, the video encoder units 200 may be implemented as one or more circuits or logic elements as part of the hardware circuit set or as part of a processor, ASIC, or FPGA. Furthermore, the video encoder 200 may include additional or alternative processors or sets of processing circuits to perform these and other functions.
[0109] Video data memory 230 can store video data to be encoded by the components of video encoder 200. Video encoder 200 can receive video data stored in video data memory 230 from, for example, video source 104 (Figure 1). DPB 218 can act as a reference image memory that stores reference video data for use in predicting subsequent video data by video encoder 200. Video data memory 230 and DPB 218 can be formed from any of several memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM). Petition 870250089768, dated 02 / 10 / 2025, pp. 140 / 199 48 / 84 random access memory), 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 by separate memory devices. In several examples, the video data memory 230 may be on-chip with other video encoder components 200, as illustrated, or off-chip relative to the components.
[0110] In this disclosure, the reference to video data memory 230 should not be interpreted as being limited to the internal memory of the video encoder 200, unless specifically described as such, or to the external memory of the video encoder 200, unless specifically described as such. Instead, the reference to video data memory 230 should be understood as a reference memory that stores video data that the video encoder 200 receives for encoding (e.g., video data for a current block to be encoded). Memory 106 in Figure 1 may also provide temporary storage of outputs from the various units of the video encoder 200.
[0111] The various units in Figure 6 are illustrated to aid in understanding the operations performed by the 200 video encoder. The units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide particular functionality and are predefined in the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform Petition 870250089768, dated 02 / 10 / 2025, pp. 141 / 199 49 / 84 various tasks and to provide flexible functionality in the operations that can be performed. For example, programmable circuits can execute software or firmware that causes the programmable circuits to operate in the manner defined by the software or firmware instructions. Fixed-function circuits can execute software instructions (for example, to receive parameters or to emit 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 distinct circuit blocks (fixed-function or programmable), and in some examples, one or more of the units may be integrated circuits.
[0112] The Video Encoder 200 may include arithmetic logic units (ALUs), elementary function units (EFUs), digital circuits, analog circuits, and / or programmable cores, formed from programmable circuits. In examples where the Video Encoder 200 operations are performed using software executed by the programmable circuits, memory 106 (Figure 1) may store the instructions (e.g., object code) of the software that the Video Encoder 200 receives and executes, or another memory in the Video Encoder 200 (not shown) may store these instructions.
[0113] Video data memory 230 is configured to store received video data. Video encoder 200 can retrieve an image from the video data in video data memory 230 and provide the video data to the residual generation unit 204 and the mode selection unit. Petition 870250089768, dated 02 / 10 / 2025, page 142 / 199 50 / 84 202. The video data in video data memory 230 may be raw video data that needs to be encoded.
[0114] The mode selection unit 202 includes a motion estimation unit 222, a motion compensation unit 224, and an intraprediction unit 226. The mode selection unit 202 may include additional functional units to perform video prediction according to other prediction modes. As examples, the mode selection unit 202 may include a palette unit, an intrablock copy unit (which may be part of the motion estimation unit 222 and / or the motion compensation unit 224), an affine unit, a linear model (LM) unit, or similar units.
[0115] Mode selection unit 202 generally coordinates multiple coding passes to test combinations of coding parameters and resulting rate distortion values for those combinations. Coding parameters may include partitioning of CTUs into CUs, prediction modes for the CUs, transform types for residual data of the CUs, quantization parameters for residual data of the CUs, etc. Mode selection unit 202 may ultimately select the combination of coding parameters with rate distortion values that are better than the other combinations tested.
[0116] The video encoder 200 can partition an image retrieved from the video data memory 230 into a series of CTUs and encapsulate one or more CTUs in a slice. The mode selection unit 202 can partition a CTU of the image according to a tree structure, such as the MTT structure, the QTBT structure, the structure of Petition 870250089768, dated 02 / 10 / 2025, pp. 143 / 199 51 / 84 superblock or the quadtree structure described above. As described above, the 200 video encoder can form one or more CUs from partitioning a CTU according to the tree structure. This CU can also be generally called a video block or a block.
[0117] In general, the mode selection unit 202 also controls its components (e.g., motion estimation unit 222, motion compensation unit 224, and intraprediction unit 226) to generate a prediction block for a current block (e.g., a current CU or, in HEVC, the overlapping portion of a PU and a TU). For interprediction of a current block, the motion estimation unit 222 can perform a motion search to identify one or more closely matching reference blocks in one or more reference images (e.g., one or more previously encoded images stored in DPB 218).In particular, the motion estimation unit 222 can calculate a representative value of how similar a potential reference block is to the current block, for example, according to the sum of absolute differences (SAD), the sum of squared differences (SSD), the mean absolute difference (MAD), the mean squared differences (MSD), or similar methods. The motion estimation unit 222 can generally perform these calculations using sample-by-sample differences between the current block and the reference block under consideration. The motion estimation unit 222 can identify a reference block that has a lower value resulting from these calculations, indicating a reference block that corresponds more closely to the current block. Petition 870250089768, dated 02 / 10 / 2025, pp. 144 / 199 52 / 84
[0118] The motion estimation unit 222 can form one or more motion vectors (MVs) that define the positions of the reference blocks in the reference images relative to the position of the current block in a current image. The motion estimation unit 222 can then provide the motion vectors to the motion compensation unit 224. For example, for one-way interprediction, the motion estimation unit 222 can provide a single motion vector, while for two-way interprediction, the motion estimation unit 222 can 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 can retrieve data from the reference block using the motion vector.As another example, if the motion vector has fractional sample precision, the 224 motion compensation unit can interpolate values for the prediction block according to one or more interpolation filters. Furthermore, for bidirectional interprediction, the 224 motion compensation unit can retrieve data for two reference blocks identified by their respective motion vectors and can combine the retrieved data, for example, by calculating sample-by-sample averaging or weighted averaging.
[0119] When operating in accordance with the AV1 video encoding format, the motion estimation unit 222 and the motion compensation unit 224 can be configured to encode video data encoding blocks (e.g., encoding blocks both Petition 870250089768, dated 02 / 10 / 2025, pages 145 / 199 53 / 84 of luma as well as chroma) using translational motion compensation, affine motion compensation, overlapped block motion compensation (OBMC), and / or composite inter / intraprediction.
[0120] As another example, for intraprediction or intraprediction coding, the 226 intraprediction unit can generate the prediction block from samples neighboring the current block. For example, for directional modes, the 226 intraprediction unit can generally mathematically combine the values of neighboring samples and fill in these calculated values in the direction defined in the current block to produce the prediction block. As another example, for DC mode, the 226 intraprediction unit can calculate an average of the neighboring samples for the current block and generate the prediction block to include this resulting average for each sample in the prediction block.
[0121] When operating in accordance with the AV1 video encoding format, the intraprediction unit 226 can be configured to encode video data encoding blocks (e.g., both luma and chroma encoding blocks) using directional intraprediction, non-directional intraprediction, recursive filter intraprediction, chroma-from-luma (CFL) prediction, intra-block copy (IBC), and / or color palette mode. The mode selection unit 202 can include additional functional units to perform video prediction according to other prediction modes.
[0122] Mode selection unit 202 provides the prediction block to residual generation unit 204. The unit Petition 870250089768, dated 02 / 10 / 2025, pp. 146 / 199 Residual generation unit 204 receives a raw, unencoded version of the current video data memory block 230 and the prediction block from the mode selection unit 202. The residual generation unit 204 calculates the 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 subtractor circuits that perform binary subtraction.
[0123] In examples where the mode selection unit 202 partitions CUs into PUs, each PU can be associated with a luma prediction unit and corresponding chroma prediction units. The video encoder 200 and video decoder 300 can support PUs that have various sizes. As indicated above, the size of a CU can refer to the luma encoding block size of the CU, and the size of a PU can 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 can support PU sizes of 2Nx2N or NxN for intraprediction and symmetrical PU sizes of 2Nx2N, 2NxN, Nx2N, NxN, or similar, for interprediction. The 200 video encoder and 300 video decoder can also support asymmetric partitioning for PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for interprediction. Petition 870250089768, dated 02 / 10 / 2025, p. 147 / 199 55 / 84
[0124] In examples where the 202 mode selection unit does not additionally partition a CU into PUs, each CU can be associated with a luma encoding block and the corresponding chroma encoding blocks. As above, the size of a CU can refer to the size of the CU's luma encoding block. The 200 video encoder and the 300 video decoder can support CU sizes of 2Nx2N, 2NxN, or Nx2N.
[0125] For other video coding techniques, such as intrablock copy mode coding, affine mode coding, and linear model (LM) mode coding, as some examples, the mode selection unit 202, via the respective units associated with the coding techniques, generates a prediction block for the current block being coded. In some examples, such as palette mode coding, the mode selection unit 202 may not generate a prediction block and instead generates syntax elements that indicate the manner in which to reconstruct the block based on a selected palette. In these modes, the mode selection unit 202 may provide these syntax elements to the entropic coding unit 220 to be coded.
[0126] As described above, residual generation unit 204 receives the video data for the current block and the corresponding prediction block. Residual generation unit 204 then generates a residual block for the current block. To generate the residual block, residual generation unit 204 calculates the sample-by-sample differences between the prediction block and the current block.
[0127] The transform processing unit 206 applies one or more transforms to the residual block to Petition 870250089768, dated 02 / 10 / 2025, pp. 148 / 199 56 / 84 generate a transform coefficient block (referred to in the present invention as a transform coefficient block). The transform processing unit 206 can apply various transforms to a residual block to form the transform coefficient block. For example, the transform processing unit 206 can apply a discrete cosine transform (DCT), a directional transform, a Karhunen-Loeve transform (KLT), or a conceptually similar transform to a residual block. In some examples, the transform processing unit 206 can perform multiple transforms on a residual block, for example, a primary transform and a secondary transform, such as a rotational transform. In some examples, the transform processing unit 206 does not apply transforms to a residual block.The 206 transform processing unit can apply any of the MTS techniques described above when encoding a block of video data that has been encoded using IBC and / or TMP mode.
[0128] When operating in accordance with AV1, the transform processing unit 206 can apply one or more transforms to the residual block to generate a transform coefficient block (referred to in the present invention as a transform coefficient block). The transform processing unit 206 can apply multiple transforms to a residual block to form the transform coefficient block. For example, the transform processing unit 206 can apply a horizontal / vertical transform combination that may include a discrete cosine transform (DCT), a Petition 870250089768, dated 02 / 10 / 2025, pp. 149 / 199 57 / 84 asymmetric discrete sine transform (ADST), an inverted ADST (e.g., an ADST in reverse order), and an identity transform (IDTX). When an identity transform is used, the transform is skipped in either the vertical or horizontal direction. In some examples, transform processing may be skipped.
[0129] The quantization unit 208 can quantize the transform coefficients in a transform coefficient block to produce a block of quantized transform coefficients. The quantization unit 208 can quantize the transform coefficients of a transform coefficient block according to a quantization parameter (QP) value associated with the current block. The video encoder 200 (e.g., via the mode selection unit 202) can 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 can introduce loss of information, and therefore the quantized transform coefficients may have lower precision than the original transform coefficients produced by the transform processing unit 206.
[0130] The inverse quantization unit 210 and the inverse transform processing unit 212 can apply inverse quantization and inverse transforms to a block of quantized transform coefficients, respectively, to reconstruct a residual block of the transform coefficient block. The inverse transform processing unit 210 can apply either of the Petition 870250089768, dated 02 / 10 / 2025, pp. 150 / 199 58 / 84 MTS techniques described above when encoding a video data block that was encoded using IBC and / or TMP mode. Reconstruction unit 214 can produce a reconstructed block corresponding to the current block (although potentially with some degree of distortion) based on the reconstructed residual block and a prediction block generated by mode selection unit 202. For example, reconstruction unit 214 can add samples from the reconstructed residual block to the corresponding samples from the prediction block generated by mode selection unit 202 to produce the reconstructed block.
[0131] Filter unit 216 can perform one or more filter operations on rebuilt blocks. For example, filter unit 216 can perform unblocking operations to reduce blocking artifacts along the edges of the CUs. Filter unit 216 operations can be skipped in some instances.
[0132] When operating in accordance with AV1, filter unit 216 can perform one or more filter operations on reconstructed blocks. For example, filter unit 216 can perform unblocking operations to reduce blocking artifacts along the edges of the CUs. In other examples, filter unit 216 can apply a constrained directional enhancement filter (CDEF), which can be applied after unblocking, and may include the application of non-separable non-linear low-pass directional filters, based on estimated edge directions. Filter unit 216 may also include a loop restoration filter, which is applied after the CDEF, and Petition 870250089768, dated 02 / 10 / 2025, pp. 151 / 199 59 / 84 can include a separable symmetrical normalized Wiener filter or a dual self-guided filter.
[0133] Video encoder 200 stores reconstructed blocks in DPB 218. For example, in instances where filter unit 216 operations are not performed, reconstruction unit 214 can store reconstructed blocks in DPB 218. In instances where filter unit 216 operations are performed, filter unit 216 can store the filtered reconstructed blocks in DPB 218. Motion estimation unit 222 and motion compensation unit 224 can retrieve a DPB 218 reference image, formed from the reconstructed (and potentially filtered) blocks, to interpredict blocks from subsequently encoded images. Additionally, intraprediction unit 226 can use reconstructed DPB 218 blocks from a current image to intrapredict other blocks in the current image.
[0134] In general, the entropic encoding unit 220 can entropically encode syntax elements received from other functional components of the video encoder 200. For example, the entropic encoding unit 220 can entropically encode quantized transform coefficient blocks from the quantization unit 208. As another example, the entropic encoding unit 220 can entropically encode prediction syntax elements (e.g., motion information for interprediction or intramode information for intraprediction) from the mode selection unit 202. The entropic encoding unit 220 can perform one or more operations of Petition 870250089768, dated 02 / 10 / 2025, pp. 152 / 199 60 / 84 entropic encoding on syntax elements, which are another example of video data, in order to generate entropically encoded data. For example, the 220 entropic encoding unit can perform a context-adaptive variable length coding (CAVLC) operation, a CABAC operation, a variable-to-variable (V2V) coding operation, a syntax-based context-adaptive binary arithmetic coding (SBAC) operation, a probability interval partitioning entropy (PIPE) coding operation, an Exponential-Golomb coding operation, or another type of entropic encoding operation on the data.In some examples, the 220 entropic encoding unit can operate in bypass mode, where syntax elements are not entropically encoded.
[0135] Video encoder 200 can output a bitstream that includes the entropically encoded syntax elements needed to reconstruct blocks of a slice or image. In particular, entropic encoding unit 220 can output the bitstream.
[0136] According to AV1, the 220 entropic encoding unit can be configured as an adaptive symbol-to-symbol multisymbol 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 220 entropic encoding unit can store the Petition 870250089768, dated 02 / 10 / 2025, pp. 153 / 199 61 / 84 probabilities as cumulative distribution functions (CDFs) of n bits (e.g., 15 bits). The 220 entropic encoding unit can perform recursive scaling, with an update factor based on alphabet size, to update the contexts.
[0137] The operations described above are described in relation to a block. This description should be understood as operations for a luma encoding block and / or for chroma encoding blocks. As described above, in some examples, 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.
[0138] In some examples, the operations performed on a luma coding block need not be repeated for the chroma coding blocks. As an example, the operations to identify a motion vector (MV) and a reference image for a luma coding 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 coding block can be scaled to determine the MV for the chroma blocks, and the reference image can be the same. As another example, the intraprediction process can be the same for the luma coding block and for the chroma coding blocks.
[0139] The 200 video encoder represents an example of a device configured to encode video data including a memory configured to store video data and one or more processing units. Petition 870250089768, dated 02 / 10 / 2025, pp. 154 / 199 62 / 84 implemented in a circuit set and configured to receive a block of video data to be encoded using an IBC mode or an intraTMP mode, determine a pair of transforms, from among a plurality of transform pairs, to decode the block using an MTS process and encode the block using the transform pair.
[0140] Figure 7 is a block diagram illustrating an example 300 video decoder that can perform the techniques of this disclosure. Figure 7 is provided for explanatory purposes and is not limiting to the techniques as extensively exemplified and described in this disclosure. For explanatory purposes, this disclosure describes the 300 video decoder according to VVC and HEVC techniques. However, the techniques of this disclosure can be performed by video encoding devices that are configured for other video encoding standards.
[0141] In the example in Figure 7, 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, an inverse transform processing unit 308, a reconstruction unit 310, a filter unit 312, and a DPB 314. Any or all of the CPB memory 320, the entropic decoding unit 302, the prediction processing unit 304, the inverse quantization unit 306, the inverse transform processing unit 308, the reconstruction unit 310, the filter unit 312, and the DPB 314 can be implemented in one or more processors or Petition 870250089768, dated 02 / 10 / 2025, pages 155 / 199 63 / 84 in a processing circuitry. For example, the 300 video decoder units can be implemented as one or more circuits or logic elements as part of the hardware circuitry or as part of a processor, ASIC, or FPGA. Furthermore, the 300 video decoder may include additional or alternative processors or processing circuitry to perform these and other functions.
[0142] The prediction processing unit 304 includes a motion compensation unit 316 and an intraprediction unit 318. The prediction processing unit 304 may include additional units to perform prediction according to other prediction modes. As examples, the prediction processing unit 304 may include a palette unit, an intrablock copy unit (which may be part of the motion compensation unit). 316), an affine unit, a linear model (LM) unit, or affines. In other examples, the 300 video decoder may include more, fewer, or different functional components.
[0143] When operating in accordance with AV1, the motion compensation unit 316 can be configured to decode video data coding blocks (e.g., both luma and chroma coding blocks) using translational motion compensation, affine motion compensation, OBMC, and / or composite interintraprediction, as described above. The intraprediction unit 318 can be configured to decode video data coding blocks (e.g., both luma and chroma coding blocks) using directional intraprediction, non-directional intraprediction Petition 870250089768, dated 02 / 10 / 2025, pp. 156 / 199 64 / 84 directional, intraprediction recursive filter, CFL, IBC and / or color palette mode, as described above.
[0144] The CPB 320 memory can 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 320 memory can be obtained, for example, from computer-readable media 110 (Figure 1). The CPB 320 memory may include a CPB that stores encoded video data (e.g., syntax elements) of an encoded video bitstream. In addition, the CPB 320 memory may store video data beyond the syntax elements of an encoded image, such as temporary data representing outputs from the various units of the video decoder 300. The DPB 314 generally stores decoded images, which the video decoder 300 can output and / or use as reference video data when decoding subsequent data or images from the encoded video bitstream.The CPB 320 and DPB 314 memory can be comprised of any of several memory devices, such as DRAM, including SDRAM, MRAM, RRAM, or other types of memory devices. The CPB 320 and DPB 314 memory can be provided by the same memory device or by separate memory devices. In many instances, the CPB 320 memory may be on-chip with other components of the 300 video decoder or off-chip relative to those components.
[0145] Additionally or alternatively, in some examples, video decoder 300 can retrieve encoded video data from memory 120 (Figure 1). That is, memory 120 can store data, as discussed above, Petition 870250089768, dated 02 / 10 / 2025, pp. 157 / 199 65 / 84 with CPB 320 memory. Similarly, memory 120 can store instructions to be executed by video decoder 300, when some or all of the video decoder 300 functionalities are implemented in software to be executed by the video decoder 300 processing circuitry.
[0146] The various units shown in Figure 7 are illustrated to aid in understanding the operations performed by the 300 video decoder. The units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Similar to Figure 6 shows that fixed-function circuits refer to circuits that provide particular functionality and are predefined in the operations they can perform. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in the operations they can perform. For example, programmable circuits can execute software or firmware that causes the programmable circuits to operate in the manner defined by the software or firmware instructions. Fixed-function circuits can execute software instructions (e.g., to receive parameters or to emit 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 distinct circuit blocks (fixed-function or programmable), and in some examples, one or more of the units may be integrated circuits.
[0147] The 300 video decoder may include ALUs, EFUs, digital circuits, analog circuits and / or programmable cores, formed from circuits Petition 870250089768, dated 02 / 10 / 2025, pp. 158 / 199 66 / 84 programmable. In examples where the operations of the 300 video decoder are performed by software running on programmable circuits, the on-chip memory or off-chip memory can store instructions (e.g., object code) from the software that the 300 video decoder receives and executes.
[0148] The entropic decoding unit 302 can 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 can generate decoded video data based on the syntax elements extracted from the bitstream.
[0149] In general, the 300 video decoder reconstructs an image on a block-by-block basis. The 300 video decoder can perform a reconstruction operation on each block individually (where the block that is currently being reconstructed, i.e., decoded, can be called the current block).
[0150] The entropic decoding unit 302 can entropically decode syntax elements that define quantized transform coefficients of a block of quantized transform coefficients, as well as transform information such as a quantization parameter (QP) and / or transform mode indication(s). The inverse quantization unit 306 can use the QP associated with the block of quantized transform coefficients to determine a degree of quantization and, similarly, a degree of Petition 870250089768, dated 02 / 10 / 2025, pp. 159 / 199 67 / 84 inverse quantization for the inverse quantization unit 306 apply. The inverse quantization unit 306 can, for example, perform a left shift operation in the bit direction to inversely quantize the quantized transform coefficients. The inverse quantization unit 306 can thus form a block of transform coefficients that includes transform coefficients.
[0151] After the inverse quantization unit 306 forms the transform coefficient block, the inverse transform processing unit 308 can apply one or more inverse transforms to the transform coefficient block to generate a residual block associated with the current block. For example, the inverse transform processing unit 308 can apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotational transform, an inverse directional transform, or another inverse transform to the transform coefficient block. The inverse transform processing unit 308 can apply any of the MTS techniques described above when encoding a video data block that was encoded using IBC and / or TMP mode.
[0152] In addition, prediction processing unit 304 generates a prediction block according to the syntax elements of the prediction information that were entropically decoded by the entropic decoding unit 302. For example, if the syntax elements of the prediction information indicate that the current block is interpredicted, motion compensation unit 316 may generate the prediction block. In this case, the elements Petition 870250089768, dated 02 / 10 / 2025, pp. 160 / 199 68 / 84 of prediction information syntax can indicate a reference image in DPB 314 from which it is possible to retrieve a reference block, as well as a motion vector that identifies a location of the reference block in the reference image relative 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 in relation to the motion compensation unit 224 (Figure 6).
[0153] As another example, if the prediction information syntax elements indicate that the current block is intrapredicted, the intraprediction unit 318 can generate the prediction block according to an intraprediction mode indicated by the prediction information syntax elements. Again, the intraprediction unit 318 can generally perform the intraprediction process in a manner that is substantially similar to that described in relation to the intraprediction unit 226 (Figure 6). The intraprediction unit 318 can retrieve data from samples neighboring the current DPB block 314.
[0154] Reconstruction unit 310 can reconstruct the current block using the prediction block and the residual block. For example, reconstruction unit 310 can add samples from the residual block to the corresponding samples from the prediction block to reconstruct the current block.
[0155] Filter unit 312 can perform one or more filter operations on reconstructed blocks. For example, filter unit 312 can perform unblocking operations to reduce blocking artifacts along the edges of Petition 870250089768, dated 02 / 10 / 2025, pp. 161 / 199 69 / 84 blocks rebuilt. The operations of filter unit 312 are not necessarily performed in all examples.
[0156] Video decoder 300 can store reconstructed blocks in DPB 314. For example, in instances where filter unit 312 operations are not performed, reconstruction unit 310 can store reconstructed blocks in DPB 314. In instances where filter unit 312 operations are performed, filter unit 312 can store filtered reconstructed blocks in DPB 314. As discussed above, DPB 314 can provide reference information, such as samples of a current image for intraprediction and previously decoded images for subsequent motion compensation, to the prediction processing unit 304. In addition, video decoder 300 can output decoded images (e.g., decoded video) from DPB 314 for subsequent presentation on a display device, such as display device 118 in Figure 1.
[0157] In this way, the 300 video decoder represents an example of a video decoding device that includes a memory configured to store video data and one or more processing units implemented in a circuit set and configured to receive a block of video data encoded using an IBC mode or an intraTMP mode, determine a pair of transforms, from among a plurality of transform pairs, to decode the block using an MTS process and decode the block using the transform pair.
[0158] Figure 8 is a flowchart illustrating an example method for coding a current block accordingly. Petition 870250089768, dated 02 / 10 / 2025, pp. 162 / 199 70 / 84 with the techniques of the present disclosure. The current block may be or include a current CU. Although described in relation to the 200 video encoder (Figures 1 and 6), it should be understood that other devices may be configured to perform a method similar to that of Figure 8.
[0159] In this example, video encoder 200 initially predicts the current block (350). For example, video encoder 200 can form a prediction block for the current block. Video encoder 200 can then calculate a residual block for the current block (352). To calculate the residual block, video encoder 200 can calculate a difference between the original, unencoded block and the prediction block for the current block. Video encoder 200 can then transform the residual block and quantize the transform coefficients of the residual block (354). Next, video encoder 200 can scan the quantized transform coefficients of the residual block (356). During the scan, or after the scan, video encoder 200 can entropically encode the transform coefficients (358). For example, the Video 200 encoder can encode transform coefficients using CAVLC or CABAC.The 200 video encoder can then output the entropically encoded data from the block (360).
[0160] Figure 9 is a flowchart illustrating an example method for decoding a current block of video data according to the techniques of the present disclosure. The current block may be or include a current CU. Although described in relation to the 300 video decoder (Figures 1 and 7), it should be understood that other devices may be configured to perform a method similar to that of Figure 9. Petition 870250089768, dated 02 / 10 / 2025, pp. 163 / 199 71 / 84
[0161] Video decoder 300 can receive entropically encoded data for the current block, such as entropically encoded prediction information and entropically encoded data for transform coefficients of a residual block corresponding to the current block (370). Video decoder 300 can entropically decode the entropically encoded data to determine prediction information for the current block and to reproduce transform coefficients of the residual block (372). Video decoder 300 can predict the current block (374), for example using an intra- or interprediction mode, as indicated by the prediction information for the current block, in order to calculate a prediction block for the current block. Video decoder 300 can then perform an inverse scan on the reproduced transform coefficients (376) to create a block of quantized transform coefficients.The video decoder 300 can then inversely quantize the transform coefficients and apply an inverse transform to the transform coefficients to produce a residual block (378). The video decoder 300 can finally decode the current block by combining the prediction block and the residual block (380).
[0162] Figure 10 is a flowchart illustrating another example method for encoding a current block according to the techniques of the present disclosure. The techniques of Figure 10 can be performed by one or more components of the video encoder 200, including the transform processing unit 206 and / or the inverse transform processing unit 212. Petition 870250089768, dated 02 / 10 / 2025, pp. 164 / 199 72 / 84
[0163] In one example of the disclosure, the Video Encoder 200 can be configured to receive a block of video data to be encoded using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode (1000). In one example, the video data is natural content video data. The Video Encoder 200 can determine a pair of transforms, from a plurality of transform pairs, to decode the block using a (1010) multiple transform selection (MTS) process and encode the block using the transform pair (1020). The plurality of transform pairs can include a vertical discrete cosine transform type 2 (DCT-2), a horizontal DCT-2, and four other transform pairs. In one example, the Video Encoder 200 can be additionally configured to encode an MTS index indicating the transform pair.
[0164] In one example of the disclosure, the video data block is encoded using IBC mode and the IBC mode is an AMVP IBC mode. In another example of the disclosure, the video data block is encoded using IBC mode and the IBC mode is either an AMVP IBC mode or a fusion IBC mode.
[0165] In another example of the disclosure, the 200 video encoder can be further configured to encode a syntax element indicating the plurality number of transform pairs using context-adaptive binary arithmetic encoding and a dedicated context. In another example, the 200 video encoder can be configured to determine an intramode for the block based on a lateral intramode derivation process. Petition 870250089768, dated 02 / 10 / 2025, pages 165 / 199 73 / 84 decoder (DIMD) and determine a plurality number of transform pairs based on intramode.
[0166] Figure 11 is a flowchart illustrating another example method for decoding a current block according to the techniques of the present disclosure. The techniques of Figure 11 can be performed by one or more components of the video decoder 300, including the inverse transform processing unit 308.
[0167] In one example of the disclosure, the Video Decoder 300 can be configured to receive the video data block encoded using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode (1100). In one example, the video data is natural content video data. In one example, the video data block is encoded using the IBC mode and the IBC mode is an AMVP IBC mode. In another example, the video data block is encoded using the IBC mode and the IBC mode is an AMVP IBC mode or a fusion IBC mode. The Video Decoder 300 can be further configured to determine a pair of transforms, from among a plurality of transform pairs, to decode the block using a multiple transform selection (MTS) process (1110) and decode the block using the transform pair (1120).
[0168] In one example, to determine the transform pair from a plurality of transform pairs, the 300 video decoder is configured to receive an MTS index and determine the transform pair based on the MTS index. In another example, to determine the transform pair from a plurality of transform pairs, the 300 video decoder is configured to receive a Petition 870250089768, dated 02 / 10 / 2025, pp. 166 / 199 74 / 84 MTS index and determine the pair of transforms based on the MTS index and a block size.
[0169] In one example, the plurality of transform pairs includes a vertical discrete cosine transform type 2 (DCT-2), a horizontal DCT-2, and four other transform pairs. The Video Decoder 300 can be further configured to determine a number of the plurality of transform pairs. In one example, to determine the number of the plurality of transform pairs, the Video Decoder 300 can be configured to decode a syntax element indicating the number of the plurality of transform pairs using context-adaptive binary arithmetic encoding and a dedicated context. In another example, to determine the number of the plurality of transform pairs, the Video Decoder 300 is configured to determine an intramode for the block based on a decoder lateral intramode derivation (DIMD) process and determine the number of the plurality of transform pairs based on the intramode.
[0170] The following numbered clauses illustrate one or more aspects of the techniques and devices described in this disclosure.
[0171] Aspect 1A. A method for encoding video data comprising: determining a transform from among a plurality of transforms to encode a block also encoded using an intrablock copy mode; and encoding the block using the determined transform.
[0172] Aspect 2A. The method of Aspect 1A, where the intrablock copy mode is an AMVP mode. Petition 870250089768, dated 02 / 10 / 2025, pp. 167 / 199 75 / 84
[0173] Aspect 3A. The method of Aspect 1A, where the intrablock copy mode is a merge mode.
[0174] Aspect 4A. A method of encoding video data comprising: determining a transform from among a plurality of transforms to encode a block also encoded using an intratemplate matching mode; and encoding the block using the determined transform.
[0175] Aspect 5A. The method of any of Aspects 1A to 4A, in which encoding comprises decoding.
[0176] Aspect 6A. The method of any of Aspects 1B to 4A, wherein coding comprises coding.
[0177] Aspect 7A. A device for encoding video data comprising one or more means for carrying out the method of any of Aspects 1A to 6A.
[0178] Aspect 8A. The Aspect 7A device, wherein one or more means comprise one or more processors implemented in the circuit set.
[0179] Aspect 9A. The device of either Aspect 7A or 8A which additionally comprises memory for storing video data.
[0180] Aspect 10A. The device of any of Aspects 7A to 9A, which additionally comprises a display configured to display decoded video data.
[0181] Aspect 11A. The device of any of Aspects 7A to 10A, comprising one or more of a camera, a computer, a mobile device, a broadcast receiver or a set-top box.
[0182] Aspect 12A. The device of any of Aspects 7A to 11A, comprising a video decoder. Petition 870250089768, dated 02 / 10 / 2025, pp. 168 / 199 76 / 84
[0183] Aspect 13A. The device of any of Aspects 7A to 12A, comprising a video encoder.
[0184] Aspect 14A. A computer-readable storage medium that has instructions stored on it which, when executed, cause one or more processors to perform the method of any of Aspects 1A to 6A.
[0185] Aspect 1B. A method for decoding video data comprising: receiving a block of video data encoded using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode; determining a pair of transforms, from among a plurality of transform pairs, to decode the block using a multiple transform selection (MTS) process; and decoding the block using the transform pair.
[0186] Aspect 2B. The method of Aspect 1B, in which the determination of the pair of transforms, among the plurality of pairs of transforms, comprises: receiving an MTS index; and determining the pair of transforms based on the MTS index.
[0187] Aspect 3B. The method of Aspect 1B, in which the determination of the pair of transforms, among the plurality of pairs of transforms, comprises: receiving an MTS index; and determining the pair of transforms based on the MTS index and a block size.
[0188] Aspect 4B. The method of any of Aspects 1B to 3B, wherein the plurality of transform pairs includes a vertical discrete cosine transform of type 2 (DCT-2), a horizontal DCT-2, and four other transform pairs. Petition 870250089768, dated 02 / 10 / 2025, pp. 169 / 199 77 / 84
[0189] Aspect 5B. The method of any of Aspects 1B to 4B, additionally comprising: determining a plurality number of transform pairs.
[0190] Aspect 6B. The method of Aspect 5B, in which the determination of the plurality number of transform pairs comprises: decoding a syntax element indicating the plurality number of transform pairs using context-adaptive binary arithmetic encoding and a dedicated context.
[0191] Aspect 7B. The method of Aspect 5B, in which the determination of the plurality number of transform pairs comprises: determining an intramode for the block based on a decoder lateral intramode derivation (DIMD) process; and determining the plurality number of transform pairs based on the intramode.
[0192] Aspect 8B. The method of any of Aspects 1B to 7B, wherein the video data block is encoded using IBC mode and IBC mode is an AMVP IBC mode.
[0193] Aspect 9B. The method of any of Aspects 1B to 7B, wherein the video data block is encoded using IBC mode and the IBC mode is either an AMVP IBC mode or a fusion IBC mode.
[0194] Aspect 10B. The method of any of Aspects 1B to 9B, wherein the video data is natural content video data.
[0195] Aspect 11B. A device configured to decode video data, wherein the device comprises: a memory configured to receive a block of video data; and a set of processing circuits in communication with the memory, the set of circuits of Petition 870250089768, dated 02 / 10 / 2025, pp. 170 / 199 78 / 84 processing configured to: receive the encoded video data block using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode; determine a transform pair, from a plurality of transform pairs, to decode the block using a multiple transform selection (MTS) process; and decode the block using the transform pair.
[0196] Aspect 12B. The apparatus of Aspect 11B, in which to determine the pair of transforms, from among the plurality of pairs of transforms, the processing circuitry is additionally configured to: receive an MTS index; and determine the pair of transforms based on the MTS index.
[0197] Aspect 13B. The apparatus of Aspect 11B, in which to determine the transform pair, from among the plurality of transform pairs, the processing circuitry is further configured to: receive an MTS index; and determine the transform pair based on the MTS index and a block size.
[0198] Aspect 14B. The apparatus of any of Aspects 11B to 13B, in which the plurality of transform pairs includes a vertical discrete cosine transform of type 2 (DCT-2), a horizontal DCT-2, and four other transform pairs.
[0199] Aspect 15B. The apparatus of any of Aspects 11B to 14B, in which the processing circuitry is additionally configured to: determine a number of the plurality of transform pairs.
[0200] Aspect 16B. The apparatus of Aspect 15B, in which to determine the number of plurality pairs of Petition 870250089768, dated 02 / 10 / 2025, p. 171 / 199 79 / 84 transforms, the processing circuitry is additionally configured to: decode a syntax element indicating the plurality number of transform pairs using context-adaptive binary arithmetic encoding and a dedicated context.
[0201] Aspect 17B. The apparatus of Aspect 15B, in which to determine the number of transform pair pluralities, the processing circuitry is additionally configured to: determine an intramode for the block based on a decoder side-intramode derivation (DIMD) process; and determine the number of transform pair pluralities based on the intramode.
[0202] Aspect 18B. The device of any of Aspects 11B to 17B, wherein the video data block is encoded using IBC mode and the IBC mode is an AMVP IBC mode.
[0203] Aspect 19B. The apparatus of any of Aspects 11B to 17B, wherein the video data block is encoded using IBC mode and the IBC mode is an AMVP IBC mode or a fusion IBC mode.
[0204] Aspect 20B. The apparatus of any of Aspects 11B to 19B, wherein the video data is natural content video data.
[0205] Aspect 21B. A method for encoding video data, comprising: receiving a block of video data to be encoded using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode; determining a pair of transforms, from a plurality of pairs of transforms, to decode the Petition 870250089768, dated 02 / 10 / 2025, p. 172 / 199 Block 80 / 84 using a multiple transform selection (MTS) process; and encode the block using the transform pair.
[0206] Aspect 22B. The method of Aspect 21B, additionally comprising: encoding an MTS index indicating the transform pair.
[0207] Aspect 23B. The method of any of Aspects 21B to 22B, wherein the video data block is encoded using IBC mode and IBC mode is an AMVP IBC mode.
[0208] Aspect 24B. The method of any of Aspects 21B to 22B, wherein the video data block is encoded using IBC mode and the IBC mode is an AMVP IBC mode or a fusion IBC mode.
[0209] Aspect 25B. The method of any of Aspects 21B to 24B, wherein the video data is natural content video data.
[0210] Aspect 26B. An apparatus configured for encoding video data, wherein the apparatus comprises: a memory configured to receive a block of video data; and a set of processing circuits in communication with the memory, the set of processing circuits configured to: receive the block of video data to be encoded using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode; determine a pair of transforms, from among a plurality of pairs of transforms, to decode the block using a multiple transform selection (MTS) process; and encode the block using the pair of transforms.
[0211] Aspect 27B. The apparatus of Aspect 26B, in which the processing circuitry is additionally Petition 870250089768, dated 02 / 10 / 2025, pp. 173 / 199 81 / 84 configured to: encode an MTS index that indicates the transform pair.
[0212] Aspect 28B. The apparatus of any of Aspects 26B to 27B, wherein the video data block is encoded using IBC mode and IBC mode is an AMVP IBC mode.
[0213] Aspect 29B. The apparatus of any of Aspects 26B to 27B, wherein the video data block is encoded using IBC mode and the IBC mode is an AMVP IBC mode or a fusion IBC mode.
[0214] Aspect 30B. The apparatus of any of Aspects 26B to 29B, wherein the video data is natural content video data.
[0215] It should be recognized that, depending on the example, certain actions or events of any of the techniques described in the present invention may be performed in a different sequence, may be added, combined or completely omitted (for example, not all actions or events described are necessary for the practice of the techniques). Furthermore, in certain examples, the actions or events may be performed simultaneously, for example, through multi-threaded processing, interrupt processing or multiple processors, instead of sequentially.
[0216] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored or transmitted as one or more instructions or code in a computer-readable medium and executed by a unit of Petition 870250089768, dated 02 / 10 / 2025, pp. 174 / 199 82 / 84 hardware-based processing. Computer-readable media may include computer-readable storage media, which correspond to a tangible medium, such as data storage media, or communication media, including any medium that facilitates the transfer of a computer program from one place to another, for example, according to a communication protocol. In this way, computer-readable media may generally correspond to (1) tangible computer-readable storage media that are non-transient or (2) a communication medium, such as a signal or a carrier wave. Data storage media may be any available medium 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.
[0217] By way of example, and not limitation, such computer-readable storage media may include one or more of the following: 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 the desired program code in the form of instructions or data structures and that can be accessed by a computer. Furthermore, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, a server, or other remote source using a coaxial cable, a fiber optic cable, a twisted pair, a line Petition 870250089768, dated 02 / 10 / 2025, pp. 175 / 199 83 / 84 of 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 will be included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other transient media, but instead refer to tangible non-transient storage media. As used in the present invention, disks (disk and disc) include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks typically reproduce data magnetically, while discs reproduce data optically by means of lasers.Combinations of the above items should also be included within the scope of computer-readable media.
[0218] The instructions may be executed by one or more processors, such as one or more DSPs, general-purpose microprocessors, ASICs, FPGAs, or other equivalent discrete or integrated logic circuitry. Consequently, the terms processor and processing circuitry, as used in the present invention, may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described in the present invention. Furthermore, in some respects, the functionality described in the present invention may be provided in dedicated hardware and / or software modules configured to Petition 870250089768, dated 02 / 10 / 2025, pp. 176 / 199 84 / 84 encoding and decoding, or it can be incorporated into a combined codec. Furthermore, the techniques can be fully implemented in one or more circuits or logic elements.
[0219] The techniques in this disclosure can be implemented in a wide variety of devices or appliances, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Several 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 implementation by different hardware units. Instead, as described above, several units can 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 suitable software and / or firmware.
[0220] Several examples have been described. These and other examples are within the scope of the following claims. Petition 870250089768, dated 02 / 10 / 2025, pp. 177 / 199
Claims
1 / 6 CLAIMS 1. A method for decoding video data characterized by comprising: receiving a block of encoded video data using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode; determining a pair of transforms, from among a plurality of transform pairs, to decode the block using a multiple transform selection (MTS) process; and decoding the block using the transform pair.
2. A method according to claim 1, characterized in that the determination of the pair of transforms, from among a plurality of pairs of transforms, comprises: receiving an MTS index; and determining the pair of transforms based on the MTS index.
3. A method according to claim 1, characterized in that the determination of the pair of transforms, from among a plurality of pairs of transforms, comprises: receiving an MTS index; and determining the pair of transforms based on the MTS index and a block size.
4. Method, according to claim 1, characterized in that the plurality of transform pairs includes a vertical discrete cosine transform of type 2 (DCT-2), a horizontal DCT-2, and four other transform pairs.
5. Method according to claim 1, characterized by further comprising: Petition 870250089768, dated 02 / 10 / 2025, page 178 / 199 2 / 6 determining a number of the plurality of pairs of transforms.
6. Method, according to claim 5, characterized in that the determination of the plurality number of transform pairs comprises: decoding a syntax element indicating the plurality number of transform pairs using context-adaptive binary arithmetic encoding and a dedicated context.
7. Method, according to claim 5, characterized in that the determination of the plurality number of transform pairs comprises: determining an intramode for the block based on a decoder lateral intramode derivation (DIMD) process; and determining the plurality number of transform pairs based on the intramode.
8. Method according to claim 1, characterized in that the video data block is encoded using IBC mode and in that the IBC mode is an AMVP IBC mode.
9. Method according to claim 1, characterized in that the video data block is encoded using IBC mode and in that the IBC mode is either an AMVP IBC mode or a fusion IBC mode.
10. Method, according to claim 1, characterized in that the video data are natural content video data.
11. Apparatus configured for decoding video data characterized by comprising: Petition 870250089768, dated 10 / 02 / 2025, page 179 / 199 3 / 6 a memory configured to receive a block of video data; and a set of processing circuits in communication with the memory, the set of processing circuits being configured to: receive the block of video data encoded using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode; determine a pair of transforms, from among a plurality of pairs of transforms, to decode the block using a multiple transform selection (MTS) process; and decode the block using the pair of transforms.
12. Apparatus according to claim 11, characterized in that, to determine the pair of transforms from among a plurality of pairs of transforms, the processing circuit is additionally configured to: receive an MTS index; and determine the pair of transforms based on the MTS index.
13. Apparatus, according to claim 11, characterized in that, to determine the pair of transforms, among a plurality of pairs of transforms, the processing circuit is additionally configured to: receive an MTS index; and determine the pair of transforms based on the MTS index and a block size.
14. Apparatus, according to claim 11, characterized in that the plurality of transform pairs includes a vertical discrete cosine transform type 2 (DCT-2), a horizontal DCT-2 and four other transform pairs.
15. Apparatus, according to claim 11, characterized in that the set of processing circuits is additionally configured to: determine a number of the plurality of transform pairs.
16. Apparatus, according to claim 15, characterized in that, to determine the plurality number of transform pairs, the processing circuit is additionally configured to: decode a syntax element indicating the plurality number of transform pairs using context-adaptive binary arithmetic encoding and a dedicated context.
17. Apparatus, according to claim 15, characterized in that, to determine the number of transform pair pluralities, the processing circuit is additionally configured to: determine an intramode for the block based on a decoder lateral intramode derivation (DIMD) process; and determine the number of transform pair pluralities based on the intramode.
18. Device according to claim 11, characterized in that the video data block is encoded using IBC mode and that the IBC mode is an AMVP IBC mode.
19. Device according to claim 11, characterized in that the video data block is encoded using IBC mode and in that the IBC mode is an AMVP IBC mode or a fusion IBC mode.
20. Device according to claim 11, characterized in that the video data is natural content video data.
21. A method for encoding video data characterized by comprising: receiving a block of video data to be encoded using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode; determining a pair of transforms, from among a plurality of pairs of transforms, to decode the block using a multiple transform selection (MTS) process; and encoding the block using the pair of transforms.
22. Method according to claim 21, characterized by further comprising: encoding an MTS index indicating the pair of transforms.
23. Method according to claim 21, characterized in that the video data block is encoded using IBC mode and in that the IBC mode is an AMVP IBC mode.
24. Method according to claim 21, characterized in that the video data block is encoded using IBC mode and in that the IBC mode is either an AMVP IBC mode or a fusion IBC mode.
25. Method, according to claim 21, characterized in that the video data are natural content video data. Petition 870250089768, dated 10 / 02 / 2025, p. 182 / 199 6 / 6 26. Apparatus configured for encoding video data characterized by comprising: a memory configured to receive a block of video data; and a set of processing circuits in communication with the memory, the set of processing circuits being configured to: receive the block of video data to be encoded using an intrablock copy (IBC) mode or an intratemplate match prediction (TMP) mode; determine a pair of transforms, from among a plurality of pairs of transforms, to decode the block using a multiple transform selection (MTS) process; and encode the block using the pair of transforms.
27. Apparatus, according to claim 26, characterized in that the processing circuitry is additionally configured to: encode an MTS index indicating the transform pair.
28. Apparatus, according to claim 26, characterized in that the video data block is encoded using IBC mode and in that the IBC mode is an AMVP IBC mode.
29. Apparatus, according to claim 26, characterized in that the video data block is encoded using IBC mode and in that the IBC mode is either an AMVP IBC mode or a fusion IBC mode.
30. Device, according to claim 26, characterized in that the video data is natural content video data. Petition 870250089768, dated 02 / 10 / 2025, pp. 183 / 199