Image and video encoding and decoding.
Patent Information
- Application Number
- BR112025021091
- Authority / Receiving Office
- BR · BR
- Patent Type
- Applications
- Publication Date
- 2026-09-01
Smart Images

Figure 00000000_0000_ABST
Description
1 / 58 “IMAGE AND VIDEO ENCODING AND DECODING” FIELD OF THE INVENTION
[0001] The present invention relates to the encoding and decoding of video data from a bitstream and, more specifically, to the encoding and decoding of image and video partitioning data. Devices for decoding video data from a bitstream and encoding video data into a bitstream are also provided, as well as a computer program configured to, upon execution, perform the encoding or decoding of video data. FUNDAMENTALS OF THE INVENTION
[0002] The Joint Video Experts Group (JVET), a collaborative team formed by MPEG and VCEG from ITU-T Study Group 16, has released a new video coding standard called Versatile Video Coding (VVC). The goal of VVC is to provide significant improvements in compression performance compared to the existing HEVC standard (i.e., typically twice the previous performance). Key target applications and services include, but are not limited to, 360-degree and high dynamic range (HDR) video. Particular effectiveness has been demonstrated in ultra-high-definition (UHD) video test material. Thus, compression efficiency gains well beyond the 50% predicted for the final standard are expected.
[0003] Since the end of the VVC v1 standardization, JVET has begun an exploration phase, establishing an exploration software (ECM). It brings together additional tools and enhancements to existing tools based on the VVC standard to achieve better coding efficiency. SUMMARY OF THE INVENTION
[0004] According to a first aspect of the invention, a method is provided for decoding video data from a bitstream, the bitstream comprising video data corresponding to a plurality of frames arranged in a decoding order, the method comprising:
[0005] derive a value from a first area in a first frame of Petition 870250088760, dated 09 / 30 / 2025, page 13 / 113 2 / 58 plurality of frames; and
[0006] determine, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame,
[0007] where the first frame precedes the second frame in the decoding order.
[0008] According to a second aspect of the invention, a method is provided for encoding video data into a bitstream, the bitstream comprising video data corresponding to a plurality of frames arranged in a decoding order, the method comprising:
[0009] derive a value for a first area in a first frame of the plurality of frames; and
[0010] determine, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame,
[0011] where the first frame precedes the second frame in the decoding order.
[0012] Optionally, each frame in the plurality of frames has an associated temporal ID, and the first frame and the second frame have the same temporal ID. Optionally, the first frame corresponds to the frame closest to the second frame, in the decoding order, that has the same temporal ID.
[0013] Optionally, each frame in the plurality of frames has an associated quantization parameter, QP, where the first frame and the second frame have the same QP.
[0014] Optionally, the first frame is a reference frame.
[0015] Optionally, the first area is larger than or equal to the second area in size.
[0016] Optionally, the second area corresponds to a coding tree unit, CTU.
[0017] Optionally, the size of the first area is defined based on Petition 870250088760, dated 09 / 30 / 2025, page 14 / 113 3 / 58 a temporal distance between the first frame and the second frame. Optionally, the temporal difference is calculated based on a difference between a picture order count (POC) of the first frame and a POC of the second frame.
[0018] Optionally, each frame in the plurality of frames has an associated quantization parameter, QP, wherein a size of the first area is defined based on a difference between a QP of the first frame and a QP of the second frame.
[0019] Optionally, each frame in the plurality of frames has an associated temporal ID, and wherein a size of the first area is defined based on a difference between a temporal ID of the first frame and a temporal ID of the second frame.
[0020] Optionally, a first area size is defined based on a value transmitted in one of: a sequence parameter set; an image parameter set; an image header; and a slice header, contained in the bitstream.
[0021] Optionally, the size of the first area is defined based on the size of the second area.
[0022] Optionally, the step of deriving a value from a first area in a first frame of the plurality of frames comprises deriving a value from a block that has at least one sample within the first area.
[0023] Optionally, the step of deriving a value from a first area in a first frame of the plurality of frames comprises deriving a value from all blocks that have at least one sample within the first area.
[0024] Optionally, the step of deriving a value from a first area in a first frame of the plurality of frames involves weighting the value derived from the block or each block based on the number of samples that each block has within the first area.
[0025] Optionally, the step of deriving a value from a first area in a first frame of the plurality of frames comprises deriving a value only from blocks that are completely contained within the first area. Petition 870250088760, dated 09 / 30 / 2025, page 15 / 113 4 / 58
[0026] Optionally, the step of deriving a value from a first area in a first frame of the plurality of frames comprises deriving a value only from blocks that are located in an N χ N grid within the first area, where N is an integer. Optionally, N = 16.
[0027] Optionally, a grid center is located in the same position within the first frame as a center of the first area with the first frame.
[0028] Optionally, the step of deriving a value from a first area in a first frame of the plurality of frames comprises deriving a value only from blocks located at points of a pattern within the first area. Optionally, the pattern points are spaced non-uniformly.
[0029] Optionally, the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame comprises determining a context increment for a syntax element, or a syntax element, or a variable related to a block within the second area.
[0030] Optionally, the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame comprises determining a context increment for a syntax element, or a syntax element, or a variable related to blocks located in an M χ M grid within the second area, where M is an integer. Optionally, the M χ M grid is shifted by M / 2 in a horizontal direction and M / 2 in a vertical direction relative to an upper-left position of the second area.
[0031] Optionally, a center of the first area is located in the same position within the first frame as a center of the second area within the second frame.
[0032] Optionally, the center of the first area is located at the position within the first frame corresponding to a center of the second area within the second frame displaced by an amount corresponding to a vector of Petition 870250088760, dated 09 / 30 / 2025, page 16 / 113 5 / 58 movement derived from an area adjacent to the second area.
[0033] Optionally, the method also includes, when the center of the first area is outside the first frame, deriving a value from an upper left position of the first area.
[0034] Optionally, the step of deriving a value from a first area in a first frame of the plurality of frames involves accessing each block within the first area only once.
[0035] Optionally, the step of deriving a value from a first area in a first frame of the plurality of frames comprises:
[0036] derive a value from a first area in a first frame of the plurality of frames and from a third area in a third frame of the plurality of frames.
[0037] Optionally, the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame, comprises determining a predictor to be added to a residual derived from the bitstream.
[0038] Optionally, the value derived from the first area comprises maxMttDepth, and the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame, comprises determining maxMttDepth for a block of the second area.
[0039] Optionally, the value derived from the first area is used to limit the context increment for a variable or syntax element related to the second area.
[0040] Optionally, the value derived from the first area is a minimum of quadtree depth values, minQTDepth, of the blocks in the first area, and the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame comprises comparing the derived minQTDepth with Petition 870250088760, dated 09 / 30 / 2025, page 17 / 113 6 / 58 a quadtree depth of one block in the second area to determine if only quadtree splitting is allowed.
[0041] Optionally, the value derived from the first area is a maximum of multi-tree depth values, maxMttDepth, of the blocks in the first area, and the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame comprises comparing the derived maxMttDepth with a maxMttDepth of a block in the second area, and varying maxMttDepth based on the comparison.
[0042] Optionally, the value derived from the first area is an average of the quadtree depth values of the blocks in the first area, and the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame comprises comparing the derived quadtree depth values with a quadtree depth of a block in the second area. Optionally, the method further comprises the step of determining allowed splits based on the comparison. Optionally, the method further comprises the step of varying maxMttDepth based on the comparison.
[0043] According to a third aspect of the invention, a device is provided for decoding video data from a bitstream, wherein the device is configured to perform the method of the first aspect.
[0044] According to a fourth aspect of the invention, a device is provided for encoding video data into a bitstream, wherein the device is configured to perform the method of the second aspect.
[0045] According to a fifth aspect of the invention, a computer program is provided which is configured to, upon execution, perform the method of the first or second aspect. BRIEF DESCRIPTION OF THE DRAWINGS
[0046] Reference will now be made, by way of example, to the attached drawings, in which: Petition 870250088760, dated 09 / 30 / 2025, p. 18 / 113 7 / 58
[0047] Figure 1 is a diagram for use in explaining an encoding structure used in HEVC.
[0048] Figure 2 is a block diagram that schematically illustrates a data communication system in which one or more embodiments of the invention can be implemented.
[0049] Figure 3 is a block diagram illustrating components of a processing device in which one or more embodiments of the invention may be implemented.
[0050] Figure 4 is a diagram illustrating functional elements of an encoder according to embodiments of the invention.
[0051] Figure 5 is a diagram illustrating functional elements of a decoder according to embodiments of the invention.
[0052] Figures 6 show blocks positioned relative to an actual block, including a colocalized block.
[0053] Figures 7(a) and (b) illustrate the Affine (Sub-block) mode.
[0054] Figure 8 illustrates the candidate for temporal merge of the Sub-block.
[0055] Figure 9 illustrates a temporal random access GOP structure for 33 frames with related Temporal ID and POC.
[0056] Figure 10 illustrates the 6 possible ways of dividing VVC.
[0057] Figure 11 illustrates MaxBTSize and MaxMttDepth.
[0058] Figure 12 illustrates an example of the MinQTSize variable.
[0059] Figure 13 illustrates possible partitioning constraints.
[0060] Figure 14 illustrates incomplete CTUs at the edges of a frame.
[0061] Figure 15 illustrates a code defining MaxMttDepth based on the temporal ID.
[0062] Figure 16 illustrates one embodiment of the invention.
[0063] Figure 17 illustrates an example of an embodiment of the invention.
[0064] Figure 18 illustrates one embodiment of the invention.
[0065] Figure 19 illustrates one embodiment of the invention.
[0066] Figure 20 is a diagram showing a system comprising a Petition 870250088760, dated 09 / 30 / 2025, page 19 / 113 8 / 58 encoder or decoder and a communication network according to embodiments of the present invention.
[0067] Figure 21 is a schematic block diagram of a computing device for implementing one or more embodiments of the invention.
[0068] Figure 22 is a diagram illustrating a network camera system.
[0069] Figure 23 is a diagram illustrating a smartphone. DETAILED DESCRIPTION
[0070] Figure 1 refers to a coding structure used in the High Efficiency Video Coding (HEVC) and Versatile Video Coding (VVC) video standards. A video sequence 1 is composed of a succession of digital images i. Each of these digital images is represented by one or more matrices. The matrix coefficients represent pixels.
[0071] An image 2 of the sequence can be divided into slices 3. A slice can, in some cases, constitute an entire image. These slices are divided into non-overlapping Coding Tree Units (CTUs). A Coding Tree Unit (CTU) is the basic processing unit of the High Efficiency Video Coding (HEVC) and Versatile Video Coding (VVC) video standards and, conceptually, corresponds in structure to macroblock units used in several previous video standards. A CTU is also sometimes called a Largest Coding Unit (LCU). A CTU has luma and chroma components, each of which is called a Coding Tree Block (CTB). These different color components are not shown in Figure 1.
[0072] A CTU typically has a size of 64 pixels χ 64 pixels for HEVC, but for VVC this size can be 128 pixels χ 128 pixels. Each CTU can, in turn, be iteratively divided into smaller Coding Units (CUs) of variable size 5 using a quadtree decomposition (QT).
[0073] Coding units are the elementary coding elements and consist of two types of subunits called Prediction Unit (PU) and Transform Unit (TU). The maximum size of a PU or TU is Petition 870250088760, dated 09 / 30 / 2025, page 20 / 113 9 / 58 equals the size of the CU. A Prediction Unit corresponds to the partition of the CU for predicting pixel values. Several different partitions of a CU into PUs are possible, as shown by 6, including one partition into 4 square PUs and two different partitions into 2 rectangular PUs. A Transform Unit is an elementary unit that undergoes spatial transformation using a discrete cosine transform (DCT). A CU can be partitioned into TUs based on a quadtree representation 7.
[0074] Each slice is embedded in a Network Abstraction Layer (NAL) unit. In addition, the video sequence encoding parameters are stored in dedicated NAL units called parameter sets. In HEVC and H.264 / AVC, two types of parameter sets (NALs) are employed: first, a Sequence Parameter Set (SPS) NAL unit that gathers all parameters that remain unchanged throughout the video sequence. Typically, it handles the encoding profile, video frame size, and other parameters. Second, a Picture Parameter Set (PPS) NAL unit includes parameters that can change from one image (or frame) to another in a sequence. HEVC also includes a Video Parameter Set (VPS) NAL unit that contains parameters describing the overall structure of the bitstream. The VPS is a type of parameter set defined in HEVC and applies to all layers of a bitstream.A layer can contain multiple temporal sublayers, and all bitstreams of version 1 are restricted to a single layer. HEVC has certain layer extensions for scalability and multiview, which will allow multiple layers, with a base layer of version 1 that is backward compatible.
[0075] Other ways of splitting an image have been introduced in VVC, including subimages, which are independently encoded groups of one or more slices.
[0076] Figure 2 illustrates a data communication system in which one or more embodiments of the invention may be implemented. The data communication system comprises a transmission device, in this case a Petition 870250088760, dated 09 / 30 / 2025, page 21 / 113 10 / 58 server 201, which is operable to transmit data packets from a data stream to a receiving device, in this case a client terminal 202, via a data communication network 200. The data communication network 200 can be a Wide Area Network (WAN) or a Local Area Network (LAN). Such a network can be, for example, a wireless network (Wi-Fi / 802.11a or b or g), an Ethernet network, an internet network, or a mixed network composed of several different networks. In a specific embodiment of the invention, the data communication system can be a digital television transmission system in which the server 201 sends the same data content to multiple clients.
[0077] The data stream 204 provided by the server 201 may consist of multimedia data representing video and audio data. The audio and video data streams may, in some embodiments of the invention, be captured by the server 201 using a microphone and a camera, respectively. In some embodiments, the data streams may be stored on the server 201 or received by the server 201 from another data provider or generated on the server 201. The server 201 is provided with an encoder for encoding video and audio streams, in particular, to provide a compressed bitstream for transmission that is a more compact representation of the data presented as input to the encoder.
[0078] In order to obtain a better ratio between the quality of transmitted data and the quantity of transmitted data, video data compression can be, for example, in accordance with the HEVC, H.264 / AVC, VVC format or the data format generated by the ECM.
[0079] Client 202 receives the transmitted bitstream and decodes the reconstructed bitstream to reproduce video images on a display device and audio data through a loudspeaker.
[0080] Although a streaming scenario is considered in the example in Figure 2, it should be noted that, in some embodiments of the invention, data communication between an encoder and a decoder can be performed using, for example, a media storage device, such as an optical disc. Petition 870250088760, dated 09 / 30 / 2025, page 22 / 113 11 / 58
[0081] In one or more embodiments of the invention, a video image is transmitted with representative offset offset data for application to the reconstructed pixels of the image, in order to provide filtered pixels in a final image.
[0082] Figure 3 schematically illustrates a processing device 300 configured to implement at least one embodiment of the present invention. The processing device 300 may be a device such as a microcomputer, a workstation, or a lightweight portable device. The device 300 comprises a communication bus 313 connected to: - a central processing unit 311, such as a microprocessor, called a CPU; - a read-only memory 306, called ROM, for storing computer programs to implement the invention; - a random access memory 312, referred to as RAM, for storing the executable code of the method of embodiments of the invention, as well as registers adapted to record variables and parameters necessary to implement the method of encoding a sequence of digital images and / or the method of decoding a bitstream according to embodiments of the invention; and - a communication interface 302 connected to a communication network 30303 through which the digital data to be processed is transmitted or received.
[0083] Optionally, the 300 unit may also include the following components: - a data storage medium 304, such as a hard disk, for storing computer programs to implement methods of one or more embodiments of the invention and data used or produced during the implementation of one or more embodiments of the invention; - a 305 disk drive to a 306 disk drive, the disk drive being Petition 870250088760, dated 09 / 30 / 2025, page 23 / 113 12 / 58 adapted to read data from disk 306 or to write data to said disk; - a screen 309 for displaying data and / or serving as a graphical user interface, via a keyboard 310 or any other pointing device.
[0084] The device 300 can be connected to various peripherals, such as, for example, a digital camera 320 or a microphone 308, each connected to an input / output board (not shown) to provide multimedia data to the device 300.
[0085] The communication bus provides communication and interoperability between the various elements included in or connected to the 300 device. The bus representation is not limiting and, in particular, the central processing unit is operable to communicate instructions to any element of the 300 device directly or through another element of the 300 device.
[0086] The 306 disc can be replaced by any information medium, such as, for example, a rewritable or non-rewritable compact disc (CD-ROM), a ZIP disc or a memory card and, in general terms, by an information storage medium that can be read by a microcomputer or by a microprocessor, integrated or not into the device, possibly removable and adapted to store one or more programs whose execution allows the implementation of the method of encoding a sequence of digital images and / or the method of decoding a bit stream according to the invention.
[0087] The executable code can be stored in read-only memory 306, on hard disk 304, or on a removable digital medium, such as, for example, a disk 306, as described above. According to a variant, the executable code of the programs can be received via the communication network 303, through the interface 302, to be stored on one of the storage media of the device 300 before being executed, such as hard disk 304.
[0088] The central processing unit 311 is adapted to control and Petition 870250088760, dated 09 / 30 / 2025, page 24 / 113 13 / 58 directing the execution of instructions or parts of the software code of the program or programs according to the invention, instructions which are stored in one of the storage media mentioned above. At initialization, the program or programs stored in non-volatile memory, for example, on hard disk 304 or read-only memory 306, are transferred to random access memory 312, which then contains the executable code of the program or programs, as well as registers to store the variables and parameters necessary to implement the invention.
[0089] In this embodiment, the device is a programmable device that uses software to implement the invention. However, alternatively, the present invention may be implemented in hardware (for example, in the form of an Application-Specific Integrated Circuit or ASIC).
[0090] Figure 4 illustrates a block diagram of an encoder according to at least one embodiment of the invention. The encoder is represented by connected modules, each module being adapted to implement, for example, in the form of programming instructions to be executed by the CPU 311 of the device 300, at least one corresponding step of a method that implements at least one embodiment of encoding an image from a sequence of images according to one or more embodiments of the invention.
[0091] An original sequence of digital images i0a in401 is received as input by the encoder 1400. Each digital image is represented by a set of samples, sometimes also called pixels (hereinafter referred to as pixels).
[0092] A 410 bitstream is emitted by the 400 encoder after the encoding process is implemented. The 410 bitstream comprises a plurality of encoding units or slices, each slice comprising a slice header for transmitting encoding parameter values used to encode the slice and a slice body, comprising encoded video data.
[0093] The input digital images i0a in401 are divided into pixel blocks by the 402 module. The blocks correspond to image parts and may have Petition 870250088760, dated 09 / 30 / 2025, page 25 / 113 14 / 58 variable sizes (e.g., 4 χ 4, 8 χ 8, 16 χ 16, 32 χ 32, 64 χ 64, 128 χ 128 pixels, and various sizes of rectangular blocks can also be considered). An encoding mode is selected for each input block. Two families of encoding modes are provided: encoding modes based on spatial prediction encoding (intra prediction) and encoding modes based on temporal prediction (inter, merge, SKIP encoding). The possible encoding modes are tested.
[0094] Module 403 implements an intra-prediction process, in which the given block to be encoded is predicted by a predictor computed from pixels in the neighborhood of said block to be encoded. An indication of the selected intra-predictor and the difference between the given block and its predictor is encoded to provide a residual if intra-encoding is selected.
[0095] Temporal prediction is implemented by motion estimation module 404 and motion compensation module 405. First, a reference image from a set of reference images 416 is selected, and a portion of the reference image, also called the reference area or image portion, which is the area closest (closest in terms of pixel value similarity) to the given block to be encoded, is selected by motion estimation module 404. Motion compensation module 405 then predicts the block to be encoded using the selected area. The difference between the selected reference area and the given block, also called the residual block, is computed by motion compensation module 405. The selected reference area is indicated by a motion vector.
[0096] Thus, in both cases (spatial and temporal prediction), a residual is computed by subtracting the predictor from the original block.
[0097] In the Intra prediction implemented by module 403, a prediction direction is encoded. In the Inter prediction implemented by modules 404, 405, 416, 418, and 417, at least one motion vector or data to identify such a motion vector is encoded for the temporal prediction.
[0098] Relevant information for the motion vector and the residual block is Petition 870250088760, dated 09 / 30 / 2025, page 26 / 113 15 / 58 encoded if Inter prediction is selected. To further reduce the bit rate, assuming the motion is homogeneous, the motion vector is encoded by the difference with respect to a motion vector predictor. The motion vector predictors from a set of motion information predictor candidates are obtained from the motion vector field 418 by a motion vector prediction and encoding module 417.
[0099] The encoder 400 further comprises a selection module 406 for selecting the encoding mode by applying an encoding cost criterion, such as a rate-distortion criterion. To further reduce redundancies, a transform (such as DCT) is applied by the transform module 407 to the residual block, the resulting transformed data is then quantized by the quantization module 408 and entropy-encoded by the entropy encoding module 409. Finally, the encoded residual block of the current block being encoded is inserted into the bitstream 410.
[0100] Encoder 400 also performs decoding of the encoded image in order to produce a reference image (e.g., those in reference images / figures 416) for motion estimation of subsequent images. This allows the encoder and decoder receiving the bitstream to have the same reference frames (reconstructed images or image parts are used). Inverse quantization (“dequantization”) module 411 performs inverse quantization (“dequantization”) of the quantized data, followed by an inverse transform by inverse transform module 412. Intra prediction module 413 uses the prediction information to determine which predictor to use for a given block, and motion compensation module 414 adds the residual obtained by module 412 to the reference area obtained from the set of reference images 416.
[0101] Post-filtering is then applied by module 415 to filter the reconstructed frame (image or image parts) of pixels. In embodiments of the invention, a SAO mesh filter is used, in which compensation offsets are added to the pixel values of the reconstructed pixels. Petition 870250088760, dated 09 / 30 / 2025, page 27 / 113 16 / 58 Reconstructed image. It is understood that post-filtering is not always necessary. Furthermore, any other type of post-filtering can be performed in addition to or instead of SAO mesh filtering.
[0102] Figure 5 illustrates a block diagram of a decoder 60 that can be used to receive data from an encoder according to an embodiment of the invention. The decoder is represented by connected modules, each module being adapted to implement, for example, in the form of programming instructions to be executed by the CPU 311 of the device 300, a corresponding step of a method implemented by the decoder 60.
[0103] Decoder 60 receives a bit stream 61 comprising encoded units (e.g., data corresponding to a block or a coding unit), each consisting of a header containing information about encoding parameters and a body containing the encoded video data. As explained in relation to Figure 4, the encoded video data is entropy-encoded, and the indices of the motion vector predictors are encoded, for a given block, in a predetermined number of bits. The received encoded video data is entropy-decoded by module 62. The residual data is then dequantized by module 63, and then an inverse transform is applied by module 64 to obtain pixel values.
[0104] The mode data that indicate the encoding mode are also decoded by entropy and, based on the mode, an INTRA or INTER type decoding is performed on the encoded blocks (units / sets / groups) of image data.
[0105] In the case of INTRA mode, an INTRA predictor is determined by the intra prediction module 65 based on the intra prediction mode specified in the bitstream.
[0106] If the mode is INTER, motion prediction information is extracted from the bitstream to find (identify) the reference area used by the encoder. The motion prediction information comprises the index Petition 870250088760, dated 09 / 30 / 2025, page 28 / 113 17 / 58 of reference frame and the motion vector residual. The motion vector predictor is added to the motion vector residual by the motion vector decoding module 70 in order to obtain the motion vector. The various motion prediction tools used in VVC are discussed in more detail below with reference to Figures 6 to 10.
[0107] The motion vector decoding module 70 applies motion vector decoding to each current block encoded by the motion prediction. Once a motion vector predictor index for the current block is obtained, the actual motion vector value associated with the current block can be decoded and used to apply motion compensation by module 66. The reference image portion indicated by the decoded motion vector is extracted from a reference image 68 to apply motion compensation 66. The motion vector field data 71 is updated with the decoded motion vector so that it can be used in the prediction of subsequent decoded motion vectors. Note that in both VVC and HEVC, motion vectors are stored at level 16 χ 16 and not at 4 χ 4 for the temporal predictor. This means that decimation is applied only to the temporal predictor and not to the spatial predictors.In fact, the goal is to reduce the temporary storage required to store the temporal motion vectors after encoding each frame. This has a negative impact on encoding efficiency, and this decimation is usually removed from the exploitation software.
[0108] Finally, a decoded block is obtained. When appropriate, post-filtering is applied by the post-filtering module 67. A decoded video signal 69 is finally obtained and provided by the decoder 60. VVC Merge Modes
[0109] In VVC, several inter modes were added compared to HEVC. In particular, new Merge modes were added to the regular HEVC Merge mode. Affine Mode (Sub-block Mode) Petition 870250088760, dated 09 / 30 / 2025, page 29 / 113 18 / 58
[0110] In HEVC, only the translational motion model is applied for motion compensation prediction (MCP). Whereas in the real world, there are many types of motion, for example, approach / retreat, rotation, perspective motions, and other irregular motions.
[0111] In JEM, a simplified motion compensation prediction by affine transform is applied and the general principle of the Affine mode is described below based on an extract from the JVET-G1001 document presented at a JVET meeting in Turin, July 13–21, 2017. This complete document is incorporated by reference insofar as it describes other algorithms used in JEM.
[0112] As shown in Figure 7(a), the affine motion field of the block is described by two control point motion vectors.
[0113] Affine mode is a motion compensation mode similar to Inter modes (AMVP, “classic” Merge or “classic” Merge Skip). Its principle is to generate motion information per pixel according to 2 or 3 neighboring motion information. In JEM, affine mode derives motion information for each 4χ4 block, as illustrated in Figure 7(a) (each square is a 4χ4 block, and the whole block in Figure 7(a) is a 16χ16 block that is divided into 16 blocks of this 4χ4 square size - each 4χ4 square block having an associated motion vector). Affine mode is available for AMVP mode and Merge modes (i.e., classic Merge mode, also known as "Non-Affine Merge mode," and classic Merge Skip mode, also known as "Non-Affine Merge Skip mode"), enabling affine mode with a flag.
[0114] In the VVC specification, Affine Mode is also known as Sub-block mode; these terms are used interchangeably in this descriptive report.
[0115] The VVC sub-block Merge mode contains temporal merge candidates based on sub-blocks, which inherit the motion vector field of a block in a previous frame pointed to by a spatial motion vector candidate A1, as illustrated in Figure 8. In this figure, the predictor for the current non- Petition 870250088760, dated 09 / 30 / 2025, page 30 / 113 19 / 58 is the colocalized block, but a block displaced by the value of the motion vector A1.
[0116] This sub-block candidate is followed by an inherited affine move candidate if neighboring blocks have been coded with an inter-affine sub-block merge mode, and then some constructed affine candidates are derived before some candidate with zero Mv. Context Index Increment
[0117] Context-Based Adaptive Binary Arithmetic Coding (CABAC) uses context to separate the probabilities of one or more bins. To obtain the corresponding contexts of a bin and their relative states, a context index increment ctxInc is calculated. For example, the following formula provides an example of a context index increment: ctxInc = (condL && availableL) | | (condA && availableA)
[0118] Where condL is the value of the related left syntax element and condA is the value of the related syntax element above. availableL and availableA are, respectively, the availability values of the left and top blocks. Random Access Configuration
[0119] Figure 9 shows a temporal random access GOP structure for 33 consecutive frames from 0 to 32. The length of the vertical line representing each frame corresponds to its temporal ID (e.g., the longest length corresponds to temporal ID 0 and the shortest length corresponds to temporal ID 5). Frames with temporal ID 0 are the highest in the temporal hierarchy because they can be decoded independently of all other frames lower in the temporal hierarchy, i.e., those with numerically higher temporal ID values. Similarly, frames with temporal ID 1 are second in the temporal hierarchy and can be decoded independently of all other frames lower in the temporal hierarchy, i.e., those with higher temporal IDs, and so on for the other temporal IDs. In other words, a frame with a specific temporal ID can be decoded Petition 870250088760, dated 09 / 30 / 2025, page 31 / 113 20 / 58 independently of frames with higher temporal ID values, but may be dependent on frames with lower temporal IDs. This is known as temporal scalability.
[0120] This parameter is similar to hierarchy depth, but hierarchy depth does not imply decoding independence for all other frames with greater depth. VVC Partitioning
[0121] VVC Partitioning has a specific block partitioning. For a tree node, there are 6 possible divisions, as illustrated in Figure 10: - The QT quad division, 801, which divides a block into 4 square blocks of equal size. - The binary division BT with its two possible subdivisions 802, 803: - vertical binary division, 802, SPLIT_BT_VER - Horizontal binary division, 803, SPLIT_BT_HOR - The ternary division TT with its 2 possible subdivisions 804, 805, where the block is divided into 3 blocks with a larger band in the middle: - vertical ternary division, 804, SPLIT_TT_VER - horizontal ternary split, 805, SPLIT_TT_HOR - The non-splitting, 806, which terminates a tree node, so there is no splitting.
[0122] In this description, a block can be a CTU and / or CU or, more generally, any unit in a coding tree. Division Control Variables (VVC)
[0123] For a given block, not all possible splits are always allowed. The availability of splits depends on several conditions. These conditions depend on several defined split control variables. A first set of variables defines the maximum and minimum size of the block / node: • CTU size: corresponds to the size of the root node of a quadtree (e.g., 256 χ²56, 128 χ²128, 64 χ²64, 32 χ²32, 16 χ²16). Petition 870250088760, dated 09 / 30 / 2025, page 32 / 113 21 / 58 luma samples). • maxBtSize: is the maximum allowed size of the root node of the binary tree, that is, the maximum size of a leaf node of a quadtree that can be partitioned by binary division. A current block can be divided using a BT division if the height and width of the current block are less than or equal to maxBtSize. Figure 11 illustrates the concept of maxBtSize, where maxBtSize is the size of the leaf nodes of quadtree 902 of a CTU 901. • minBtSize: This is the minimum allowed size for a leaf node in a binary tree; that is, the minimum width or height of a binary leaf node. Thus, a current block can be split using a horizontal BT split if its height is greater than minBtSize. And a current block can be split using a vertical BT split if its width is greater than minBtSize. • maxTtSize: is the maximum allowed size for the root node of a ternary tree, that is, the maximum size of a quadtree leaf node that can be partitioned by ternary splitting. An existing block can be split using a TT split if the height and width of the existing block are less than or equal to maxTtSize. • minTtSize: represents the minimum allowed size for a leaf node in a ternary tree (TT); that is, the minimum width or height of a binary leaf node. However, in contrast to BT splitting, a minimum TT partition size is considered to be allowed. Thus, a current block can be split using a horizontal TT split if its height is greater than twice minTtSize. And a current block can be split using a vertical TT split if its width is strictly greater than twice minTtSize. • minQtSize: This is the minimum allowed size for a quadtree (QT) leaf node; therefore, for the current block, if the width of the current block is not greater than the minQtSize, the QT split mode is not allowed. Petition 870250088760, dated 09 / 30 / 2025, page 33 / 113 22 / 58 Figure 12 illustrates an example of minQtSize. Considering a CTU of 128, in the example shown, the minQtSize is equal to 16.
[0124] There is no definition of a maxQtSize, therefore it corresponds to the CTU size. The minimum allowed block size for width and height is 4.
[0125] A set of depths is also defined. • Depth: This is the depth in the tree. In the VVC specification, a leaf is a terminal node of a tree that is a root node of a tree with depth 0. This means that for each split, this value is incremented (by 1). • mttDepth: This is the depth of the multitree. The multitree includes BT splits and TT splits. • maxMttDepth: This is defined in the VVC specification and is the maximum allowed depth for multitrees. Therefore, mttDepth is greater than or equal to maxMttDepth. Figure 11 illustrates the concept of maxMttDepth.
[0126] In VVC, these variables are defined independently for Luma and Chroma.
[0127] In VTM software and ECM software, there are several other variables corresponding to depths.
[0128] The variable currBtDepth is the current number of BT splits used to reach the current tree node (or the current block). The variable currMttDepth is the current number of BT and TT splits used to reach the current tree node (or the current block). The variable maxBtDepth corresponds to the maxMttDepth variable of the VVC specification. currQtDepth is the current number of QT splits used to reach the current tree node (or the current block). MaxBtDepth: is the maximum allowed depth of the binary tree, i.e., the lowest level at which binary splitting can occur, where the quadtree leaf node is the root (e.g., 3). VVC Split Control Syntax Elements
[0129] To define the values of these different variables, some high-level syntax elements are passed in the SPS, as illustrated in the following table. Petition 870250088760, dated 09 / 30 / 2025, page 34 / 113 23 / 58 of SPS syntax elements. TABLE 1 seq_parameter_set_rbsp() { Descritor sps_log2_min_luma_coding_block_size_minus2 ue(v) sps_partition_constraints_override_enabled_flag u(1) sps_log2_diff_min_qt_min_cb_intra_slice_luma ue(v) sps_max_mtt_hierarchy_depth_intra_slice_luma ue(v) if( sps_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) { s psj og2_d iffmaxbtm i n_qt_i n tra_s 1 i ce_l u ma ue(v) s psj og2_d iffmaxttm i n_qt_i n tra_s 1 i ce_l u ma ue(v)} if( sps_chroma_format_idc != 0 ) sps_qtbtt_dual_tree_i ntra_flag u(1) if( sps_qtbtt_dual_tree_intra_flag ) { sps_log2_diff_min_qt_min_cb_intra_slice_chroma ue(v) sps_max_mtt_hierarchy_depth_intra_slice_chroma ue(v) if( sps_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) { spsj og2_diff_max_bt_mi n_qt_i ntra_sl i ce_ch roma ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_chroma ue(v)}} sps_log2_diff_min_qt_min_cb_inter_slice ue(v) sps_max_mtt_hierarchy_depth_inter_slice ue(v) if( sps_max_mtt_hierarchy_depth_inter_slice != 0 ) { sps_log2_diff_max_bt_min_qt_inter_slice ue(v)sps_log2_diff_max_tt_min_qt_inter_slice ue(v)} Petition 870250088760, dated 09 / 30 / 2025, page 35 / 113 24 / 58
[0130] When the sps_partition_constraints_override_enabled_flag is enabled in SPS, some image header syntax elements are passed to update the partitioning variables, as illustrated in the following table of PH syntax elements. TABLE 2 picture_header_structure() { Descritor if( sps_partition_constraints_override_enabled_flag ) ph_partition_constraints_override_flag u(1) if( ph_intra_slice_allowed_flag) { if( ph_partition_constraints_override_flag ) { ph_log2_diff_min_qt_min_cb_intra_slice_luma ue(v) ph_max_mtt_hierarchy_depth_intra_slice_luma ue(v) if( ph_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) { ph_log2_diff_max_bt_min_qt_intra_slice_luma ue(v) ph_log2_diff_max_tt_min_qt_intra_slice_luma ue(v)} if( sps_qtbtt_dual_tree_intra_flag) { ph_log2_diff_min_qt_min_cb_intra_slice_chroma ue(v) ph_max_mtt_hierarchy_depth_intra_slice_chroma ue(v) if( ph_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) { ph_log2_diff_max_bt_min_qt_intra_slice_chroma ue(v) ph_log2_diff_max_tt_min_qt_intra_slice_chroma ue(v)}}}} if( ph_inter_slice_allowed_flag ) { Petição 870250088760, de 30 / 09 / 2025, pág. 36 / 113 25 / 58 if( ph_partition_constraints_override_flag ) { ph_log2_diff_min_qt_min_cb_inter_slice ue(v) ph_max_mtt_hierarchy_depth_inter_slice ue(v) if( ph_max_mtt_hierarchy_depth_inter_slice != 0 ) { ph_log2_diff_max_bt_min_qt_inter_slice ue(v) ph_log2_diff_max_tt_min_qt_inter_slice ue(v)}} VVC Coding Division Mode
[0131] In VVC, the coding split mode is passed in the coding tree, as illustrated in the following syntax table, where the conditionally parsed flags, split_cu_flag, split_qt_flag, mtt_split_cu_vertical_flag and mtt_split_cu_binary flag, define the split of a CU. TABLE 3 coding_tree( xO, yO, cbWidth, cbHeight, qgOnY, qgOnC, cbSubdiv, cqtDepth, mttDepth, depthOffset, partldx, treeTypeCurr, modeTypeCurr) { Descritor if( ( allowSplitBtVer | | allowSplitBtHor | | allowSplitTtVer | | allowSplitTtHor | | allowSplitQt ) && ( xO + cbWidth <= pps_pic_width_in_luma_samples ) && ( yO + cbHeight <= pps_pic_height_in_luma_samples )) split_cu_flag ae(v) if( pps_cu_qp_delta_enabled_flag && qgOnY && cbSubdiv <= CuQpDeltaSubdiv) { IsCuQpDeltaCoded = 0 CuQpDeltaVal = 0 CuQgTopLeftX = x0 Petição 870250088760, de 30 / 09 / 2025, pág. 37 / 113 26 / 58 CuQgTopLeftY = yO} if( sh_cu_chroma_qp_offset_enabled_flag && qgOnC && cbSubdiv <= CuChromaQpOffsetSubdiv) { IsCuChromaQpOffsetCoded = 0 CuQpOffsetCb = 0 CuQpOffsetCr = 0 CuQpOffsetCbCr = 0} if( split_cu_flag) { if( ( allowSplitBtVer | | allowSplitBtHor | | allowSplitTtVer | | allowSplitTtHor) && allowSplitQt) split_qt_flag ae(v) if( !split_qt_flag) { if( ( allowSplitBtHor | | allowSplitTtHor ) && ( allowSplitBtVer | | allowSplitTtVer)) mtt_split_cu_vertical_flag ae(v) if( ( allowSplitBtVer && allowSplitTtVer && mtt_split_cu_vertical_flag) | | ( allowSplitBtHor && allowSplitTtHor && !mtt_split_cu_vertical_flag ) ) mtt_split_cu_binary_flag ae(v)} if( ModeTypeCondition = = 1 ) modeType = MODE_TYPE_INTRA else if( ModeTypeCondition = = 2 ) { non_inter_flag ae(v) modeType = non_inter_flag ? MODE_TYPE_INTRA : MODE_TYPE_INTER Petição 870250088760, de 30 / 09 / 2025, pág. 38 / 113 27 / 58 } else modeType = modeTypeCurr Restrições de Divisão VVC
[0132] VVC partitioning has several restrictions. These restrictions are mainly aimed at preventing the same partitioning after several consecutive splits. Figure 13 illustrates some of these restrictions. The idea is to avoid the same partitioning with BT and TT. As illustrated in Figure 13(a), two consecutive vertical BT splits are allowed, but a vertical TT split followed by a vertical BT split in the central block is not allowed, as illustrated in Figure 13(b).
[0133] Similarly, as illustrated in Figure 13(c), two consecutive horizontal BT splits are allowed, but a horizontal TT followed by a horizontal BT split in the center block is not allowed, as illustrated in Figure 13(d).
[0134] In VVC, there are additional restrictions for the minimum chroma block size and for the maximum TT and BT block size for the interblock size. These restrictions have been removed by the ECM software. Chroma Partitioning
[0135] In VVC, Chroma partitioning can be inferred based on Luma partitioning, but this can be disabled. For example, according to the dual-tree mode, the Chroma partitioning tree is independent of the Luma tree. But there are some restrictions.
[0136] The tree may also be partially dependent on Luma partitioning for CCLM mode; otherwise, it is independent. Image Frontier
[0137] The frame resolution is not always equal to an integer multiple of the CTU size. Consequently, there may be incomplete CTUs at the edges of the frame, as illustrated in Figure 14, where CTUs 1201 to 1206 are incomplete due to the bottom and right borders 1207 and 1208 of the frame. In VVC, in contrast to previous standards, split signaling is allowed at the image boundary. Petition 870250088760, dated 09 / 30 / 2025, page 39 / 113 28 / 58 The boundary splitting process is applied until the encoding tree node represents a CU located entirely within an image. However, some splits are inferred (not transmitted). Consequently, different variables, such as maxMttDepth, minQtDepth, and minQtSize, are increased or decreased and possibly different from those used for off-boundary splits. QT BT TT Encoding Selection
[0138] In VTM and ECM software, several encoder-side optimizations are used for QT BT TT encoding selection.
[0139] One of these optimizations includes determining whether QT splitting is tested before BT splitting.
[0140] The condition is that at least one CU to the left of or above the current coding tree node has a QT depth greater than the QT depth of the current coding tree node; and if the width of the CU represented by the current coding tree node is greater than minQtSize * 2.
[0141] If this condition is true, QT will be tested before BT and the divisions will be handled in the following order: -No Division -QT - BT Horizontal - BT Vertical - Horizontal TT - TT Vertical Otherwise, the order will be: - No Division - BT Horizontal - BT Vertical - Horizontal TT -TT Vertical -QT Petition 870250088760, dated 09 / 30 / 2025, p. 40 / 113 29 / 58
[0142] This order is important because, according to some optimizations, several divisions will not be tested depending on the results of the first modes tested. Therefore, when QT is tested last, there are many occasions when it will not be evaluated. maxMttDepth
[0143] The maximum MTT depth has a significant impact on encoder complexity. Common test conditions for ECM have been updated to reduce encoding by defining different maxMttDepths, as illustrated in Figure 15. In this configuration, the maxMttDepth is smaller for some temporal IDs for higher resolutions or lower QP settings. maxBtSize Adaptive
[0144] In VTM and ECM, there is a frame-level encoding choice that defines maxBtSize according to the average block sizes of previously encoded frames with the same depth (=> same temporal ID in the case of CTC RA). The average block size is compared to the limits, as in the following pseudocode: if( dBlkSize < AMAXBT_TH32 ) { newMaxBtSize = 32; } else if( dBlkSize < AMAXBT_TH64 ) { newMaxBtSize = 64; } else if( dBlkSize < AMAXBT_TH128 ) { newMaxBtSize = 128; } else { Petition 870250088760, dated 09 / 30 / 2025, p. 41 / 113 30 / 58 newMaxBtSize = 256;}
[0145] Where AMAXBT_TH32 equals 15, AMAXBT_TH64 equals 30, and AMAXBT_TH128 equals 60. This method decreases the maximum BT block size when the average block size is small and increases it when it is large. Time Prediction for CABAC:
[0146] In ECM, a CABAC temporal prediction is used (JVET-Y0181). In this method, previous slices are used for the CABAC initialization of the current frame. The probability state of each context model is first obtained after encoding CTUs up to a specified location and stored. Then, the stored probability state is used as the initial probability state for the corresponding context model in the next B or P slice encoded with the same quantization parameter (QP) or the same corresponding temporal ID. Problem Solved by the Invention
[0147] In traditional video coding, temporal redundancies are exploited between samples thanks to Inter modes, between motion information thanks to different temporal candidates or predictors, and in ECM, temporal redundancies between CABAC probabilities are also used to improve coding efficiency. Other data parameters, variables, and syntax elements must have temporal correlation. But traditional ways of exploiting these redundancies seem to be unhelpful or impossible. For example, the solution of using a large number of predictors for samples, as in the different Inter modes, is not suitable for data with few coding possibilities. Signaling multiple candidates for motion information is useful because motion is real-world information and is very specific. But this is not useful for predicting parameters, variables, or syntax elements.Similarly, the prediction of CABAC states is not adequate, as it seems more like a frame-based QP prediction and does not adapt to the different content within a video sequence. Petition 870250088760, dated 09 / 30 / 2025, p. 42 / 113 31 / 58
[0148] The present invention proposes a way to use temporal correlations between data and efficiently determine the values used to predict those data. MODALITIES Main Mode Emb.Main Use of a temporal area to derive at least one value to predict, infer, or determine a context increment for a syntax element, a syntax element, or a variable.
[0149] In one embodiment, a temporal area is used to derive at least one value to predict, infer, limit, or determine a variable, or to encode a syntax element or compute a context increment for a syntax element. The value represents a similar variable or syntax element, or another related variable or syntax element. The temporal area comes from a temporal frame already encoded on the encoder side or already decoded on the decoder side. In one example, Figure 16 illustrates this embodiment. In the figure, the temporal area (1601) contains several blocks and some parts of blocks on the boundary of the temporal area. These blocks are considered to derive at least one value.
[0150] The advantage of this approach is an improvement in coding efficiency thanks to better derivation of predictors, limits, or context increments. Compared to the methods used in the previous technique, this method is more suitable for syntax elements or variables with a reduced number of values. Emb. Tempo_from1 Frame with the same temporal ID
[0151] In one modality, the temporal area comes from a frame with the same temporal ID.
[0152] For the Random Access configuration example, as shown in Figure 9, if the current frame has a temporal ID equal to 4, another encoded / decoded frame with the same temporal ID 4 is used to determine the value associated with the temporal area. Petition 870250088760, dated 09 / 30 / 2025, page 43 / 113 32 / 58
[0153] Frames with the same temporal ID often have the same encoding parameters, especially they have the same or similar QP and the same spatial distances to their reference frames. Therefore, they are very interesting for predicting QT depth, as these data are correlated to QP and the spatial distance between frames. Emb. Tempo_from1.1 Closest frame with the same temporal ID
[0154] In one modality, the temporal area comes from the nearest frame with the same temporal ID.
[0155] For the Random Access configuration example, as shown in Figure 9, the closest frame with the same temporal ID is (generally) more correlated than the others. Therefore, the result is better. Emb. Tempo_from2 Frame or a reference frame with the same QP
[0156] In one modality, the temporal area comes from a frame or a reference frame with the same QP. Ideally, a reference frame with the same QP.
[0157] As mentioned above, QP has a significant influence on block partitioning, and many syntax elements and variables have similar values. Therefore, with a frame having the same QP, the value determined from the temporal is better. Emb. Tempo_from3 The reference frame is the same one used for predicting the temporal motion vector.
[0158] In one embodiment, the temporal area comes from the reference frame that is used for the temporal motion vector prediction. This can be the first reference of Reference List 0 or the first reference frame of List 1, according to a flag transmitted in the image header or in the slice header.
[0159] Surprisingly, this mode offers the best encoding efficiency, even though this reference frame has a lower QP. However, it is closer to the current frame compared to all frames with the same temporal ID. Petition 870250088760, dated 09 / 30 / 2025, page 44 / 113 33 / 58 Emb. Time_from4 Nearest frame of reference
[0160] In a modality, a temporal area comes from the nearest frame of reference.
[0161] As explained in the previous modality, the distance to the current frame seems more interesting for the trade-off between reducing encoder time and encoding efficiency, even though frames with the same QP statistically have more correlations between their QP depths. Emb. Tempo_from5 More than one frame of reference
[0162] In one embodiment, two time frames are considered and therefore two time areas are used to determine a value. More than two reference frames may also be considered.
[0163] The advantage is better encoding efficiency, but it increases the number of memory accesses. Emb.Decim HLS Transmission of size N or M in a header
[0164] In one embodiment, the N grid value for decimating the temporal area blocks and / or the M grid value for decimating the possible block positions are transmitted in the header. Additionally, or alternatively, other parameters, such as non-regular grid, can also be transmitted. Ideally, since this impacts the temporary memory store, the value is transmitted in the SPS sequence parameter set. But if the value between N and M maintains the same required memory size, these values can alternatively be transmitted in the PPS, image header, or slice header. Size Emb.Larger The size is greater than or equal to the current block size.
[0165] In one embodiment, the size of the time area is larger, if possible, than the current block. The aim of this embodiment is to determine a more useful value than the value that can be obtained with the colocalized block.
[0166] An advantage is a better value for the variable to be predicted, inferred, determined, or for the derivation of a context increment, since the value Petition 870250088760, dated 09 / 30 / 2025, page 45 / 113 34 / 58 determined is based on more values than the single co-located block. Obviously, it is tailored to some data, as opposed to motion information. This advantage provides an improvement in coding efficiency.
[0167] A second advantage, compared with a solution where the block is shifted according to motion information (such as a temporal subblock), is that the motion information does not need to be determined. Therefore, the analysis does not depend on the motion information, which cannot be obtained without a complete decoding.
[0168] Another advantage, compared to a colocated block from just one, is that multiple values can be considered and others can be derived such as the minimum, the maximum average, etc., which provides more information to limit, predict, or derive a context increment. Emb.Larger2 The size of the temporal area is greater than or equal to the maximum possible block size.
[0169] In a modality, the temporal area is greater than or equal to the maximum possible block size. For example, the temporal area is greater than or equal to the CTU size.
[0170] This provides an interesting compromise between coding efficiency and the complexity of determining value. Emb.AdaptSize The size is adapted according to a variable / parameter
[0171] In a modality, the temporal area size is adapted according to at least one variable or at least one parameter.
[0172] The advantage of this mode is an increase in encoding efficiency, especially when the temporal area is used to compensate for movement between two frames. Emb.AdaptSize1 Temporal distance
[0173] In one mode, the size of the temporal area is determined based on the temporal distance between the current frame and the frame containing the temporal area. In this mode, the temporal area increases as the temporal distance increases. For example, the absolute difference between the Order Count of Petition 870250088760, dated 09 / 30 / 2025, page 46 / 113 35 / 58 Point-of-care (POC) images from the current frame “currPOC” and the frame containing the temporal area “tempoPOC” are computed to account for the temporal distance between frames. For example, the size of the temporal area (widthTempo, heightTempo) can be determined according to the following pseudocode: widthTime = widthTimeFix + 8*abs(currPOC - timePOC) heightTime = heightTimeFix + 8*abs(currPOC - timePOC)
[0174] where abs() is the function that receives the absolute value. widthTempoFix and heightTempoFix are predetermined. For example, they are defined as equal to the CTU size. The number “8” in this formula is just an example, but another value can be considered.
[0175] In addition, the sequence frame rate can be considered to apply a weight to the absolute difference between POCs.
[0176] The advantage is that the temporal area can compensate for movement between both frames and maintain the temporal correlation between the variable or syntax element to be predicted, etc. Emb.AdaptSize2 QP Difference
[0177] In one modality, the size of the temporal area is determined based on the quantization parameter (QP) of the current frame and the QP of the frame containing the temporal area. Furthermore, the size is determined based on the difference in QP between these two frames. For example, the size of the temporal area increases when the QP of the current frame is less than the QP of the temporal frame. Conversely, it decreases when the QP of the current frame is greater than the QP of the temporal frame. Additionally, it can be proportional.
[0178] The advantage is an improvement in coding efficiency. In fact, the block sizes in a frame are related to the QP. In fact, for the same coded frame, the block sizes are larger when the QP is larger. Therefore, a larger time area, when the QP is larger for the time frame than for the current frame, increases the chance of finding a correct value. Emb.AdaptSize3 ID Temporal, Depth Petition 870250088760, dated 09 / 30 / 2025, page 47 / 113 36 / 58
[0179] In one modality, the size of the temporal area is determined based on the temporal ID of the current frame and the temporal ID of the temporal frame containing the temporal area. Furthermore, this size can be proportional to the difference between the two temporal IDs. For example, the size of the temporal area increases when the temporal ID of the temporal frame is smaller than the temporal ID of the current frame.
[0180] Alternatively, hierarchical depth can be considered instead of temporal ID.
[0181] The advantage is an improvement in encoding efficiency. In fact, frames with small temporal IDs are often encoded with a larger temporal distance between frames. It is better to increase the temporal area in this case. Emb.AdaptSize4 A value transmitted in a header
[0182] In one embodiment, the temporal area size is determined based on a value transmitted in a header. The value can be transmitted alternatively or additionally in the SPS, PPS, figure header, and slice header. For example, the value is transmitted in the SPS and predicted or inferred in the PPS. And an override flag indicates whether this value is updated to the image header or not compared to the PPS or SPS value.
[0183] The advantage is that the encoder implementation is not limited and can be adapted to select between efficiency and encoding complexity. Emb.AdaptSize5 The current block size
[0184] In one embodiment, the size of the time area is determined based on the size of the current block. Therefore, for larger blocks, the time area is larger, and smaller for smaller blocks. For example, if a minimum time area size corresponding to the minimum possible block size is considered, the size of the current block is added to this minimum size to obtain the final size of the time area corresponding to the current block.
[0185] This is more suitable for multiple block sizes. Blocks Within the Temporal Area Petition 870250088760, dated 09 / 30 / 2025, page 48 / 113 37 / 58 Emb.All_Blocks All blocks in the temporal area
[0186] In one embodiment, the blocks considered to determine the value are all the blocks in the time area. In the example in Figure 16, the time area (1601) does not have its edges aligned to the split partitioning. This corresponds to all blocks (1602 to 1620) that have at least one sample within the time area (1601). Therefore, 19 blocks are considered in this figure.
[0187] This is the simplest way to consider blocks within the time area. Emb.KeepProportion Blocks within the temporal area, maintaining the proportion of the blocks.
[0188] In one embodiment, when the blocks considered to determine the value are all blocks of the time area, but the value extracted from the block is weighted to take into account only the part of the block that is within the time area. For the example in Figure 16, for block 1617, a weight corresponding to part 1630 is determined to calculate, for example, an average of several values.
[0189] Compared to the previous method, this one is more complex, as some additional computations are required, but it increases encoding efficiency because it is more locally adapted to the current block. Emb.FullyContain Blocks entirely within the temporal area
[0190] In one embodiment, as an alternative to the previous one, the blocks considered to determine the value are blocks entirely within the time area. In the example in Figure 16, when the time area (1601) does not have an edge aligned with the split partitioning, this corresponds to all blocks 1601 to 1604. Therefore, 4 blocks are considered.
[0191] The advantage of this approach is that it reduces the complexity of determining the value, since fewer values need to be used for the computation. But not for the worst case, when the time area corresponds to the split partitioning. Temporal Area Position Compared to the Current Block Emb.Center Center of the block's position in the current frame Petition 870250088760, dated 09 / 30 / 2025, page 49 / 113 38 / 58
[0192] In one modality, the position of the center of the current block is the center of the temporal area in the temporal frame.
[0193] The center is, on average, the best representation of a block. Therefore, the coding efficiency is better.
[0194] Alternatively, when the center of the block is outside the frame, the upper left position may be considered. Emb.shiftedBasedMV The temporal area can be shifted according to the motion information.
[0195] Even though the temporal area can compensate for the use of motion information for the analysis process, in one modality, the temporal area is shifted according to the motion vector. For example, a neighboring motion vector. This is particularly efficient if the motion information is large or if the temporal distance is large between the current frame and the temporal frame of the colocalized area. Time area decimation Emb. Decimation A position in N
[0196] In one embodiment, only the blocks present in a grid are considered to determine the value of the temporal area. In this embodiment, only the blocks that are multiples of N in height and width are considered for determining the value.
[0197] Figure 17 shows an example of this modality. In this figure, to determine the value of the temporal area 1701, only the blocks (1702 to 1710) in the N χ N grid, represented by the points, are used. Note that in this figure, the temporal area is aligned with the split partitioning to simplify the description.
[0198] The main advantage is the reduction of the temporary storage needed to store the values that will be used to determine the temporal area value. In fact, all the values needed to determine this value need to be kept in memory for each frame that can be used as the temporal area frame. For hardware implementation, the worst-case scenario is considered to Petition 870250088760, dated 09 / 30 / 2025, page 50 / 113 39 / 58 design the temporary storage. The worst case is the minimum block size in this case. Since the minimum size is 8χ² or 4χ², it can be considered that, in the worst case, the values are stored for each 4χ² block. Therefore, for a 1080p frame, (1920 / 4) * (1080 / 4) = 129600 related values need to be stored for a time frame. If, for example, the value N is considered to be equal to 16, only (1920 / 16) * (1080 / 16) = 8100 related pieces of information need to be stored for a time frame. Therefore, the amount of information needed to be stored is reduced by 16.
[0199] Another advantage is the reduction in complexity when the partitioning contains small blocks. In fact, this reduces worst-case complexity, since at most, the blocks in the grid need to be considered.
[0200] Furthermore, it gives more importance to larger blocks, which better represent what happens in the temporal area, as opposed to small blocks, which correspond to some less frequent areas. Consequently, the decimation is better. And, surprisingly, an improvement in coding efficiency is obtained with this decimation. Especially when the value obtained from the temporal area is used to limit or infer the QT, BT, and TT variables. A decimation with N equal to 16 provides the best coding efficiency. If the temporal area is a CTU of a sample of 256 χ²⁵⁶ lumas, only 256 blocks need to be considered for the worst case. In contrast, without this decimation, 2048 blocks need to be considered for the worst case, since the minimum block is 4 χ²⁸ or 8 χ²⁴. Emb.SumProportional to the block size (especially for data representing partitioning)
[0201] In one embodiment, only the blocks present in a grid are considered to determine the value of the temporal area, and the block size is considered to compute an average, for example. Therefore, the value is obtained by considering the proportionality of the blocks considered. This also applies to the blocks on the boundary of the temporal area, as described in a previous embodiment. Petition 870250088760, dated 09 / 30 / 2025, page 51 / 113 40 / 58
[0202] The advantage is an improvement in coding efficiency compared to the method that does not apply this proportionality. Emb.SumCenter The N positions of the grid are centered
[0203] In one modality, the grid considered is centered in relation to the temporal area. If the upper left corner of the temporal area is considered to have the position (0,0), the upper left position of the grid is (N / 2,N / 2). Figure 18 (a) illustrates a non-centered grid for a temporal area and Figure 18 (b) illustrates a centered grid for a temporal area.
[0204] The advantage is an improvement in encoding efficiency, as the retained values will (on average) be closer to the center of the current block. Emb.SumNotReg An irregular pattern
[0205] In one modality, the positions follow a non-regular pattern. For example, more positions are considered in the center of the temporal area, and the corners of the temporal area are also considered. Figure 19 illustrates this non-regular pattern.
[0206] The advantage is sometimes an improvement in encoding efficiency. Decimation of Current Block Positions Emb. currentPosDecim Possible block positions are decimated
[0207] In one mode, the possible positions of the current blocks are deciphered. In this mode, not all possible positions for a block in the current grid are possible. Only the positions in a grid every M samples in height and width are considered.
[0208] For example, if the center of the current block is considered as the position of the temporal area, this position will be the center of the temporal area only if PosCenter.x and PosCenter.y are multiples of M. Otherwise, the position used will be one of the multiple positions of M around the initial PosCenter. For example, the position of the center of the temporal area PosTempo is obtained as follows:
[0209] PosTempo.x = M*(PosCenter.x / M)
[0210] PosTempo.y = M*(PosCenter.y / M)
[0211] In these formulas, the divisions are integer divisions. Alternatively, it Petition 870250088760, dated 09 / 30 / 2025, page 52 / 113 41 / 58 can be obtained through the following displacement operations:
[0212] PosTempo.x = (PosCenter.x >> S)<< S
[0213] PosTempo.y = (PosCenter.y >> S)<< S
[0214] Where >> is the left shift operator and << is the right shift operator and S = Log2 (M).
[0215] The main advantage of this approach is the reduction of the temporary memory storage required to store the values determined for the time area. This is particularly interesting for the encoder implementation. In fact, in the encoder, the value determined from the time area can be determined multiple times for various block sizes having, for example, the same center. If all values need to be determined, this will be costly in terms of memory. Similarly, for the deciphering of the considered block in the time area, with this deciphering of possible central positions of the time area, the temporary storage is significantly reduced (similar reduction with N = M).
[0216] In addition, it reduces encoding time, as fewer values need to be determined on the encoder side.
[0217] And, surprisingly, this decimation provides an improvement in coding efficiency. This is particularly true when the value obtained from the temporal area is used to limit or infer the QT, BT, and TT partitioning variables. A decimation with M equal to 16 provides the best coding efficiency. Emb.DecimCenter The grid positions are centered.
[0218] In one modality, the grid of possible block positions does not start at the top left position (0,0) of the frame, but with an offset of (M / 2, M / 2) for better decimation of the positions. This modality is similar to the grid centered in the center of the temporal area.
[0219] The advantage is an improvement in coding efficiency. Emb.DecimBoth Decimation of both the temporal area and the block position
[0220] In one modality, both the decimalization of the time area blocks Petition 870250088760, dated 09 / 30 / 2025, page 53 / 113 42 / 58 as to how many possible positions are used together.
[0221] This also provides an improvement in coding efficiency and a reduction in complexity. Emb.Multicenter for larger block Considering multiple positions within this temporary storage for larger blocks
[0222] The use of a temporary store significantly reduces memory, but may be limited if the size of the temporary area depends on the size of the current block. In that case, the value cannot be stored only once on the encoder side.
[0223] In one embodiment, when the current block size is used to determine the time area size and when decimation of possible positions for the current block is used, all possible available positions contained in the block are considered and the values of all related time areas are considered to determine the time area value for the current block.
[0224] This approach offers the same advantages as using a temporal area size adapted to the current block size. In addition, it does not require more memory for the temporary storage than using a fixed size for the temporal area. Implementation
[0225] In many implementations, to access an area in a previous frame, the positions of that area are considered, and it is necessary to traverse the positions of the area to obtain the information of the blocks or CUs present in that area. This is due to the structure of the temporary storage that contains the information. Consequently, when it is necessary to access the temporary area to determine a value, the block structure is not known without going to each position. Therefore, the basic solution consists of traversing each position and calculating the value associated with each position. Emb.Imple Current Implementation
[0226] In one modality, when the value of the time area is determined, the Petition 870250088760, dated 09 / 30 / 2025, p. 54 / 113 43 / 58 The sizes of the blocks within the temporal area are taken into account to avoid multiple accesses to the same block. Thus, each block has only one access. For example, a Boolean table representing all possible positions within the temporal area is initialized with the value false. The possible positions in the temporal area are the positions of the N χ N grid when the positions of the temporal area are deciphered. The impossible positions in this table are defined as being equal to 1. The impossible positions are the positions outside the temporal frame. Each position has its corresponding value in this table and is defined as false. When the position is checked in the temporal area, the value is extracted and the block is considered to have been extracted. The related position within the Boolean table is defined as true, as are all related positions corresponding to the current block associated with this position.The next position checked is therefore a block that has not yet been checked, and the related boolean in the table is equal to false.
[0227] Thanks to this implementation, determining the value of the time area is faster. Emb.Pred Prediction
[0228] In one embodiment, the time area is used to derive a predictor for a syntax element or a variable. For example, for the syntax element, instead of being encoded directly, a residual is extracted from the bitstream and the predictor is added to that residual. In an alternative example, a first bit is extracted from the bitstream to determine if the current syntax element is set equal to the corresponding value obtained from the time area. If, for example, this flag is equal to 1, the syntax element is equal to the corresponding value from the time area. Otherwise, if this flag is equal to 0, other bits will be decoded to determine the value of that syntax element.
[0229] The use of the temporal area is very interesting in terms of encoding efficiency to obtain a matching value. Emb.Infer Inference
[0230] In one modality, as an alternative to the previous one, the value of the element of Petition 870250088760, dated 09 / 30 / 2025, page 55 / 113 44 / 58 syntax is inferred according to the corresponding value of the temporal area.
[0231] In one mode, the value of the variable for a block of the current frame is inferred thanks to the corresponding value of the time area. For example, the maxMttDepth of the current block is determined based on the maxMttDepth determined from the time area “maxMttDepthTempo”. And according to some rules and the initial maxMttDepth for the current block compared to “maxMttDepthTempo”, the value of maxMttDepth for the current block is increased, decreased, or not changed.
[0232] The advantage of this example is the improvement in coding efficiency with the reduction in coding time, efficiently limiting the maximum multitree depth for the current block. Emb.Limit Limite
[0233] In one embodiment, a value determined from a time range is used to limit a syntax element or a variable. For example, a maximum value is determined and the value of the syntax element for the current block is limited to that maximum value. Thus, its encoding is adapted to that restricted number of values to reduce the number of bits that need to be transmitted. Similarly, a minimum value may be considered, or both a maximum and a minimum value. Emb.Limit1.QTBT
[0234] In another example, a variable is limited. For example, the minimum QT depth of the temporal area is determined. And this value is used to determine the minimum QT depth value for the QT depth of the current block. Consequently, fewer bits for QT division need to be transmitted and the encoding time decreases, as fewer encoding possibilities need to be tested. Emb.Ctx Derive an increment of context index ctxInc
[0235] In one modality, a value determined from a temporal area is used to determine a context index increment of a syntax element. For example, the value obtained from the temporal area “condTempo” is added, if Petition 870250088760, dated 09 / 30 / 2025, page 56 / 113 45 / 58 available (availableTempo = 1), to the other context increments obtained from the spatial positions above (condA) and to the left (condL), as in the following formula: ctxInc = (condL && availableL) | | ( condA && availableA ) | | ( condTempo && availableTempo )
[0236] The advantage is an improvement in coding efficiency, since syntax elements generally exhibit spatial and temporal correlations. The value is Minimum Emb.
[0237] In one modality, the value to be determined from the time area is a minimum value of the blocks to be considered within the time area. Emb.minQTDepth Special case of minQTDepth
[0238] In a particular embodiment, the value to be determined from the temporal area is a minimum of QT depth values of the blocks to be considered within the temporal area. For example, this minQTDepth is then compared with the current QT depth of the current block to determine whether only QT splitting is allowed or not.
[0239] This provides a reduction in encoding execution time and an improvement in encoding efficiency, limiting the number of possible divisions to be tested and the related bits that are not signaled thanks to this solution. Emb.Max Maximum
[0240] In one modality, the value to be determined from the time area is a maximum value of the blocks to be considered within the time area. Emb.MaxMttDepth Special case of MaxMttDepth
[0241] In a specific embodiment, the value to be determined from the temporal area is a maximum of multitree depth values of the blocks to be considered within the temporal area. For example, this maxMttDepthTempo is then compared with the current maxMttDepth depth of the current block to determine, according to other conditions, whether maxMttDepth needs to be Petition 870250088760, dated 09 / 30 / 2025, page 57 / 113 46 / 58 increased, decreased, or remain the same.
[0242] This provides an improvement in encoding efficiency. Emb.Median Mediano
[0243] In one modality, the value to be determined from the time area is a median value of the blocks to be considered within the time area. Average Emb.
[0244] In one modality, the value to be determined from the time area is an average value determined from the blocks to be considered within the time area. Maintain the proportion of block size in the temporal area.
[0245] As mentioned earlier for other modalities, the block size ratio must be maintained. In this case, the average must consider the number of samples that each block contains or, alternatively, a minimum block unit (the minimum block size (4 χ 4)). In this case, for a block i, the related value BLVal_i, the average AverageVal is obtained as follows: AverageVal = 0 Nb_samples = 0 For (i = 0 to nb_blocks) { AverageVal = AverageVal + BLVal_i * (height_i * width_i) Nb_samples = Nb_samples + (height_i * width_i)} AverageVal = AverageVal / Nb_samples
[0246] Where Nb_samples is the number of samples for all blocks in the time area, nb_blocks is the number of blocks, height_i and width_i are the height and width of block number i. Alternatively, height_i and width_i can be, respectively, the height and width in terms of temporal positions according to the decimation. For example, if the temporal decimation considered is defined as equal to 16 (one position for 16 samples vertically and horizontally), the height and width are divided by 16. Or shifted to the right by log2(16) = 4. Petition 870250088760, dated 09 / 30 / 2025, p. 58 / 113 47 / 58
[0247] In addition, a rounding process can be added to the formula as follows: AverageVal = (AverageVal + (0.5)) / Nb_samples
[0248] This rounding provides an improvement in coding efficiency.
[0249] In an alternative AverageVal = 0 Nb_samples = 0 For (i = 0 to nb_blocks) { AverageVal = AverageVal + BLVal_i / (height_i * width_i) Nb_samples = Nb_samples + 1 / (height_i * width_i)} AverageVal = (AverageVal + (Nb_samples / 2)) / Nb_samples Keep only the blocks that are entirely within the temporal area.
[0250] When blocks cross the temporal area boundary, only the part within the temporal area is considered, and height_i and width_i for the related block correspond to the height and width within the temporal area.
[0251] This can be implemented as the following algorithm: AverageVal = 0 Nb_samples = 0 For (i = 0 to nb_blocks) { AverageVal = AverageVal + (BLVal_i / (height_i * width_i) ) / blocksize Nb_samples = Nb_samples + (1* (height_i * width_i)) / blocksize} AverageVal = (AverageVal + (Nb_samples / 2)) / Nb_samples
[0252] Where height_i and width_i are, respectively, height and width in terms of temporal positions, according to the decimation within the temporal area.
[0253] Therefore, if a part of the block is outside the temporal area, the Petition 870250088760, dated 09 / 30 / 2025, p. 59 / 113 48 / 58 positions outside the time area, according to the decimation, are subtracted, respectively, from height_i and width_i of block i.
[0254] Blocksize is equal to the number of samples of the current block i. Therefore, it is the multiplication of the height by the width.
[0255] For hardware implementations, you need to use integer division. Therefore, the formula needs to be adapted to the integer implementation. So, in one embodiment, the formula becomes, in this case: AverageVal = 0 Nb_samples = 0 For (i = 0 for nb_blocks) { AverageVal = AverageVal + (BLVal_i * (roundVal * (height_i * width_i) ) / blocksize) Nb_samples = Nb_samples + (roundVal / (height_i * width_i)) / blocksize} AverageVal = (AverageVal + (Nb_samples / 2)) / Nb_samples
[0256] Where the rounded value, roundVal, is defined as: roundVal = (tempoAreaWidth >> 2) * (tempoAreaHeight >> 2) * (tempoAreaWidth / TempoRes) * (tempoAreaHeight / TempoRes)
[0257] Where TempoRes corresponds to the decimation of the temporal area. Therefore, 16, in the various examples mentioned above. And tempoAreaWidth and tempoAreaHeight are the height and width of the temporal area. Therefore, in the examples described above, they can be equal to the size of the CTU.
[0258] According to the example mentioned earlier, where the time area is defined as equal to the CTU size, and the decimation is equal to 16, the roundVal is defined as: roundVal = (CTUSize >> 2) * (CTUSize >> 2) * (CTUSize / TempoRes) * (CTUSize / TempoRes)
[0259] With this rounding value, the same results as a Petition 870250088760, dated 09 / 30 / 2025, p. 60 / 113 49 / 58 floating-point division results are obtained.
[0260] Furthermore, all divisions can be replaced by right shifts, considering the log2 values. Emb.QTDepthTempo Special case of QTDepthTempo
[0261] In one embodiment, the value to be determined from the temporal area is an average of the QT depth values of the blocks to be considered within the temporal area. For example, this QTDepthTempo is then compared with the QT Depth of the current block to allow only QT, No split and TT, or additionally or alternatively, is compared with the QT Depth of the current block and, if equal and in accordance with other conditions, maxMttDepth is increased.
[0262] This provides an improvement in coding efficiency and a reduction in coding time. Emb.Variance
[0263] In one modality, the value to be determined from the time area is a variance of the values of the blocks to be considered within the time area. The variance is the average of the distances to the mean. This requires determining the mean first and then the variance. Thus, the blocks within the time area are considered twice. Others Emb. OTHER1 All these options can be combined
[0264] All the modalities described can be combined, unless explicitly indicated otherwise. In fact, many combinations are synergistic and can produce efficiency gains greater than the sum of their parts. Emb. Contrib Para a Contribuição
[0265] In particular, a minimum QT depth “minQTDepthTempo”, a maximum multitree depth “maxMttDepthTempo”, and an average depth value “QTDepthTempo” are determined from a temporal area. The minQTDepthTempo is then compared to the current QT depth of the current block to determine whether QT splitting alone is allowed or not. The Petition 870250088760, dated 09 / 30 / 2025, p. 61 / 113 50 / 58 maxMttDepthTempo is compared to the current maxMttDepth depth of the current block. If it is less than maxMttDepth, maxMttDepth is decreased. If it is greater and if QTDepthTempo is equal to the QT depth of the current block, maxMttDepth is increased. Additionally, QTDepthTempo is compared to the QT depth of the current block to allow only QT, No split, and TT. The temporal area is based on the reference frame used for the temporal motion vector prediction and corresponds to the center of the current block. The temporal area is equal to the CTU size. Only blocks present in a 16 χ 16 grid are considered to determine the 3 values, and the block size is considered to compute the average QTDepthTempo. Therefore, the value is obtained considering a proportionality between the blocks. This also applies to blocks on the boundary of the temporal area. Eventually, the positions of the current blocks are deciphered using a 16χ¹⁶ grid. Implementation of the Invention
[0266] Figure 20 shows a system 191, 195 comprising at least one of an encoder 150 or a decoder 100 and a communication network 199, according to embodiments of the present invention. According to one embodiment, the system 195 serves to process and provide content (for example, video and audio content for display / transmission or streaming of video / audio content) to a user, who has access to the decoder 100, for example, through a user interface of a user terminal comprising the decoder 100 or a user terminal that is communicable with the decoder 100. Such a user terminal may be a computer, a mobile phone, a tablet, or any other type of device capable of providing / displaying the content (provided / transmitted) to the user.System 195 obtains / receives a bit stream 101 (in the form of a continuous stream or a signal - for example, while a previous video / audio is being displayed / transmitted) through the communication network 199. According to one embodiment, system 191 serves to process content and store the processed content, for example, video and audio content processed for display / transmission / streaming in a. Petition 870250088760, dated 09 / 30 / 2025, page 62 / 113 51 / 58 later stage. System 191 obtains / receives content comprising an original sequence of images 151, which is received and processed (including filtering with a deblocking filter according to the present invention) by encoder 150, and encoder 150 generates a bitstream 101 that must be communicated to decoder 100 via a communication network 191. The bitstream 101 is then communicated to decoder 100 in various ways, for example, it may be previously generated by encoder 0 and stored as data in a storage device on the communication network 199 (e.g., on a server or cloud storage) until a user requests the content (i.e., the bitstream data) from the storage device, at which point the data is communicated / transmitted to decoder 100 from the storage device.System 191 may also comprise a content provider device for providing / transmitting to the user (e.g., communicating data to a user interface to be displayed on a user terminal) content information for the content stored in the storage device (e.g., the title of the content and other metadata / storage location data to identify, select, and request the content) and for receiving and processing a user request for content, so that the requested content can be delivered / transmitted from the storage device to the user terminal. Alternatively, encoder 150 generates bitstream 101 and communicates / transmits it directly to decoder 100 as and when the user requests the content.The decoder 100 then receives the bitstream 101 (or a signal) and performs filtering with a deblocking filter according to the invention to obtain / generate a video signal 109 and / or audio signal, which is then used by a user terminal to provide the requested content to the user.
[0267] Any step of the method / process according to the invention or functions described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the steps / functions may be stored or transmitted by means of one or more instructions, Petition 870250088760, dated 09 / 30 / 2025, pp. 63 / 113 52 / 58 code or program, or of a computer-readable medium, and executed by one or more hardware-based processing units, such as a programmable computing machine, which may be a PC (“Personal Computer”), a DSP (“Digital Signal Processor”), a circuit, a set of circuits, a processor and memory, a general-purpose microprocessor or central processing unit, a microcontroller, an ASIC (“Application-Specific Integrated Circuit”), a field-programmable logic array (FPGAs), or other equivalent set of integrated or discrete logic circuits. Consequently, the term “processor,” as used herein, may refer to any of the foregoing structures or to any other structure suitable for implementing the techniques described herein.
[0268] The embodiments of the present invention can also be implemented by a wide variety of devices or apparatus, including a wireless device, an integrated circuit (IC), or a set of JCs (e.g., a chip set). Various components, modules, or units are described herein to illustrate functional aspects of devices / apparatuses configured to perform these embodiments, but do not necessarily require implementation by different hardware units. Instead, various modules / units can be combined into a codec hardware unit or provided by a set of interoperable hardware units, including one or more processors in conjunction with suitable software / firmware.
[0269] Embodiments of the present invention may be carried out by a computer of a system or apparatus that reads and executes computer executable instructions (e.g., one or more programs) stored in a storage medium to execute the modules / units / functions of one or more of the embodiments described above and / or that includes one or more processing units or circuits to execute the functions of one or more of the embodiments described above, and by a method performed by the computer of the system or apparatus, for example, by reading and executing the computer executable instructions from the storage medium to execute the functions of Petition 870250088760, dated 09 / 30 / 2025, page 64 / 113 53 / 58 one or more of the modes described above and / or controlling one or more processing units or circuits to perform the functions of one or more of the modes described above. The computer may include a network of separate computers or separate processing units to read and execute computer-executable instructions. Computer-executable instructions may be supplied to the computer, for example, from a computer-readable medium, such as a network communication medium or a tangible storage medium. The communication medium may be a signal / bit stream / carrier wave.Tangible storage media is a “non-transient, computer-readable storage medium” that may include, for example, one or more hard disk drives, random access memory (RAM), read-only memory (ROM), distributed computing system storage, an optical disc (such as a compact disc (CD), a digital versatile disc (DVD), or a Blu-ray disc (BD)™), a flash memory device, a memory card, and the like. At least some of the steps / functions may also be implemented in hardware by a dedicated machine or component, such as an FPGA (Field Programmable Gate Array) or an ASIC (Application-Specific Integrated Circuit).
[0270] Figure 21 is a schematic block diagram of a computing device 3600 for implementing one or more embodiments of the invention. The computing device 3600 may be a device such as a microcomputer, a workstation, or a lightweight portable device. The computing device 3600 comprises a communication bus connected to: - a central processing unit (CPU) 3601, such as a microprocessor; - a random access memory (RAM) 3602 for storing the executable code of the method of embodiments of the invention, as well as registers adapted to record variables and parameters necessary to implement the method of encoding or decoding at least part of an image according to embodiments of the invention, the memory capacity may be expanded by an optional RAM connected to an expansion port, by Petition 870250088760, dated 09 / 30 / 2025, page 65 / 113 54 / 58 example; - a read-only memory (ROM) 3603 for storing computer programs for implementing embodiments of the invention; - a network interface (NET) 3604 is typically connected to a communication network through which the digital data to be processed is transmitted or received. The network interface (NET) 3604 may be a single network interface, or composed of a set of different network interfaces (e.g., wired and wireless interfaces, or different types of wired or wireless interfaces).Data packets are written to the network interface for transmission or read from the network interface for reception under the control of the software application running on CPU 3601; - a user interface (UI) 3605 can be used to receive input from a user or to display information to a user; - a hard disk (HD) 3606 can be provided as a mass storage device; - an input / output (IO) module 3607 can be used to receive / send data to / from external devices, such as a video source or monitor. Executable code can be stored in ROM 3603, HD 3606, or on a removable digital medium, such as a disk. According to one variant, the executable code of programs can be received via a communication network, via NET 3604, to be stored on one of the storage media of the communication device 3600, such as HD 3606, before being executed.The CPU 3601 is adapted to control and direct the execution of instructions or parts of the software code of the program or programs, according to embodiments of the invention, instructions that are stored in one of the storage media mentioned above. After initialization, the CPU 3601 is capable of executing instructions from the main RAM memory 3602 relating to a software application, after these instructions have been loaded from the program ROM 3603 or the hard drive 3606, for example. Such a software application, when executed by the CPU 3601, performs the steps of the method according to the invention.
[0271] It is also understood that, according to another embodiment of the present invention, a decoder, according to an embodiment mentioned above, is provided in a user terminal, such as a computer, a Petition 870250088760, dated 09 / 30 / 2025, page 66 / 113 55 / 58 a mobile phone, a tablet, or any other type of device (e.g., a display device) capable of providing / displaying content to a user. According to yet another embodiment, an encoder, according to an embodiment mentioned above, is provided in an image capture device that also comprises a camera, a video camera, or a network camera (e.g., a closed-circuit television or a video surveillance camera) that captures and provides the content for the encoder to encode. These two examples are provided below, with reference to Figures 37 and 38.
[0272] Figure 22 is a diagram illustrating a network camera system 3700, including a network camera 3702 and a client handset 202.
[0273] The 3702 network camera includes an image generation unit 3706, an encoding unit 3708, a communication unit 3710 and a control unit 3712.
[0274] Network camera 3702 and client device 202 are mutually connected so that they can communicate with each other via network 200.
[0275] The 3706 image generation unit includes a lens and an image sensor (e.g., a charge-coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS)), and captures an image of an object and generates image data based on the image. This image can be a still image or a video image.
[0276] The 3708 encoding unit encodes image data using the encoding methods explained above or a combination of the encoding methods described above.
[0277] The communication unit 3710 of the network camera 3702 transmits the image data encoded by the encoding unit 3708 to the client device 202.
[0278] In addition, communication unit 3710 receives commands from client device 202. The commands include commands to set parameters for encoding unit 3708.
[0279] Control unit 3712 controls other units in the network camera. Petition 870250088760, dated 09 / 30 / 2025, page 67 / 113 56 / 58 3702 according to the commands received by communication unit 3712.
[0280] The client device 202 includes a communication unit 3714, a decoding unit 3716, and a control unit 3718.
[0281] The communication unit 3714 of client device 202 transmits commands to network camera 3702.
[0282] In addition, communication unit 3714 of client device 202 receives the encoded image data from network camera 3712.
[0283] The 3716 decoding unit decodes the encoded image data using the decoding methods explained above, or a combination of the decoding methods explained above.
[0284] The control unit 3718 of client device 202 controls other units in client device 202 according to user operation or commands received by communication unit 3714.
[0285] The control unit 3718 of the client device 202 controls a display device 2120 to display an image decoded by the decoding unit 3716.
[0286] The control unit 3718 of the client device 202 also controls a display device 2120 to display the GUI (Graphical User Interface) to assign parameter values to the network camera 3702, including the parameters for encoding the encoding unit 3708.
[0287] The control unit 3718 of client device 202 also controls other units in client device 202 according to the user operation entered in the GUI displayed by display device 2120.
[0288] The control unit 3718 of client device 202 controls the communication unit 3714 of client device 202 in order to transmit commands to network camera 3702, which assign parameter values to network camera 3702, according to the user's operation input in the GUI displayed by the display device 2120.
[0289] Figure 23 is a diagram illustrating a 3800 smartphone.
[0290] The 3800 smartphone includes a 3802 communication unit, a Petition 870250088760, dated 09 / 30 / 2025, page 68 / 113 57 / 58 decoding unit 3804, a control unit 3806 and a display unit 3808.
[0291] Communication unit 3802 receives the encoded image data via network 200.
[0292] Decoding unit 3804 decodes the encoded image data received by communication unit 3802.
[0293] The 3804 decoding / encoding unit decodes / encodes the encoded image data using the decoding methods explained above.
[0294] The 3806 control unit controls other units in the 3800 smartphone according to a user operation or commands received by the 3806 communication unit.
[0295] For example, control unit 3806 controls a display unit 3808 to display an image decoded by decoding unit 3804. Smartphone 3800 may also comprise sensors 3812 and an image recording device 3810. In this way, smartphone 3800 may record images and encode them (using a method described above).
[0296] The smartphone 3800 can subsequently decode the encoded images (using a method described above) and display them via the display unit 3808 - or transmit the encoded images to another device via the communication unit 3802 and the network 200. Alternatives and Modifications
[0297] Although the present invention has been described with reference to embodiments, it should be understood that the invention is not limited to the embodiments described. Those skilled in the art will understand that various alterations and modifications can be made without departing from the scope of the invention as defined in the appended claims. All features described in this descriptive report (including any claims, abstract and accompanying drawings) and / or all steps of any method or process so described may be combined in any combination except combinations in which at least some of these features and / or steps are mutually exclusive. Petition 870250088760, dated 09 / 30 / 2025, p. 69 / 113 58 / 58 Each feature described in this descriptive report (including any claims, summary, and attached drawings) may be replaced by alternative features that serve the same, equivalent, or similar purpose, unless expressly stated otherwise. Thus, unless expressly stated otherwise, each feature described is only an example of a generic series of equivalent or similar features.
[0298] It is also understood that any result of comparison, determination, evaluation, selection, execution, realization or consideration described above, for example, a selection made during an encoding or filtering process, may be indicated or determinable / inferable from data in a bitstream, for example, a flag or data indicating the result, so that the indicated or determined / inferred result may be used in processing instead of actually performing the comparison, determination, evaluation, selection, execution, realization or consideration, for example, during a decoding process.
[0299] In claims, the word “including” does not exclude other elements or steps, and the indefinite article “a” or “an” does not exclude a plurality. The mere fact that different features are cited in mutually different dependent claims does not indicate that a combination of these features cannot be used advantageously.
[0300] The reference numbers appearing in the claims are merely illustrative and shall not have a limiting effect on the scope of the claims. Petition 870250088760, dated 09 / 30 / 2025, pp. 70 / 113
Claims
1 / 6 CLAIMS 1. A method for decoding video data from a bitstream, the bitstream comprising video data corresponding to a plurality of frames arranged in a decoding order, characterized in that it comprises: deriving a value from a first area in a first frame of the plurality of frames; and determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame, wherein the first frame precedes the second frame in the decoding order.
2. A method according to claim 1, characterized in that each frame in the plurality of frames has an associated temporal ID, and that the first frame and the second frame have the same temporal ID.
3. Method, according to claim 2, characterized in that the first frame corresponds to the frame closest to the second frame, in the decoding order, which has the same temporal ID.
4. A method, according to any of the preceding claims, characterized in that each frame of the plurality of frames has an associated quantization parameter, QP, and in which the first frame and the second frame have the same QP.
5. Method according to claim 1, characterized in that the second area corresponds to a coding tree unit, CTU.
6. A method, according to any of the preceding claims, characterized in that the size of the first area is defined based on the time distance between the first frame and the second frame.
7. Method, according to claim 6, characterized in that the temporal difference is calculated based on a difference between a picture order count, POC, of the first frame and a POC of the second frame.
8. A method, according to any of the preceding claims, characterized in that each frame of the plurality of frames has an associated quantization parameter, QP, and in which the size of the first area is defined based on the difference between a QP of the first frame and a QP of the second frame.
9. A method, according to any one of claims 1 to 5, characterized in that the size of the first area is defined based on a value transmitted in one of: a set of sequence parameters; a set of image parameters; an image header; and a slice header, contained in the bitstream.
10. A method, according to any of the preceding claims, characterized in that the size of the first area is defined based on the size of the second area.
11. A method, according to any of the preceding claims, characterized in that the step of deriving a value from a first area in a first frame of the plurality of frames comprises deriving a value from a block that has at least one sample within the first area.
12. A method according to any one of claims 1 to 10, characterized in that the step of deriving a value from a first area in a first frame of the plurality of frames comprises deriving a value from all blocks that have at least one sample within the first area.
13. Method, according to claim 11 or 12, characterized in that the step of deriving a value from a first area in a first frame of the plurality of frames comprises weighting the value derived from the block or each block based on the number of samples that each block has within the first area.
14. Method, according to any one of claims 1 to 10, characterized in that the step of deriving a value from a first area in a first frame of the plurality of frames comprises deriving a value Petition 870250088760, dated 09 / 30 / 2025, pp. 108 / 113 3 / 6 only from blocks that are completely contained within the first area.
15. A method, according to any one of claims 1 to 10, characterized in that the step of deriving a value from a first area in a first frame of the plurality of frames comprises deriving a value only from blocks that are located in an N χ N grid within the first area, where N is an integer.
16. Method according to claim 15, characterized in that a grid center is located in the same position within the first frame as a center of the first area within the first frame.
17. A method according to any one of claims 1 to 10, characterized in that the step of deriving a value from a first area in a first frame of the plurality of frames comprises deriving a value only from blocks that are located at points of a pattern within the first area.
18. Method according to claim 17, characterized in that the points of the pattern are spaced non-uniformly.
19. A method according to any one of claims 1 to 18, characterized in that the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable, related to a second area in a second frame comprises determining a context increment for a syntax element, or a syntax element, or a variable, related to blocks located in a grid M χ M within the second area, where M is an integer.
20. Method, according to claim 19, characterized in that the grid M χ M is displaced by M / 2 in a horizontal direction and M / 2 in a vertical direction relative to an upper left position of the second area.
21. Method, according to any of the preceding claims, characterized in that a center of the first area is located in the same position within the first frame as a center of the second area within the second frame. Petition 870250088760, dated 09 / 30 / 2025, pp. 109 / 113 4 / 6 22. A method, according to any one of claims 1 to 20, characterized in that the center of the first area is located at the position within the first frame corresponding to a center of the second area within the second frame displaced by an amount corresponding to a motion vector derived from an area adjacent to the second area.
23. A method according to any one of claims 1 to 20, characterized in that it further comprises, when the center of the first area is outside the first frame, deriving a value from an upper-left position of the first area.
24. A method, according to any of the preceding claims, characterized in that the step of deriving a value from a first area in a first frame of the plurality of frames comprises accessing each block within the first area only once.
25. A method, according to any of the preceding claims, characterized in that the step of deriving a value from a first area in a first frame of a plurality of frames comprises: deriving a value from a first area in a first frame of a plurality of frames and from a third area in a third frame of a plurality of frames.
26. A method, according to any of the preceding claims, characterized in that the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame, comprises determining a predictor to be added to a residual derived from the bitstream.
27. A method, according to any one of claims 1 to 25, characterized in that the value derived from the first area comprises maxMttDepth, and the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame comprises determining maxMttDepth for a block of the second area.
28. A method, according to any one of claims 1 to 25, characterized in that the value derived from the first area is a minimum of quadtree depth values, minQTDepth, of the blocks in the first area, and the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame comprises comparing the derived minQTDepth with a quadtree depth of a block in the second area to determine whether only quadtree splitting is allowed.
29. A method, according to any one of claims 1 to 25, characterized in that the value derived from the first area is a maximum of multitree depth values, maxMttDepth, of the blocks in the first area, and the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame comprises comparing the derived maxMttDepth with a maxMttDepth of a block in the second area, and varying the maxMttDepth based on the comparison.
30. A method, according to any one of claims 1 to 25, characterized in that the value derived from the first area is an average of the quadtree depth values of the blocks in the first area, and the step of determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame comprises comparing the derived quadtree depth values with a quadtree depth of a block in the second area.
31. Method according to claim 30, characterized in that it further comprises the step of determining the permitted divisions based on comparison.
32. Method, according to claim 30 or claim 31, characterized in that it further comprises the step of varying Petition 870250088760, dated 09 / 30 / 2025, page 111 / 113 6 / 6 maxMttDepth based on comparison.
33. Device for decoding image data from a bitstream, characterized in that the device is configured to execute the method defined in any one of claims 1 to 32.
34. A method for encoding video data into a bitstream, the bitstream comprising video data corresponding to a plurality of frames arranged in a decoding order, characterized in that it comprises: deriving a value for a first area in a first frame of the plurality of frames; and determining, from the value, a context increment for a syntax element, or a syntax element, or a variable related to a second area in a second frame, wherein the first frame precedes the second frame in the decoding order.
35. Device for encoding image data into a bitstream, characterized in that the device is configured to execute the method defined in claim 34.
36. Computer program, characterized in that it is configured to, upon execution, execute the method defined in any one of claims 1 to 32 or claim 34. Petition 870250088760, dated 09 / 30 / 2025, pp. 112 / 113