Video data decoding method, device for encoding video data, and computer-readable storage media.

BR112025021328A2Pending Publication Date: 2026-09-01
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
BR112025021328
Authority / Receiving Office
BR · BR
Patent Type
Applications
Publication Date
2026-09-01

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader
Need to check novelty before this filing date? Find Prior Art

Description

1 / 99 "METHOD FOR DECODING VIDEO DATA, DEVICE FOR ENCODING VIDEO DATA, AND COMPUTER-READABLE STORAGE MEDIA"

[0001] This application claims priority over U.S. Patent Application No. 18 / 605,416, filed March 14, 2024; U.S. Provisional Patent Application No. 63 / 495,981, filed April 13, 2023; U.S. Provisional Patent Application No. 63 / 507,021, filed June 8, 2023; and U.S. Provisional Patent Application No. 63 / 508,765, filed June 16, 2023, the contents of which are incorporated herein by reference in their entirety. U.S. Patent Application No. 18 / 605,416, filed March 14, 2024, claims the benefit of U.S. Provisional Patent Application No. 63 / 495,981, filed April 13, 2023; of provisional patent application US No. 63 / 507,021, filed on June 8, 2023; and of provisional patent application US No. 63 / 508,765, filed on June 16, 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, Petition 870250089983, dated 02 / 10 / 2025, page 11 / 227 2 / 99 video game consoles, cellular or satellite radio phones, 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), 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 coding 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. The video blocks in an intracoded slice (I) of an image are coded using spatial prediction with respect to reference samples in neighboring blocks in Petition 870250089983, dated 02 / 10 / 2025, page 12 / 227 3 / 99 same image. Video blocks in an intercoded slice (P or B) of an image can 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. SUMMARY

[0005] In general, this disclosure describes techniques for adaptive video filtering. The techniques described in the present invention can result in improved video quality, reduced bandwidth consumption, reduced processing power usage, and / or the like. Existing adaptive video filtering techniques may result in signaling that many syntax elements occupy a relatively large amount of bandwidth to represent information that a video decoder may need to determine and properly apply adaptive video filtering to the video data. Additionally, existing video filtering techniques may require a video encoder to calculate differences that should be known to be zero before the calculation, which can be a waste of processing power.The techniques described in the present invention can reduce the amount of signaled syntax elements and / or remove or simplify calculations that would otherwise be performed by a video encoder.

[0006] In one example, a method includes determining a first value associated with a first window, the first Petition 870250089983, dated 02 / 10 / 2025, page 13 / 227 4 / 99 window including a target block of video data; determine a respective difference between each sample value within a second window and the first value, the second window including the target block, where the first window and the second window are the same window or different windows; determine a second value based on the respective differences; determine a Laplacian activity value of the target block; determine a class index based on the second value and the Laplacian activity value; and decode the target block based on the class index.

[0007] In another example, a device includes one or more memories configured to store video data; and one or more processors, implemented in a circuit set and coupled to one or more memories, the one or more processors configured to: determine a first value associated with a first window, the first window including a target block of video data; determine a respective difference between each sample value within a second window and the first value, the second window including the target block, wherein the first window and the second window are the same window or different windows; determine a second value based on the respective differences; determine a Laplacian activity value of the target block; determine a class index based on the second value and the Laplacian activity value; and decode the target block based on the class index.

[0008] In another example, a computer-readable storage medium is encoded with instructions that, when executed, cause one or more processors to determine Petition 870250089983, dated 02 / 10 / 2025, page 14 / 227 5 / 99 a first value associated with a first window, the first window including a target block of video data; determine a respective difference between each sample value within a second window and the first value, the second window including the target block, wherein the first window and the second window are the same window or different windows; determine a second value based on the respective differences; determine a Laplacian activity value of the target block, the second window including the target block, wherein the first window and the second window are the same window or different windows; determine a class index based on the second value and the Laplacian activity value; and decode the target block based on the class index.

[0009] The details of one or more examples are set forth in the attached drawings and in the description below. Other attributes, objectives and advantages will become apparent from the description, drawings and claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0010] Figure 1 is a block diagram illustrating an example video encoding and decoding system that can perform the techniques of the present disclosure.

[0011] Figure 2 is a block diagram illustrating an example video encoder that can perform the techniques of the present disclosure.

[0012] Figure 3 is a block diagram illustrating an example video decoder that can perform the techniques of the present disclosure. Petition 870250089983, dated 02 / 10 / 2025, page 15 / 227 6 / 99

[0013] Figure 4 is a flowchart illustrating example adaptive video filtering techniques according to one or more aspects of this disclosure.

[0014] Figure 5 is a flowchart illustrating an example method for coding an actual block in accordance with the techniques of this disclosure.

[0015] Figure 6 is a flowchart illustrating an example method for decoding a current block according to the techniques of this disclosure. DETAILED DESCRIPTION

[0016] Existing adaptive video filtering techniques can result in signaling that many syntax elements occupy a relatively large amount of bandwidth to represent information that a video decoder may need to determine and properly apply adaptive video filtering to the video data. Additionally, existing video filtering techniques may require a video encoder to calculate differences that should be known to be zero before the calculation, which can be a waste of processing power.

[0017] The techniques described in the present invention can improve adaptive video filtering. These techniques can result in improved video quality, reduced bandwidth consumption, reduced processing power usage and / or the like.

[0018] Figure 1 is a block diagram illustrating an example 100 video encoding and decoding system that can perform the techniques of this Petition 870250089983, dated 02 / 10 / 2025, page 16 / 227 7 / 99 disclosure. 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 used to process a video. Thus, video data can include raw, unencoded video, encoded video, decoded (e.g., reconstructed) video, and video metadata such as signaling data.

[0019] 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.

[0020] In the example in Figure 1, the source device 102 includes video source 104, memory 106, Petition 870250089983, dated 02 / 10 / 2025, page 17 / 227 8 / 99 video encoder 200 and output interface 108. The 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 the source device 102 and the video decoder 300 of the destination device 116 can be configured to apply techniques for adaptive video filtering. Thus, the source device 102 represents an example of a video encoding device, while the destination device 116 represents an example of a video decoding device. In other examples, a source device and a destination device may include other components or arrangements. For example, the source device 102 may receive video data from an external video source, such as an external camera.Similarly, target device 116 can interface with an external display device, rather than including an integrated display device.

[0021] As shown in Figure 1, system 100 is merely an example. In general, any digital video encoding and / or decoding device can perform adaptive video filtering 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 process of encoding (encoding and / or decoding) data. Petition 870250089983, dated 02 / 10 / 2025, page 18 / 227 9 / 99 form, 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 source device 102 and destination device 116 includes video encoding and decoding components. In this way, system 100 may support unidirectional or bidirectional video transmission between source device 102 and destination device 116, for example, for video streaming, video playback, video broadcasting, or video telephony.

[0022] 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 Petition 870250089983, dated 02 / 10 / 2025, page 19 / 227 The 10 / 99 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.

[0023] Memory 106 of source device 102 and memory 120 of destination device 116 represent 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.Furthermore, 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, portions of memories 106 and 120 can be allocated as one or more video buffers. Petition 870250089983, dated 02 / 10 / 2025, page 20 / 227 11 / 99 example, to store raw, decoded and / or encoded video data.

[0024] The computer-readable medium 110 may represent any type of medium or device with the capability to carry 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 input interface 122 may demodulate the received transmission signal according to a communication standard, such as a wireless communication protocol. The communication medium may 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 may include routers, switches, base stations, or any other equipment that may be useful for facilitating communication between the source device 102 and the destination device 116.

[0025] In some examples, source device 102 can output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 can access encoded data. Petition 870250089983, dated 02 / 10 / 2025, page 21 / 227 12 / 99 originating 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.

[0026] 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. Destination device 116 may access stored video data from file server 114 via streaming or download.

[0027] 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. The 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, or a Hypertext Transfer Protocol (HTTP) server. Petition 870250089983, dated 02 / 10 / 2025, page 22 / 227 13 / 99 - Hypertext Transfer Protocol), 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.

[0028] The target device 116 can access encoded video data from the file server 114 through any standard data connection, including an internet connection. This can include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both that is suitable for accessing encoded video data stored on the file server 114. The input interface 122 can be configured to operate according to any one or more of the various protocols discussed above to retrieve or receive media data from the file server 114, or other protocols to retrieve media data.

[0029] Output interface 108 and input interface 122 may represent wireless transmitters / receivers, modems, wired network communication components. Petition 870250089983, dated 02 / 10 / 2025, page 23 / 22714 / 99 (e.g., Ethernet cards), wireless communication components operating in accordance with any of a variety of Institute of Electrical and Electronics Engineers (IEEE) 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 can be configured to transfer data, such as encoded video data, in accordance with 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 or an IEEE 802 specification.15 (for example, ZigBee™), a Bluetooth™ standard, or similar. In some examples, the source device 102 and / or the destination device 116 may include their respective system-on-a-chip (SoC) devices. For example, the source device 102 may include an 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 an SoC device to perform the functionality assigned to the video decoder 300 and / or the input interface 122.

[0030] The techniques of this disclosure can be applied to video encoding to support any Petition 870250089983, dated 02 / 10 / 2025, p. 24 / 227 15 / 99 is one of several 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.

[0031] The input interface 122 of the destination device 116 receives an encoded video bitstream from the computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, or 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 display device 118 displays decoded images from the decoded video data to a user.Display device 118 may 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.

[0032] Although not shown in Figure 1, in some examples, the video encoder 200 and the decoder of Petition 870250089983, dated 02 / 10 / 2025, page 25 / 227 16 / 99 video 300s 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.

[0033] Each of the 200 video encoder and 300 video decoder can be implemented as any of a variety of suitable encoder and / or decoder circuit sets, 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 video encoder 200 and video decoder 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) 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 set of... Petition 870250089983, dated 02 / 10 / 2025, page 26 / 227 17 / 99 processing circuits, such as an integrated circuit and / or a microprocessor. This device may be a wireless communication device, such as a cell phone or any other type of device described in the present invention.

[0034] 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. In general, the Video Encoder 200 and Video Decoder 300 can be configured to perform the techniques of this disclosure in conjunction with any video encoding techniques that use adaptive video filtering. Petition 870250089983, dated 02 / 10 / 2025, page 27 / 227 18 / 99

[0035] 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.

[0036] 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. Similarly, this disclosure may refer to the encoding of blocks of an image to include the process of encoding Petition 870250089983, dated 02 / 10 / 2025, page 28 / 227 19 / 99 or data decoding for blocks, for example, prediction and / or residual encoding. A coded video bitstream generally includes a series of values ​​for syntax elements representing encoding decisions (e.g., encoding modes) and image partitioning into blocks. Thus, references to the encoding of an image or block should generally be understood as encoding values ​​for syntax elements that form the image or block.

[0037] 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.

[0038] As another example, the 200 video encoder and the 300 video decoder can be Petition 870250089983, dated 02 / 10 / 2025, page 29 / 227 20 / 99 configured to operate according to VVC. According to VVC, a video encoder (such as the 200 video encoder) partitions an image into a plurality of CTUs. The 200 video encoder 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.

[0039] 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.

[0040] When operating according to the AV1 codec, the 200 video encoder and the 300 video decoder can Petition 870250089983, dated 02 / 10 / 2025, page 30 / 227 21 / 99 can be configured to encode video data in blocks. In AV1, the largest encoding block that can be processed is called a superblock. In AV1, a superblock can be 128x128 luma samples or 64x64 luma samples. However, in successor video encoding 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 encoding blocks. The Video Encoder 200 can partition a superblock and other encoding 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 Video Decoder 300 can perform separate prediction and transformation processes on each of the encoding blocks.

[0041] 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 on a tile without using video data from other tiles. However, the 200 video encoder and the 300 video decoder can perform filtering across tile boundaries. Tiles can be of uniform or non-uniform size. Tile-based encoding can enable Petition 870250089983, dated 02 / 10 / 2025, page 31 / 227 22 / 99 Parallel and / or multi-threaded processing for encoder and decoder implementations.

[0042] In some examples, the 200 video encoder and the 300 video decoder may use a single 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).

[0043] 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.

[0044] 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 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 Petition 870250089983, dated 02 / 10 / 2025, p. 32 / 227 23 / 99 image in monochrome format. 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.

[0045] Blocks (e.g., CTUs or CUs) can be grouped in various ways in an image. As an 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 syntax elements (e.g., as in an image parameter set). A row of tiles refers to a rectangular region of CTUs that has a height specified by syntax elements (e.g., as in an image parameter set) and a width equal to the width of the image.

[0046] 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 Petition 870250089983, dated 02 / 10 / 2025, p. 33 / 227 24 / 99 is the number of complete tiles or just a consecutive sequence of complete tiles within a tile.

[0047] This disclosure may use NxN and N by N interchangeably to refer to the sample dimensions of a block (such as a CU or other video block) in terms of vertical and horizontal dimensions, for example, 16x16 samples or 16 by 16 samples. Generally, a 16x16 CU will have 16 samples in a vertical direction (y = 16) and 16 samples in a horizontal direction (x = 16). 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 value. The samples in a CU may 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 may include NxM samples, where M is not necessarily equal to N.

[0048] 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.

[0049] 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. Petition 870250089983, dated 02 / 10 / 2025, page 34 / 227 25 / 99 while intraprediction generally refers to predicting the CU from previously encoded data of 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 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 or not.In some examples, the Video 200 encoder can predict the current CU using either one-way prediction or two-way prediction.

[0050] 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.

[0051] To perform intraprediction, the 200 video encoder can select a mode of Petition 870250089983, dated 02 / 10 / 2025, page 35 / 227 26 / 99 intraprediction 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 may 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 the Video Encoder 200 encodes CTUs and CUs in raster scan order (left to right, top to bottom).

[0052] 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.

[0053] AV1 includes two general techniques for encoding and decoding a block of video data encoding. The two general techniques are intraprediction (e.g., intraframe prediction or spatial prediction) and Petition 870250089983, dated 02 / 10 / 2025, page 36 / 227 27 / 99 interprediction (e.g., interframe prediction or temporal prediction). In the AV1 context, 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, 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. Video Encoder 200 determines the predicted values ​​generated from the reference samples based on the intraprediction mode.

[0054] After prediction, such as intraprediction or interprediction of a block, the Video Encoder 200 can calculate residual data for the block. Residual data, such as a residual block, represents sample-by-sample differences between the block and a prediction block for the block, formed using the corresponding prediction mode. The Video Encoder 200 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 Encoder 200 can apply a secondary transform after the first transform, such as a mode-dependent non-separable secondary transform. Petition 870250089983, dated 02 / 10 / 2025, page 37 / 227 28 / 99 (MDNSST - mode-dependent non-separable secondary transform), a signal-dependent transform, a Karhunen-Loeve transform (KLT - Karhunen-Loeve transform), or similar. The 200 video encoder produces transform coefficients after the application of one or more transforms.

[0055] As mentioned above, after any transforms to produce transform coefficients, the Video 200 encoder can perform quantization of the transform coefficients. Quantization generally refers to a process in which transform coefficients are quantized to possibly reduce the amount of data used to represent the transform coefficients, providing additional compression. By performing 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.

[0056] After quantization, the 200 video encoder can sweep the transform coefficients, producing a one-dimensional vector from the two-dimensional array that includes the quantized transform coefficients. The sweep can be designed to place higher-energy (and therefore lower-frequency) transform coefficients in front of the vector and lower-energy (and therefore lower-frequency) transform coefficients in front of the vector. Petition 870250089983, dated 02 / 10 / 2025, page 38 / 227 29 / 99 higher) at the rear of the vector. In some examples, the 200 video encoder may use a predefined scan 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 200 video encoder may perform an adaptive scan. After scanning the quantized transform coefficients to form the one-dimensional vector, the 200 video encoder may entropically encode the one-dimensional vector, for example, according to context-adaptive binary arithmetic coding (CABAC). The 200 video encoder may also entropically encode the values ​​for syntax elements that describe metadata associated with the encoded video data for use by the 300 video decoder in decoding the video data.

[0057] 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. The probability determination can be based on a context assigned to the symbol.

[0058] The 200 video encoder can additionally generate syntax data, such as block-based syntax data, image-based syntax data, and sequence-based syntax data, for the 300 video decoder, for example, in an image header, a block header, a slice header, or other data. Petition 870250089983, dated 02 / 10 / 2025, p. 39 / 227 30 / 99 syntax, such as a sequence parameter set (SPS), a picture parameter set (PPS), or a video parameter set (VPS). The 300 video decoder can similarly decode this syntax data to determine how to decode corresponding video data.

[0059] 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.

[0060] 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. Petition 870250089983, dated 02 / 10 / 2025, page 40 / 227 31 / 99

[0061] 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 (intraprediction 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.

[0062] 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 element storage. Petition 870250089983, dated 02 / 10 / 2025, page 41 / 227 32 / 99 syntax on storage device 112 for later retrieval by target device 116.

[0063] In a typical video encoder, the frame of the original video sequence is partitioned into rectangular regions or blocks, which are encoded in intramode (I-mode) or intermode. The blocks can be encoded using some type of transform coding, such as DCT coding. However, pure transform-based coding only reduces the correlation between pixels within a particular block, without considering the pixel correlation between blocks, and pure transform-based coding still produces relatively high bitrates for transmission. Current digital image coding standards may also exploit certain techniques that reduce the correlation of pixel values ​​between blocks.

[0064] In general, intermode-encoded blocks are predicted from a number of previously encoded and transmitted frames. The prediction information for a current block can be represented, for example, by a two-dimensional (2D) motion vector. For blocks encoded in mode I, the predicted block can be formed using spatial prediction from neighboring blocks already encoded within the same frame as the current block. The prediction error, for example, the difference between the current block being encoded and the predicted block, can be represented as a set of weighted basis functions of some discrete transform. The transform is typically performed on each block. The weights – for example, transform coefficients – can be subsequently Petition 870250089983, dated 02 / 10 / 2025, page 42 / 227 33 / 99 quantized. Quantization introduces a loss of information, and therefore, quantized transform coefficients may have less precision than the original transform coefficients.

[0065] Quantized transform coefficients, together with motion vectors and some control information, can form a complete encoded sequence representation and can be called syntax elements. Before transmission from a video encoder to a video decoder, all syntax elements can be entropically encoded in order to further reduce the number of bits required for their representation (e.g., the syntax elements).

[0066] In the video decoder, the current block in the current frame is obtained first by constructing the block prediction in the same way as in the video encoder and by adding the compressed prediction error to the prediction. The compressed prediction error can be found by weighting the transform basis functions using the quantized transform coefficients. The difference between the reconstructed frame and the original frame can be called the reconstruction error.

[0067] In the field of video encoding, it is common to apply filtering to improve the quality of a decoded video signal. A filter can be applied as a post-filter, where the filtered frame is not used for predicting future frames, or as a loop filter, where the filtered frame is used to predict future frame(s). A filter can be designed, for example, to minimize the error between the Petition 870250089983, dated 02 / 10 / 2025, page 43 / 227 34 / 99 original signal and the decoded filtered signal. Similar to the transform coefficients, the filter coefficients h(k,l) = — -K,...,K,l = -K,...K can be quantized, for example, as follows: c(k, F) = round(normFactor · h(k, 0), Equation (1) encoded and sent to the video decoder. The normFactor is usually equal to 2n. The larger the normFactor value, the more precise the quantization and the better the performance provided by the quantized coefficients c(k,Γ). On the other hand, larger values ​​produce c(k,Γ) coefficients that require more bits to transmit.

[0068] In the video decoder, the decoded filter coefficients c(k, Γ) are applied to the reconstructed image ( , ) as follows: KK yc(k, F)R(i + k,j + ΐ) , Equation (2) k=-K l=-K where i and j are the coordinates of the pixels within a frame. The filter coefficients can also be applied to the differences f (k,D between the sample to be filtered ( , ) and its neighboring samples: f(k, ) = R(i + k,j + l) — R(i,j). Equation (3)

[0069] In this case, the sample R(x, y) can be obtained by adding the resulting sum to the reconstructed sample ( , ). The differences (,) can be modified, for example, by applying clipping.

[0070] The adaptive loop filter (ALF) with block-based adaptation in VVC (see M. Petition 870250089983, dated 02 / 10 / 2025, page 44 / 227 35 / 99 Karczewicz et al., VVC in-loop filters, IEEE Trans. Circuits Syst. Video Technol., vol. 31, no. 10, pp. 3907-3925, October 2021) presents an example of an ALF filter. With such an ALF filter, filter adaptation at the sub-block or pixel level can be applied. Each MxM block can be categorized into one of 25 classes based on the block's directionality D and the quantized value of the activity A: C = 5D + A . Equation (4)

[0071] Each class can have its own filter assigned.

[0072] A Laplacian-based classifier can be used to derive the class for samples in a target block. A window covering the target block can be used to classify that particular target block. Activity and directionality are derived using values ​​of the horizontal, vertical, and two-diagonal gradients calculated using the 1-D Laplacian: Hkj = [2R(k,l) - R(k - 1,1) - R(k + 1, / )|, Vki = |2fí(k, 1) — R(k, l — 1) — R(k, l + 1)|, D 1ki = |2T?(k,1) — R(k — 1, l — 1) — R(k + 1, l + 1)|, D2ki = |2R(k, l) — R(k — 1, / + 1) — R(k + 1, l — 1)|. Equation (5)

[0073] The sums of the horizontal, vertical and two diagonal gradients within the window can be denoted, respectively, as g,, gv <gd1e 2.2- A direcionalidade pode ser determinada comparando = max(g, ,gv) = max(g i„g d2)Γh,vmin( dh ,9ν)’Γ11'd2min(g g d2) Equation (6) Petition 870250089983, dated 02 / 10 / 2025, p. 45 / 227 36 / 99 with a set of thresholds. Activity A can be derived by calculating a sum of ghe gve comparing activity A with the set of thresholds.

[0074] Before filtering, certain geometric transformations, such as rotation, diagonal and / or vertical inversion, can be applied to the pixels in the filter support region (e.g., pixels that are multiplied by filtered coefficients) depending on the orientation of the filtered pixel gradient. For example, the 300 video decoder can apply such transformations. These transformations increase the similarity between different regions within the image, for example, their directionality. This can reduce the number of filters that have to be sent to the 300 video decoder and thus reduce the number of bits needed to represent the filters, or additionally or alternatively, reduce the reconstruction error. Applying the transformations to the filter support region can be equivalent to applying the transformations directly to the filter coefficients.

[0075] To reduce the number of bits needed to represent the filter coefficients, different classes can be combined. Information about which classes should be combined can be provided by video encoder 200 to video decoder 300 by sending an i_C index for each of the 25 classes. Classes with the same i_C index can share the same filter.

[0076] The ALF coefficients of reference images can be stored and reused. Petition 870250089983, dated 02 / 10 / 2025, page 46 / 227 37 / 99 as ALF coefficients of a current image. For the current image, video encoder 200 can use the stored ALF coefficients for the reference images and divert the ALF coefficient signaling to the video decoder. In this case, video encoder 200 can signal only one index for one of the reference images, and the stored ALF coefficients of the indicated reference image can simply be inherited for the current image.

[0077] Y.-J. Chang, C.-C. Chen, J. Chen, J. Dong, HE Egilmez, N. Hu, H. Huang, M. Karczewicz, J. Li, B. Ray, K. Reuze, V. Seregin, N. Shlyakhov, L. Pham Van, H. Wang, Y. Zhang, Z. Zhang, Compression efficiency methods beyond VVC document JVET-U0100, 21st JVET Meeting, January 2021 (hereinafter Chang et al.), discloses the use of three different classifiers (C0, Ci and C2) and three different sets of filters (F0, Fi and F2). Sets F0 and Fi contain fixed filters, with coefficients trained for classifiers C0 and C1. The filter coefficients in F2 are signaled. For example, video encoder 200 can signal filter coefficients in F2 to video decoder 300. Which filter should be used from a set Fi for a given sample is decided by a class Ci assigned to the given sample using the classifier Ci.All 3 classifiers are based on the Laplacian and differ from the classifier used in VVC by using a window with a different number of samples and a number of thresholds to determine activity and directionality.

[0078] In ECM-9.0, a third fixed filter, which can be called a Gaussian filter, can be applied. Petition 870250089983, dated 02 / 10 / 2025, page 47 / 227 38 / 99 to the samples before applying a deblocking filter. The indicated filter can also be applied to the Gaussian filter outlet.

[0079] To further improve coding efficiency, this disclosure proposes the following techniques. First, a difference-based classifier is described. Second, a multi-attribute-based classifier is described. Such a classifier can be applied to fixed and signed filters. Third, concatenated filtering is described. When concatenated filtering is applied, the output sample values ​​of one filter can be used as input sample values ​​of another filter. Fourth, a filter is described for application to sample values ​​at multiple reconstruction stages. When sample values ​​from one stage are unavailable and / or unused, sample values ​​from another stage can be used. Fifth, when a filter is applied to sample values ​​from only one stage, difference derivation of the input samples can be disabled.These techniques described can be applied individually or in any combination. The Video Encoder 200 or the Video Decoder 300 can employ such techniques.

[0080] An example of a difference-based classifier will be described below. For a target block in a reconstructed image, to derive the class index, video encoder 200 or video decoder 300 can calculate a value. Petition 870250089983, dated 02 / 10 / 2025, page 48 / 227 39 / 99

[0081] For example, the m-value could be the standard deviation, variance, median, or mean of a pXq window that may include the target block. In another example, the m-value could be a sample value obtained from the window.

[0082] The difference between each sample value and can be calculated within a window that may include the target block. This window may be the same window X or a different window from the window used to determine the value m. For example, video encoder 200 or video decoder 300 may, for a first sample within the window, determine the difference between the first sample value and the value of m. Video encoder 200 or video decoder 300 may, for a second sample within the window, determine the difference between the second sample value and the value of m. Video encoder 200 or video decoder 300 may continue such difference determination for each sample within the window.

[0083] In one example, a window size can be different for different filters, such as different fixed filters. In some examples, when a Laplacian classifier is applied, the same sample window can be used for the difference-based classifier.

[0084] Another value v can be calculated based on the derived differences. The value can be a sum of the absolute differences, or a sum of the squares of the differences, or the square root of a sum of the squares of the differences, or any other combination based on the Petition 870250089983, dated 02 / 10 / 2025, page 49 / 227 40 / 99 derived differences. For example, video encoder 200 or video decoder 300 can determine the value v.

[0085] The Class C index can be derived from the value v. For example, the 200 video encoder or the 300 video decoder can determine the Class C index based on the value v. In some examples, the value v can be further quantified v by a scaling factor before the class index is derived. For example, the 200 video encoder or the 300 video decoder can determine the Class C index after applying a scaling factor.

[0086] In one example, the scaling factor can be derived based on the activity value, window size, and / or bit depth of a sample value in the window. In one example, the activity value A is derived as a sum of the horizontal and vertical gradient values ​​calculated using the 1-D Laplacian. For example, video encoder 200 or video decoder 300 can determine the scaling factor and / or the activity value.

[0087] The quantized value v can be further clipped to be within the allowed class index range. The clipped value can be used as the class index. For example, video encoder 200 or video decoder 300 can clip the quantized value v.

[0088] For example, (%,y) can denote the coordinates of the samples in the pXq window in an image. Petition 870250089983, dated 02 / 10 / 2025, page 50 / 227 41 / 99 reconstructed. The average value m of the pxq window can be calculated as Σm = ------p * q Equation (7) The 200 video encoder or the 300 video decoder can determine the average value.

[0089] The v value can be calculated as the square root of a sum of the squares of the differences between each sample and in the pxq window. (R(x,y) — m)2 Equation (8) The video encoder 200 or the video decoder 300 can determine the value.

[0090] Based on a classifier based on Laplacian, the activity value of the current block may be .

[0091] The class index can be derived as / v C = max (0, min ^-,M — Equation (9) where the scaling factor arrangement s[] = {2, 2, 4, 4, 8, 8, 8, 8, 16, 16, 16, 16, 32, 32, 32, 32} and the number of classes M = 8. The 200 video encoder or the 300 video decoder can determine the class index.

[0092] The scaling factor can be further scaled based on the bit depth of a sample. In one example, s[4] can be further modified by multiplying 2bit of Pth~10re the class index Petition 870250089983, dated 02 / 10 / 2025, page 51 / 227 42 / 99 C = max (0, min / v V[yl] * ^p* q * 2(bitdepth-10) .M Equation (10)

[0093] In an example, v jp*q Equation (11) can be derived by accessing the sample values ​​in one pass. As Equation (12)

[0094] For example, if r = p*q, the variance can be calculated as Σx^RÇx.y) - m)2= Σx,y R(x>y22- 2m * Σx,yR(xy) + Σx,y^2_ Σ,S(x,y)2- 2 á * ΣwR(xy) + r * (Σ / fr y ríy vi2(ΣxyR^ , .2, 2^2 =Σx,yR^x'y)r = r · Σx,yR(xy)2- (Σx,yR(xy))2 Equation (13)

[0095] Therefore, when the value v is calculated as the square root of a sum of the squares of the differences between each sample in the pXq window, the sum of the sample values ​​and the sum of the squares of the sample values ​​in that window can be calculated to derive v and additionally the class index C. For example, video encoder 200 or video decoder 300 can derive v and the class index . Petition 870250089983, dated 02 / 10 / 2025, page 52 / 227 43 / 99

[0096] When the value v is calculated, in some examples of the techniques in this disclosure, the video encoder 200 or the video decoder 300 may introduce an approximation of r (called r') into the calculation. The purpose of using τ' may be to allow the software / hardware design of the technology to be achieved without a division. In other words, the division ( / r) can be replaced by bit shifting. For example, the video encoder 200 or the video decoder 300 may shift bits instead of conducting a division operation of ( / r).

[0097] As an example, for an implementation that uses p = 10, q = 10. The exact value of r = 10 * 10 = 100. The r2 in the equation can be replaced by r'2 = 1282 - :83. In this case, the equation becomes: r ·Σ%^(ν)2-(Σζ,y / ?O,y))2=13'(^Σx,yR^yy-^x,yR(x,ytf) r'28 · 1282 Equation (14) Where the division operation can be implemented with bit shifting: i 13· \ (rZ \ x ,y R (x, y)2 X ^))) >> 17 Equation (15) Furthermore, the arithmetic operations involved in calculating v can be divided into multiple stages to reduce the number of bits needed for intermediate values. For example, the approximation shown in the previous example can be modified to 13-(r 'Σx,y R(x,y )2- (Σx,y R(x,y ))2) 8-1282 for: Petition 870250089983, dated 02 / 10 / 2025, page 53 / 227 44 / 99Σx,y^U,y)28 (Σ,,yBfc / >)2)^ Equation (16) 1282 Equation (17)13\ \ (γ·Σ, R (x, y)2(Σrjy»3j » 14 Equation (18)

[0098] An example of a multi-attribute-based classifier will be discussed below. In this technique, the final class index can be derived based on multiple (i.e., a plurality of) derived individual class indices. A mapping process can be introduced to derive the final class index from the combination of individual class indices. For example, video encoder 200 or video decoder 300 can determine the final class index based on a plurality of derived individual class indices.

[0099] In one example, the mapping process can be represented as follows. For example, Ci, with i = 0...N-1, can denote the i-th individual classifier and Mi, with i = 0...N-1, can denote the total number of classes of the i-th individual classifier. For a Petition 870250089983, dated 02 / 10 / 2025, page 54 / 227 45 / 99 given sample, Q can denote the class index derived from the i-th classifier Ci with i = 0...N-1. The class C index can be derived as n—1 (0\c=ΣK nM í=0 \ 7=t-1 / Equation (19) For example, video encoder 200 or video decoder 300 can determine the class C index.

[0100] The derived class index C can be additionally mapped to the final class index. For example, two or more class index C values ​​can be mapped to the same final class index indicating the same filter to be used.

[0101] In another example of a two-attribute-based classifier, C0 and C1 can denote the class index derived from the difference-based classifier and a Laplacian-based classifier, respectively, described earlier. The final class index can be derived as C = C0* M+ + Q Equation (20) where Mi is the total number of classes in the classifier Ci.

[0102] Concatenated filtering will now be described. When multiple filters are applied, one filter can be applied to the output of one or more other filters. In some examples, a classifier can be applied to the output sample values ​​of another filter. For example, video encoder 200 or video decoder 300. Petition 870250089983, dated 02 / 10 / 2025, page 55 / 227 46 / 99 can apply a filter and / or a classifier to the output of another filter.

[0103] For example, in Chang et al., two fixed filters can both be applied to input sample values ​​into the ALF. In one example, a fixed filter can be applied to the output sample values ​​of another fixed filter. The outputs, after applying both filters, can be used as an input for the ALF filtering.

[0104] In another example, a fixed filter can be applied to multiple input types. In one example, the output sample values ​​from one or more other fixed filters can be used as one input, and the sample values ​​before the ALF (e.g., samples before an unblocking filter, reconstructed residual samples, or predictors) can be used as another input. In some examples, a geometric transposition can be applied to one input type. In some examples, a geometric transposition type can be applied to one input type. In some examples, a geometric transposition type can be the same for all input types. In some examples, the geometric transposition type can be determined by one input type, and the determined transposition can be applied to other (or all) input types. For example, video encoder 200 or video decoder 300 can apply a geometric transposition to the input data.

[0105] A class index for each fixed filter can be derived from the reconstructed samples (e.g., input to the ALF). In another example, an index of Petition 870250089983, dated 02 / 10 / 2025, page 56 / 227 A 47 / 99 class for a fixed filter can be derived from the output sample values ​​after applying another fixed filter.

[0106] An example of a filter applied to reconstructed residual sample values ​​will be described below. A filter can be applied simultaneously to sample inputs obtained at different stages of the reconstruction process. In other words, the Video Encoder 200 or Video Decoder 300 can apply a filter to samples at one stage of the reconstruction process and reapply the same filter to samples at another stage of the reconstruction process. For example, the Video Encoder 200 or Video Decoder 300 can apply a filter to sample values ​​before and after some of the loop filters, such as an unblocking filter, a bilateral filter, a sample adaptive offset (SAO) filter, an intercomponent SAO, and / or similar filters.

[0107] In another example, the sample values ​​to which a filter is applied can be obtained after intraprediction or interprediction. In another example, the sample values ​​to which the filter is applied can be obtained after the inverse transform, which is the reconstructed residual.

[0108] If an input from some reconstruction stage is unavailable or unused, that input may be replaced by another input for filtering purposes. For example, in a sense, this can be seen as such input samples being used twice in filtering. Clipping values ​​or clipping indices Petition 870250089983, dated 02 / 10 / 2025, page 57 / 227 48 / 99 applied to the same samples can be averaged (first) before the filtering process. In another example, when the input is unavailable or unused, then the filter portion corresponding to that input is not applied, or alternatively, that filter portion can be applied to a zero input.

[0109] Disabling a difference derivation for a single input will be discussed below. In some cases, a filter can be applied to the difference between samples at different stages; however, when only one type of input (e.g., only residual input) is used, then a plurality of input stages is replaced by the single input type for filtering, and when the difference is derived, it may produce a zero difference, since the central input is subtracted from the central input itself. Such a calculation can be a waste of processing resources.

[0110] In this case, video encoder 200 or video decoder 300 can use zero as the difference, for example, without performing the calculation. For example, video encoder 200 or video decoder 300 can dispense with determining a respective difference between a center sample value of the target block within the second window and the first value, and set the respective difference for the center sample to equal 0. Alternatively, the difference may not be applied and only the residual input may be used without deriving the difference. In another example, a residual input multiplied by some factor may be used (in one example, the factor may be Petition 870250089983, dated 02 / 10 / 2025, page 58 / 227 49 / 99 being equal to -1, in the previous sample (or in another example), the factor could be equal to 1).

[0111] Figure 2 is a block diagram illustrating an example Video 200 encoder that can perform the techniques of this disclosure. Figure 2 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.

[0112] In the example in Figure 2, 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 entropy encoding unit 220. Any or all of the following are included: 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 entropy encoding unit 220. Petition 870250089983, dated 02 / 10 / 2025, page 59 / 227 The 50 / 99 reconstruction unit 214, the filter unit 216, the DPB unit 218, and the entropic encoding unit 220 can be implemented in one or more processors or in a set of processing circuits. For example, the video encoder units 200 can be implemented as one or more circuits or logic elements as part of the hardware circuit assembly or as part of a processor, ASIC, or FPGA. Furthermore, the video encoder 200 can include additional or alternative processors or sets of processing circuits to perform these and other functions.

[0113] 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 random access memory (MRAM), resistive RAM (RRAM), or other types of memory devices.Video data memory 230 and DPB 218 can be provided by the same memory device or by separate memory devices. In several instances, video data memory 230 may be contained within... Petition 870250089983, dated 02 / 10 / 2025, page 60 / 227 51 / 99 of the chip with other components of the 200 video encoder, as illustrated, or off the chip in relation to the components.

[0114] 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.

[0115] The various units in Figure 2 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 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 Petition 870250089983, dated 02 / 10 / 2025, page 61 / 227 52 / 99 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.

[0116] 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 such instructions.

[0117] 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 202. The video data in video data memory 230 can be raw video data that needs to be encoded. Petition 870250089983, dated 02 / 10 / 2025, page 62 / 227 53 / 99

[0118] 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.

[0119] 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.

[0120] 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 superblock structure, or the quadtree structure described above. As Petition 870250089983, dated 02 / 10 / 2025, page 63 / 227 54 / 99 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.

[0121] 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 870250089983, dated 02 / 10 / 2025, page 64 / 227 55 / 99

[0122] 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.

[0123] 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 encoding blocks. Petition 870250089983, dated 02 / 10 / 2025, page 65 / 227 56 / 99 video data (e.g., both luma and chroma encoding blocks) using translational motion compensation, affine motion compensation, overlapped block motion compensation (OBMC), and / or composite inter / intraprediction.

[0124] As another example, for intraprediction or intraprediction coding, the intraprediction unit 226 can generate the prediction block from samples neighboring the current block. For example, for directional modes, the intraprediction unit 226 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 intraprediction unit 226 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.

[0125] 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, luma-chroma-from-luma (CFL) prediction, intra-block copy (IBC), and / or color palette mode. The mode selection unit 202 may include additional functional units to perform video prediction according to other prediction modes. Petition 870250089983, dated 02 / 10 / 2025, page 66 / 227 57 / 99

[0126] Mode selection unit 202 provides the prediction block to residual generation unit 204. Residual generation unit 204 receives a raw, unencoded version of the current block from video data memory 230 and the prediction block from mode selection unit 202. Residual generation unit 204 calculates sample-by-sample differences between the current block and the prediction block. The resulting sample-by-sample differences define a residual block for the current block. In some examples, 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, residual generation unit 204 may be formed using one or more subtractor circuits that perform binary subtraction.

[0127] 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 encoder Petition 870250089983, dated 02 / 10 / 2025, p. 67 / 227 The 58 / 99 video 200 and the video 300 decoder can also support asymmetric partitioning for PU sizes of 2NxnU, 2NxnD, nLx2N and nRx2N for interprediction.

[0128] In instances where the 202 mode selection unit does not further partition a CU into PUs, each CU can be associated with a luma encoding block and 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.

[0129] 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.

[0130] 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 Petition 870250089983, dated 02 / 10 / 2025, page 68 / 227 59 / 99 current block. To generate the residual block, the residual generation unit 204 calculates the sample-by-sample differences between the prediction block and the current block.

[0131] The transform processing unit 206 applies 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 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.

[0132] 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 Petition 870250089983, dated 02 / 10 / 2025, page 69 / 227 60 / 99 horizontal / vertical transform combination that may include a discrete cosine transform (DCT), an asymmetric discrete sine transform (ADST), an inverted ADST (e.g., an ADST in reverse order), and an identity 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.

[0133] 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.

[0134] 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, Petition 870250089983, dated 02 / 10 / 2025, page 70 / 227 61 / 99 respectively, to reconstruct a residual block from the transform coefficient block. 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.

[0135] 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. Filter unit 216 operations can be skipped in some instances. In some instances, filter unit 216 can perform adaptive filtering techniques as disclosed.

[0136] 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 Petition 870250089983, dated 02 / 10 / 2025, page 71 / 227 62 / 99 loop restoration filter, which is applied after the CDEF, and may include a separable symmetric normalized Wiener filter or a dual self-guided filter.

[0137] 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.

[0138] 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 originating 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) originating from the Petition 870250089983, dated 02 / 10 / 2025, page 72 / 227 63 / 99 mode selection unit 202. The entropy coding unit 220 can perform one or more entropy coding operations on syntax elements, which are another example of video data, in order to generate entropically encoded data. For example, the entropy coding unit 220 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 entropy coding operation on the data.In some examples, the 220 entropic encoding unit can operate in bypass mode, where syntax elements are not entropically encoded.

[0139] 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.

[0140] 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 Petition 870250089983, dated 02 / 10 / 2025, page 73 / 227 64 / 99 elements and a context (e.g., probability model) includes a set of N probabilities. The 220 entropic encoding unit can store the probabilities as n-bit cumulative distribution functions (CDFs) (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.

[0141] 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.

[0142] In some examples, the operations performed on a luma coding block do not need to 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. Petition 870250089983, dated 02 / 10 / 2025, page 74 / 227 65 / 99 for the luma encoding block and for the chroma encoding blocks.

[0143] Video encoder 200 represents an example of a device configured to encode video data that includes one or more memories configured to store video data and one or more processing units implemented in a circuit set and configured to determine a first value associated with a first window, the first window including a target block of video data; determine a respective difference between each sample value within a second window and the first value, the second window including the target block, wherein the first window and the second window are the same window or different windows; determine a second value based on the respective differences; determine a Laplacian activity value of the target block, the second window including the target block, wherein the first window and the second window are the same window or different windows;Determine a class index based on the second value and the activity value of the Laplacian; and encode the target block based on the class index.

[0144] The 200 video encoder represents an example of a device configured to encode video data that includes one or more memories configured to store video data and one or more processing units implemented in a circuit set and configured to determine a value of a first window, the first window including a target block of video data; determine a respective difference between each value of Petition 870250089983, dated 02 / 10 / 2025, page 75 / 227 66 / 99 sample the target block within a second window and the value from the first window; determine a value based on the respective differences; determine a class index based on the value based on the respective differences; and encode the target block based on the class index.

[0145] The 200 video encoder also represents an example of a device configured to encode video data that includes one or more memories configured to store video data and one or more processing units implemented in a circuit set and configured to: determine a first class index for the video data; determine a second class index for the video data; determine a final class index based on the first class index and the second class index; and encode the video data based on the final class index.

[0146] Video encoder 200 represents an example of a device configured to encode video data that includes one or more memories configured to store video data and one or more processing units implemented in a circuit set and configured to: apply a first filter to the video data to generate first output samples; apply at least one of a second filter or classifier to the first output samples; and encode the video data based on the application of at least one of the second filter or classifier.

[0147] The 200 video encoder also represents an example of a device configured for Petition 870250089983, dated 02 / 10 / 2025, page 76 / 227 67 / 99 Encoding video data includes one or more memories configured to store video data and one or more processing units implemented in a circuit set and configured to: apply a filter to the video data from a first stage of video reconstruction; apply the filter to the video data from a second stage of video reconstruction; and encode the video data based on the filter applications.

[0148] Video encoder 200 represents an example of a device configured to encode video data that includes one or more memories configured to store video data and one or more processing units implemented in a circuit set and configured to: determine that only one input type is used in different reconstruction stages; based only on the single input type being used in the different reconstruction stages, set a difference value to zero without performing a subtraction or not determining the difference value; and encode the video data based on setting the difference value to zero without performing the subtraction or not determining the difference value.

[0149] Figure 3 is a block diagram illustrating an example 300 video decoder that can perform the techniques of this disclosure. Figure 3 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 Petition 870250089983, dated 02 / 10 / 2025, page 77 / 227 68 / 99 present disclosure may be carried out by video encoding devices that are configured for other video encoding standards.

[0150] In the example in Figure 3, 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 in a set of processing circuits.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.

[0151] Prediction processing unit 304 includes a motion compensation unit 316 and an intraprediction unit 318. Prediction processing unit 304 may include additional units to perform Petition 870250089983, dated 02 / 10 / 2025, page 78 / 227 69 / 99 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 similar. In other examples, the video decoder 300 may include more, fewer, or different functional components.

[0152] When operating in accordance with AV1, the motion compensation unit 316 can be configured to decode video data encoding blocks (e.g., both luma and chroma encoding blocks) using translational motion compensation, affine motion compensation, OBMC, and / or composite inter / intraprediction, as described above. The intraprediction unit 318 can be configured to decode video data encoding blocks (e.g., both luma and chroma encoding blocks) using directional intraprediction, non-directional intraprediction, recursive filter intraprediction, CFL, IBC, and / or color palette mode, as described above.

[0153] The CPB 320 memory can store video data, such as an encoded video bitstream, to be decoded by the video decoder components 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) from an encoded video bitstream. Petition 870250089983, dated 02 / 10 / 2025, page 79 / 227 70 / 99 Furthermore, the CPB 320 memory can store video data in addition to the syntax elements of an encoded image, such as temporary data representing outputs from the various units of the 300 video decoder. The DPB 314 generally stores decoded images, which the 300 video decoder can output and / or use as reference video data when decoding subsequent data or images from the encoded video bitstream. The CPB 320 memory and the DPB 314 can be formed by any of several memory devices, such as DRAM, including SDRAM, MRAM, RRAM, or other types of memory devices. The CPB 320 memory and the DPB 314 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 the components.

[0154] Additionally or alternatively, in some examples, the video decoder 300 can retrieve encoded video data from memory 120 (Figure 1). That is, memory 120 can store data, as discussed above, with CPB memory 320. Similarly, memory 120 can store instructions to be executed by the 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.

[0155] The various units shown in Figure 3 are illustrated to aid in understanding the operations performed by the 300 video decoder. The units can Petition 870250089983, dated 02 / 10 / 2025, page 80 / 227 71 / 99 can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Similar to Figure 2, 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 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, in general, immutable.In some examples, one or more of the units may be distinct circuit blocks (fixed or programmable function), and in some examples, one or more of the units may be integrated circuits.

[0156] The 300 video decoder may include ALUs, EFUs, digital circuits, analog circuits, and / or programmable cores, formed from programmable circuits. In examples where the operations of the 300 video decoder are performed by software running on the programmable circuits, the on-chip memory or off-chip memory may store instructions (e.g., object code) from the software that the 300 video decoder receives and executes. Petition 870250089983, dated 02 / 10 / 2025, page 81 / 227 72 / 99

[0157] 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.

[0158] 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).

[0159] The entropic decoding unit 302 can entropically decode syntax elements that define quantized transform coefficients from 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 quantization degree and, similarly, an inverse quantization degree for the inverse quantization unit 306 to 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. Petition 870250089983, dated 02 / 10 / 2025, page 82 / 227 73 / 99 inverse quantization unit 306 can thus form a block of transform coefficients that includes transform coefficients.

[0160] 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.

[0161] In addition, the 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, the motion compensation unit 316 may generate the prediction block. In this case, the syntax elements of the prediction information may indicate a reference image in DPB 314 from which a reference block can be retrieved, 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 compensation unit of Petition 870250089983, dated 02 / 10 / 2025, page 83 / 227 74 / 99 motion 316 can, in general, perform the interpretation process in a manner that is substantially similar to that described in relation to motion compensation unit 224 (Figure 2).

[0162] 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 2). The intraprediction unit 318 can retrieve data from samples neighboring the current DPB block 314.

[0163] 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.

[0164] 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 reconstructed blocks. Filter unit 312 operations are not necessarily performed in all instances. In some instances, filter unit 312 can perform the adaptive filtering techniques of this disclosure. Petition 870250089983, dated 02 / 10 / 2025, page 84 / 227 75 / 99

[0165] 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.

[0166] 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 determine a first value associated with a first window, the first window including a target block of video data; determine a respective difference between each sample value within a second window and the first value, the second window including the target block, where the first window and the second window are the same window or different windows; determine a second value based on the respective differences; determine an activity value of the Petition 870250089983, dated 02 / 10 / 2025, page 85 / 227 76 / 99 Laplacian of the target block, the second window including the target block, where the first window and the second window are the same window or different windows; determine a class index based on the second value and the activity value of the Laplacian; and decode the target block based on the class index.

[0167] 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 determine a value of a first window, the first window including a target block of video data; determine a respective difference between each sample value of the target block within a second window and the value of the first window; determine a value based on the respective differences; determine a class index based on the value based on the respective differences; and decode the target block based on the class index.

[0168] The 300 video decoder also represents an example of a device configured to decode video data that includes a memory configured to store video data and one or more processing units implemented in a circuit set and configured to: determine a first class index for the video data; determine a second class index for the video data; determine a final class index based on the first and second class indexes. Petition 870250089983, dated 02 / 10 / 2025, page 86 / 227 77 / 99 class index; and decode the video data based on the final class index.

[0169] The 300 video decoder also represents an example of a device configured to decode video data that includes a memory configured to store video data and one or more processing units implemented in a circuit set and configured to: apply a first filter to the video data to generate first output samples; apply at least one of a second filter or classifier to the first output samples; and decode the video data based on the application of at least one of the second filter or classifier.

[0170] The 300 video decoder also represents an example of a device configured to decode video data that includes a memory configured to store video data and one or more processing units implemented in a circuit set and configured to: apply a filter to the video data from a first stage of video reconstruction; apply the filter to the video data from a second stage of video reconstruction; and decode the video data based on the filter applications.

[0171] The 300 video decoder also represents an example of a device configured to decode video data that includes a memory configured to store video data and one or more processing units implemented in a circuit set and configured to: determine that only one type of input Petition 870250089983, dated 02 / 10 / 2025, page 87 / 227 78 / 99 is used in different stages of reconstruction; based only on the single input type being used in the different stages of reconstruction, setting a difference value to zero without performing a subtraction or not determining the difference value; and decoding the video data based on setting the difference value to zero without performing the subtraction or not determining the difference value.

[0172] Figure 4 is a flowchart illustrating example adaptive video filtering techniques according to one or more aspects of this disclosure. The 300 video decoder can determine a first value associated with a first window, the first window including a target block of video data (400). For example, the 300 video decoder can determine a first value as being a standard deviation, a variance, a median, or a mean value of the samples in the first pXq window. In some examples, the 300 video decoder can determine that the first value can be the mean of the sample values ​​in the first window.

[0173] The 300 video decoder can determine a respective difference between each sample value within a second window and the first value, the second window including the target block, where the first window and the second window are the same window or different windows (402). For example, the 300 video decoder can determine a difference between a sample value of each sample in the second window and the first value m. In this way, the 300 video decoder can generate a plurality of differences. Petition 870250089983, dated 02 / 10 / 2025, page 88 / 227 79 / 99

[0174] The 300 video decoder can determine a second value based on the respective differences (404). For example, the 300 video decoder can determine a second value. The second value can be a sum of the absolute differences, or a sum of the squares of the differences, or the square root of a sum of the squares of the differences of the respective differences. In some examples, the 300 video decoder can determine the second value based on the square root of a sum of the squares of the differences of the respective differences.

[0175] Video decoder 300 can determine an activity value of the target block Laplacian (406). For example, video decoder 300 can determine an activity value, as discussed above.

[0176] The 300 video decoder can determine a class index based on the second value and the activity value of the Laplacian (408). In some examples, the 300 video decoder can determine the class index by scaling the second value using the activity value of the Laplacian. In some examples, the 300 video decoder can determine the class index by determining a first class index based on the second value, determining a second class index based on the activity value of the Laplacian, and determining the class index based on the first and second class indices.

[0177] The 300 video decoder can decode the target block based on the class index (410). Petition 870250089983, dated 02 / 10 / 2025, page 89 / 227 80 / 99 For example, the 300 video decoder can use the class index to determine an adaptive filter to apply to the target block, and then apply the determined adaptive filter to the target block.

[0178] In some examples, the first value includes an average of the sample values ​​within the first window. In some examples, the second value includes a square root of a sum of the squares of the differences of the respective differences. In some examples, the 300 video decoder may, as part of determining the second value, apply a bit shift operation to a numerator of the square root of the sum of the squares of the differences of the respective differences as an approximation of a division operation.

[0179] In some examples, as part of class index determination, the 300 video decoder may determine a scaling factor based on the Laplacian activity value. The 300 video decoder may apply the scaling factor to the second value to generate a second scaled value. The 300 video decoder may determine the class index based on the second scaled value.

[0180] In some examples, the class index is a third class index. In some examples, as part of determining the third class index, the 300 video decoder may determine a first class index based on the second value. The 300 video decoder may determine a second class index based on the Laplacian activity value. The 300 video decoder may Petition 870250089983, dated 02 / 10 / 2025, page 90 / 227 81 / 99 determine the third class index based on the first class index and the second class index.

[0181] In some examples, as part of determining the Laplacian activity value of the target block, the 300 video decoder can calculate a sum of horizontal and vertical gradient values ​​using a 1-D Laplacian transform.

[0182] In some examples, the 300 video decoder may dispense with determining a respective difference between a target block center sample value within the second window and the first value. In such examples, the 300 video decoder may set the respective difference for the center sample to 0.

[0183] In some instances, as part of decoding the target block based on the class index, the 300 video decoder may determine at least one of a first filter or a second filter based on the class index. The 300 video decoder may apply the first filter to samples of the target block to generate first output samples. The 300 video decoder may apply a second filter to the first output samples to generate second output samples. The 300 video decoder may decode the second output samples. In some instances, the 300 video decoder may determine that at least some of a plurality of input samples for one of the first filters or the second filter are unavailable. The 300 video decoder may, based on at least some of the plurality of input samples for one of the first filters or the second filter Petition 870250089983, dated 02 / 10 / 2025, page 91 / 227 If 82 / 99 are unavailable, replace at least some of the unavailable input sample plurality with reconstructed residual samples to generate a modified input sample plurality. The 300 video decoder can apply either the first filter or the second filter to the modified input sample plurality.

[0184] In some examples, the 300 video decoder can average the clipping indices associated with the plurality of input samples. The 300 video decoder can, before applying the filter, clip the input samples based on an average of the clipping indices.

[0185] In some examples, the target block includes a first target block. In some examples, the 300 video decoder may determine that only one input type (e.g., a residual input) is used in different reconstruction stages for a second target block of the video data. In some examples, the 300 video decoder may, based solely on the single input type being used in the different reconstruction stages for the second target block, set a difference value to zero without performing a subtraction or not determining the difference value. In some examples, the 300 video decoder may decode the second target block based on setting the difference value to zero without performing the subtraction or not determining the difference value.

[0186] Figure 5 is a flowchart illustrating an example method for coding a current block accordingly. Petition 870250089983, dated 02 / 10 / 2025, page 92 / 227 83 / 99 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 2), it should be understood that other devices may be configured to perform a method similar to that of Figure 5.

[0187] 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 or after scanning, 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).

[0188] Figure 6 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 Petition 870250089983, dated 02 / 10 / 2025, page 93 / 227 84 / 99 and 3), it should be understood that other devices can be configured to perform a method similar to that in Figure 6.

[0189] 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 intraprediction 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). The video decoder 300 can apply the adaptive filtering techniques of this disclosure when decoding the current block. Petition 870250089983, dated 02 / 10 / 2025, page 94 / 227 85 / 99

[0190] The following numbered clauses illustrate one or more aspects of the techniques and devices described in this disclosure.

[0191] This disclosure includes the following non-limiting clauses.

[0192] Clause 1A. A method for encoding video data comprising: determining a value from a first window, the first window including a target block of video data; determining a respective difference between each sample value of the target block within a second window and the value from the first window; determining a value based on the respective differences; determining a class index based on the value based on the respective differences; and encoding the target block based on the class index.

[0193] Clause 2A. The method of clause 1A, wherein the value of the first window comprises a standard deviation, variance, median or mean of the sample values ​​within the first window or a sample value within the first window.

[0194] Clause 3A. The method of clause 1A or clause 2A, where the first window and the second window are the same.

[0195] Clause 4A. The method of clause 1A or clause 2A, where the first window and the second window are different.

[0196] Clause 4.1A. The method of any of clauses 1 to 4A, wherein at least one of a first window size or a second window size is based on a fixed filter applied. Petition 870250089983, dated 02 / 10 / 2025, page 95 / 227 86 / 99

[0197] Clause 5A. The method of any of clauses 1A to 4.1A, wherein the value based on the respective differences comprises a sum of differences of the differences, a sum of squares of differences of the respective differences or a square root of a sum of squares of differences of the respective differences.

[0198] Clause 6A. The method of any of clauses 1 to 5A, wherein the determination of the class index based on the value based on the respective differences comprises applying a scaling factor to the value based on the respective differences.

[0199] Clause 7A. The method of clause 6A, which further comprises determining the scaling factor based on at least one of an activity value, the window size of the first window or the window size of the second window.

[0200] Clause 8A. The method of clause 7A, in which the activity value comprises a sum of the values ​​of the horizontal and vertical gradients calculated using a 1-D Laplacian.

[0201] Clause 9A. The method of any of clauses 6A to 8A, which additionally comprises cutting the scaling factor.

[0202] Clause 10A. A method for encoding video data comprising: determining a first class index for the video data; determining a second class index for the video data; determining a final class index based on the first class index and the Petition 870250089983, dated 02 / 10 / 2025, page 96 / 227 87 / 99 second class index; and encode the video data based on the final class index.

[0203] Clause 11A. The method of clause 10A, in which the determination of the final class index comprises mapping the first class index and the second class index to the same final class index.

[0204] Clause 12A. A method for encoding video data comprising: applying a first filter to the video data to generate first output samples; applying at least one of a second filter or classifier to the first output samples; and encoding the video data based on the application of at least one of the second filter or classifier.

[0205] Clause 13A. The method of clause 12A, where the first filter and the second filter are fixed filters.

[0206] Clause 14A. The method of clause 13A, wherein the second filter is applied to the first output samples to generate second output samples, the method further comprising applying an adaptive linear filter to the second output samples.

[0207] Clause 15A. The method of any of clauses 12A to 14A, wherein the input to the second filter comprises the first output samples and the samples from a third filter.

[0208] Clause 16A. The method of clause 15A, wherein the third filter comprises an unblocking filter.

[0209] Clause 16.1A. The method of any of clauses 12A to 16A, which additionally comprises applying a geometric transposition to at least one of an input Petition 870250089983, dated 02 / 10 / 2025, page 97 / 227 88 / 99 for the first filter, one input for the second filter, or one input for the third filter.

[0210] Clause 17A. The method of clause 13A, which further comprises determining a class index for each fixed filter based on reconstructed samples or output samples from one of the first or second filters.

[0211] Clause 18A. A method for encoding video data comprising: applying a filter to the video data in a first stage of video reconstruction; applying the filter to the video data in a second stage of video reconstruction; and encoding the video data based on the filter applications.

[0212] Clause 19A. The method of clause 18A, wherein the filter comprises a first filter and wherein the application of the first filter to the video data of the first stage of video reconstruction comprises applying the first filter to the sample values ​​before applying a second filter, and the application of the first filter to the video data of the second stage of video reconstruction comprises applying the first filter to the sample values ​​after applying the second filter.

[0213] Clause 20A. A method of clause 19A, wherein the second filter comprises a loop filter.

[0214] Clause 21A. The method of clause 20A, wherein the loop filter comprises at least one of an unblocking filter, a bilateral filter, a SAO or an intercomponent SAO. Petition 870250089983, dated 02 / 10 / 2025, page 98 / 227 89 / 99

[0215] Clause 22A. The method of any of clauses 18A to 21A, wherein the input to the filter comprises sample values ​​after intraprediction, interprediction or an inverse transform.

[0216] Clause 23A. The method of any of clauses 18A to 22A, which further comprises: determining that at least some input samples for the filter are unavailable or unused; and based on at least some input samples for the filter not being available or unused, not applying a portion of the filter corresponding to the at least some input samples or using zero input in place of the at least some input samples.

[0217] Clause 23.1A. The method of any of clauses 18A to 23A, which additionally comprises calculating the average of at least one of the cutoff values ​​or cutoff indices associated with the input samples before applying the filter.

[0218] Clause 24A. A method for encoding video data comprising: determining that only one residual input is used at different stages of reconstruction; based only on the residual input being used at the different stages of reconstruction, defining a difference value as zero without performing a subtraction or not determining the difference value; and encoding the video data based on defining the difference value as zero without performing the subtraction or not determining the difference value. Petition 870250089983, dated 02 / 10 / 2025, page 99 / 227 90 / 99

[0219] Clause 25A. The method of clause 24A, which additionally comprises multiplying the residual entry by a factor.

[0220] Clause 26A. The method of any of clauses 1A to 25A, wherein the encoding process comprises decoding.

[0221] Clause 27A. The method of any of clauses 1A to 26A, wherein the coding process comprises coding.

[0222] Clause 28A. A device for encoding video data comprising one or more means for carrying out the method of any of clauses 1A to 10A.

[0223] Clause 29A. The device of clause 28A, in which the one or more means comprise one or more processors implemented in a circuit assembly.

[0224] Clause 30A. The device of clause 28A or clause 29A, which additionally comprises a memory for storing video data.

[0225] Clause 31A. The device of any of clauses 28A to 30A, which additionally comprises a display configured to display decoded video data.

[0226] Clause 32A. The device of any of clauses 28A to 31A, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver or a set-top box.

[0227] Clause 33A. The device of any of clauses 28A to 32A comprising a video decoder.

[0228] Clause 34A. The device of any of clauses 28A to 33A comprising a video encoder. Petition 870250089983, dated 02 / 10 / 2025, p. 100 / 227 91 / 99

[0229] Clause 35A. 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 clauses 1A to 27A.

[0230] Clause 36A. A device for encoding video data comprising means for carrying out the method of any of clauses 1A to 27A.

[0231] Clause 1B. A method for decoding video data comprising: determining a first value associated with a first window, the first window including a target block of video data; determining a respective difference between each sample value within a second window and the first value, the second window including the target block, wherein the first window and the second window are the same window or different windows; determining a second value based on the respective differences; determining a Laplacian activity value of the target block; determining a class index based on the second value and the Laplacian activity value; and decoding the target block based on the class index.

[0232] Clause 2B. The method of clause 1B, where the first value comprises an average of the sample values ​​within the first window.

[0233] Clause 3B. The method of clause 1B or clause 2B, wherein the second value comprises a square root of a sum of the squares of differences of the respective differences.

[0234] Clause 4B. The method of clause 3B, in which the determination of the second value comprises applying a Petition 870250089983, dated 02 / 10 / 2025, pp. 101 / 227 92 / 99 bit shift operation to a numerator of the square root of the sum of the squares of the differences of the respective differences as an approximation of a division operation.

[0235] Clause 5B. The method of any of clauses 1B to 4B, wherein the determination of the class index comprises: determining a scaling factor based on the Laplacian activity value; applying the scaling factor to the second value to generate a second scaled-down value; and determining the class index based on the second scaled-down value.

[0236] Clause 6B. The method of any of clauses 1B to 5B, wherein the class index is a third class index and wherein the determination of the third class index comprises: determining a first class index based on the second value; determining a second class index based on the Laplacian activity value; and determining the third class index based on the first class index and the second class index.

[0237] Clause 7B. The method of any of clauses 1B to 6B, wherein the determination of the Laplacian activity value of the target block comprises calculating a sum of values ​​of the horizontal and vertical gradients using a 1-D Laplacian transform.

[0238] Clause 8B. The method of any of clauses 1B to 7B, which further comprises: dispensing with the determination of a respective difference between a central sample value of the target block within the second window and the first value; and defining the respective difference for the central sample as equal to 0. Petition 870250089983, dated 02 / 10 / 2025, page 102 / 227 93 / 99

[0239] Clause 9B. The method of any of clauses 1B to 8B, wherein the decoding of the target block based on the class index comprises: determining at least one of a first filter or a second filter based on the class index; applying the first filter to samples of the target block to generate first output samples; applying a second filter to the first output samples to generate second output samples; and decoding the second output samples.

[0240] Clause 10B. The method of clause 9B, which further comprises: determining that at least some of a plurality of input samples for one of the first filters or the second filter are unavailable; based on at least some of the plurality of input samples for one of the first filters or the second filter not being available, replacing the at least some of the plurality of input samples that are unavailable with reconstructed residual samples, to generate a plurality of modified input samples; and applying one of the first filters or the second filter to the plurality of modified input samples.

[0241] Clause 11B. The method of clause 10B, which further comprises: calculating the average of the clipping indices associated with the plurality of input samples; and before applying the filter, clipping the input samples based on an average of the clipping indices.

[0242] Clause 12B. The method of any of clauses 1B to 9B, wherein the target block comprises a first target block, the method additionally comprising: Petition 870250089983, dated 02 / 10 / 2025, page 103 / 227 94 / 99 determine that only one input type is used in different reconstruction stages for a second target block of video data; based only on the single input type being used in the different reconstruction stages for the second target block, set a difference value to zero without performing a subtraction or not determining the difference value; and decode the second target block based on setting the difference value to zero without performing the subtraction or not determining the difference value.

[0243] Clause 13B. A device for encoding video data comprising: one or more memories configured to store video data; and one or more processors, implemented in a circuit assembly and coupled to the one or more memories, the one or more processors configured to: determine a first value associated with a first window, the first window including a target block of video data; determine a respective difference between each sample value within a second window and the first value, the second window including the target block, wherein the first window and the second window are the same window or different windows; determine a second value based on the respective differences; determine a Laplacian activity value of the target block; determine a class index based on the second value and the Laplacian activity value; and decode the target block based on the class index.

[0244] Clause 14B. The device of clause 13B, where the first value comprises an average of the sample values ​​within the first window. Petition 870250089983, dated 02 / 10 / 2025, page 104 / 227 95 / 99

[0245] Clause 15B. The provision of clause 13B or clause 14B, wherein the second value comprises a square root of a sum of the squares of differences of the respective differences.

[0246] Clause 16B. The device of clause 15B, wherein, as part of the determination of the second value, one or more processors are configured to apply a bit shift operation to a numerator of the square root of the sum of the squares of the differences of the respective differences as an approximation of a division operation.

[0247] Clause 17B. The device of any of clauses 13B to 16B, wherein, as part of the determination of the class index, one or more processors are configured to: determine a scaling factor based on the Laplacian activity value; apply the scaling factor to the second value to generate a second scaled-down value; and determine the class index based on the second scaled-down value.

[0248] Clause 18B. The device of any of clauses 13B to 17B, wherein the class index is a third class index and wherein, as part of the determination of the third class index, one or more processors are configured to: determine a first class index based on the second value; determine a second class index based on the Laplacian activity value; and determine the third class index based on the first class index and the second class index. Petition 870250089983, dated 02 / 10 / 2025, p. 105 / 227 96 / 99

[0249] Clause 19B. The device of any of clauses 13B to 18B, which additionally comprises a display configured to display decoded video data.

[0250] Clause 20B. Computer-readable storage media containing instructions that, when executed, cause one or more processors to: determine a first value associated with a first window, the first window including a target block of video data; determine a respective difference between each sample value within a second window and the first value, the second window including the target block, wherein the first window and the second window are the same window or different windows; determine a second value based on the respective differences; determine a Laplacian activity value of the target block, the second window including the target block, wherein the first window and the second window are the same window or different windows; determine a class index based on the second value and the Laplacian activity value; and decode the target block based on the class index.

[0251] 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, processing of Petition 870250089983, dated 02 / 10 / 2025, pp. 106 / 227 97 / 99 interrupt or multiple processors, instead of sequentially.

[0252] 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 hardware-based processing unit. 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.The data storage medium can 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 implementing the techniques described in this disclosure. A computer program product may include a computer-readable medium.

[0253] 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 disc storage, disc storage Petition 870250089983, dated 02 / 10 / 2025, pp. 107 / 227 98 / 99 magnetic or other magnetic storage devices, flash memory, or any other means 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, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the 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 should also be included within the scope of computer-readable media.

[0254] Instructions can be executed by one or more processors, such as one or more DSPs, Petition 870250089983, dated 02 / 10 / 2025, pp. 108 / 227 99 / 99 general-purpose microprocessors, ASICs, FPGAs, or other equivalent discrete or integrated logic circuit sets. Consequently, the terms processor and processing circuit set, 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 for encoding and decoding, or may be incorporated into a combined codec. Additionally, the techniques may be fully implemented in one or more logic circuits or elements.

[0255] 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.

[0256] Several examples have been described. These and other examples are within the scope of the following claims. Petition 870250089983, dated 02 / 10 / 2025, pp. 109 / 227

Claims

1 / 7 CLAIMS 1. A method for decoding video data characterized by comprising: determining a first value associated with a first window, the first window including a target block of video data; determining a respective difference between each sample value within a second window and the first value, the second window including the target block, wherein the first window and the second window are the same window or different windows; determining a second value based on the respective differences; determining a Laplacian activity value of the target block; determining a class index based on the second value and the Laplacian activity value; and decoding the target block based on the class index.

2. Method according to claim 1, characterized in that the first value comprises an average of the sample values ​​within the first window.

3. Method according to claim 1, characterized in that the second value comprises a square root of a sum of the squares of differences of the respective differences.

4. Method, according to claim 3, characterized in that the determination of the second value comprises applying a bit shift operation to a numerator of the square root of the sum of the squares of differences of the respective differences as an approximation of a division operation.

5. Method, according to claim 1, characterized in that the determination of the class index comprises: determining a scaling factor based on the Laplacian activity value; applying the scaling factor to the second value to generate a second scaled value; and determining the class index based on the second scaled value.

6. Method according to claim 1, characterized in that the class index is a third class index, and wherein the determination of the third class index comprises: determining a first class index based on the second value; determining a second class index based on the Laplacian activity value; and determining the third class index based on the first class index and the second class index.

7. Method, according to claim 1, characterized in that the determination of the Laplacian activity value of the target block comprises calculating a sum of the horizontal and vertical gradient values ​​using a 1-D Laplacian transform.

8. Method according to claim 1, characterized by further comprising: Petition 870250089983, dated 02 / 10 / 2025, page 211 / 227 3 / 7 dispensing with the determination of a respective difference between a central sample value of the target block within the second window and the first value; and defining the respective difference for the central sample as equal to 0.

9. A method according to claim 1, characterized in that the decoding of the target block based on the class index comprises: determining at least one of a first filter or a second filter based on the class index; applying the first filter to samples of the target block to generate first output samples; applying a second filter to the first output samples to generate second output samples; and decoding the second output samples.

10. Method according to claim 9, characterized by further comprising: determining that at least some of a plurality of input samples for one of the first or second filters are unavailable; based on at least some of the plurality of input samples for one of the first or second filters not being available, replacing at least some of the plurality of unavailable input samples with reconstructed residual samples to generate a plurality of modified input samples; and applying one of the first or second filters to the plurality of modified input samples. Petition 870250089983, dated 10 / 02 / 2025, pp. 212 / 227 4 / 7 11. A method according to claim 10, characterized by further comprising: calculating the average of the clipping indices associated with the plurality of input samples; and before applying the filter, clipping the input samples based on an average of the clipping indices.

12. A method according to claim 1, characterized in that the target block comprises a first target block, the method further comprising: determining that only one input type is used in different reconstruction stages for a second target block of video data; based only on the single input type being used in the different reconstruction stages for the second target block, setting a difference value to zero without performing a subtraction or not determining the difference value; and decoding the second target block based on setting the difference value to zero without performing the subtraction or not determining the difference value.

13. Device for encoding video data characterized by comprising: one or more memories configured to store video data; and one or more processors, implemented in a circuit assembly and coupled to one or more memories, the one or more processors configured to: Petition 870250089983, dated 02 / 10 / 2025, page 213 / 227 5 / 7 determine a first value associated with a first window, the first window including a target block of video data; determine a respective difference between each sample value within a second window and the first value, the second window including the target block, wherein the first window and the second window are the same window or different windows; determine a second value based on the respective differences; determine a Laplacian activity value of the target block; determine a class index based on the second value and the Laplacian activity value; and decode the target block based on the class index.

14. Device according to claim 13, characterized in that the first value comprises an average of the sample values ​​within the first window.

15. Device according to claim 13, characterized in that the second value comprises a square root of a sum of the squares of differences of the respective differences.

16. Device according to claim 15, characterized in that, as part of the determination of the second value, one or more processors are configured to apply a bit shift operation to a numerator of the square root of the sum of the squares of the differences of the respective differences as an approximation of a division operation.

17. Device according to claim 13, characterized in that, as part of the class index determination, one or more processors are configured to: determine a scaling factor based on the Laplacian activity value; apply the scaling factor to the second value to generate a second scaled-down value; and determine the class index based on the second scaled-down value.

18. Device according to claim 13, characterized in that the class index is a third class index, and wherein, as part of the determination of the third class index, one or more processors are configured to: determine a first class index based on the second value; determine a second class index based on the Laplacian activity value; and determine the third class index based on the first class index and the second class index.

19. Device according to claim 13, characterized by further comprising a display configured to display decoded video data.

20. Computer-readable storage media characterized by having stored instructions that, when executed, cause one or more processors to: Petition 870250089983, dated 10 / 02 / 2025, pp. 215 / 227 7 / 7 determine a first value associated with a first window, the first window including a target block of video data; determine a respective difference between each sample value within a second window and the first value, the second window including the target block, wherein the first window and the second window are the same window or different windows; determine a second value based on the respective differences; determine a Laplacian activity value of the target block, the second window including the target block, wherein the first window and the second window are the same window or different windows; determine a class index based on the second value and the Laplacian activity value; and decode the target block based on the class index.Petition 870250089983, dated 02 / 10 / 2025, pp. 216 / 227.