Image and video coding and decoding
By determining and encoding residual subblocks within residual blocks based on prediction samples, the method reduces signaling overhead and improves compression efficiency in video coding, addressing the limitations of existing standards like HEVC.
Patent Information
- Authority / Receiving Office
- GB · GB
- Patent Type
- Applications
- Current Assignee / Owner
- CANON KK
- Filing Date
- 2024-10-22
- Publication Date
- 2026-05-06
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
Field of invention The present invention relates to encoding and decoding of image and video data and particularly, but not exclusively, image and video partitioning data. Background The Joint Video Experts Team (JVET), a collaborative team formed by MPEG and ITU-T Study Group 16’s VCEG, released a new video coding standard referred to as Versatile Video Coding (VVC). The goal of WC is to provide significant improvements in compression performance over the existing HEVC standard (i.e., typically twice as much as before). The main target applications and services include — but not limited to — 360-degree and high-dynamic-range (HDR) videos. Particular effectiveness was shown on ultra-high definition (UHD) video test material. Thus, we may expect compression efficiency gains well-beyond the targeted 50% for the final standard. Since the end of the standardisation of VVC vl, JVET has launched an exploration phase by establishing an exploration software (ECM). It gathers additional tools and improvements of existing tools on top of the VVC standard to target better coding efficiency. Summary of Invention According to an aspect of the invention there is provided a method of decoding one or more images from a bitstream, comprising obtaining a prediction information portion of a block to be decoded, the prediction information portion comprising a plurality of prediction samples for the block to be decoded, determining a residual subblock comprising an area of a residual block for the block to be decoded based on one or more of the prediction samples, and reconstructing the block to be decoded using the residual subblock. According to a further aspect of the invention, there is provided a method of encoding one or more images into a bitstream, comprising obtaining a prediction information portion of a block to be encoded, the prediction information block comprising a plurality of prediction samples for the block to be decoded, determining a residual subblock comprising an area of a residual block for the block to be encoded based on one or more of the prediction samples, and encoding the block to be encoded into the bitstream using the residual subblock. According to a further aspect of the invention there is provided a device for encoding one or more images into a bitstream, the device comprising means for obtaining a prediction information portion of a block to be encoded, the prediction information block comprising a plurality of prediction samples for the block to be encoded, means for determining a residual subblock comprising an area of a residual block for the block to be encoded based on one or more of the prediction samples, and means for encoding the block to be encoded into the bitstream using the residual subblock. According to a further aspect of the invention there is provided a device for decoding one or more images into a bitstream, the device comprising means for obtaining a prediction information portion of a block to be decoded, the prediction information portion comprising a plurality of prediction samples for the block to be decoded, means for determining a residual subblock comprising an area of a residual block for the block to be decoded based on one or more of the prediction samples, and means for reconstructing the block to be decoded using the residual subblock. The present invention provides the advantage of reducing the signalling overhead when residual data to be encoded and transmitted is based on a portion of the residual block (i.e. a residual subblock). By enabling the encoder and decoder to infer the position and / or orientation of the residual subblock, the position need not be signalled in the encoded bitstream. In addition, the present invention provides improved performance compared to previous methods (such as SBT), by enabling a greater number of positions for the portion of the residual subblock, while still resulting in a reduction in signalling overhead. According to a further aspect of the invention there is provided a computer program executable to carry out the encoding and / or decoding methods of the invention, and a computer-readable storage medium storing said computer program. Reconstructing the block to be decoded may comprise obtaining one or more transform coefficients for a portion of a transform block, the portion of the transform block corresponding to the residual subblock, performing dequantization and applying an inverse transform to the transform coefficients to obtain the residual sample values for the residual subblock corresponding to a portion of the residual block, and combining sample values of the prediction information portion with sample values of the residual block to obtain values of the block to be decoded. The sample values of the residual block are sample values may correspond to the residual subblock. One or more sign values of one or more transform coefficients for a portion of a transform block may be determined, the portion of the transform block corresponding to the residual subblock; wherein determining the one or more sign values is based on one or more reconstructed samples from a decoded block and one or more prediction samples from the prediction information portion of the block to be decoded. Encoding the block to be encoded may comprise applying a transform to the residual sample values for the residual subblock corresponding to an area of the residual block and performing quantization on the transformed residual sample values to obtain a portion of a transform block comprising one or more transform coefficients, and encoding the prediction information portion of the block to be encoded and the one or more transform coefficients into the bitstream. Determining the residual subblock may comprise determining a position of the residual subblock within the residual block. Determining the position of the residual subblock within the residual block may comprise determining a plurality of energy values associated with a plurality of prediction samples of the prediction information portion, determining a position of the residual subblock within the energy values associated with a plurality of prediction samples that corresponds to the position of the residual subblock having an energy value representing a maximum sum of energy values associated with a plurality of prediction samples located inside this position of the residual subblock, and determining the position of the residual subblock within the residual block corresponding to the determined position. Computing the plurality of energy values may comprise computing a plurality of gradient values. Computing the gradient values may comprise performing a convolution of the plurality of prediction samples and one or more neighbouring samples with one or more Sobel gradient kernels. Computing the gradient values may comprises computing a horizontal gradient value and a vertical gradient value for each prediction sample. The gradient value may be the root sum square, RSS, of the horizontal and vertical gradient values. The gradient value may be the sum of the absolute value of the horizontal gradient value and the absolute value of the vertical gradient value. The size of the one or more Sobel gradient kernels may be selected based on the size of the block to be decoded. The size of the one or more Sobel gradient kernels may be selected to be directly proportional to the size of the block to be decoded. The size of the one or more Sobel gradient kernels may be 5-by-5 samples. If the block to be decoded has a height less than or equal to 64 samples or a width less than or equal to 64 samples, the size of the one or more Sobel gradient kernels may be selected as 3-by-3 samples. If the block to be decoded has a height greater than 64 samples and a width greater than 64 samples, the size of the one or more Sobel gradient kernels may be selected as 5-by-5 samples. Virtual samples may be added to the prediction information portion, the virtual samples being added around a border of the prediction information portion. The values of the virtual samples may correspond to the values of prediction samples located inside the border of the prediction information portion. A default energy value may be assigned to one or more prediction samples if an energy value cannot be calculated for those one or more prediction samples. The default energy value may be 0, or an average of the determined energy values. Determining the position of the residual subblock within the prediction information portion that corresponds to the maximum energy value of the residual subblock may comprise calculating a total energy value corresponding to each of one or more positions of the residual subblock within the prediction information portion, and selecting the position of the residual subblock corresponding to the highest total energy value. Calculating the total energy value corresponding to each of one or more positions of the residual subblock may comprise A) calculating a row or line energy value corresponding to each row or line of prediction samples in the prediction information portion, wherein the row or line energy value is the sum of the energy values in the row or line, B) calculating the total energy value for a first position of the residual subblock, C) calculating the total energy value for the next adjacent position of the residual subblock by subtracting the row or line energy value of the first row or line of energy values in the residual subblock and adding the row or line energy value of the next adjacent row or line of prediction samples in the prediction information portion, and repeating step C for the remaining positions of the one or more positions of the residual subblock within the prediction information portion. A default orientation of the transform block to horizontal may be set in response to determining that a vertical dimension of the residual block is below a predetermined threshold, or the orientation of the transform block may be set to vertical in response to determining that a horizontal dimension of the residual block is below a predetermined threshold. An orientation of the transform block may be determined based on one or more of the prediction samples. Determining the orientation of the transform block may comprises computing or obtaining an energy value for a plurality of prediction samples of the prediction information portion, determining or obtaining a position of the residual subblock within the prediction information portion, determining a horizontal energy value based on the position of the residual subblock, determining a vertical energy value based on the position of the residual subblock, and determining the orientation of the transform block based on a comparison between the horizontal energy value and the vertical energy value. Determining the horizontal energy value may comprise determining a plurality of energy values associated with a plurality of prediction samples of the prediction information portion, determining a position of the residual subblock along a horizontal axis of the energy values associated with a plurality of prediction samples that corresponds to the position of the residual subblock having an energy value representing the maximum sum of energy values associated with a plurality of the prediction samples located inside this position of the residual subblock, determining the horizontal energy value as the maximum sum of energy values associated with a plurality of the prediction samples located inside the determined position of the residual subblock. Determining the vertical energy value may comprise determining a plurality of energy values associated with a plurality of prediction samples of the prediction information portion, determining a position of the residual subblock along a vertical axis of the energy values associated with a plurality of prediction samples that corresponds to the position of the residual subblock having an energy value representing the maximum sum of energy values associated with a plurality of the prediction samples located inside this position of the residual subblock, and determining the vertical energy value as the maximum energy value of the residual subblock. It may be determined that the orientation of the transform block does not match a default orientation of the transform block, and the transform block may be processed to match the orientation of the transform block to the default orientation. According to a further aspect of the invention there is provided a method of encoding or decoding image data into or from a bitstream, the method comprising a process which includes determining a residual subblock comprising an area of a residual block to be encoded or decoded, encoding or decoding transform coefficients of a transform block to be encoded or decoded, the encoding or decoding based on the residual subblock area, determining that the orientation of the transform block does not match a default orientation of the transform block, and processing the transform block to match the orientation of the transform block to the default orientation. The transform block may be square, and processing the transform block may comprise performing a transposition operation on the transform coefficients of the transform block. Processing the transform block may comprise applying a coefficient mapping to the transform coefficients of the transform block. The coefficient mapping may be based on a predetermined parsing order of the transform coefficients. One or more sign values of one or more of the transform coefficients may be determined, wherein determining the one or more sign values is based on one or more reconstructed samples from a decoded block and one or more prediction samples from the top left 4-by-4 samples of the prediction information portion. One or more sign values of one or more of the transform coefficients may be determiend; the one or more transform coefficients comprising transform coefficients located along the top or left border of the transform block both prior to, and after, the processing of the transform block. One or more transform coefficients of the transform block that are located along the top or left border of the transform block after the processing of the transform block that were not located along the top or left border of the transform block prior to the processing of the transform block may be determined, and the value of the determined one or transform coefficients may be set to 0. The orientation of the transform block may be signalled in the bitstream in response to the height or width of the transform block exceeding a predetermined number of coefficients. The orientation of the block to be encoded may be signalled in the bitstream in response to the height or width of the block to be encoded exceeding a predetermined number of samples. The predetermined number of samples may be 128 samples. The orientation of the transform block may be obtained from the bitstream. One or more syntax elements may be processed based on the processing of the transform block to match the orientation of the transform block to the default orientation. The transform block may be determined using SBT. The position of the residual subblock within the prediction information portion may be determined to be the position with the second, or another-highest (e.g. third highest, fourth highest, fifth highest etc.) total energy value in response to determining that the position of the residual subblock within the residual block corresponds to a Sub-Block Transform, SBT, position. In response to in response to determining that the position of the residual subblock within the residual block corresponds to a position determined using SBT, the position and / or orientation of the residual subblock may be determined based on one or more prediction samples of the predictor block. The orientation of the transform block may be signalled in the bitstream in response to determining that the position of the residual subblock within the residual block corresponds to a Sub-Block Transform, SBT, position. In response to determining that the position of the residual subblock within the residual block corresponds to a position determined using SBT, reconstructing or encoding the block based on the determined position if there is a difference in coding compared to SBT. For example, if using the ASBT method includes a limitation for sign prediction, or similar. The width or height of the residual subblock may be determined to be one quarter that of the residual block, and both the position and orientation of the residual subblock may be signalled in the bitstream in response to determining that the transform block is derived using Sub-Block Transform, SBT. The width or height of the residual subblock may be determined to be one quarter that of the residual block, and both the position and orientation of the residual subblock may be signalled in the bitstream in response to determining that the transform block is derived using Sub-Block Transform, SBT if the block to be encoded is a small block. The small block may correspond to a residual block of Sub-Block Transform, SBT, having a height or a width less than 16. A transform may be applied to the residual sample values of the residual subblock, wherein the transform is selected to be the same as a transform used for Sub-Block Transform, SBT. A Discrete Sine Transform 7, DST-7, transform may be applied to the residual sample values of the residual subblock. A Discrete Cosine Transform 2, DCT-2, transform may be applied to the residual sample values of the residual subblock. The transform may be selected to be the same as a transform used for SBT in response to determining that the transform block is derived using Sub-Block Transform, SBT. In response to determining that the transform block is not derived using Sub-Block Transform, SBT, the transform may be a Discrete Cosine Transform 2, DCT-2, transform. The block may be a block of Luma samples, and a corresponding block of Chroma samples may be obtained (e.g. decoded) using the same determined and / or obtained parameters. The parameters may be adjusted to account for any size difference between the Luma and Chroma blocks. The block may be a block of Luma samples and a corresponding block of Chroma samples may be obtained (e.g. decoded), wherein obtaining (e.g. decoding) the corresponding block of Chroma samples may comprise determining not to obtain (e.g. decode) any residual block for the corresponding block of Chroma samples from the bitstream. According to a further aspect of the invention there is provided a method of encoding one or more images into a bitstream, the method comprising a process which includes determining a residual subblock comprising an area of a residual block for a block to be encoded, and encoding transform coefficients of a transform block to be encoded based on the residual subblock area. According to a further aspect of the invention there is provided a method of decoding one or more images from a bitstream, the method comprising a process which includes determining a residual subblock comprising an area of a residual block for a block to be decoded, and decoding transform coefficients of a transform block to be decoded based on the residual subblock area. Whether the process is to be used or not may be based on one or more syntax elements in the bitstream. Determining the residual subblock may be based on a predictor block of the block to be encoded or decoded. The process may be a Sub-Block Transform (SBT) process. The process may be any suitable coding process wherein a one or more transforms are applied to one or more portions a residual block, and no transforms are applied to the remaining samples of the residual block. In other words, the process may be any process wherein, at the decoder side, a current block is obtained by adding the predictor block and a residual block, where the residual block corresponds to a portion of the current block. Brief Description of the Drawings Reference will now be made, by way of example, to the accompanying drawings, in which: Figure lisa diagram which illustrates a coding structure used in HEVC; Figure 2 is a block diagram schematically illustrating a data communication system in which one or more embodiments of the invention may be implemented; Figure 3 is a block diagram illustrating components of a processing device in which one or more embodiments of the invention may be implemented; Figure 4 is a schematic illustrating functional elements of an encoder according to embodiments of the invention; Figure 5 is a schematic illustrating functional elements of a decoder according to embodiments of the invention; Figures 6 shows blocks positioned relative to a current block including a collocated block; Figure 7 illustrates a temporal random-access GOP (group of pictures) structure for 33 frames with the related Temporal ID and POC (picture order count); Figure 8 illustrates the 6 possible split modes of VVC; Figure 9 illustrates the possible SBT sub partitioning of VVC; Figure 10 illustrates the sign prediction method of the ECM software; Figure 11 is a schematic illustrating entropy encoding according to an example; Figure 12 is a schematic illustrating entropy decoding according to an example; Figure 13 illustrates the general principle of the invention; Figure 14 illustrates one example of embodiments; Figure 15 illustrates one example of embodiments; Figure 16 illustrates an algorithm of embodiments; Figure 17 illustrates the direction inference principle of embodiments; Figure 18 illustrates the particular implementation of sign prediction with embodiments; Figure 19 illustrates the direction inference principle of embodiments; Figure 20 illustrates the direction transposition of embodiments; Figure 21 illustrates an issue cause by transposition; Figure 22 illustrates the direction coefficient mapping of embodiments; Figure 23 illustrates an issue for sign prediction method with coefficients mapping; Figure 24 is a diagram showing a system comprising an encoder or a decoder and a communication network according to embodiments; Figure 25 is a schematic block diagram of a computing device for implementation of one or more embodiments; Figure 26 is a diagram illustrating a network camera system; and Figure 27 is a diagram illustrating a smart phone. Figure 28 illustrates the general principle of the invention. Detailed description Figure 1 relates to a coding structure used in the High Efficiency Video Coding (HEVC) video and Versatile Video Coding (VVC) standards. A video sequence 1 is made up of a succession of digital images i. Each such digital image is represented by one or more matrices. The matrix coefficients represent pixels. An image 2 of the sequence may be divided into one or more slices 3. A slice may in some instances 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 that were used in several previous video standards. A CTU is also sometimes referred to as a Largest Coding Unit (LCU). A CTU has luma and chroma component parts, each of which component parts is called a Coding Tree Block (CTB). These different color components are not shown in Figure 1. A CTU is generally of size 64 pixels x 64 pixels for HEVC, yet for VVC this size can be 128 pixels x 128 pixels. Each CTU may in turn be iteratively divided into smaller variablesize Coding Units (CUs) 5 using a quadtree (QT) decomposition. Coding units are the elementary coding elements and are constituted by two kinds of sub-unit called a Prediction Unit (PU) and a Transform Unit (TU). The maximum size of a PU or TU is equal to the CU size. A Prediction Unit corresponds to the partition of the CU for prediction of pixels values. Various different partitions of a CU into PUs are possible as shown by 6 including a partition into 4 square PUs and two different partitions into 2 rectangular PUs. A Transform Unit is an elementary unit that is subjected to spatial transformation using discrete cosine transform (DCT). A CU can be partitioned into TUs based on a quadtree representation 7. Each slice is embedded in one Network Abstraction Layer (NAL) unit. In addition, the coding parameters of the video sequence are stored in dedicated NAL units called parameter sets. In HEVC and H.264 / AVC two kinds of parameter sets NAL units are employed: first, a Sequence Parameter Set (SPS) NAL unit that gathers all parameters that are unchanged during the whole video sequence. Typically, it handles the coding profile, the size of the video frames and other parameters. Secondly, a Picture Parameter Set (PPS) NAL unit includes parameters that may change from one image (or frame) to another of a sequence. HEVC also includes a Video Parameter Set (VPS) NAL unit which contains parameters describing the overall structure of the bitstream. The VPS is a type of parameter set defined in HEVC, and applies to all of the layers of a bitstream. A layer may contain multiple temporal sub-layers, and all version 1 bitstreams are restricted to a single layer. HEVC has certain layered extensions for scalability and multiview and these will enable multiple layers, with a backwards compatible version 1 base layer. Other ways of splitting an image have been introduced in VVC including subpictures, which are independently coded groups of one or more slices. 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 server 201, which is operable to transmit data packets of 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 may be a Wide Area Network (WAN) or a Local Area Network (LAN). Such a network may be for example a wireless network (Wifi / 802.1 la or b or g), an Ethernet network, an Internet network or a mixed network composed of several different networks. In a particular embodiment of the invention the data communication system may be a digital television broadcast system in which the server 201 sends the same data content to multiple clients. The data stream 204 provided by the server 201 may be composed of multimedia data representing video and audio data. 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 data streams may be stored on the server 201 or received by the server 201 from another data provider, or generated at 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. In order to obtain a better ratio of the quality of transmitted data to quantity of transmitted data, the compression of the video data may be for example in accordance with the HEVC format or H.264 / AVC format or VVC format or the format of data generated by the ECM. The client 202 receives the transmitted bitstream and decodes the reconstructed bitstream to reproduce video images on a display device and the audio data by a loud speaker. Although a streaming scenario is considered in the example of Figure 2, it will be appreciated that in some embodiments of the invention the data communication between an encoder and a decoder may be performed using for example a media storage device such as an optical disc. In one or more embodiments of the invention a video image is transmitted with data representative of compensation offsets for application to reconstructed pixels of the image to provide filtered pixels in a final image. Figure 3 schematically illustrates a processing device 300 configured to implement at least an embodiment of the present invention. The processing device 300 may be a device such as a micro-computer, a workstation or a light portable device. The device 300 comprises a communication bus 313 connected to: -a central processing unit 311, such as a microprocessor, denoted CPU; -a read only memory 307, denoted ROM, for storing computer programs for implementing the invention; -a random access memory 312, denoted RAM, for storing the executable code of the method of embodiments of the invention as well as the registers adapted to record variables and parameters necessary for implementing 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 303 over which digital data to be processed are transmitted or received Optionally, the apparatus 300 may also include the following components: -a data storage means 304 such as a hard disk, for storing computer programs for implementing 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 disk drive 305 for a disk 306, the disk drive being adapted to read data from the disk 306 or to write data onto said disk; -a screen 309 for displaying data and / or serving as a graphical interface with the user, by means of a keyboard 310 or any other pointing means. The apparatus 300 can be connected to various peripherals, such as for example a digital camera 320 or a microphone 308, each being connected to an input / output card (not shown) so as to supply multimedia data to the apparatus 300. The communication bus provides communication and interoperability between the various elements included in the apparatus 300 or connected to it. The representation of the bus is not limiting and in particular the central processing unit is operable to communicate instructions to any element of the apparatus 300 directly or by means of another element of the apparatus 300. The disk 306 can be replaced by any information medium such as for example a compact disk (CD-ROM), rewritable or not, a ZIP disk or a memory card and, in general terms, by an information storage means that can be read by a microcomputer or by a microprocessor, integrated or not into the apparatus, possibly removable and adapted to store one or more programs whose execution enables the method of encoding a sequence of digital images and / or the method of decoding a bitstream according to the invention to be implemented. The executable code may be stored either in read only memory 306, on the hard disk 304 or on a removable digital medium such as for example a disk 306 as described previously. According to a variant, the executable code of the programs can be received by means of the communication network 303, via the interface 302, in order to be stored in one of the storage means of the apparatus 300 before being executed, such as the hard disk 304. The central processing unit 311 is adapted to control and direct the execution of the instructions or portions of software code of the program or programs according to the invention, instructions that are stored in one of the aforementioned storage means. On powering up, the program or programs that are stored in a non-volatile memory, for example on the hard disk 304 or in the read only memory 307, are transferred into the random access memory 312, which then contains the executable code of the program or programs, as well as registers for storing the variables and parameters necessary for implementing the invention. In this embodiment, the apparatus is a programmable apparatus which 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). Figure 4 illustrates a block diagram of an encoder according to at least an 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 device 300, at least one corresponding step of a method implementing at least an embodiment of encoding an image of a sequence of images according to one or more embodiments of the invention. An original sequence of digital images io to in 401 is received as an input by the encoder 400. Each digital image is represented by a set of samples, sometimes also referred to as pixels (hereinafter, they are referred to as pixels). A bitstream 410 is output by the encoder 400 after implementation of the encoding process. The bitstream 410 comprises a plurality of encoding units or slices, each slice comprising a slice header for transmitting encoding values of encoding parameters used to encode the slice and a slice body, comprising encoded video data. The input digital images io to in 401 are divided into blocks of pixels by module 402. The blocks correspond to image portions and may be of variable sizes (e.g. 4x4, 8x8, 16x16, 32x32, 64x64, 128x128 pixels and several rectangular block sizes can be also considered). A coding mode is selected for each input block. Two families of coding modes are provided: coding modes based on spatial prediction coding (Intra prediction), and coding modes based on temporal prediction (Inter coding, Merge, SKIP). The possible coding modes are tested. Module 403 implements an Intra prediction process, in which the given block to be encoded is predicted by a predictor computed from pixels of the neighbourhood 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 the Intra coding is selected. Temporal prediction is implemented by motion estimation module 404 and motion compensation module 405. Firstly, a reference image from among a set of reference images 416 is selected, and a portion of the reference image, also called reference area or image portion, which is the closest area (closest in terms of pixel value similarity) to the given block to be encoded, is selected by the 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 a residual block, is computed by the motion compensation module 405. The selected reference area is indicated using a motion vector. Thus, in both cases (spatial and temporal prediction), a residual is computed by subtracting the predictor from the original block. In the INTRA prediction implemented by module 403, a prediction direction is encoded. In the Inter prediction implemented by modules 404, 405, 416, 418, 417, at least one motion vector or data for identifying such motion vector is encoded for the temporal prediction. Information relevant to the motion vector and the residual block is encoded if the Inter prediction is selected. To further reduce the bitrate, assuming that motion is homogeneous, the motion vector is encoded by difference with respect to a motion vector predictor. Motion vector predictors from a set of motion information predictor candidates is obtained from the motion vectors field 418 by a motion vector prediction and coding module 417. The encoder 400 further comprises a selection module 406 for selection of the coding mode by applying an encoding cost criterion, such as a rate-distortion criterion. In order to further reduce redundancies a transform (such as DCT) is applied by transform module 407 to the residual block, the transformed data obtained is then quantized by quantization module 408 and entropy encoded by entropy encoding module 409. Finally, the encoded residual block of the current block being encoded is inserted into the bitstream 410. The encoder 400 also performs decoding of the encoded image in order to produce a reference image (e.g. those in Reference images / pictures 416) for the motion estimation of the subsequent images. This enables the encoder and the decoder receiving the bitstream to have the same reference frames (reconstructed images or image portions are used). The inverse quantization (“dequantization”) module 411 performs inverse quantization (“dequantization”) of the quantized data, followed by an inverse transform by inverse transform module 412. The intra prediction module 413 uses the prediction information to determine which predictor to use for a given block and the motion compensation module 414 actually adds the residual obtained by module 412 to the reference area obtained from the set of reference images 416. Post filtering is then applied by module 415 to filter the reconstructed frame (image or image portions) of pixels. In some embodiments of the invention a sample adaptive offset (SAO) loop filter is used in which compensation offsets are added to the pixel values of the reconstructed pixels of the reconstructed image. However, it should be understood that post filtering does not always have to performed. Also, any other type of post filtering may also be performed in addition to, or instead of, the SAO loop filtering. Figure 5 illustrates a block diagram of a decoder 60 which may be used to receive data from an encoder according 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 device 300, a corresponding step of a method implemented by the decoder 60. The decoder 60 receives a bitstream 61 comprising encoded units (e.g. data corresponding to a block or a coding unit), each one being composed of a header containing information on encoding parameters and a body containing the encoded video data. As explained with respect to Figure 4, the encoded video data is entropy encoded, and the motion vector predictors’ indexes are encoded, for a given block, on a predetermined number of bits. The received encoded video data is entropy decoded by module 62. The residual data are then dequantized by module 63 and then an inverse transform is applied by module 64 to obtain pixel values. The mode data indicating the coding mode are also entropy decoded and based on the mode, an INTRA type decoding or an INTER type decoding is performed on the encoded blocks (units / sets / groups) of image data. In the case of INTRA mode, an INTRA predictor is determined by intra prediction module 65 based on the intra prediction mode specified in the bitstream. If the mode is INTER, the motion prediction information is extracted from the bitstream so as to find (identify) the reference area used by the encoder. The motion prediction information comprises the reference frame index and the motion vector residual. The motion vector predictor is added to the motion vector residual by motion vector decoding module 70 in order to obtain the motion vector. The various motion predictor tools used in VVC are discussed in more detail below with reference to Figures 6-10. Motion vector decoding module 70 applies motion vector decoding for each current block encoded by motion prediction. Once an index of the motion vector predictor for the current block has been obtained, the actual value of the motion vector 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 the motion compensation 66. The motion vector field data 71 is updated with the decoded motion vector in order to be used for the prediction of subsequent decoded motion vectors. Finally, a decoded block is obtained. Where appropriate, post filtering is applied by post filtering module 67. A decoded video signal 69 is finally obtained and provided by the decoder 60. Random Access configuration Figure 7 shows a temporal random-access GOP structure for 33 consecutive frames 0 to 32. The length of the vertical line representing each frame corresponds their temporal ID. (e.g. the longest length corresponds temporal ID 0 and the shortest length for temporal ID 5). The frames with a temporal ID 0 are the highest in the temporal hierarchy because they can be decoded independently to all others frames with a higher temporal ID value. In the same way, the frames with a temporal ID 1 are in the second in the temporal hierarchy and they can be decoded independently to all others frames with a higher temporal ID value and so on for the other temporal IDs. In other words, a frame with a particular temporal ID can be decoded independently from frames with temporal IDs higher in value but may be dependent on frames with lower temporal IDs. This is what is known as temporal scalability. This parameter is similar to the hierarchy depth but the hierarchy depth does not imply the independence decoding to all other frames with a higher depth. VVC Partitioning The VVC Partitioning has a specific block partitioning. For one tree node, 6 possible splits are possible as depicted in Figure 8: -The quad split QT, 801, which divides a block into 4 equally sized square blocks -The binary split BT with its two possible subdivisions 802, 803: -the vertical binary split, 802, SPLITBTVER -the horizontal binary split, 803, SPLITBTHOR -The ternary split TT with its two possible subdivisions 804, 805 where the block is split into 3 blocks with a larger block in the middle: -the vertical ternary split, 804, SPLITTTVER -the horizontal ternary split, 805, SPLITTTHOR -The No Split, 806, which terminates a tree node so there is no splitting. VVC Transform Information signaling. The residual coding of VVC is similar to the previous standard. At the encoder side, the residual block is transformed and quantized. At the decoder side, dequantization and inverse transformation is performed to obtain the decoded residual block. But there are a lot of additional tools that may be used to optimize the residual coding, such as Sub-Block Transform (SBT). In VVC specifications, the signaling of the residual coding is performed in accordance with 3 tables of syntax elements. The first one is related to the transform tree coding, and given as example in the following. Please note that a tree exists for intra block, where the transform block can be split in several 5 transform units and each related transform unit as a predictor obtained after the decoding of the neighboring transform unit. For inter block the transform tree is only for the signal of the SBT tools which divides a coding unit (CU) into 2 transform units (TU) as depicted in Figure 9 and explained in following section. transform_tree( xO, yO, tbWidth, tbHeight, treeType, chType ) { Descriptor InferTuCbfLuma = 1 if( IntraSubPartitionsSplitType == ISPNOSPLIT &&!cu_sbt_flag) { if( tbWidth >MaxTbSizeY tbHeight >MaxTbSizeY) { verSplitFirst = (tbWidth >MaxTbSizeY &&tbWidth >tbHeight) ? 1 : 0 trafoWidth = verSplitFirst ? (tbWidth / 2 ): tbWidth trafoHeight = IverSplitFirst ? (tbHeight / 2 ): tbHeight transform_tree( xO, yO, trafoWidth, trafoHeight, treeType, chType ) if( verSplitFirst) transform_tree( xO + trafoWidth, yO, trafoWidth, trafoHeight, treeType, chType ) else transform_tree( xO, yO + trafoHeight, trafoWidth, trafoHeight, treeType, chType ) } else { transform_unit( xO, yO, tbWidth, tbHeight, treeType, 0, chType ) } } else if( cu sbt flag) { if( !cu_sbt_horizontal_flag) { trafoWidth = tbWidth * SbtNumFourthsTbO / 4 transform_unit( xO, yO, trafoWidth, tbHeight, treeType, 0, 0 ) transform_unit( xO + trafoWidth, yO, tbWidth - trafoWidth, tbHeight, treeType, 1, 0 ) } else { trafoHeight = tbHeight * SbtNumFourthsTbO / 4 transform_unit( xO, yO, tbWidth, trafoHeight, treeType, 0, 0 ) transform_unit( xO, yO + trafoHeight, tbWidth, tbHeight - trafoHeight, treeType, 1,0) } } else if( IntraSubPartitionsSplitType = = ISPHORSPLIT) { trafoHeight = tbHeight / NumlntraSubPartitions for( partldx = 0; partldx <NumlntraSubPartitions; partldx++) transform_unit( xO, yO + trafoHeight * partldx, tbWidth, trafoHeight, treeType, partldx, 0 ) } else if( IntraSubPartitionsSplitType = = ISP VER SPLIT) { trafoWidth = tbWidth / NumlntraSubPartitions for( partldx = 0; partldx <NumlntraSubPartitions; partldx++) transform_unit( xO + trafoWidth * partldx, yO, trafoWidth, tbHeight, treeType, partldx, 0 ) } } As we can see in the transform tree table of syntax elements, the function transform_unit() is called several times. This function is described in the following syntax table of syntax elements: transform_unit( xO, yO, tbWidth, tbHeight, treeType, subTutndex, chType ) { Descriptor if( IntraSubPartitionsSplitType != ISPNOSPLIT && treeType = = SINGLE TREE &&subTuIndex = = NumlntraSubPartitions - 1) { xC = CbPosX[ chType ][ xO ][ yO ] yC = CbPosY[ chType ][ xO ][ yO ] wC = CbWidth[ chType ][ xO ][ yO ] / SubWidthC hC = CbHeight[ chType ] [ xO ] [ yO ] / SubHeightC } else { xC = xO yC = yO wC = tbWidth / SubWidthC hC = tbHeight / SubHeightC } chromaAvailable = treeType != DUAL TREE LUMA &&spschromaformatidc != 0 && (IntraSubPartitionsSplitType = = ISP NO SPLIT (IntraSubPartitionsSplitType != ISP NO SPLIT && subTuIndex = = NumlntraSubPartitions - 1)) if( (treeType = = SINGLE TREE | | treeType = = DUAL TREE CHROMA) &&sps chroma format idc != 0 && ((IntraSubPartitionsSplitType == ISP NO SPLIT &&!(cusbtflag && (( subTuIndex = = 0 &&cu_sbt_pos_flag) ( subTuIndex ==1 &&!cu_sbt_pos_flag)))) (IntraSubPartitionsSplitType != ISP NO SPLIT && ( subTuIndex = = NumlntraSubPartitions - 1)))) { tu_cb_coded_flag[ xC ] [ yC ] ae(v) tu_cr_coded_flag[ xC ] [ yC ] ae(v) } if( treeType = = SINGLE TREE 11 treeType = = DUAL TREE LUMA) { if( (IntraSubPartitionsSplitType = = ISP NO SPLIT &&!( cu sbt flag &&(( subTuIndex = = 0 &&cu_sbt_pos_flag) ( subTuIndex ==1 &&!cu_sbt_pos_flag))) && (( CuPredMode[ chType ][ xO ][ yO ] == MODE INTRA && !cu_act_enabled_flag[ xO ][ yO ]) (chromaAvailable &&(tu_cb_coded_flag[ xC ][ yC ] tu_cr_coded_flag[ xC ] [ yC ])) CbWidth[ chType ][ xO ][ yO ] >MaxTbSizeY CbHeight[ chType ] [ xO ] [ yO ] >MaxTbSizeY)) (IntraSubPartitionsSplitType != ISP NO SPLIT && ( subTuIndex <NumlntraSubPartitions - 1 ! InferTuCbfLuma))) tu_y_coded_flag[ xO ] [ yO ] ae(v) if(IntraSubPartitionsSplitType != ISP NO SPLIT) InferTuCbfLuma = InferTuCbfLuma &&!tu_y_coded_flag[ xO ][y0 ] } if( ( CbWidth[ chType ][ xO ][ yO ] >64 CbHeight[ chType ][ xO ][ yO ] >64 tu_y coded_flag[ xO ] [ yO ] (chromaAvailable && (tu_cb_coded_flag[ xC ][ yC ] tu_cr_coded_flag[ xC ][ yC ]))) && treeType != DUAL TREE CHROMA && pps cu qp delta enabled flag &&IIsCuQpDeltaCoded) { cuqpdeltaabs ae(v) if( cuqpdeltaabs ) cuqpdeltasign _flag ae(v) } if( ( CbWidth[ chType ][ xO ][ yO ] >64 CbHeight[ chType ][ xO ][ yO ] >64 ( chromaAvailable &&(tu_cb_coded_flag[ xC ][ yC ] tu_cr_coded_flag[ xC ] [ yC ]))) && treeType != DUAL TREE LUMA &&sh_cu_chroma_qp_offset_enabled_flag &&!IsCuChromaQpOffsetCoded) { cu chroma qp offset flag ae(v) if( cuchromaqpoffsetflag &&pps_chroma_qp_offset_list_len_minusl >0 ) cuchromaqpoffsetidx ae(v) } if( spsjoint cbcr enabled flag && (( CuPredMode[ chType ][ xO ][ yO ] == MODE INTRA && (tu_cb_coded_flag[ xC ][ yC ] tu_cr_coded_flag[ xC ][ yC ])) (tu_cb_coded_flag[ xC ][ yC ] &&tu_cr_coded_flag[ xC ][ yC ])) &&chromaAvailable ) tu_joint_cbcr_residual_flag[ xC ] [ yC ] ae(v) if( tu_y_coded_flag[ xO ][ yO ] &&treeType != DUAL TREE CHROMA) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 0 ] &&tbWidth <= MaxTsSize &&tbHeight <= MaxTsSize && (IntraSubPartitions SplitType == ISPNOSPLIT) &&!cu_sbt_flag) transform_skip_flag[ xO ][ yO ][ 0 ] ae(v) if( !transform_skip_flag[ xO ][ yO ][ 0 ] shtsresidualcodingdisabledflag) residual_coding( xO, yO, Log2( tbWidth), Log2( tbHeight), 0 ) else residual_ts_coding( xO, yO, Log2( tbWidth), Log2( tbHeight), 0 ) } if( tu_cb_coded_flag[ xC ] [ yC ] &&treeType != DUAL TREE LUMA) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 1 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&!cu_sbt_flag) transform_skip_flag[ xC ][ yC ][ 1 ] ae(v) if( !transform_skip_flag[ xC ][yC ][ 1 ] sh ts residual coding disabled flag) residual_coding( xC, yC, Log2( wC ), Log2( hC ), 1) else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 1) } if( tu_cr_coded_flag[ xC ] [ yC ] &&treeType != DUAL TREE LUMA && !(tu_cb_coded_flag[ xC ][ yC ] &&tujoint_cbcr_residual_flag[ xC ][ yC ])) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 2 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&!cu_sbt_flag) transform_skip_flag[ xC ][ yC ][ 2 ] ae(v) if( !transform_skip_flag[ xC ][yC ][ 2 ] sh ts residual coding disabled flag) residual_coding( xC, yC, Log2( wC ), Log2( hC ), 2 ) else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 2 ) }__ } As we can see, some flags related to the coding of color components are transmitted according to several conditions as tu cb coded flag, tucrcodedflag, as well as the tuycodedflag specifying that the luma residual is coded. The value of the tu_y_coded_flag is mostly inferred 5 thanks the to a syntax element cu_coded_flag inferred or transmitted at CU level. All these flags correspond to the CBF coding of the previous standards. In this syntax table several other parameters are decoded as some tools for the transform of the color or some delta Quantisation Parameter (QP) or a first type of the transform (transform_skip_flag), transform SKIP. 10 As we can see in the transform unit table of syntax elements the function residual_coding() is called several times. This function is described in the following syntax table of syntax elements: residual_coding( xO, yO, log2TbWidth, log2TbHeight, cldx) { Descriptor if( spsmtsenabledflag &&cu_sbt flag &&cldx ==0 &&log2Tb Width = =5 &&log2TbHeight <6 ) Log2ZoTb Width = 4 else Log2ZoTbWidth = Min( log2TbWidth, 5 ) if( sps mts enabled flag &&cu sbt flag &&cldx ==0 &&log2TbWidth <6 &&log2TbHeight ==5) Log2ZoTbHeight = 4 else Log2ZoTbHeight = Min( log2TbHeight, 5 ) Log2FullTb Width = log2Tb Width Log2FullTbHeight = log2TbHeight if( log2TbWidth >0 ) lastsigcoeffxprefix ae(v) if( log2TbHeight >0 ) lastsigcoeffyp refix ae(v) if( last_sig_coeff_x_prefix >3 ) lastsigcoeffxsuffix ae(v) if( last_sig_coeff_y_prefix >3 ) lastsigcoeffysuffix ae(v) remBinsPassl = ((1 « (Log2ZoTbWidth + Log2ZoTbHeight)) * 7 ) » 2 log2SbW = (Min( Log2ZoTbWidth, Log2ZoTbHeight) <2 ? 1 : 2 ) log2SbH = log2SbW if( Log2ZoTbWidth + Log2ZoTbHeight >3 ) if( Log2ZoTbWidth <2 ) { log2SbW = Log2ZoTb Width log2SbH = 4 - log2SbW } else if( Log2ZoTbHeight <2 ) { log2SbH = Log2ZoTbHeight log2SbW = 4 - log2SbH } numSbCoeff = 1 « (log2SbW + log2SbH ) lastScanPos = numSbCoeff lastSubBlock = ( 1 « (Log2ZoTbWidth + Log2ZoTbHeight -(log2SbW + log2SbH )))-1 HistValue = sps_persistent_rice_adaptation_enabled_flag ? (1 « StatCoeff[ cldx ]) : 0 updateHist = sps_persistent rice adaptation enabled flag ? 1 : 0 do { if( lastScanPos = = 0 ) { lastScanPos = numSbCoeff lastSubBlock— } lastScanPos— xS = DiagScanOrder[ Log2ZoTbWidth - log2SbW ] [ Log2ZoTbHeight - log2SbH ] [ lastSubBlock ] [ 0 ] yS = DiagScanOrder[ Log2ZoTbWidth - log2SbW ] [ Log2ZoTbHeight - log2SbH ] [ lastSubBlock ] [ 1 ] xC = (xS « log2SbW) + DiagScanOrder[ log2SbW ][ log2SbH ][ lastScanPos ][ 0 ] yC = (yS « log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ lastScanPos ][ 1 ] } while( ( xC != LastSignificantCoeffX) (yC != LastSignificantCoeffY)) if( lastSubBlock ==0 &&Log2ZoTbWidth >= 2 &&Log2ZoTbHeight >= 2 &&!transform_skip_flag[ xO ] [ yO ] [ cldx ] &&lastScanPos >0 ) LfnstDcOnly = 0 if( (lastSubBlock >0 &&Log2ZoTbWidth >= 2 &&Log2ZoTbHeight >= 2 ) (lastScanPos >7 &&(Log2ZoTbWidth ==2 Log2ZoTbWidth ==3) && Log2ZoTbWidth = = Log2ZoTbHeight)) LfnstZeroOutSigCoeffFlag = 0 if( (lastSubBlock >0 lastScanPos >0 ) &&cldx = = 0) MtsDcOnly = 0 QState = 0 for( i = lastSubBlock; i >= 0; i—) { startQStateSb = QState xS = DiagScanOrder[ Log2ZoTbWidth - log2SbW ] [ Log2ZoTbHeight - log2SbH ] [i][0] yS = DiagScanOrder[ Log2ZoTbWidth - log2SbW ] [ Log2ZoTbHeight - log2SbH ] [i][ 1 ] inferSbDcSigCoeffFlag = 0 if( i <lastSubBlock &&i >0 ) { sb_coded_flag[ xS ][ yS ] ae(v) inferSbDcSigCoeffFlag = 1 } if( sb_coded_flag[ xS ][ yS ] &&(xS >3 yS >3 ) &&cldx ==0) MtsZeroOutSigCoeffFlag = 0 firstSigScanPosSb = numSbCoeff lastSigScanPosSb = -1 firstPosModeO = (i = = lastSubBlock ? lastScanPos : numSbCoeff - 1) firstPosModel = firstPosModeO for( n = firstPosModeO; n >= 0 &&remBinsPassl >= 4; n—){ xC = (xS « log2SbW) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = (yS « log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] if( sb_coded_flag[ xS ][yS ] &&(n>0 !inferSbDcSigCoeffFlag) &&(xC != LastSignificantCoeffX yC != LastSignificantCoeffY)) { sig coeff flagl xC ] [ yC ] ae(v) remBinsPassl— if( sig coeff flag[ xC ][ yC ]) inferSbDcSigCoeffFlag = 0 } if( sig coeff_flag[ xC ][ yC ]) { abs_level_gtx_flag[ n ] [ 0 ] ae(v) remBinsPassl— if( abs_level_gtx_flag[ n ] [ 0 ]) { par_level_flag[ n ] ae(v) remBinsPassl— abs_level_gtx_flag[ n ] [ 1 ] ae(v) remBinsPassl— } if( lastSigScanPosSb ==-1) lastSigScanPosSb = n firstSigScanPosSb = n } AbsLevelPassl [ xC ] [ yC ] = sig_coeff_flag[ xC ] [ yC ] + par_level_flag[ n ] + abs_level_gtx_flag[ n ] [ 0 ] + 2 * abs_level_gtx_flag[ n ] [ 1 ] if( shdepquantusedflag) QState = QStateTransTable[ QState ][ AbsLevelPassl[ xC ][yC ] &1 ] firstPosModel = n - 1 } for( n = firstPosModeO; n >firstPosModel; n— ) { xC = (xS « log2SbW) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = (yS « log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] if( abs_level_gtx_flag[ n ] [ 1 ]) { abs_remainder[ n ] ae(v) if( updateHist &&abs_remainder[ n ] >0 ) { StatCoeff[ cldx ] = ( StatCoeff[ cldx ] + Floor( Log2( abs_remainder[ n ])) + 2 ) » 1 updateHist = 0 } } AbsLevel[ xC ][ yC ] = AbsLevelPassl[ xC ][ yC ] +2 * abs_remainder[ n ] } for( n = firstPosModel; n >= 0; n—) { xC = (xS « log2SbW) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = (yS « log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] if( sb coded flag[ xS ][ yS ]) { dec_abs_level[ n ] ae(v) if( updateHist &&dec_abs_level[ n ] >0 ) { StatCoeff[ cldx ] = ( StatCoeff[ cldx ] + Floor( Log2( dec_abs_level[ n]))) » 1 updateHist = 0 } } if( AbsLevel[ xC ] [ yC ] >0 ) { if( lastSigScanPosSb ==-1) lastSigScanPosSb = n firstSigScanPosSb = n } if( sh dep quant used flag) QState = QStateTransTable[ QState ][ AbsLevel[ xC ][ yC ] &1 ] } signHiddenFlag = sh sign data hiding used flag && (lastSigScanPosSb - firstSigScanPosSb >3 ? 1 : 0 ) for( n = numSbCoeff- 1; n >= 0; n—) { xC = (xS « log2SbW) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = (yS « log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] if( (AbsLevel[ xC ] [ yC ] >0 ) && (! signHiddenFlag (n != firstSigScanPosSb ))) coeff_sign_flag[ n ] ae(v) } if( sh dep quant used flag) { QState = startQStateSb for( n = numSbCoeff - 1; n >= 0; n—) { xC = (xS « log2SbW) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = (yS « log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] if( AbsLevel[ xC ] [ yC ] >0 ) TransCoeffLevel[ xO ] [ yO ] [ cldx ][ xC ] [ yC ] = (2 * AbsLevel[ xC ] [yC] - ( QState >l?l:0))* ( 1 - 2 * coeff_sign_flag[ n ]) QState = QStateTransTable[ QState ][ AbsLevel[ xC ][ yC ] &1 ] } } else { sumAbsLevel = 0 for( n = numSbCoeff - 1; n >= 0; n—) { xC = (xS « log2SbW) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = (yS « log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] if( AbsLevel[ xC ] [ yC ] >0 ) { TransCoeffLevel[ xO ] [ yO ] [ cldx ][ xC ] [ yC ] = AbsLevel[ xC ][yC ] * (1 - 2 * coeff_sign_flag[ n ]) if( signHiddenFlag) { sumAbsLevel += AbsLevel[ xC ][ yC ] if( n = = firstSigScanPosSb &&sumAbsLevel % 2 == 1) TransCoeffLevel[ xO ] [ yO ][ cldx ][ xC ] [ yC ] = TransCoeffLevel[ xO ] [ yO ][ cldx ] [ xC ] [ yC ] } } } } } } This function contains the coefficients coding. Especially this function contains the syntax elements of the last coefficient position obtained thanks the variable lastScanPos. These syntax elements are lastsigcoeffxprefix, lastsigcoeffyprefix, last sig coeff x suffix, 5 last_sig_coeff_y_suffix. As we can see the decoding of this syntax elements depends on the size of the transform block. As well as the decoding of each of this syntax element as we can see in the following table from the VVC specifications. residual_coding() lastsigcoeffxprefix TR cMax = ( Log2ZoTbWidth « 1)-1, cRiceParam = 0 lastsigcoeffy prefix TR cMax = ( Log2ZoTbHeight « 1)-1, cRiceParam = 0 lastsigcoeffxsuffix FL cMax = (1 « ((lastsigcoeffxprefix » 1)-1))-1 lastsigcoeffysuffix FL cMax = (1 « ((lastsigcoeffy prefix » 1)-1))-1 sb_coded_flag[ ][ ] FL cMax = 1 sig coeff flag[ ][ ] FL cMax = 1 par_level_flag[ ] FL cMax = 1 abs_level_gtx_flag[ ][ ] FL cMax = 1 abs_remainder[ ] 9.3.3.11 cldx, current sub-block index i, xO, yO, xC, yC dec_abs_level[ ] 9.3.3.12 cldx, xO, yO, xC, yC coeff_sign_flag[ ] FL cMax = 1 And the context derivation of these variables depends also on the size of the transform block as we can see in the following section of VVC specifications (VVC specification 3rd edition of September 2023: H266 (09 / 23)): 9.3.4.2.4 Derivation process of ctxlnc for the syntax elements last sigcoeff_x_prefix and last sig coeff y_prefix Inputs to this process are the variable binldx and the colour component index cldx. Output of this process is the variable ctxlnc. The variable log2TbSize is derived as follows: - If the syntax element to be parsed is last sig coeff' x_prefix, log2TbSize is set equal to Log2FullTbWidth. - Otherwise (the syntax element to be parsed is last sig coeff’_y_prefrx), log2TbSize is set equal to Log2FullTbHeight. The variables ctxOffset and ctxShift are derived as follows: - If cldx is equal to 0, ctxOffset is set equal to offsetYf log2TbSize 1 ] and ctxShift is set equal to (log2TbSize + 1) >>2 with the list offsetY specified as follows: offsetYf ] = {0, 0, 3, 6, 10, 15} (1549) - Otherwise (cldx is greater than 0), ctxOffset is set equal to 20 and ctxShift is set equal to Clip3( 0, 2, 2log2TbSize >>3 ). The variable ctxlnc is derived as follows: ctxlnc = (binldx >>ctxShift) + ctxOffset (1550) Sub-Block Transform (SBT) principle (Figure 9) The distribution of the inter-prediction residual is considered to be very different from that of intra-prediction residual. Statistically, energy of inter-prediction residual increases from the centre of prediction block towards its boundaries. In addition, in many cases, the interprediction residuals are localized at one side of the block, rather than being distributed around all block boundaries. In order to use a smaller transform block to capture the localized residuals, and further considering the unique distribution of inter-prediction residual, a Sub-Block Transform (SBT) method was developed and included in the VVC standard. In the VVC standard, eight SBT modes are defined and are associated with different configurations of the size and location of transformed blocks. When SBT is used, two transform units are created. The transform unit containing the transformed block is either half or quarter size of the residual block, as illustrated by the greyed area in Figure 9. The residual in the remaining part of the residual block (illustrated by the white area and corresponding to the second transform unit) is not coded and all transformed coefficients are considered as zero. It is important to note that in SBT, the transformed blocks always reside in one boundary of the residual block. In other words, the transformed blocks are adjacent to three boundaries of the residual block. Another feature of SBT design in WC is the adaptive transform kernel, which is selected based on the transform block position, as illustrated in Figure 9. For instance, if the transform block at the left side of the residual block is selected as the best mode, the right side typically contains weaker residual. In this case, DCT-8 is considered as more efficient than a DCT-2 for the horizontal transform since the basis vector decreases from left to right. For the other dimension of the transform block, DST-7 was retained based on experimental results conducted during the standardization process that show marginally higher coding gain than both DCT-2 and DCT-8. In a nutshell, the SBT modes are optimized for the cases that the major residual is localized at a lateral part of the residual block. For implementation consideration, when the width or the height of an SBT transform block exceeds 32 (e.g., a 64 * 64 CU with any SBT mode), both horizontal and vertical transforms are forced to be DCT-2. In this way, it is aligned with the design principle in VVC that DST-7 / DCT-8 is only applied to blocks no larger than 32 x 32. SBT signaling When the SBT transform mode is selected at the encoder side for a given coding unit, some information is encoded in the bitstream in order to select one of the 8 possibilities illustrated by the Figure 9. First of all, and in reference to WC standard, the flag cu_sbt_flag is encoded. In order to indicate that the SBT mode is used for a given CU, this flag is set to 1, otherwise this flag is set to 0. A second flag called cu_sbt_quad_flag is then encoded to specify the size of the subblock transform. When this flag is equal to 1, its specifies that for the current coding unit, the subblock transform includes a transform unit of 1 / 4 size of the current coding unit. When cu_sbt_quad_flag is equal to 0, it specifies that for the current coding unit the subblock transform includes a transform unit of 1 / 2 size of the current coding unit. Then a third called cu sbt horizontal flag is used to indicated the direction of the transform units. When cu_sbt_horizontal_flag is equal to 0, this specifies that the current coding unit is split horizontally into 2 transform units, otherwise when cu_sbt_horizontal_flag is equal to 0 specifies that the current coding unit is split vertically into 2 transform units. Finally, a fourth flag called cu_sbt_pos_flag, is used to signal where the position of the transformed coefficients is located inside the possible two transform units. When cu_sbt_pos_flag is equal to 1, this means that no transform coefficient is present in the first transform unit of the current coding unit. When cu_sbt_pos_flag equal to 0, this specifies that the transformed coefficients are not present in the second transform unit in the current coding unit. Additionally, and based on the flags cu_sbt_pos_flag and cu_sbt_quad_flag, the position of the transform unit (sbtPos) containing the transform coefficient (expressed in quarter of transform unit width or height) is determined as follows: sbtPos = cu_sbt_pos_flag ? (4 - sbtMin): sbtMin where sbtMin = cu_sbt_quad_flag ? 1 : 2 Where “?” is the temery conditional operator. The combination of these 3 flags enables to fully represent one of the 8 configurations presented in Figure 9. Coefficient sign prediction principle (Figure 10) In order to get better coding efficiency, some prediction techniques are applied at the transform level to encode efficiently transformed coefficients. One of these techniques is the coefficient sign prediction. Such technique aims at increasing compression performance by reducing the bits overhead of residual coefficient sign. These signs are typically coded by entropy coders in bypass mode that results in the high cost of sign bins which require 1 bit per bin in a bitstream. Coefficient sign prediction enables to reduce this cost by predicting residue signs so that the probability of a guess is significantly higher than 50%. From a signalling point of view, if the sign prediction corresponds to the true value of the sign, a “0” is coded as the sign residue, otherwise a “1” is coded in the bitstream. The basic principle of the coefficient sign prediction method is to calculate reconstructed residual for both negative and positive sign combinations for a certain number of transform coefficients and select the hypothesis that minimizes a cost function. For example, if two signs are predicted, then there can be 4 possible combinations as (+, +), (+, -), (-, +), (-, -). For all four combinations, the cost function C is calculated and the combination with the minimum cost is selected as a sign predictor combination. The same process is applied if more signs are predicted with more combinations to be tried, and the tradeoff can be determined between the complexity and compression efficiency. Sign prediction cost function to minimize To derive the best sign, the cost function C is defined as a discontinuity measure across the current transform unit boundaries as shown on Figure 10. Related to Figure 10, Figure 10a illustrates the reconstructed pixels and the predicted pixels used for the computation of the discontinuity measure of the current transform unit with the above row while Figure 10b is related to the left column. This cost function C is evaluated for all sign hypotheses, and the hypothesis with the smallest cost is selected as a predictor for the coefficient signs. More precisely, the cost function C is computed, as follows, by using the reconstructed samples (Rx,y and R ’x,y) of the above row and the left column and the predicted samples (Px,y and P ’x,y) corresponding to the current transform unit: V 1 w V 1 / 1 £ = / K —^X,-l + — PX,1) “ + 5 |( —+ 2R'Oy — P'-i^ — ^^x=o ^^y—o where - Rx,y and R \y represent the reconstructed neighbors, - Px,y and P’x,y are the prediction of the current block, and - r and r ’ are the residual hypothesis. The cost function C can be seen as a sum of absolute difference between a predicted residual (ex: (—Rx + 2RX 0 — PX)y)) and the generated residual hypothesis (ex: (rxi)). Sign prediction: other elements For ease of computation, the terms (—Rx_y + 2Rx0 — Px l) and (—R'_ly + 2R'Oy — P'liy) of the cost function C can be calculated only once per block and only residual hypothesis rxy and r ’xy are subtracted to compute the cost C. To speed up the process related to the minimum cost search, the heavy inverse transform step to generate the reconstructed residual rxy and r ’x,y may be skipped. Instead, the reconstructed residual is derived based on some prestored elementary residuals multiplied by coefficient magnitude and accumulated for all coefficients for which the sign is being predicted. In ECM, the sign prediction technique area was set to a maximum of 32x32. Generally, coefficient signs of top-left MxN transform unit are predicted. The value of M and N is computed as follows: o M = min(w, 32) o N = min (h, 32) where, w and h are respectively the width and height of the transform unit. This sign prediction technique can be applied to any primary transform or any secondary transform, for example Low-Frequency Non-Separable Transforms (LFNST) that are applied after a first transformation step. CAB AC encoder description. Figure 11 corresponds to the classical module of entropy coder in a video codec where syntax elements of elementary information called syntax elements of a video encoder are encoded to produce a bitstream. One of the most popular entropy coding scheme is the context-based adaptive binary arithmetic coding (CABAC) that can be summarized by the diagram (1100) in Figure 11. It was originally designed for the video compression standard H.264 / AVC and is also now part of its successors H.265 / HEVC and H.266 / VVC video standards with some evolutions. The elementary information, to be encoded with CABAC, is given as a sequence of syntax elements (1101), which may be of various type of information related to intra and inter coding modes (motion vector, ...), residual information (transform coefficients, ...) and filtering parameter information of a video codec. The context-based adaptive binary arithmetic coding can be summarized by 3 main steps as depicted in the Figure 11: the context modelling (1104), the probability estimation (1106) (with an initialization step (1105)) and the binary arithmetic encoder (1107). First of all, each syntax element (1101) goes through the binarization process (1102) which consists in converting non-binary-valued syntax elements (e.g., a transform coefficient, motion vector values, ...) into a binary code or a bin string, only composed of “0” and “1”, prior to apply the binary arithmetic coding. In recent video coding standards, the well-known binarization processes comprise the truncated Rice binarization, the truncated binary (TB) binarization, the k-th order Exp-Golomb (EGk) binarization and the fixed-length (FL) binarization. Two different types of binary symbols can be then considered: the bin and the by-pass bin. These two different types of binary symbols are known by definition in advance for each bin of each syntax element (1101) and this defines two possible encoding paths as illustrated by the switch in (1103). It is important to note that bypass bins, context models and binarization schemes for each syntax element are predefined in the video coding standard text describing the specifications. If the bin of the syntax element is not by-passed, the context modelling (1104) associates to each bin, one of the pre-defined context models which is identified by a context model index. The objective of associating bin with context model is to group bins with similar statistical properties in order to reduce the overall bit rate allocated to represent that bin. Then, for each context model index, a probability estimation is derived for the bin in step (1106). It is performed by a transition process between generally 64 separate probability states. This probability is first initialized at a certain given probability value, in step (1105) for example at the beginning of each coded slice. This initialization is carried out based on predefined information related the context modelling step. Then this probability estimation (1106) module is also used to update the probability according to the current bin value under processing. This probability is then also used for the subsequent binary arithmetic encoder. In the case where the bins are by-passed, the bins are directly encoded by the binary arithmetic encoder (1107) without going through steps (1103) and (1106) as they are either assumed to be uniformly distributed. The by-pass path is generally used when for a particular bin, the value ”0” and “1” are equiprobable. It is also used to get a faster encoding (and decoding) process for certain high-end applications which require a very higher throughput. The binary arithmetic encoder (1107) includes a fast arithmetic module that involves a tablebased recursive probability interval subdivision for the encoding of the regular bins. The principle is to divide the current interval into sub-intervals, each representing a fraction of the current interval proportional to the probability of the current bin. Whichever interval corresponds to the actual symbol that is next to be encoded becomes the interval used in the next step. When all bins have been encoded, the resulting interval unambiguously identifies the sequence of binary information that produced it. Different implementations of the binary arithmetic encoder module (1107) are known in the literature and the most popular ones are the Q coder [1] and its derivatives known as QM and MQ coder [2], The binary arithmetic encoder (1107) also includes a fast bypass coding mode for the encoding of bypass bins. Figure 12 corresponds to the reverse operation regarding the entropy encoder presented in Figure 1. It consists in retrieving the syntax elements (1208) for the bitstream (1201). The context-based adaptive binary arithmetic decoding can be considered as the module (1200). As shown in Figure 12, the bitstream is decomposed by the bitstream parser (1202) which enables to respect the order of the syntax elements encoded in the bitstream (1201). Then according to the syntax element and the bin to be decoded (1209), similarly to what was carried out at the encoder, two decoding paths in the module (1206) are possible to decode either using a by-pass bin or a regular bin. These two different paths for the binary symbols are known by definition for each bin of each syntax element from the bitstream (1202). When the bin is by-passed coded, it is directly provided through the by-pass decoding engine of the module (1206). Otherwise, the bin is processed through the regular decoding engine of module (1206). In that case, the context modelling of this particular bin is determined in module (163) and the context model index is provided to the probability estimation module (1205). An initialization step is also performed to set the probability to a certain starting value in the module (1204). Similar to the encoder side, the initialization is performed at some particular locations of the video data structure, for example, at the beginning of a slice. Then the estimated probability is used to retrieve from the bitstream the encoded bin through the regular decoding engine of the binary arithmetic decoder (1206). The output of the module (1206) is a bin of value “0“ or “1”. The regular decoding engine applies the same table-based recursive probability interval subdivision process to unambiguously identifies the sequence of bins from the bitstream. Then according to the syntax element being decoded, outputted bins are accumulated before the inverse binarization module (1207) thanks to the loop over the bins. The bin string is then inputted in the inverse binarization process to reconstruct the true value of the decoded syntax elements (1208). In the WC, each syntax element which is CAB AC coded has its own context. For many syntax elements, several contexts are considered. They are obtained by deriving a context increment which gives the number of the context for this syntax element. And each of this context value has its own initialization values and are updated independently. GPM The Geometric partitioning mode (GPM) algorithm aims to increase the partitioning precision of moving objects using non-rectangular and asymmetric rectangular partitions on top of the conventional rectangular block partitioning structure of VVC. In this mode a split of the current block is transmitted. Each partition has its own motion information and the frontier between these 2 non rectangular blocks is blended. This mode was extended in the ECM software by integrated several modifications. Especially this mode can be split into one inter block and one Intra block. CIIP The Combined Inter Merge / Intra prediction (CIIP) Merge can be considered as a combination of the regular Merge mode and the Intra mode. The block predictor for the current block of this mode is an average between a Merge predictor block and an Intra predictor block. The Merge predictor block is obtained with exactly the same process of the Merge mode so it is a temporal block or bi-predictor of 2 temporal blocks. The Intra predictor block is obtained based on the neighbouring sample of the current block. The amount of available Intra modes for the current block is however limited compared to an Intra block. Moreover, there is no Chroma Intra predictor block signalled for a CIIP block. The Chroma predictor is equal to the Luma predictor. As a consequence, 1, 2 or 3 bits are used to signal the Intra predictor for a CIIP block. The CIIP block predictor is obtained by a weighted average of the Merge block predictor and the Intra block predictor. The weighting of the weighted average depends on the block size and / or the Intra predictor block selected. The obtained CIIP predictor is then added to the residual of the current block to obtain the reconstructed block. It should be noted that the CIIP mode is enabled only for non-Skipped blocks. Indeed, use of the CIIP Skip typically results in losses in compression performance and an increase in encoder complexity. This is because the CIIP mode has often a block residual in opposite to the other Skip mode. Consequently, its signalling for the Skip mode increases the bitrate. - when the current CU is Skip, the CIIP is avoided. A consequence of this restriction is that the CIIP block can’t have a residual containing only 0 value as it is not possible to encode a VVC block residual equal to 0. Indeed, in VVC the only way to signal a block residual equal to 0 for a Merge mode is to use the Skip mode, this is because the CU CBF flag is inferred to be equal to true for Merge modes. And when this CBF flag is true, the block residual can’t be equal to 0. In such a way, CIIP should be interpreted in this specification as being a mode which combines features of Inter and Intra prediction, and not necessarily as a label given to one specific mode. IBC In the Screen Content Extension of HEVC, the coding tool called Intra Block Copy (IBC) is signalled as any of those three INTER modes, the difference between IBC and the equivalent INTER mode being made by checking whether the reference frame is the current one. This can be implemented e.g. by checking the reference index of the list L0, and deducing this is Intra Block Copy if this is the last frame in that list. Another way to do is comparing the Picture Order Count of current and reference frames: if equal, this is Intra Block Copy. In VVC, it is also possible to enable the Intra block Copy (IBC) merge mode. IBC has an independent merge candidate derivation process. And also, for a similar Inter mode where motion vector is coded as an Inter merge mode. Palette mode Thanks to the Palette coding mode of HEVC or VVC, it is possible to define a representative block for a given Coding Unit as a block of indexes from a palette: for each pixel location in the Coding Unit, the said representative block contains the index associated with a pixel value in the Palette which is the closest to the value of the pixel having the same location. MTS for Inter The multiple transforms (MTS) tool has been integrated inside VVC for Intra coding. In that case several combinations of transform can be used and signaled inside the bitstream thanks the MTS index. In the ECM software MTS was extended to Inter coding. For Inter 4 possible transform combinations are possible: {(DST7, DST7), (DST7, DCT8), (DCT8, DST7), (DCT8, DCT8)}. For MTS the usage of only one coefficient is not allowed. Indeed, the DC components of all these transforms are redundant and redundant to the regular DCT used when MTS is not enabled. LFNST for Inter The Low-Frequency Non-Separable Transform (LFNST) is a secondary Transform. LFNST is applied to the top-left low-frequency region of primary transform coefficients and it is used for Intra coded blocks that employ DCT-2 in VVC. For the ECM software, LFNST was extended to Inter coding. The main goal of LFNST is to further compress the redundancy between low-frequency primary transform coefficients, which are transform coefficients from a prediction block. For this tool this has no sense to have only one coefficient. So, when there is only one coefficient in the transform residual, LFSNT is disallowed. For the ECM software LFNST was extended to Inter coding. ASBT method - Main General Principles For each transform unit coded with Advanced Sub-Block Transform (ASBT) a subblock of the initial residual is coded and it is the only part of the residual block transmitted. At the decoder side the reconstructed block of the current block is obtained by adding the predictor block and the residual block, where the residual block corresponds to the sub-block of the initial residual. In contrast to regular SBT, with ASBT the position (and / or the orientation) of the subblock is inferred. The inference of the position and / or orientation may be determined from the Inter predictor block. In further contrast to SBT, with ASBT the position of the residual subblock is not constrained to be located adjacent to three borders of the residual block but may be located at any position along an axis of the block (and in either orientation). This general principle is called Advanced SBT (ASBT) in the following description. It will be appreciated that embodiments of the present invention described herein are not limited to use with ASBT and may be applied to other coding methods wherein a subset (i.e. portion) of the residual block is transformed (and / or transmitted). An advantage of the ASBT method is a coding efficiency improvement, as the residual is reduced thanks to the sub-sampling, a minimum of parameters is transmitted. More generally the proposed method allows encoding of the full transform block to be avoided. The motion estimation process obtains the motion information for the coding block. If a residual is needed, it is to signal new content or a deformation of the content of the coding block. In general, new content or a deformation appears at the frontier of objects within the block, and therefore along edges. Thanks our proposed method, the residual coding is only for the sub part containing these edges. When the block predictor contains also this edge, our proposed method can identify the sub part of the block containing an edge and encode only this part of the residual block. In addition, our proposed method provides advantages extending beyond those provided by regular SBT. As described above, when using regular SBT, it is necessary to explicitly signal information indicating the location, size, and orientation of the residual subblock, and the residual subblock itself is limited to only eight different configurations of position, size, and orientation (as shown in Figure 9). In contrast, our proposed method provides increased coding efficiency, as the position and orientation of the residual subblock can be identically inferred by the encoder and decoder, and so need not be transmitted. Furthermore, the residual subblock can take any position and orientation within the subblock, as compared to previous methods such as SBT wherein the residual subblock is constrained to be adjacent to three borders (i.e. to be along an edge) of the residual block, and thus can take only a limited number of positions in the residual block. In this proposed subblock residual coding mode, the position and the direction of the transform subblocks are determined based on the corresponding Inter predictor block. This ASBT mode is signalled at Transform Unit level and it can be applied on SBT transform units and other transform units as well. This ASBT mode is only applied for Inter coding blocks. Compared to ECM-14.0, the average BDR gains and runtimes reported in this contribution are as follows: -0.09%-0.14%-0.12% 102%99.4% for the RA configuration, -0.14%0.04% -0.04% 104.0% 99.2% for the Low Delay B configuration. Proposed method The principle of the Advanced SBT is to determine the position and the direction of a subblock partition thanks to the Inter prediction block. The possible subblock partitions are the same as the ones of SBT in the VVC specifications. However, the proposed Advanced SBT infers the position and the direction of the subblock partitioning to save some signalling. The following Figure 28 depicts this principle at encoder side. For each subblock size and direction, the encoder evaluates the best position of the transform part (grey area). Then, based on the best position, the direction for each subdivision is determined. Eventually the encoder determines the best subdivision. The position selected is the position of the subblock which maximizes the sum of gradients obtained on the corresponding Inter predictor block. And regarding the direction (vertical or horizontal), the selected direction is the one that maximizes the sum of gradients of each best position. Compared to the SBT mode of VVC, only the subblock subdivision is signalled if the enabled flag of the proposed method is true. The proposed Advanced SBT is signalled at TU level and it is also allowed for SBT TU with residual. The enabled flag and the subdivision flags are CABAC-coded and the context probability increment value depends on the use of SBT. The flag information related to the proposed method can be signalled alternatively before the transform skip flag inside the TU coding or after the last significant position, and not coded if there is only one coefficient, according to a flag transmitted in the picture header. The Advanced SBT is not allowed for Intra slices and for some Inter modes as CUP and GPM. It is also disabled for LFNST and MTS and for Screen Content sequences thanks to an SPS flag. The Advanced SBT is applied only for the Luma component. It is important to note that the implementation of this SBT mode has no parsing issue even if the position and the direction is based on the Inter predictor block. To reduce the encoding time, some early encoder terminations are also used to limit the number of evaluations of this proposed ASBT mode. Signalling of the ASBT flag Aspect 1 ASBT method is signalled thanks to a flag In an aspect, the ASBT method where at least the position (or orientation) of the subblock transform residual is inferred, is signalled thanks to a flag which enables, at decoder side the method when it is equal to 1 and disables it when it is equal to 0. An advantage of this aspect is a complexity reduction as the method is not always enable at decoder side and a coding efficiency increase as the method is not always efficient. Aspect 1.1 Inside the transform unit In an aspect, the enabled flag of the ASBT method is transmitted in the transform unit. The following table of syntax elements illustrates this aspect. In this table the tu ASBT enabled flag is transmitted after the tu joint cbcr residuai nag and before the transform_skip_flag. And before the residual_coding( ). transformunitf xO, yO, tbWidth, tbHeight, treeType, subTutndex, chType ) { Descriptor iff sps joint cbcr enabled flag && ((CuPredModef chType ][x0][y0] == MODE INTRA && (tu_cb_coded_flag[ xC J[yC 1 tu_cr_coded_flag[ xC ][ yC ])) (tu_cb_coded_flag[ xC ][ yC ] &&tu_cr_coded_flag[ xC ][ yC ])) &&chromaAvailable) tu_joint_cbcr_residual_flag[ xC ] [ yC ] ae(v) if (ASBTallowed) tuASBTen abledfl ag ae(v) if (tuASBTenabledflag) tu ASBT Subdivision flag ae(v) if( tu_cb_coded_flag[ xC ][ yC ] &&treeType != DUAL TREE LUMA) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 1 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&!cu_sbtjHag) transform_skip_flag[ xC ][ yC ][ 1 ] ae(v) if( !transform_skip_flag[ xC ] [ yC ] [ 1 ] sh ts residual coding disabled flag) residual coding( xC, vC, Log2( wC ), Log2( hC), 1 ) else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 1) J This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency. The signalling inside the transform 5 unit is more efficient than the transmission of the ASBT enabled flag at CU level as SBT. Even if the selection of the method is not high, thanks to the CAB AC signalling, this position offers an interesting compromise in term of rate. Aspect 1.2 The decoding of the enabled ASBT flag depends on the usage of some previous 10 syntax elements or variables In an aspect, the decoding of the enabled ASBT flag depends on the usage of some previous syntax elements or variables. As depicted in the table of syntax elements, in the previous aspect, the ASBT enabled flag, tu_ASBT_enabled_flag, in this example, is not coded based on the value of the variable ASBT allowed. In this aspect, the value of this variable 15 depends on the usage of some previous syntax elements or variables. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency as the ASBT enabled flag is not signalled when it is sure that it will be equal to 0. Consequently, some bits can be saved. Aspect 1.2.1 If the current slice is an Intra slice In an aspect, the ASBT method is not allowed for Intra slice and the ASBT enabled flag is not extracted from the bitstream in that case. This means that the ASBTallowed variable depends on the value of the slice type, sh slice type. When sh slice type equals to I the slice is Intra coded, according to VVC specifications. The following equation gives an example: ASBT allowed = ASBT allowed AND sh slice type != I In this example and the following examples, the initialisation value of ASBT allowed is true. Which that the ASBT is only allowed for Inter slices. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is the coding efficiency. Indeed, as mentioned previously, the ASBT method determines as least the position of the subblock based on the predictor sample. In Intra coding, the Intra predictor is less correlated to the residual than in Inter coding as in Intra the predictor is generated but doesn’t correspond to the current object. Aspect 1.2.2 If the current CU is Intra In an aspect, the ASBT method is not allowed when the current block is Intra and the ASBT enabled flag is not extracted from the bitstream in that case. This means that the ASBT allowed depends on the value of CU prediction mode, predmodeflag. When this variable is equal to 1 it corresponds to the Intra according to VVC specifications. The following equation gives an example: ASBT allowed = ASBT allowed AND pred mode flag != 1 This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the same as previous one. In this aspect, the slice is an Inter slice. Aspect 1.2.3 If the current CU is GPM In an aspect, the ASBT method is not allowed when the current block is GPM and the ASBT enabled flag is not extracted from the bitstream in that case. The following equation gives an example: ASBT allowed = ASBT allowed AND !CUisGPM() CUisGPM() is a function which returns true if the current CU is coded with the GPM mode. So, !CUisGPM() returns false if the current CU is coded with the GPM mode. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency. The GPM mode a particular CU splitting. In ECM software, one part of the GPM can be Intra. As the GPM matches the edge between 2 objects and as several processes are used to reduce the impact of this edge on the residual, the proposed ASBT method can’t be efficient. Aspect 1.2.4 If the current CU is IBC In an aspect, the ASBT method is not allowed when the current block is IBC and the ASBT enabled flag is not extracted from the bitstream in that case. The following equation gives an example: ASBTallowed = ASBTallowed AND !CUisIBC() CUisIBC () is a function which returns true if the current CU is coded with the IBC mode. So, ! CUisIBC () returns false if the current CU is coded with the IBC mode. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency. Indeed, ASBT method is not particularly efficient for IBC. Aspect 1.2.5 If the current CU is Palette In an aspect, the ASBT method is not allowed when the current block is Palette mode coded and the ASBT enabled flag is not extracted from the bitstream in that case. This means that the ASBT allowed depends on the value of pred_mode_plt_flag according to VVC specifications. The pred_mode_plt_flag specifies the use of palette mode in the current coding unit. The following equation gives an example: ASBT allowed = ASBT allowed AND pred_mode_plt_flag == false This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency. The palette mode is tool very efficient to compress screen content. The screen content is specific and the residual produced for this type of content is not adapted to the coding thanks to traditional transform, or at least less adapted. Aspect 1.2.6 If the current CU is Skip or MMVD skip In an aspect, the ASBT method is not allowed when the current block is Skip or mmvd Skip mode coded and the ASBT enabled flag is not extracted from the bitstream in that case. This means that the ASBTallowed depends on the value of cuskipflag according to VVC specifications, cu skip flag specifies the use of Skip mode for the current coding unit. The following equation gives an example: ASBT allowed = ASBT allowed AND cu skip flag == false This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is of course the coding efficiency as the Skip mode has no residual. Aspect 1.2.7 If a flag, inside a header, disallows ASBT In an aspect, a flag transmitted inside a header allows or not the usage of ASBT method. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is the coding efficiency as the ASBT method is not always efficient especially when the amount of residual for the coded is not too large, the additional signal of disabling the method impact the bitrate. Aspect 1.2.7.1 The header can be In an additional aspect, the header can be SPS, PPS, picture header and Slice header. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is a fine granularity to increase the coding efficiency of the ASBT method. For example, the ASBT can be disabled at SPS when it is known that the content is screen content. For another example, ASBT is not applied for frame which are not used as reference frames. Aspect 1.2.7.2 Not allowed thanks to an SPS flag when Palette enabled In an aspect, at encoder side, when the SPS flag related to the enabling or disabling of the palette mode, sps palette enabled flag, enables the palette mode, the SPS flag or all others header flag related to ASBT are set equal to false. This aspect can be a bitstream constraint. As for example, when the sps palette enabled flag is set equal to true, the sps_ASBT_enabled_flag is set equal to false. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the same as mentioned in the previous aspect for the palette mode. Aspect 1.2.7.2.1 Not allowed thanks to the SPS Palette flag In one alternative aspect, when the SPS flag related to palette sps_palette_enabled_flag, enables the palette mode, the SPS flag, or alternatively all others related ASBT header flags, are set equal to false and is or are not transmitted. The following syntax table illustrates this aspect: seq_parameter_set_rbsp() { Descriptor spspaletteenabledflag u(l) if(! sps_palette_enabled_flag) { spsASBTenabledflag u(l) } • •• } This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the same as previous one and additionally is avoid the transmission of at least one header flag. Aspect 1.2.8 Combinations In an aspect, all proposed restriction can be combined. The following pseudo code gives an example of this combination: ASBTallowed = true ASBTallowed = ASBTallowed AND sh slice type != I AND pred mode flag != 1 AND !CUisGPM()AND !CUisIBC() AND pred_mode_plt_flag == false AND cu_skip_flag == false This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the cumulative coding efficiency. Aspect 1.3 The decoding of the enabled ASBT flag depends on the size of the of the current block. In an aspect, the decoding of the enabled ASBT flag depends on the size of the of the current block. In this aspect ASBT is not enabled when the potential subblock residual obtained has a size different to the size of existing transform size for regular transform units. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is the complexity of the implementation and clean design as no other transform needs to be added. Moreover, it reduces the worst-case complexity at decoder side and the encoding time at encoder side. Aspect 1.3.1 If height and width are less than or equal to 4 In an aspect, if height and width of the initial block are less than or equal to 4, ASBT is not allowed. The minimum transform size is limited to 4x4. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is similar to the previous one. Aspect 1.3.2 If height and width are less than another size In an aspect, if height and width of the initial block are less than or equal to another size. In this example, the minimum does not correspond to the minimum transform but instead corresponds to another larger block. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is a complexity reduction as for example it divides by two the additional encoder complexity for the ASBT method and maintains an interesting coding efficiency. So, the compromise gain complexity is better. Aspect 1.3.3 If height and width are strictly greater than 128 In an aspect, if height or width are strictly greater than 128, ASBT is not allowed. The minimum transform size is limited to 128. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is the complexity of the implementation and clean design as no other transform needs to be added. Aspect 1.3.4 If height and width are strictly greater than another size In an aspect, if height and width of the initial block are greater than another size. For example, if the height multiply by the width of the initial TU is strictly greater to 4096. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is a coding efficiency improvement and complexity reduction at encoder side. Signalling of the Subdivision Aspect 2 When ASBT enabled flag is true, the sub division information is transmitted In an aspect, when ASBT enabled flag is true, the sub division information is transmitted. Additionally, is coded just after the ASBT enabled flag. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is the coding efficiency as the sub division is the most difficult parameters to predict and this transmission is necessary. Aspect 2.1 This information is a flag. In an aspect, this information is a flag. In this aspect, the two subdivisions are considered and these subdivisions are the division by 2 and the division by 4. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is the same as the previous one. Aspect 2.1.1 This information can be more than one flag. In an alternative aspect, this information can be more than one flag. For example, one first bin indicates the most probable subdivision or the sub division by 2. Then if the most probable subdivision or the sub division by 2, another bin is decoded to determine one among 2 other subdivisions. These 2 other subdivisions can be the division by 4 and by 8. In one example a unary max code is used to encode the subdivision information. Each bin can represent 2 power of i, with the power i starting from 1 to N. And the maximum subdivision is the maximum possible subdivisions for the current block. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is additional coding efficiency, but it increases also the encoding time complexity. Aspect 2.2 When the sub division is not possible the flag is not transmitted. In an aspect, when the sub division is not possible no information is transmitted. If this information is a flag (or a bin), and if one of the subdivisions is not possible, the flag is not transmitted. If the information is represented by multiple flags or bins, at least the flag or bin representing the impermissible subdivision is not transmitted. For example, the subdivision not available may be the division by 4. And it is not considered as available because, the subdivision gives a transform not available. Alternatively, when more than 2 subdivisions are used and one or more are not available the code word is adapted. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency, as some unneeded bits are not transmitted. Aspect 2.2.1 If the direction is inferred and if both directions are possible. In an aspect, if the direction is inferred and if both directions are possible, and the two possible sub division are 2 or 4, the subdivision flag is transmitted only if the maximum between the width and height of the initial transform unit is strictly greater than 8. Here it is considered that the minimum possible transform size is 4x4. Adaptation is possible for another minimum size. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the same as the previous one. Aspect 2.2.2 If the direction is not inferred or if only one direction is possible In an aspect, if the direction is explicitly signalled or if only one direction is possible, and if this direction is signalled or if the only available direction is vertical, the subdivision flag is transmitted only if the width of the initial TU is strictly greater than 8. And if this direction is signalled or if the only available direction is horizontal, the subdivision flag is transmitted only if the height of the initial TU is strictly greater than 8. Here it is considered that the minimum possible transform size is 4x4. Adaptation is possible for another minimum sizes. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the same as the previous one. Aspect 2.2.3 When the subdivision is decoded and this subdivision is not possible for the default direction, it is sure that the selected direction is not the default one In an aspect, when the direction is inferred, and when the subdivision is decoded and this subdivision is not possible for the default direction, it is sure that the selected direction is not the default one. And if this sub division is not possible, it is sure that it is the horizontal subdivision divided by 4. An advantage of this aspect is complexity reduction at decoder side as the direction does not need to be determine. Signalling of the direction Aspect 3 When the direction is not inferred one flag indicates the direction In an aspect, when the direction is not inferred one flag indicates the direction. An advantage of this aspect is a complexity reduction at encoder side. And for some content it creates a coding efficiency increase. Aspect 3.1 Signalled after the enabled flag and before the sub division flag or information In an aspect, when the direction is not inferred one flag indicates the direction, and this flag is signalled after the enabled flag and before the sub division flag or related information. 5 The following table of syntax elements illustrates this aspect, where the direction flag is tuASBTDirectionflag. transform_unit( xO, yO, tbWidth, tblleight, treeType, subTutndex, chType ) { Descriptor if( sps joint cbcr enabled flag && (( CuPredMode[ chType J[xO][yO] == MODEINTRA && (tu_cb_coded_flag[ xC ][ yC ] tu_cr_coded_flag[ xC ][ yC ] )) (tu cb coded_flag[ xC ][ yC ] &&tu_cr_coded_flag[ xC ][ yC ])) &&chromaAvailable ) tu_jomt_cbcr_residiial_flag[ xC ] [ y C ] ae(v) if (ASBTallowed) tuASBTen abledfl ag ae(v) if (tu_ASBT_enabled_flag) tu ASBT Direction flag ae(v) if (tu ASBT enabled flag) tuASBTSubdivisionflag ae(v) if( tu cb coded flagf xC ] [ yC ] &&treeType != DUAL TREE LUMA) { if( spstransformskipenabledflag &&!BdpcmFlag[ xO ][ yO ][ 1 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&!cu_sbt_flag) transform skip flagf xC ][ yC ][ 1 ] ae(v) if( ’transform skip flagf xC ][yC ][ 1 ] sh ts residual coding disabled flag ) residual_coding( xC, yC, Log2( wC ), Log2( hC ), 1) else residual_ts_coding( xC, yC, Log2( wC), Log2( hC ), 1) } An advantage of this aspect is the coding efficiency as the direction flag can be used to determine the number of available subdivisions and if the subdivision flag or information needs to be transmitted or reduced or not. Aspect 3.2 Only when both directions are available In an aspect, the direction flag is transmitted only when both directions are available. The availability of the directions depends on the minimum block size. If the height for horizontal and the width for vertical are unavailable after a subdivision by 2, the direction is considered as unavailable. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is a coding efficiency increase as unneeded bits are not transmitted. Aspect 3.2.1 Direction not inferred when current block width is greater than or equal to 128 and / or height is greater than or equal to 128 In an aspect, the direction is inferred except when the width of the initial transform unit before subdivision is greater than or equal to 128 and / or its height is greater than or equal to 128. For that case the direction is explicitly signalled as described previously. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect, is a coding efficiency improvement, as 128 for width or height corresponds to large blocks. For large blocks, the impact of additional flags is small (the number of bits per sample is small compared to small block sizes). Consequently, the signalling of the direction can be sometimes more benefit in term of distortion when the algorithm fails in determining the direction. Aspect 3.2.2 When width*height strictly greater than 4096 In an aspect, when the direction is inferred except when the width multiplied by the height of the initial transform unit before subdivision is strictly greater than 4096. For that case the direction is explicitly signalled as described previously. When the width multiplied by the height corresponds to the number samples in the initial transform unit. An advantage of this aspect, is the same as previous aspect. Additional Limitations when ASBT flag is enabled Aspect 4 When the ASBT enabled flag is decoded and it is equal to 1 at least one another syntax element is not decoded. In an aspect, when the ASBT enabled flag is decoded and it is equal to 1 at least one another syntax element is not decoded. In this aspect, the unavailability of ASBT with other tools is used to reduce the number of bits transmitted. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency improvement as some unneeded bits are not transmitted. Aspect 4.1 Transform Skip flag In an aspect, when ASBT enabled flag is decoded and it is equal to 1 the Transform Skip flag is not transmitted as depicted in the following syntax element table: transform_unit( xO, yO, tbWidth, tbHeight, treeType, subTutndex, chType ) { Descriptor tu_joint_cbcr_residual_flag[ xC ] [ yC ] ae(v) if (ASBT allowed) tu ASBT enabled flag ae(v) if (tu__ASBT__enabled_flag) tu ASBT Subdivision flag ae(v) if( tu_y_coded_flag[ xO ][ yO ] &&treeType != DUAL TREE CHROMA) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 0 ] &&tbWidth <= MaxTsSize &&tbHeight <= MaxTsSize && (IntraSubPartitionsSplitType == ISP NO SPLIT) &&!cu_sbt_flag &&! tu ASBT enabled flag) transform_skip_flag[ xO ][ yO ][ 0 ] ae(v) if( !transform_skip_flag[ xO ][ yO ][ 0 ] shtsresidualcodingdisabledflag) residual_coding( xO, yO, Log2( tbWidth), Log2( tbHeight), 0 ) else residual_ts_coding( xO, yO, Log2( tbWidth), Log2( tbHeight), 0 ) } if( tu_cb_coded_flag[ xC ] [ yC ] &&treeType != DUAL TREE LUMA) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 1 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&icu sbt flag &&! tuASBTenabledflag) transform_skip_flag[ xC ][ yC ][ 1 ] ae(v) if( !transform_skip_flag[ xC ][yC ][ 1 ] sh ts residual coding disabled flag) residual_coding( xC, yC, Log2( wC ), Log2( hC ), 1) else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 1) } if( tu_cr_coded_flag[ xC ] [ yC ] &&treeType != DUAL TREE LUMA && !(tu_cb_coded_flag[ xC ][ yC ] &&tujoint_cbcr_residual_flag[ xC ][ yC ])) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 2 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&Icu sbt flag &&! tu ASBT enabled flag) transform_skip_flag[ xC ][ yC ][ 2 ] ae(v) if( !transform_skip_flag[ xC ][yC ][ 2 ] sh ts residual coding disabled flag) residual_coding( xC, yC, Log2( wC ), Log2( hC ), 2 ) else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 2 ) } J________________________________________.______________________________________________ Moreover, the transform Skip flag is inferred to be equal to 0 when not transmitted due to the enabling of ASBT. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. In this aspect it is considered that transform skip is not allowed with ASBT. An advantage of this aspect is the same as previous one. Aspect 4.2 LFNST In an aspect, when ASBT enabled flag is decoded and it is equal to 1 the information for LFNST, LFSNT index, is not transmitted and inferred to be equal to 0. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. In this aspect it is considered that LFNST is not allowed with ASBT. An advantage of this aspect is the same as previous one. Aspect 4.3 MTS In an aspect, when ASBT enabled flag is decoded and it is equal to 1 the information related to the signalling of MTS, MTS index, is not transmitted and inferred to be equal to 0. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. In this aspect it is considered that MTS is not allowed with ASBT. An advantage of this aspect is the same as previous one. Context derivation for ASBT enabled Flag Aspect 5 The ASBT enabled flag is CABAC coded In an aspect, the ASBT enabled flag is CABAC coded. It means that a bin is transmitted, this bin has its own context, so its own probability states which change according to the values encoded as explained previously. This aspect can be applied for other subblock residual coding. An advantage of this aspect is a coding efficiency. Indeed, the proportion of ASBT selection is not high compared to the number of times that it is signalled, so the usage of CABAC to code this flag is adapted and consequently it reduces the bitrate. Aspect 5.1 Initialization when one context In an aspect, the ASBT enabled flag is CABAC coded and its initialization of context is set in order that ASBT enabled flag has a higher probability to be equal to 0 than to be equal to 1. This aspect can be applied for other subblock residual coding. An advantage of this aspect is a coding efficiency increase has if the context is correctly initialized the gain is higher and that the ASBT method has no high selection. Aspect 5.2 The ASBT enabled flag has a context increment value derivation In an aspect, the ASBT enabled flag has several contexts and a context increment value is derived. This aspect can be applied for other subblock residual coding. An advantage of this aspect is a coding efficiency improvement, as the ASBT method has not the same probability of selection depending on some parameters described in the following. Aspect 5.2.1 The context is determined based on the use of SBT In an aspect, the context increment value is determined based on the use of SBT. In this aspect, when the cu_sbt_flag is set equal to 1, the context increment value is 1 and when it is equal to 0 the context increment value is 0. As mentioned previously, the cu_sbt_flag is the flag which enables SBT of the CU corresponding to the initial transform unit which could be split by ASBT. This aspect can be applied for other subblock residual coding. An advantage of this aspect, is a coding efficiency. Indeed, ASBT is highly selected when SBT is selected. So, the ASBT selection is very different when SBT is also selected than when SBT is not selected. Aspect 5.2.1.1 Initialization when two contexts are used based on SBT In an aspect, when the context increment value is determined based on the use of SBT, the initialization value related to the probability of the disabling of ASBT when SBT is not used represents a higher probability than the similar initialisation value when ASBT is disabled when SBT is used. For both contexts as defined previously, the initialization of context is set in order that ASBT enabled flag has a higher probability to be equal to 0 than to be equal to 1. An advantage of this aspect in the coding efficiency increase as ASBT is more selected when SBT is used but largely less than 50% of times. Aspect 5.2.2 The context increment value is based on the initial block size In an aspect, the context increment value is determined based on the size of the block. The context derivation can include 2 values, one for large block and one for small blocks. In one alternative, several context increment values can be obtained representing the size of the initial transform unit. This aspect can be applied for other subblock residual coding. An advantage of this aspect in the coding efficiency increase as ASBT selection is correlated to the block size. Aspect 5.2.2.1 Initialization when the context increment value is based on the initial block size In an aspect, when the context increment value is based on the initial block size, the initialisation value representing the probability of enabling ASBT for large blocks, represents a higher probability than the similar value representing the probability of enabling ASBT for smaller blocks. This rule is valid even if the number of context increment values is larger than 2. This aspect can be applied for other subblock residual coding. An advantage of this aspect is the coding efficiency increase as the ASBT selection is larger for large blocks than for small blocks. Context derivation for Subdivision Aspect 6 The Subdivision information is CABAC coded In an aspect, the ASBT subdivision flag is CABAC coded. It means that a bin is transmitted. This bin has its own context, so its own probability states which change according to the values encoded as explained previously. This aspect can be applied for other subblock residual coding. An advantage of this aspect is the coding efficiency. Indeed, the subdivision depends on the QP and the content of the video. So, it is important to CABAC encode such data to increase the coding efficiency. Aspect 6.1 The Subdivision information has a context for each bin In an aspect, when the subdivision information contains than more than two subdivisions, several bins need to be decoded. These bins are CABAC coded and each has its own context. This aspect can be applied for other subblock residual coding. An advantage of this aspect, is similar than the previous one with the advantage of disadvantage to code more than two subdivisions. Aspect 6.2 The Subdivision information has a context increment value derivation In an aspect, the Subdivision information or flag has several CABAC contexts and a CABAC context increment value is derived for one bin, if a flag, or each bin otherwise. This aspect can be applied for other subblock residual coding. An advantage of this aspect is a coding efficiency improvement, as the ASBT subdivision has not the same probability of selection depending on some parameters described in the following. Aspect 6.2.1 The context derivation is the same as for the ASBT enabled Flag In an aspect, when the subdivision information (flag or not) is CABAC coded, and when more than one context increment are used to encoded each bin, the context derivation value is the same than the ASBT enabled flag for at least one bin. In this aspect, it is the same derivation not the same context increment value. This aspect can be applied for other subblock residual coding. An advantage of this aspect, is the simplicity of implementation and clean design as several variables share the same context derivation. Aspect 6.2.2 The context derivation is based on the use of SBT In an aspect, when the subdivision information (flag or not) is CABAC coded, the context derivation is based on the use of SBT. In this aspect, when the cu_sbt_flag is set equal to 1, the context increment value is 1 and when it is equal to 0 the context increment value is 0. This aspect can be applied for other subblock residual coding. An advantage of this aspect is a coding efficiency improvement. Similarly, to the ASBT flag, the selection of the subdivision depends on the SBT selection. Aspect 6.2.2.1 Initialization In an aspect, when the subdivision information (flag or not) is CABAC coded and when this context derivation is based on the use of SBT, the initialisation value representing the probability of the largest subdivision (division by 2) represents a higher probability of selection than the smallest subdivision (division by 4) when SBT is selected. And when SBT is not selected it is the inverse. So, the initialisation value representing the probability of selection of the smallest subdivision (division by 4) represents a probability of higher selection than the largest division (division by 2). This aspect can be applied for other subblock residual coding. An advantage of this aspect is a coding efficiency increases as the subdivision by 2 is more selected than the subdivision by 4 when SBT is selected and when SBT is not selected, it is the inverse. Aspect 6.2.3 The context is based on the initial block size. In an aspect, when the subdivision information is CABAC coded and when there is several contexts one bin or each bin, the derivation of the context increment value(s) depends on the value representing the block size. But in opposite to the ASBT context derivation based on block size the value depends on the comparison of the height or width. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is a coding efficiency as the subdivision is correlated to the ratio of height and width or the ratio of width and height according to the related direction. Context derivation for Direction flag Aspect 7 The Direction flag is CABAC coded In an aspect, the ASBT direction flag is CABAC coded. It means that a bin is transmitted. This bin has its own context, so its own probability states which change according to the values encoded as explained previously. This aspect can be applied for other subblock residual coding. An advantage of this aspect is the coding efficiency. Indeed, the direction depends on the content of the video. So, it is important to CABAC encode such data to increase the coding efficiency. Aspect 7.1 The Direction flag has a context derivation In an aspect, the direction flag has several contexts and a context increment value is derived. This aspect can be applied for other subblock residual coding. An advantage of this aspect is a coding efficiency improvement, as the ASBT direction has not the same probability of selection depending on some parameters described in the following. Aspect 7.1.1 Same context derivation as ASBT enabled Flag In an aspect, when the direction flag is CABAC coded, and when more than one context are used to encoded the bin, the derivation of the context increment value is the same than the ASBT enabled flag. In this aspect, it is the same derivation not the same context increment value. This aspect can be applied for other subblock residual coding. An advantage of this aspect, is the simplicity of implementation and clean design as several variables share the same context increment derivation. Aspect 7.1.2 The Direction flag based on the use of SBT In an aspect, the direction flag is CABAC coded and its context increment derivation is based on the use of SBT. In this aspect, when the cu_sbt_flag is set equal to 1, the context increment value is 1 and when it is equal to 0 the context increment value is 0. This aspect can be applied for other subblock residual coding. An advantage of this aspect, is simplicity of implementation and clean design as several variables share the same context derivations. Aspect 7.1.3 The Direction flag based on the SBT sub partition In an aspect, the direction flag is CABAC coded and it has a context increment derivation value and this context increment derivation value depends on the SBT sub partition selection. 5 This aspect can be applied for other subblock residual coding. An advantage of this aspect is a coding efficiency improvement as the direction flag depends on the SBT sub partition selection. Signalling position inside Transform unit 10 Aspect 8 The ASBT method is decoded after transform Skip flag In an aspect, the ASBT method is decoded after transform Skip flag as depicted in the following table of syntax elements: transform_unit( xO, yO, tbWidth, tbHeight, treeType, subTutndex, chType ) { Descriptor tu_joint_cbcr_residual_flag[ xC ] [ yC ] ae(v) if( tu_y_coded_flag[ xO ][ yO ] &&treeType != DUAL TREE CHROMA) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 0 ] &&tbWidth <= MaxTsSize &&tbHeight <= MaxTsSize && (IntraSubPartitions SplitType == ISP NO SPLIT) &&!cu_sbt_flag &&! tuASBTenabledflag) transform_skip_flag[ xO ][ yO ][ 0 ] ae(v) if (ASBTallowed) tuASBTenabled flag ae(v) if (tuASBTenabledflag) tuASBTSubdivision _flag ae(v) if( !transform_skip_flag[ xO ][ yO ][ 0 ] shtsresidualcodingdisabledflag) residual_coding( xO, yO, Log2( tbWidth), Log2( tbHeight), 0 ) else residual_ts_coding( xO, yO, Log2( tbWidth), Log2( tbHeight), 0 ) } if( tu_cb_coded_flag[ xC ] [ yC ] &&treeType != DUAL TREE LUMA) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 1 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&!cu_sbt_flag &&! tu ASBT enabled flag) transform_skip_flag[ xC ][ yC ][ 1 ] ae(v) if (ASBTallowed) tuASBTenabledflag ae(v) if (tuASBTenabledflag) tuASBTSubdivisionflag ae(v) if( !transform_skip_flag[ xC ][yC ][ 1 ] sh ts residual coding disabled flag) residual_coding( xC, yC, Log2( wC ), Log2( hC ), 1) else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 1) } if( tu_cr_coded_flag[ xC ] [ yC ] &&treeType != DUAL TREE LUMA && !(tu_cb_coded_flag[ xC ][ yC ] &&tujoint_cbcr_residual_flag[ xC ][ yC ])) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 2 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&!cu_sbt_flag &&! tuASBTenabledflag) transform_skip_flag[ xC ][ yC ][ 2 ] ae(v) if (ASBTallowed) tuASBTenabledflag ae(v) if (tuASBTenabledflag) tuASBTSubdivisionflag ae(v) if( !transform_skip_flag[ xC ][yC ][ 2 ] shtsresidualcodingdisabledflag) else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 2 ) } } This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is sometimes a coding efficiency improvement, especially when the amount of transform skip selection is larger than the ASBT selection. Aspect 8.1 If the transform Skip is not enabled In an aspect, when the ASBT method is decoded after the transform Skip flag, the ASBT enabled flag is not decoded, if the Transform skip is equal to 1 as depicted in the following table of syntax element: transform_unit( xO, yO, tbWidth, tbHeight, treeType, subTuIndex, chType ) { Descriptor tu_joint_cbcr_residual_flag[ xC ] [ yC ] ae(v) if( tu_y_coded_flag[ xO ][ yO ] &&treeType != DUAL TREE CHROMA) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 0 ] &&tbWidth <= MaxTsSize &&tbHeight <= MaxTsSize && (IntraSubPartitions SplitType == ISP NO SPLIT) &&!cu_sbt_flag &&! tu ASBT enabled flag) transform_skip_flag[ xO ][ yO ][ 0 ] ae(v) if( !transform_skip_flag[ xO ][ yO ][ 0 ] sh ts residual coding disabled flag) { if (ASBTallowed) tuASBTenabledflag ae(v) if (tuASBTenabledflag) tuASBTSubdivisionflag ae(v) residual_coding( xO, yO, Log2( tbWidth), Log2( tbHeight), 0 ) } else residual_ts_coding( xO, yO, Log2( tbWidth), Log2( tbHeight), 0 ) } if( tu_cb_coded_flag[ xC ] [ yC ] &&treeType != DUAL TREE LUMA) { if( spstransformskipenabledflag &&!BdpcmFlag[ xO ][ yO ][ 1 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&!cu_sbt_flag &&! tuASBTenabledflag) transform skip_flag[ xC ][ yC ][ 1 ] ae(v) if( !transform_skip_flag[ xC ][yC ][ 1 ] shtsresidualcodingdisabledflag) { if (ASBTallowed) tuASBTenabledflag ae(v) if (tuASBTenabledJflag) tuASBTSubdivisionflag ae(v) residual_coding( xC, yC, Log2( wC ), Log2( hC ), 1) } else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 1) } if( tu_cr_coded_flag[ xC ] [ yC ] &&treeType != DUAL TREE LUMA && !(tu_cb_coded_flag[ xC ][ yC ] &&tujoint_cbcr_residual_flag[ xC ][ yC ])) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][ 2 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&!cu_sbt_flag&& ! tn ASBT enabled flag) transform_skip_flag[ xC ][ yC ][ 2 ] ae(v) if( !transform_skip_flag[ xC ][yC ][ 2 ] sh ts residual coding disabled flag) { if (ASBTallowed) tuASBTenabledflag ae(v) if (tuASBTenabledflag) tuASBTSubdivisionflag ae(v) } else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 2 ) } } Alternatively, this condition can be added to the ASBT allowed variable.This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency increase as unneeded bits are not transmitted. Signalling position in residual coding Aspect 9 The ASBT method is decoded in the residual coding In an aspect, the ASBT method is decoded in the residual coding instead of the transform unit. 10 This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency increase sometimes as described in the following additional aspects. Aspect 9.1 The ASBT method is decoded after the syntax elements related to the last 5 significant coefficient position In an aspect, the ASBT method is decoded after the syntax elements related to the last significant coefficient position. The following table of syntax elements illustrates this aspect: residual_coding( xO, yO, log2TbWidth, log2TbHeight, cldx) { Descriptor if( spsmtsenabledflag &&cu_sbt flag &&cldx ==0 &&log2Tb Width = =5 &&log2TbHeight <6 ) Log2ZoTb Width = 4 else Log2ZoTbWidth = Min( log2TbWidth, 5 ) if( sps mts enabled flag &&cu sbt flag &&cldx ==0 &&log2TbWidth <6 &&log2TbHeight ==5) Log2ZoTbHeight = 4 else Log2ZoTbHeight = Min( log2TbHeight, 5 ) Log2FullTb Width = log2Tb Width Log2FullTbHeight = log2TbHeight if( log2TbWidth >0 ) lastsigcoeffxprefix ae(v) if( log2TbHeight >0 ) lastsigcoeffyp refix ae(v) if( last_sig_coeff_x_prefix >3 ) lastsigcoeffxsuffix ae(v) if( last_sig_coeff_y_prefix >3 ) lastsigcoeffysuffix ae(v) remBinsPassl = ((1 « (Log2ZoTbWidth + Log2ZoTbHeight)) * 7 ) » 2 log2SbW = (Min( Log2ZoTbWidth, Log2ZoTbHeight) <2 ? 1 : 2 ) log2SbH = log2SbW if( Log2ZoTbWidth + Log2ZoTbHeight >3 ) if( Log2ZoTbWidth <2 ) { log2SbW = Log2ZoTb Width log2SbH = 4 - log2SbW } else if( Log2ZoTbHeight <2 ) { log2SbH = Log2ZoTbHeight log2SbW = 4 - log2SbH } numSbCoeff = 1 « (log2SbW + log2SbH ) lastScanPos = numSbCoeff lastSubBlock = ( 1 « (Log2ZoTbWidth + Log2ZoTbHeight -(log2SbW + log2SbH )))-1 HistValue = sps_persistent_rice_adaptation_enabled_flag ? (1 « StatCoefff cldx ]) : 0 updateHist = sps_persistent_rice_adaptation_enabled_flag ? 1 : 0 do { if( lastScanPos = = 0 ) { lastScanPos = numSbCoeff lastSubBlock— } if (ASBTallowed) tu ASBT enabled flag ae(v) if (tuASBTenabledflag) tuASBTSubdivisionflag ae(v) lastScanPos— xS = DiagScanOrder[ Log2ZoTbWidth - log2SbW ] [ Log2ZoTbHeight - log2SbH ] [ lastSubBlock ] [ 0 ] yS = DiagScanOrder[ Log2ZoTbWidth - log2SbW ] [ Log2ZoTbHeight - log2SbH ] [ lastSubBlock ] [ 1 ] xC = (xS « log2SbW) + DiagScanOrder[ log2SbW ] [ log2SbH ] [ lastScanPos ] [ 0 ] yC = (yS « log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ lastScanPos ] [ 1 ] } while( ( xC != LastSignificantCoeffX) (yC != LastSignificantCoeffY)) if( lastSubBlock ==0 &&Log2ZoTbWidth >= 2 &&Log2ZoTbHeight >= 2 &&!transform_skip_flag[ xO ] [ yO ] [ cldx ] &&lastScanPos >0 ) LfnstDcOnly = 0 if( (lastSubBlock >0 &&Log2ZoTbWidth >= 2 &&Log2ZoTbHeight >= 2 ) (lastScanPos >7 &&(Log2ZoTbWidth ==2 Log2ZoTbWidth ==3) && Log2ZoTbWidth = = Log2ZoTbHeight)) LfnstZeroOutSigCoeffFlag = 0 if( (lastSubBlock >0 lastScanPos >0 ) &&cldx = = 0) MtsDcOnly = 0 QState = 0 for( i = lastSubBlock; i >= 0; i—) { startQStateSb = QState xS = DiagScanOrder[ Log2ZoTbWidth - log2SbW ] [ Log2ZoTbHeight - log2SbH ] [i][0 ] yS = DiagScanOrder[ Log2ZoTbWidth - log2SbW ] [ Log2ZoTbHeight - log2SbH ] [ill 1 ] inferSbDcSigCoeffFlag = 0 if( i <lastSubBlock &&i >0 ) { sb_coded_flag[ xS ][ yS ] ae(v) inferSbDcSigCoeffFlag = 1 } In this table tu ASBT enabled flag is decoded after the syntax elements lastsigcoeffxprefix, lastsigcoeffyprefix, lastsigcoeffxsuffix, last_sig_coeff_y_suffix which are the syntax elements used to obtained the value of 5 lastScanPos. Please note that tu_ASBT_enabled_flag and tuASBTSubdivisionflag are decoded before the final lastSacnPos update (lastSacnPos —) in order that when lastSacnPos is equal to 1 it means that there is one coefficient inside transform block. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. 5 There is no advantage of this aspect alone. The advantage is obtained thanks to some of the following additional aspects. Aspect 9.1.1 The ASBT enabled flag is not coded when the last significant coefficient position is greater than or equal to the half of the size of the initial transform unit 10 In an aspect, the ASBT enabled flag is not coded when the last significant coefficient position is greater than or equal to the half of the size of the initial transform unit. Indeed, when the number of coefficients inside the current block exceeds the maximum size of the possible subblock of ASBT, it is sure that the current transform residual block is not an ASBT block. This maximum size is always the initial height multiply by the width and divided by 2. Or 15 alternatively shifted by 1. The following table of syntax elements illustrates this aspect: residual_coding( xO, yO, log2TbWidth, log2TbHeight, cldx) { Descriptor if( sps mts enabled flag &&cusbtflag &&cldx ==0 &&log2Tb Width = =5 &&log2TbHeight <6 ) Log2ZoTb Width = 4 else Log2ZoTbWidth = Min( log2TbWidth, 5 ) if( sps mts enabled flag &&cu sbt flag &&cldx ==0 &&log2TbWidth <6 &&log2TbHeight ==5) Log2ZoTbHeight = 4 else Log2ZoTbHeight = Min( log2TbHeight, 5 ) Log2FullTb Width = log2Tb Width Log2FullTbHeight = log2TbHeight if( log2TbWidth >0 ) lastsigcoeffxprefix ae(v) if( log2TbHeight >0 ) lastsigcoeffyp refix ae(v) if( last_sig_coeff_x_prefix >3 ) lastsigcoeffxsuffix ae(v) if( last_sig_coeff_y_prefix >3 ) lastsigcoeffysuffix ae(v) remBinsPassl = ((1 « (Log2ZoTbWidth + Log2ZoTbHeight)) * 7 ) » 2 log2SbW = (Min( Log2ZoTbWidth, Log2ZoTbHeight) <2 ? 1 : 2 ) log2SbH = log2SbW if( Log2ZoTb Width + Log2ZoTbHeight >3 ) if( Log2ZoTbWidth <2 ) { log2SbW = Log2ZoTb Width log2SbH = 4 - log2SbW } else if( Log2ZoTbHeight <2 ) { log2SbH = Log2ZoTbHeight log2SbW = 4 - log2SbH } numSbCoeff = 1 « (log2SbW + log2SbH ) lastScanPos = numSbCoeff lastSubBlock = (1 « (Log2ZoTbWidth + Log2ZoTbHeight -(log2SbW + log2SbH )))-1 HistValue = sps_persistent_rice_adaptation_enabled_flag ? (1 « StatCoefff cldx ]) : 0 updateHist = sps_persistent_rice_adaptation_enabled_flag ? 1 : 0 do { if( lastScanPos = = 0 ) { lastScanPos = numSbCoeff lastSubBlock— } if (ASBT allowed &&lastScanPos >(Height * Width) / 2 ) tuASBTenabledflag ae(v) if (tuASBTenabledflag) tuASBTSubdivisionflag ae(v) lastScanPos— In this table, the change is for the condition to decode tuASBTenabledflag which it is changed by “if (ASBT_allowed &&lastScanPos >(Height * Width) / 2 )” as described previously. 5 An advantage of this aspect is the coding efficiency, as some unneeded bits are not transmitted. Aspect 9.2 The ASBT subdivision flag is not coded when the last significant coefficient position is greater than or equal to the one fourth of the size of the initial transform unit 10 In an aspect, the ASBT subdivision flag is not coded when the last significant coefficient position is greater than or equal to the one fourth of the size of the initial transform unit. Indeed, when the number of coefficients inside the current block exceeds the maximum size of the possible subdivision of ASBT it is sure that the current transformed residual block is not the maximum subdivision block. This maximum size is always the initial height multiply by the width and divided by 4 when the maximum subdivision is 4. Or alternatively shifted by 2. The following table of syntax elements illustrates this aspect: residual_coding( xO, yO, log2TbWidth, log2TbHeight, cldx) { Descriptor if( spsmtsenabledflag &&cu_sbt flag &&cldx ==0 &&log2Tb Width = =5 &&log2TbHeight <6 ) Log2ZoTb Width = 4 else Log2ZoTbWidth = Min( log2TbWidth, 5 ) if( sps mts enabled flag &&cu sbt flag &&cldx ==0 &&log2TbWidth <6 &&log2TbHeight ==5) Log2ZoTbHeight = 4 else Log2ZoTbHeight = Min( log2TbHeight, 5 ) Log2FullTb Width = log2Tb Width Log2FullTbHeight = log2TbHeight if( log2TbWidth >0 ) lastsigcoeffxprefix ae(v) if( log2TbHeight >0 ) lastsigcoeffyp refix ae(v) if( last_sig_coeff_x_prefix >3 ) lastsigcoeffxsuffix ae(v) if( last_sig_coeff_y_prefix >3 ) lastsigcoeffysuffix ae(v) remBinsPassl = ((1 « (Log2ZoTbWidth + Log2ZoTbHeight)) * 7 ) » 2 log2SbW = (Min( Log2ZoTbWidth, Log2ZoTbHeight) <2 ? 1 : 2 ) log2SbH = log2SbW if( Log2ZoTbWidth + Log2ZoTbHeight >3 ) if( Log2ZoTbWidth <2 ) { log2SbW = Log2ZoTb Width log2SbH = 4 - log2SbW } else if( Log2ZoTbHeight <2 ) { log2SbH = Log2ZoTbHeight log2SbW = 4 - log2SbH } numSbCoeff = 1 « (log2SbW + log2SbH ) lastScanPos = numSbCoeff lastSubBlock = ( 1 « (Log2ZoTbWidth + Log2ZoTbHeight -(log2SbW + log2SbH )))-1 HistValue = sps_persistent_rice_adaptation_enabled_flag ? (1 « StatCoefff cldx ]) : 0 updateHist = sps_persistent_rice_adaptation_enabled_flag ? 1 : 0 do { if( lastScanPos = = 0 ) { lastScanPos = numSbCoeff lastSubBlock— } if (ASBTallowed &&lastScanPos >(Height * Width) / 2 ) tuASBTenabledflag ae(v) if (tu_ASBT_enabled_flag&& lastScanPos >(Height * Width) / 4) tu_ASBT_Snbdivision_flag ae(v) lastScanPos— Alternatively, when more subdivisions are possible some adapted conditions are applied. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency, as some unneeded bits are not transmitted. Aspect 9.3 The last significant coefficient position is decoded by taking into account the size of the initial TU even if the ASBT method is used. In an aspect, the last significant coefficient position is decoded by using the size of the initial TU even if the ASBT method is used. So, at encoder side, when ASBT subblock is selected, the height and the width are modifying to encode the syntax elements related to the lastScanPos, in order that the lastScanPos corresponds to the initial TU size. At decoder side, these syntax elements are decoded with the initial TU size. For example, related to the table of syntax elements residual coding, the lastScanPos is decoded thanks to the four syntax elements, last_sig_coeff_x_prefix, lastsigcoeffyprefix, last sig coeff x prefix, lastsigcoeffyprefix. The decoding of these syntax elements depends on the values of variables log2TbWidth log2TbHeight Log2ZoTbWidth Log2ZoTbHeight Log2FullTbWidth Log2FullTbHeight. These variables depend on the value log2TbWidth and log2TbHeight which represents, respectively, the log2 of width and the log2 of the height of the Transform block be decoded. So, in a regular decoding of the subblock transform block the log2 size log2TbWidth and log2TbHeight corresponds to the size of this subblock. In this aspect of the invention, the log2TbWidth and log2TbHeight are the log2 size of the initial block (without considering the subblock decimation). This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is that the bitstream is decodable. But one disadvantage is that it increases, for some lastScanPos, the number of bins transmitted. Indeed, the coding of a same lastScanPos value needs more bins, sometimes, for large blocks than for small blocks. So, the global impact on the coding efficiency of this signalling depends on the number of bins not transmitted to signal the ASBT enabled flag (and subdivision) and the additional bins transmitted for the lastScanPos signalling when ASBT was selected. Aspect 9.3.1 When ASBT method is used the size of transform block is updated for the decoding of other syntax elements. In an aspect, when ASBT method is enabled and was decoded after the last significant position syntax element, the size of transform block is updated for the decoding of other syntax elements. Indeed, the other syntax element as the coefficient and sign prediction needs to use the correct block size. So, at decoder side, the height and the width are updated to the ASBT subblock size to use the same size as at encoder side. Moreover, even if the encoder is adapted to used the initial TU size this creates additional unneeded bins. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is that the bitstream is decodable. Aspect 9.4 The ASBT method is decoded after the syntax element related to the last significant coefficient position and if the last significant coefficient position is greater than 1. In an aspect, the ASBT method is decoded after the syntax element related to the last significant coefficient position, as described in the previous aspect. And only if the last significant coefficient position is greater than 1. In this aspect, the encoder does not select the ASBT subblock with only one coefficient. All ASBT subblocks have at least two coefficients coded. The following table of syntax elements illustrates this aspect: residual_coding( xO, yO, log2TbWidth, log2TbHeight, cldx) { Descriptor if( spsmtsenabledflag &&cu_sbt flag &&cldx ==0 &&log2Tb Width = =5 &&log2TbHeight <6 ) Log2ZoTb Width = 4 else Log2ZoTbWidth = Min( log2TbWidth, 5 ) if( sps mts enabled flag &&cu sbt flag &&cldx ==0 &&log2TbWidth <6 &&log2TbHeight ==5) Log2ZoTbHeight = 4 else Log2ZoTbHeight = Min( log2TbHeight, 5 ) Log2FullTb Width = log2Tb Width Log2FullTbHeight = log2TbHeight if( log2TbWidth >0 ) lastsigcoeffxprefix ae(v) if( log2TbHeight >0 ) lastsigcoeffyprefix ae(v) if( last_sig_coeff_x_prefix >3 ) lastsigcoeffxsuffix ae(v) if( last_sig_coeff_y_prefix >3 ) lastsigcoeffysuffix ae(v) remBinsPassl = ((1 « (Log2ZoTbWidth + Log2ZoTbHeight)) * 7 ) » 2 log2SbW = (Min( Log2ZoTbWidth, Log2ZoTbHeight) <2 ? 1 : 2 ) log2SbH = log2SbW if( Log2ZoTbWidth + Log2ZoTbHeight >3 ) if( Log2ZoTbWidth <2 ) { log2SbW = Log2ZoTb Width log2SbH = 4 - log2SbW } else if( Log2ZoTbHeight <2 ) { log2SbH = Log2ZoTbHeight log2SbW = 4 - log2SbH } numSbCoeff = 1 « (log2SbW + log2SbH ) lastScanPos = numSbCoeff lastSubBlock = ( 1 « (Log2ZoTbWidth + Log2ZoTbHeight -(log2SbW + log2SbH )))-1 HistValue = sps_persistent_rice_adaptation_enabled_flag ? (1 « StatCoefff cldx ]) : 0 updateHist = sps_persistent_rice_adaptation_enabled_flag ? 1 : 0 do { if( lastScanPos = = 0 ) { lastScanPos = numSbCoeff lastSubBlock— } if (ASBTallowed &&lastScanPos >(Height * Width) / 2 &&lastScanPos >1) tuASBTenabledflag ae(v) if (tu_ASBT_enabled_flag&& lastScanPos >(Height * Width) / 4) tuASBTSubdivisionflag ae(v) lastScanPos— This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency increase. As a surprising effect, for 5 ASBT the number of ASBT subblocks selected with only one coefficient is very low compared to the regular transform process or to SBT. And the number of transform block with only the DC (Discrete Cosine) coefficient is large. So, this restriction is particularly efficient as the number of bins saved by not transmitting the ASBT enabled flag is high. Moreover, compared to LFNST and MTS which have such similar restriction because the use of only the DC coefficient for such methods is similar to the regular transform, this restriction for ASBT obtains gain because the ASBT subblock contains high frequencies and ASBT subblocks is not redundant with the transmission to the DC coefficient only. Adaptive Positions of signalling Aspect 10 The ASBT method signalling can change In an aspect, the position of the signalling of ASBT can change. In this aspect, ASBT signalling including the enabled flag, the subdivision information or flag and if present the direction flag, can be signalled in the transform unit before or after the transform Skip flag, or in the residual coding after the last significant coefficient syntax elements and this can depend or not to the coding of the first coefficient only. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency thanks to an adaptative signalling. Aspect 10.1 The ASBT method signalling depends on a value of QP In an aspect, the position of the signalling of ASBT depends on the value of the QP. In this aspect the QP is used to determine the position of the signalling of ASBT method. For example, when the QP is greater than or equal to 37, the method is signalled in the residual coding, and after the last significant position and with the restriction of the last significant bit equal to 1. Otherwise, the ASBT method is signalled before transform skip flag inside the transform unit. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency improvement thanks to this QP adaptation. Aspect lO.l.lThe ASBT method signalling depends on the value of the QP for the current transform unit In an aspect, the QP is the QP of the current transform unit. When it is signalled at transform unit level. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the same as the previous one. Aspect 10.1.2 The ASBT method signalling depends on the value of the QP of the slice In an aspect, the QP is the QP transmitted for the current slice header. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is a coding efficiency increase compared to the previous aspect. The usage of this high level QP is globally better in term of coding efficiency. Aspect 10.1.3 The ASBT method signalling depends on the value of the QP of the picture header In an aspect, the QP is the QP transmitted for the current picture header. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency increase compared to the previous aspect. The usage of this high level QP is globally better in term of coding efficiency. Aspect 10.1.4 The ASBT method signalling depends on the value of QP of the SPS In an aspect, the QP is the QP transmitted inside the SPS. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the simplicity to determine the correct QP to switch between method, without a big impact on additional coding efficiency. Aspect 10.2 The ASBT method signalling position depends on a value transmitted in a header In an aspect, the ASBT method signalling position depends on value transmitted in a header. In this aspect, the value transmitted indicates the position selected at encoder side. And the decoder uses it to know where the ASBT method is signalled. For the example, of the 4 proposed signalling, two bits are needed. In an alternative, only 2 methods are available and one bit is transmitted inside the header. When ASBT method can be enable / disabled thanks an header flag this flag is not transmitted when ASBT is disabled. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency, as the encoder can set the estimated best method based on several criterions more precisely than the use of the QP value. Aspect 10.2.1 Header is SPS In an aspect, the ASBT method signalling position depends on a value transmitted in the SPS. This aspect is more flexible than determining the best method on the QP value transmitted in the SPS as each implementation can select the best method based on parameters. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency as described for the previous aspect. Aspect 10.2.2 Picture Header In an aspect, the ASBT method signalling position depends on value transmitted in the picture header. This aspect is more flexible than the previous one. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency and more flexibility than the previous one. Aspect 10.2.3 Slice Header In an aspect, the ASBT method signalling position depends on value transmitted in the slice header. This aspect is more flexible than the previous one. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency and more flexibility than the previous one. Aspect 10.2.4 Encoder selection based on signalling cost In an aspect, whatever the signalling header, the encoder uses one signalling position for the encoding of the granularity header and it evaluates the signalling cost of each other positions. At the end of the granularity, it selects the best one in term of number of bins transmitted and set it for next encoding of the granularity. In an alternative example, when the signalling is at picture header, the encoder maintains this statistic but for each picture header associated for a temporal ID and or a related QP and / or another granularity. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is an efficient selection, adapted to the content without multiple encodings to select the best method. Aspect 10.2.5 Encoder selection based on heuristics In an alternative aspect, the selection of the best position signalling is based on heuristics. For an example of this aspect, an SPS flag may be transmitted. This SPS flag is set equal to 0 when the signalling position is before the transform Skip flag and it is set equal to 1 when the signalling is after the last significant position coefficient signalling and the restriction of the usage of only one coefficient is applied. In this example, the encoder sets this picture header flag to 1 when the QP associated with the SPS is greater than or equal to 37, and sets the flag to 0 otherwise. In another example, a second flag is transmitted in the picture header with the similar signification. When the QP of the picture is greater than or equal to 37, this flag is set equal to 1 and to 0 otherwise. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency improvement with a simple criterion Aspect 10.3 The position depends to the temporal ID of the current picture In an additional aspect, the selection of the best position signalling is based on the temporal ID of the current picture. For an example of this aspect, the encoder set the signalling after the last significant position coefficient signalling and the restriction of the usage of only one coefficient when the temporal ID is greater than 3. Otherwise, the signalling position is before the transform Skip flag. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency improvement with a simple criterion. Aspect 10.4 The position depends on non-reference frame. In an additional aspect, the selection of the best position signalling is based on the nonreference frame information of the current picture. For example, the encoder knows that the current picture is a non-reference frame picture and the signalling position in that case is signalled before the transform Skip flag. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is the coding efficiency improvement with a simple criterion. Aspect 10.5 The switch is between 2 signalling methods In an aspect, the switch is between 2 signalling methods only and these positions are the signalling position before the transform Skip flag and after the last significant position coefficient signalling and the restriction of the usage of only one coefficient. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is a better design with only 2 possibilities with a limited impact on the coding efficiency compared to the usage full search of the best method. Encoding choice At encoder side, the ASBT method is fully (Transform / quantification) tested each time that it can be enable for a transform Unit. This increases the encoding time. Aspect 12 ASBT is not evaluated at encoder side based on the comparison of the distortion of the residual for the initial TU and the subblock transform In an aspect, ASBT is evaluated or not at encoder side based on the comparison of the distortion of the residual for the initial TU and the distortion of the subblock transform. In this aspect, first the residual for the initial TU is obtained. The related distortion is computed (without quantification) “distResidual”. Then for each ASBT subblock, the related distortion is computed "distResidualASBT”. And also based on the initial residual. Consequently, the subblock distortion is smaller than the distortion of the initial subblock except when all other residual samples are equal to 0. Then both distortions are compared. The criterion is given by the following pseudo code: if (distResidual >2 * distResidualASBT) ASBT is not tested This means that if the distortion for the full TU is greater than 2 times the distortion of the ASBT subblock only, the ASBT subblock is not evaluated. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is a small impact on coding efficiency for an increase of encoding time. Aspect 12.1 The criterion is the same for both subdivisions In an additional aspect, the proposed criterion is applied for both subdivisions, division by 2 and by 4. This aspect can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this aspect is that it gives the best compromise between complexity and coding efficiency. EMBODIMENTS Embodiment 1 - Use of Energy Values In an embodiment, the sub partitioning residual block is obtained by computing the energy for each sample and, according to these energies, the block position having the maximum sum of energies is selected as the position encoded / decoded. Figure 13 illustrates this embodiment. To obtain a regular reconstructed block (1301), the predictor block (1302) is added to the residual block (1303). The residual block is dequantized and inverse transformed at decoder side to obtain a residual block in the samples domain. In the proposed embodiment, when the decoder obtains the predictor block (1302), it computes the energy for each sample of this block (1304) in order to obtain a block with the same size as the predictor block with the energy values (1306). Then the decoder detects the subblock position by determining the position which has the maximum energy (1307). This related subblock (1308) is then dequantized and inverse transformed to obtain a residual subblock (1309). This subblock (1309) is added to the predictor block (1302) to obtain the reconstructed block. So, in the residual, with the same size of reconstructed block (1303) (and the same size as the predictor block), contains zero values excepts for the subblock residual (1309). An advantage provided by using energy values to infer the position and / or orientation of the residual subblock is that the energy values of the block can be easily and efficiently determined. Calculating the energy values is a reliable method to identify the portion of the residual block containing where deformation of the content of the block, or new content of the block, is located. Embodiment 1A Position Inference In an embodiment, the position of the subblock residual is determined thanks to the algorithm described previously. For the description of this embodiment, it is considered that the size of the subblock residual and its direction are known. So, for a subblock size and direction each possible position in the block containing the energy values is evaluated and the position which maximises the energy value is the position selected for the subblock residual. An advantage of this embodiment is a coding efficiency improvement. As shown in Figure 14(a), the regular SBT method has 8 coding possibilities, requiring a minimum of four bits to signal the selected possibility. On the other hand, by inferring the position of the residual subblock, the present invention allows only 4 coding possibilities to be signalled as depicted in Figure 14 (b). This saves one bit or one bins. As set out below, it is in fact possible for the orientation of the subblock to be inferred also, enabling a potential saving of two bits or bins compared to SBT. Furthermore, as shown in Figure 14(b), the present invention allows a greater number of possible positions of the residual subblock to be selected compared to SBT. For example, if we consider the sub division by 2 vertically, the regular SBT has only 2 possible coding (1401) and (1402). This requires a signalling of one bit or one bin. Thanks to the proposed method, the number of possibilities is equal to width - width / 2, so width / 2 possibilities. Where the width is the width of the initial block. This is represented by 1409. Moreover, only one coding is possible so this cost is 0 bit. By considering the division by 4 vertically, 2 possible sub blocks are possible (1403, 1404) for the regular SBT. For the proposed embodiment, the number of possibilities is equal to width - width / 4. So, the proposed method divides by 2 the amount of subblocks which need to be indicated in the bitstream for the regular SBT and it increases the number of coding possibilities. Embodiment 1.1 Sign prediction change In an embodiment, the sign prediction method is applied for the obtained position and some computations from the sign prediction comes from the predictor samples and not from the reconstructed samples. In this embodiment, the sign prediction process can use both reconstructed samples and the predictor samples to determine the sign predictor values. Figure 18 illustrates this embodiment. In this figure, the block to be reconstructed (1801) contains the transformed block residual (1802). For the transformed block residual (1802), the left sign predicted coefficients are predicted based on neighbouring samples coming from the predictor block and the top sign predicted coefficients are predicted thanks to the samples coming from reconstructed samples. An advantage of this embodiment is that the sign prediction can be computed even if the reconstructed samples are not yet available. Embodiment 2 The energy value for a sample is a Gradient value In an embodiment, the energy for a sample is a Gradient value. An advantage of this embodiment is the coding efficiency, as the gradient value is a reliable measurement of the energy and it is able to detect edges and high frequencies which are the target of the proposed invention as described previously. Embodiment 2.1.1 The gradient is a Sobel gradient In an embodiment, additionally to the previous one, the gradient is computed thanks to the Sobel gradient. To compute the Sobel gradient, for a current sample, two 3x3 kernels are convolved with the current sample and its neighbouring samples (as set out below, other sizes of kernel may be used to compute the gradient). One corresponds to the horizontal derivative approximation Gx and one to the vertical derivative approximation Gy. The horizontal kernel is given by the following matrix: +1 0 -1 +2 0 -2 +1 0 -1 The vertical kernel is given by the following matrix: +1 +2 +1 0 0 0 -1 -2 -1 The gradient magnitude is equal to square root of the sum of the square horizontal derivative approximation Gx and the square vertical derivative approximation Gy as the following equation: G = + G^ This amplitude is considered as the energy value for a current sample which is set inside the energy value block (1306). An advantage of this embodiment is the coding efficiency, as the Sobel gradient is a good operator to detect edges or high frequencies. It will be appreciated that other types of operator may be used to compute the gradient values, for example Scharr operators and Laplacian operators. Embodiment 2.1.2 The energy computed is based on Sobel Kernels and sum of absolute values In an alternative embodiment of the previous one, the energy value for a current sample is equal to sum of the absolute value of the horizontal derivative approximation Gx and the absolute value of vertical derivative approximation Gy as the following equation: G = I GJ + |Gy | An advantage of this embodiment is a complexity reduction as the absolute value is less complex than a square operation and the square root operation. And the impact of the coding efficiency for this embodiment is small. Embodiment 2.2 The Sobel kernels are larger In an embodiment, the Sobel kernels (or other kernel types) are larger than the 3x3 kernels. For example, the kernels used are two 5x5 kernels, one for the absolute value of the horizontal derivative approximation Gx and one the absolute value of the vertical derivative approximation Gy. The horizontal kernel is given by the following matrix: +5 +4 0 -4 -5 +8 +10 0 -10 -8 +10 +20 0 -20 -10 +8 +10 0 -10 -8 +5 +4 0 -4 -5 The vertical kernel is given by the following matrix: +5 +8 +10 +8 +5 +4 +10 +20 +10 +4 0 0 0 0 0 -5 -8 -10 -8 -5 -4 -10 -20 -10 -4 An advantage of this embodiment is an improvement of coding efficiency. Indeed, thanks to more neighbouring samples considered, the values of the horizontal and vertical derivative approximations are more precise. But it requires more operations so it increases the complexity. Problem of block predictor border. As mentioned previously, the Sobel kernels are convolved with current sample and its neighbouring samples. For samples in the border of the current block, the samples outside are not available. As depicted in Figure 15, for the proposed method, the Sobel computation can be applied only for the samples inside the current block (a) with all neighbouring samples inside this block. If the kernels are 3x3, all samples in the border can’t be considered as some samples used to determine the horizontal derivative approximation Gx and / or the vertical derivative approximation Gy are outside the current block predictor. Which is represents for an 8x8 block 28 samples without value on 64 samples. And if the Kernels are 5x5, all samples in the border with a range of two samples can’t be considered. Embodiment 2.3.1 Mirror for sample in the border In an embodiment, additionally to the previous ones, when the energy value can’t be computed for a sample because some neighbouring samples are not available to compute the horizontal derivative approximation Gx or the vertical derivative approximation Gy, a mirror is applied around the block and these virtual samples are used to derive the horizontal derivative approximation Gx or the vertical derivative approximation Gy. Figure 15 illustrates, this embodiment. For example, when the kernels are 3x3, the samples in the border (grey) are copied around the current block predictor (dashed), as depicted in Figure 15 (b). When the Kernels are 5x5, the same copying operation is applied and the samples in the border less than 1 sample (dark grey) are copied to two samples around the border as depicted in Figure 15 (c). An advantage of this embodiment is a coding efficiency improvement as all samples of the predictor have an energy value. Embodiment 2.3.2 The positions around the border of the block predictor have no energy value. In an embodiment, alternatively to the previous one, for positions where not all samples are available for the computation of the energy, the energy value is set to a default value. This default value can be 0 or an average of the values which can be computed. An advantage of this embodiment is coding efficiency improvement as the values in the border correspond to possible subblock positions using the SBT method. So, when the energy of these positions are set equal to zero, the algorithm will not select the same position as SBT. This applies if the block size is big enough and for 3x3 kernels. Embodiment 2.4 The size of the Sobel Kernels depends on the size of the block In an embodiment, the size of the Sobel Kernels depends on the size of the block. An advantage of this embodiment is a coding efficiency improvement, has the kernel is more adapted to the block size. Embodiment 2.4.1 For small blocks the size of the Sobel kernels is lower than the size of the Sobel kernels for larger blocks. In an embodiment, for small blocks, the size of the Sobel kernels is lower than the size of the Sobel kernels for larger blocks. An advantage of this embodiment is a coding efficiency improvement. Indeed, for small blocks, proportionally more samples are in the border than for large blocks. With large kernels, more samples can’t be computed correctly. So, it is better to limit this number of worst computations as much as possible. For large blocks, proportionally fewer samples are in the border than for small blocks, so, it is better to use larger kernel to obtain more precise gradient values. Embodiment 2.4.2 For blocks with a height less than or equal to 64 or a width less than or equal to 64 the Sobel kernel are two 3x3 kernels. In an embodiment, for blocks with a height less than or equal to 64 or a width less than or equal to 64 the Sobel kernels are two 3x3 kernels. An advantage of this embodiment is coding efficiency improvement for the reasons mentioned previously. Embodiment 2.4.3 For blocks with a height greater than 64 and a width greater than 64 the Sobel kernels are two 5x5 kernels. In an embodiment, for blocks with a height greater than 64 and a width greater than 64 the Sobel kernels are two 5x5 kernels An advantage of this embodiment is coding efficiency improvement for the reason mentioned previously. Position determination As mentioned previously, to detect the best subblock position (1307), for a current direction and sub division, the energy of each possible position needs to be determined. It consists in determining, for each position the sum of the energy for each sample. Embodiment 2.5.1 Basic algorithm In an embodiment, the sum of energy for a current position of subblock is obtained by the sum of the energy of each sample inside this sub block; The following formula gives an example of this sum computation when the subdivision is 4 and the direction is vertical. p-w / 4 Epostp] = / y i=p Where Epos[p] is the sum of energy of position p, and w is the width of the predictor block, h is the height of the predictor block, w / 4 is the width of the subblock residual block. And Eft] [ / ] is the energy corresponding to the sample position (i, j). An advantage is a coding efficiency. As the sum of energies for a subblock position corresponds to the positions inside this subblock. Embodiment 2.5.2 Fast Algorithm determination In an embodiment, to obtain the sum of energy values for each possible position of subblock, the algorithm stores the sum already computed to reduce the number of summing operations. When the subdivision is 4 and the direction is vertical the algorithm can be summarized as the following and as depicted in Figure 16: First the sum of energy values (e.g. gradient values) for each row is computed (1601) as the following: h Erow[i] = ^E[i][j] 7=0 Then the sum of energy values of the first position (position 0) Epos[0] is computed (1602) by summing the w / 4 first Erow[i], Then, (1603) for each row i from 1 to the maximum possible w-w / 4, the sum of energy values for each possible position of the residual subblock is obtained via the following formula (1604): r W 1 Epos [^] Epos 1] E / ’OW 1] + E / ’OW "I” "I” 1 Where the energy for the position [i] is equal to the energy of position [i-1 ] minus the previous row energy (the energy value of the first row of the subblock in position [i], light gray in Figure 16 (c)) plus the energy of the last row of the current subblock position (dark gray in Figure 16 (c)). An advantage of this embodiment is a significant encoding and decoding time reduction thanks to this fastest algorithm which reduces significantly the number of operations and which doesn’t change the results compared to a basic solution. Direction inference Embodiment 3 The direction vertical or horizontal of the transform block is inferred based on the energy values. In an embodiment, the direction vertical or horizontal of the transform block is inferred based on the energy values of the vertical and horizontal sub block partition. Figure 17 illustrates this embodiment. For this embodiment, for one possible subdivision (i.e. for one size of residual subblock), the energy EVerticai related to the vertical sub partition (1701) is computed or obtained (1703) if the position inference is applied. In the same way, the ^Horizontal related to the horizontal sub partition (1702) is computed or obtained (1704) if the position inference is applied. The sub partitioning direction which maximizes the energy is selected as the best direction (1705). The energy related to the vertical and / or horizontal orientations may be determined to be the sum of energy values corresponding to the position in the vertical / horizontal orientation with the highest sum of energy values. Alternatively, the energy related to the vertical / horizontal orientation may be determined to be the average sum of energy values for each position in the vertical / horizontal orientation. An advantage of this embodiment is coding efficiency improvement as no bit is transmitted inside the bitstream or extracted from the bitstream to obtain the direction value. An additional advantage is the encoding complexity reduction as only one direction needs to be evaluated instead of 2 when the direction is transmitted. Embodiment 3.2 No position inference and direction inference In an embodiment, the position horizontally or vertically is signalled and the direction is inferred. Consequently, compared to the previous embodiment, the position is signalled, and the energy value is computed for both vertical and horizontal subblock partition. In this embodiment, the position is coded using a syntax element. This syntax element has a range of values from 0 to the maximum possible position minus 1. The related number of bits or bins for this syntax element is equal to log2 of the range. An advantage of this embodiment is a complexity reduction at decoder side. Indeed, compared to the position inference which needs a gradient computation for the whole block and several sums, in this embodiment the gradient need to be computed only for each sub partition vertically or horizontally. So, if the sub partition division is 2, the energy needs to be computed only for the half of samples. And if the sub partition division is 4, the energy needs to be computed only for one fourth of samples. Embodiment 3.2.1 Embodiment related to Gradient are also valid for the direction inference. In an embodiment, additionally to the previous one, a similar energy computation as described in the previous embodiments are applied when the position is signalled. But please note that the fast algorithm is not needed as the position is known (at least at decoder side). An advantage or advantages of this embodiment are the same as listed for the energy computation. Parsing issue of direction inference For many video applications, as video streaming, the bitstream containing the video is not fully decoded as for the end user. For example, the bitstream may be parsed in such a way that only the syntax elements are extracted and decoded from the bitstream but the reconstructed images of the video are not obtained. To transmit and decode the residual coding several syntax elements are used. As for example, these syntax elements are used to obtain the last significant position, the coefficients, the sign prediction syntax elements. To obtain these syntax elements from the bitstream, the exact size of the transform block including the height and width need to be known. When the direction is inferred, as described in the previous embodiments, the height and the width are not known until that the algorithm is applied. This implies that the parsing only is not possible. Embodiment 4 When direction inference is enabled the full decoding process is applied In an embodiment, when direction inference algorithm is enabled the full decoding process is applied. An advantage of this embodiment is the coding efficiency. Indeed, as no additional constraint is applied, the coding efficiency is better than other solutions proposed below. Embodiment 5 The direction inference implies a specific decoding in order that the parsing does not require the usage of the reconstructed samples. In an embodiment, when the direction inference implies a specific decoding in order that the parsing does not require the usage of the reconstructed samples. In this embodiment, the decoder or the parser determines that the direction inference is allowed for the current transform residual. As for example, it decodes from the bitstream the information that the proposed method is applied. In this embodiment, instead of fully applying the method based on a full decoding as in the previous embodiment, the decoder or parser extracts the syntax elements related to the transform block to be decoded whatever the direction of this transform block to be decoded. An advantage of this embodiment is that the parsing of the bitstream does not require a full decoding process which is an important constraint for many video applications. Embodiment 5.1 The transform coefficients block extracted from the bitstream for the proposed method has always the same direction In an embodiment, the transform coefficients are always transmitted with the same orientation. Accordingly, the transform coefficients block extracted from the bitstream for the proposed method has always the same direction. When the algorithm detects that the extracted decoding transform coefficients has not the correct direction (i.e. the determined direction is different from the orientation in which the transform coefficients block was transmitted) it processes it in order to obtain the correct direction. An advantage of this embodiment is that the parsing can be applied without full decoding. So, the usage of the proposed method doesn’t add additional constraint compared to all previous standards. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where, for example, the height and width of the transform block are not transmitted. Embodiment 5.1.2 This direction is vertical In an embodiment, additional to the previous one, the direction selected as the default selection is the vertical direction. Figure 19 illustrates these embodiments. In Figure 19 (a), the encoder determines the direction for the current subblock residual. This direction is vertical. The encoder writes the syntax for this vertical block inside the bitstream without modification. The decoder parses a vertical block during the parsing of the bitstream and then determine the direction (1902). The direction is vertical so no change needs to be applicable to the residual. In Figure 19 (b) the horizontal direction is determined (1903) for the current subblock. The encoder changes the direction for the syntax coding (1904) to a vertical direction, and writes the residual as a vertical block inside the bitstream. At decoder side, the parsing process obtains a vertical block and then during the decoding process the direction determined (1905) for the current residual block is horizontal. So, the decoder changes the direction of the subblock residual to obtain the horizontal direction (1906). It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where, for example, the height and width of the transform block are not transmitted. Embodiment 5.1.3 When the vertical direction is not possible, the direction is horizontal In an embodiment, when the vertical direction is not allowed, the direction is horizontal. Indeed, for some sub sampling the direction can’t exist (i.e. is not permitted). The reason that a sub sampling can’t exist may be that the sub sampling would result in an impermissible block size. For example, for an initial block equals to 4x16, for a division by 2, the vertical subdivision gives 2x16 and the horizontal subdivision gives a subdivision of 4x8. As 2x16 is not an available transform size it is not allowed. So, in that case the direction doesn’t need to be predicted, as only one is possible. An advantage of this embodiment is a simplification as, otherwise, some specific codings of the residual which can be used only for this specific case need to be implemented. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where, for example, the height and width of the transform block are not transmitted. Direction change based on transposition To apply the previous embodiments and solve the parsing issue, the transform block direction needs to be changed at encoder and decoder side which is not evident. The following embodiments relates to this change of the direction. Embodiment 6.1 The transform coefficients block with direction different to the default direction is transpose at encoder side In an embodiment, the transform coefficients block with direction different to the default direction is transposed at the encoder side. As reference of Figure 19, the modules 1904, 1906 are replaced by a transposition. Figure 20 illustrates the transposition. The transposition of the block is just to change each transform coefficient with the coordinates (i, j) to the coordinates (j, i) An advantage of this embodiment is the coding efficiency, as the transposition is an efficient way to the transform block data. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where the transform block is transmitted, or is to be transmitted, in an orientation that is different to a default orientation. Embodiment 6.2 When the direction inference algorithm detects at decoder side the direction inverse to the default one, the transform coefficients block is transpose. In an embodiment, when the direction inference algorithm detects at decoder side the direction inverse to the default one, the transform coefficients block is transposed. In that case the inverse transposition may be applied, although the inverse transposition corresponds to exactly the same process. So, each transform coefficient with the coordinates (i, j) is set in the transpose transform block to the coordinates position (j, i). An advantage of this embodiment is the coding efficiency, as the transposition is good way to the transform block data. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where the transform block is transmitted, or is to be transmitted, in an orientation that is different to a default orientation. Problem: Transposition can’t work always The transposition, even if it is an efficient solution, can’t work for some initial block sizes. Figure 21 illustrates this problem. In this figure, the initial block is 16x8. The sub sampling division is equal to 2. The vertical sub division gives an 8x8 block (2104). The horizontal sub division gives a 16x4 block (2103). When this horizontal subblock (2103) is transposed (2105), the block obtained is a 16x4 block which is not the same size as the vertical subdivision. Embodiment 6.3 The transposition is applied when the initial block is a square block. In an embodiment, the transposition is applied when the initial block is a square block. An advantage of this embodiment is that the parsing issue is solved when the direction inference is applied only on square blocks. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where the transform block is transmitted, or is to be transmitted, in an orientation that is different to a default orientation. Embodiment 6.3.1 When the initial block is not a square block the direction is not inferred and signalled. In an embodiment, when the initial block is not a square block the direction is not inferred and it is signalled. So, in that case when the proposed method is applied a flag representing the direction is transmitted for non-square blocks. An advantage of this embodiment is that it solves fully the parsing issue when the direction inference is applied. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where the transform block is transmitted, or is to be transmitted, in an orientation that is different to a default orientation. Direction change based on coefficients mapping Embodiment 7 The transform coefficients block with direction different to the default direction is a coefficient mapped change to the default direction at encoder side. In an embodiment, a coefficient mapping is applied to the transform coefficients block with direction different to the default direction to change the orientation to the default direction at the encoder side. Figure 22 illustrates the coefficient mapping. In this figure compared to the transposition as depicted in Figure 21, the horizontal block 16x4 is correctly mapped to an 8x8 block. Which is the same size as for the vertical sub sampling. The coefficient mapping corresponds to the parsing order of the transformed coefficients. As depicted in Figure 22 a zigzag scan is generally used. But other scanning orders can be used with the present invention. The scanning order for each block size is stored at encoder and decoder side. For each transform block size NxM, a table scanOrderNxM[] gives the position j of the coefficient number i. Thanks to j, the coefficient position (x,y) in the transform block can be obtained. But this transform block doesn’t need to be stored in 2D. For the coefficient mapping, two tables of scanOrderNxM[] need to be used to map the variables related to the transform block. In ECM software, 3 variables need to be mapped: - coeffBuf, which represents the coefficients - signBuff which represents the sign of each coefficient. - signScanldxBuff which represents the sign scanning index for each coefficient. For the example of Figure 22, where a transform block of size 16x4 is mapped inside a transform block 8x8, the two scan order tables are scanOrder 16x4[] and scanOrder8x8[], The following pseudo code gives the scan mapping of the 3 variables of the ECM software: For i = 0; i <4x16; i++) { coeffBuf_Signalled[scanOrder8x8[i]] = coeffBuf[scanOrder!6x4[i]] signBuffSignalled [scanOrder8x8[i]] = signBuff [scanOrder 16x4[i]] signScan!dxBuff_ Signalled [scanOrder8x8[i]] = signScanldxBuff [scanOrder 16x4[i]] } An advantage of this embodiment is that it solves the parsing when the direction is inferred. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where the transform block is transmitted, or is to be transmitted, in an orientation that is different to a default orientation. Embodiment 7.1 When the direction inference algorithm detects at decoder side the direction inverse to the default one, the transform coefficients block is a coefficient mapped to the default direction. In an embodiment, when the direction inference algorithm detects at decoder side the direction inverse to the default one, the transform coefficients block is coefficient mapped to the default direction. According to Figure 22 and the previous example, the decoder extracts from the bitstream, the coefficients and related variables and obtains the correct transform block size thanks an update of the coefficients and related variables for the rest of the decoding. The following psuedo code gives the inverse scan mapping of the 3 variables of the ECM software: For I = 0; i <4x16; i++) { coeffBuf[ scanOrder 16x4 [i]] = coeffBuf_Signalled[scanOrder8x8[i]] signBuff [scanOrder 16x4[i]] = signBuff Signalled [scanOrder8x8[i]] signScanldxBuff [scanOrder 16x4[i]] = signScanIdxBuff_ Signalled [scanOrder8x8[i]] } An advantage of this embodiment is that it solves the parsing when the direction is inferred. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where the transform block is transmitted, or is to be transmitted, in an orientation that is different to a default orientation. Problem: Parsing issue with sign prediction The coefficients mapping solves the issue whatever the size of the block but it creates a new issue even for square blocks. The issue relates to the sign prediction of the transform coefficients. Figure 23 illustrates the problem. In this figure, the subblock which is coefficients mapped contains 4 coefficients different to 0. And three of these coefficients are sign predicted. With the coefficient mapping, the fourth coefficient which is located in a position that would typically also be sign predicted. So, consequently the decoder considers that the sign prediction shall be applied on four coefficients and tries to read the sign prediction syntax elements for four coefficients instead of 3. However, the sign prediction syntax element for the fourth coefficient does not exist, because the fourth coefficient was not sign predicted based on its position before the coefficient mapping. So, the decoder is not able to decode the correct transformed block. Embodiment 7.2 When the direction is inferred the sign prediction is applied only on the top left 4x4 block. In an embodiment, when the direction is inferred the sign prediction is applied only on the top left 4x4 block. Indeed, for the top left 4x4 coefficients of the block, the coefficients positions are the same whatever the coefficients mapping when the zigzag scan as VVC is used. As explained in the description of the sign prediction, the sign prediction is applied for the 32 first coefficients horizontally and the 32 first coefficients vertically of the border. An advantage of this embodiment is that it solves the issue created by the coefficient mapping. Surprisingly, a gain is obtained by this restriction. As most of the time, the transform coefficients different to 0 are located at the beginning of the transform block, the impact on coding efficiency should be small. And as it creates a difference to the regular SBT a coding gain is obtained. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where the transform block is transmitted, or is to be transmitted, in an orientation that is different to a default orientation. Embodiment 7.2.1 More flexible restriction In an embodiment, when the direction is inferred the sign prediction is applied where the sign prediction does not cause a parsing issue. This restriction is applied for both vertical and horizontal possible positions. So, it corresponds to all positions in the border which are also in the border after the coefficient mapping. The encoder and decoder check this condition to determine the maximum value for the first row and the first line of coefficients where the sign prediction can be applied. An advantage of this embodiment is a coding efficiency improvement compared to the previous embodiment as the sign prediction is applied for more coefficients. But this embodiment is also more complex as it needs additional checks. Alternatively, for each possible coefficient mapping the decoder knows the maximum value for the sign prediction that it can apply for the first row and the first line. This information may be stored at both the encoder and decoder side. This alternative reduces the complexity but it needs more memory store this information. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where the transform block is transmitted, or is to be transmitted, in an orientation that is different to a default orientation. Embodiment 7.3 Set the coefficient equal to 0 when it can create parsing issue with the sign prediction In an embodiment, the encoder detects the potential issue when applying the coefficient mapping process. And it sets to 0, the coefficients which create the issue (i.e. the coefficients that are not sign predicted before the coefficient mapping is applied, but are located in positions presumed to be sign predicted after the coefficient mapping is applied). So, it is a bitstream constraint that the coefficients transmitted can be decodable for the sign prediction method. An advantage of this embodiment compared to the previous one is that it increases the coding efficiency as the sign prediction can be use on the maximum possible coefficients when the coefficient mapping is not used. And additional advantage is the complexity reduction at decoder side as no additional check is needed. Direction inference additional embodiments Embodiment 8.1 When the initial block is a square block, a transposition is applied. In an embodiment, when the initial block is a square block, a transposition is applied to change the direction / orientation of the variables transmitted and decoded when needed and otherwise (non-square block), the coefficient mapping is applied for this change. An advantage of this embodiment is a coding efficiency improvement as the transposition is interesting in term of coding efficiency. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where the transform block is transmitted, or is to be transmitted, in an orientation that is different to a default orientation. Embodiment 8.1.1 And the sign prediction is applied on all neighbouring coefficients. In an additional embodiment, when the transposition is applied, the sign prediction is not restricted. And the sign prediction is limited when the initial block is not a square block. Indeed, in that case the coefficient mapping is used. An advantage of this embodiment is coding efficiency improvement as the sign prediction is applied for a maximum of the coefficients and this solution as no parsing issue. It will be appreciated that this embodiment need not be limited to use with the ASBT coding process, but may be applied to other residual coding processes where the transform block is transmitted, or is to be transmitted, in an orientation that is different to a default orientation. Embodiment 8.2 When the block has its height or its width equals to 128, the direction of the block is transmitted. In an embodiment, when the height or width of the block is equal to 128, the direction of the block is explicitly signalled and so decoded from the bitstream. An advantage of this embodiment is a coding efficiency improvement. Indeed, for such large block sizes, the saving of 1 bin is small compared to the potential to select one better direction at encoder side and to select potentially larger blocks. And additionally, this embodiment saves in average decoding time as the position and the direction doesn’t need to be determine at decoder side. Embodiment 8.2.1 At encoder side both directions can be evaluated and the best one is transmitted inside the bitstream. In an embodiment, when the direction is explicitly signalled, at encoder side both directions can be evaluated and the best one is transmitted inside the bitstream. For example, the evaluation may be the Rate Distortion (RD) criterion. The RD cost is computed for both directions and the best one is used to select the best coding direction. An advantage of this embodiment is coding efficiency improvement. Embodiment 8.2.2 At encoder side the direction inference is used to determine the direction In an alternative embodiment, when the direction is explicitly signalled, at encoder side, the direction inference algorithm is used to determine the best directions. An advantage of this embodiment is complexity reduction compared to the previous embodiment. Embodiment 8.3 When the direction is explicitly transmitted, the sign prediction is not limited. In an embodiment, when the direction is explicitly signalled, the sign prediction is not limited. So, the sign prediction can use the maximum number of coefficients. An advantage of this embodiment is the coding efficiency, especially when the direction is signalled for the large block sizes. ASBT and SBT relationship Embodiment 9 ASBT Can be combined to SBT In an embodiment, ASBT can be decoded as well as SBT. Both sub sampling transform block modes are allowed. In this embodiment, ASBT refers to the previous embodiments where at least the position is inferred or at least the direction is inferred (or both are inferred). An advantage of this embodiment is coding efficiency. In opposite to the expected behaviour that ASBT replaces SBT thanks to reduction of the signalling for sub sampling transform, ASBT and SBT can work together. ASBT is able to save the signalling when the high frequencies inside the residual match with the frequencies of the predictor block and SBT maintains its efficiency when the frequencies needed to improve the coding efficiency is not predictable based on the predictor block. This is a surprising effect. Embodiment 9.1 ASBT is applied to SBT TU In an embodiment, ABST is applied to SBT transform unit. In this embodiment, at decoder side the SBT transform mode is obtained as usual. Then, for the related transform unit to be decoded the ASBT method can be applied, if it is signalled. The ASBT process is not changed compared to the traditional usage of ASBT. But as defined in the additional embodiment, some parameters can be adapted. An advantage of this embodiment is a coding efficiency improvement. This is also an unexpected behaviour and these cases represent forty percent of the selection of ASBT. This is also a surprising effect. It will be appreciated that this embodiment need not be limited to use with ASBT but may be used with other residual coding methods, particularly methods wherein a portion of the residual block is transformed and encoded. Embodiment 9.2 ASBT redundant positions to the SBT are avoided In an embodiment, when ABST position obtained is the same as an SBT transform unit position, this position is not considered to be valid (it is avoided) and the algorithm looks the second position which obtains the maximum energy. Or alternatively the ASBT positions which are the same as an SBT transform unit position are not evaluated. An advantage of this embodiment is coding efficiency increases as several signalling can’t produce the same result. Embodiment 9.3 ASBT redundant positions to the SBT are allowed In an embodiment, when ABST position is the same as an SBT transform unit position, this position is considered as valid if there is another difference for the coding of ASBT compared to SBT. This difference can, for example, be a different transform or a limitation for the sign prediction. An advantage of this embodiment is coding efficiency increases as it creates an additional competition for a sub partitioning which has a high chance to be selected. This embodiment is more efficient than the previous one and less complex as no additional check is needed. Embodiment 9.4 Only position inference In an embodiment, when ASBT is enabled for an SBT transform unit, only the position inference is enabled for ASBT. So, the direction inference is not allowed. Additionally, to this embodiment the direction selected for ASBT is the same as for SBT. An advantage of this embodiment is a complexity reduction at decoder side as the direction selected for SBT is often related to the content and ASBT with the same direction as SBT has the highest selection. So, to disallow the direction inference algorithm can save decoding time. Embodiment 9.5 Both position and direction inferences In an embodiment, when ASBT is enabled for an SBT transform unit, position and direction inference are allowed. An advantage of this embodiment is coding efficiency. Indeed the direction of the subblock of ASBT can be the same as the direction of SBT transform mode or not. ASBT therefore creates new coding possibilities compared to the possible SBT signalling. In term of complexity, as it is better in term of decoding time to decode smaller transform size, the increase of selection of ASBT decrease the decoder time. Moreover, compared to previous embodiment, less conditions are needed which simplifies the process. Embodiment 9.6 ASBT sub division 4 not allowed when SBT In an embodiment, the sub division by 4 for ASBT is not allowed if the transform unit comes from an SBT sub partitioning. So, in that case the sub division does not need to be transmitted and decoded. An advantage of this embodiment is a coding efficiency improvement as the ABST sub division by 4 is less selected for SBT transform unit, and one bin can be saved for ASBT after SBT. Moreover, it reduces the encoding time complexity as fewer alternatives need to be evaluated. Embodiment 9.6.1 ASBT sub division 4 not allowed when SBT is split by 4 In an embodiment, ASBT sub division 4 is not allowed for a SBT transform unit when the SBT is a division by 4. In this embodiment, the flag for the sub-division is not transmitted and decoded only when SBT is a split by 4. An advantage of this embodiment is better coding efficiency than previous embodiment. Embodiment 9.6.2 ASBT sub division 4 not allowed when SBT for small block size In an embodiment, ASBT sub division 4 is not allowed for a SBT transform unit when the initial block is a small block size. In one example, the small blocks can be blocks with a height or width less than or equal to 16. An advantage of this embodiment is coding efficiency improvement and complexity reduction at encoder side as ASBT after SBT is less needed for small block sizes. It will be appreciated that this embodiment need not be limited to use with ASBT but may be used with other residual coding methods, particularly methods wherein a portion of the residual block is transformed and encoded. ASBT transform. As described previously, SBT has a specific transforms combination adapted for each sub partition. Embodiment 10 Same as SBT In an embodiment, the transform selected for an ASBT sub partitioning is the same as those used for SBT. An advantage of this embodiment is a simple solution. Embodiment 10.1 DST-7 In an embodiment, the transform selected for an ASBT sub partitioning is the DST-7. According to the SBT transforms selection, the DST-7 should be the more commonly-applied transform. Indeed, compared to SBT the only change of the usage of DST-7 for all possible sub partitions is the usage of DCT-8 (vertically or horizontally) when the sub partition is located at the top left of the CU. As for ASBT the cases where the sub partition is located at the top left of the CU is proportionally less than for SBT, the DST-7 should be the best. An advantage of this embodiment is coding efficiency based on the observations of coding efficiency did for SBT. It will be appreciated that this embodiment need not be limited to use with ASBT but may be used with other residual coding methods, particularly methods wherein a portion of the residual block is transformed and encoded. Embodiment 10.2 DCT-2 In an embodiment, the transform selected for an ASBT sub partitioning is the DCT-2. An advantage of this embodiment is a coding efficiency increase compared to the 2 previous embodiments. Indeed, with DCT-2, ABST is less redundant than SBT. So, thanks to more diversity between these two transform coding modes a gain is obtained. It will be appreciated that this embodiment need not be limited to use with ASBT but may be used with other residual coding methods, particularly methods wherein a portion of the residual block is transformed and encoded. Embodiment 10.2.1 Preferred embodiment Same as SBT for SBT TU, DCT-2 otherwise In an embodiment, the transform selected for an ASBT sub partitioning is the DCT-2 when ASBT is not a sub partition of SBT, and when ASBT is a sub partition of SBT, the transform is the transform applied for SBT. An advantage of this embodiment is coding efficiency improvement compared to the previous embodiment. It will be appreciated that this embodiment need not be limited to use with ASBT but may be used with other residual coding methods, particularly methods wherein a portion of the residual block is transformed and encoded. Embodiment 10.3 More general extension In an embodiment, the transform selected for an ASBT sub partitioning is a transform different to those used in SBT when ASBT is not a sub partition of SBT, and when ASBT is a sub partition of SBT, the transform is the transform applied for SBT. The advantage of this embodiment is similar to the previous one, as another transform or other transforms than DCT-2 can be used for ASBT and that the main impact is not DCT-2 but the usage of a different transform to reduce as much as possible the redundancy between these modes (ASBT and SBT). It will be appreciated that this embodiment need not be limited to use with ASBT but may be used with other residual coding methods, particularly methods wherein a portion of the residual block is transformed and encoded. ASBT Chroma Embodiment 11 Same ASBT process for Chroma In an embodiment, ASBT is applied similarly for Luma than for Chroma. In this embodiment, the related flags or parameters values for chroma are decoded or inferred independently to those decoded or inferred for Luma. In a preferred embodiment only one set of flags and parameters are used for both chroma components. An advantage of this embodiment is an alignment of Luma process and chroma process for ASBT which simplify the implementation. It will be appreciated that this embodiment need not be limited to use with ASBT but may be used with other residual coding methods, particularly methods wherein a portion of the residual block is transformed and encoded. Embodiment 11.1 Use same ASBT parameters from Luma (position and / or direction) for Chroma In an embodiment, the ASBT parameters from Luma are applied for Chroma. In this embodiment, the position and / or the direction are inferred for Luma and the sub-division is decoded from the bitstream for Luma, and these values are used for both chroma components. Of course, when the size of the chroma is different to the size of the Luma, the parameters are adapted. An advantage of this embodiment is coding efficiency improvement compared to the previous embodiment. Indeed, less flags are transmitted and the inference is also better for Chroma components. Indeed, for Chroma components the signal is generally flatter than for Luma, so it is difficult to infers parameters. Embodiment 11.2 Do not apply any ASBT process for Chroma In an embodiment, no specific process is applied for Chroma when ASBT was selected for Luma. So, the chroma is coded for the entire TU if it is coded. An advantage of this embodiment is the coding efficiency. As surprising effect this configuration is the best one. It will be appreciated that this embodiment need not be limited to use with ASBT but may be used with other residual coding methods, particularly methods wherein a portion of the residual block is transformed and encoded. Embodiment 11.3 No Residual for Chroma if ASBT is selected In an embodiment, when ASBT is selected for Luma the Chroma component are not coded. An advantage of this embodiment is simplification of ASBT mode and with a minor impact on coding efficiency even for Chroma. It will be appreciated that this embodiment need not be limited to use with ASBT but may be used with other residual coding methods, particularly methods wherein a portion of the residual block is transformed and encoded. Embodiment 11.3.1 No transmission of the ASBT signalling when chroma is used. In an additional embodiment, to the previous one, when the CBF flags for chroma are equal to 0, ASBT is not allowed. An advantage of this embodiment compared to the previous one, is a coding efficiency increase. Indeed, some bits for ASBT signalling are saved. It will be appreciated that this embodiment need not be limited to use with ASBT but may be used with other residual coding methods, particularly methods wherein a portion of the residual block is transformed and encoded. The following embodiment are described in reference to the ASBT mode which infer at least the position of the Subblock residual coding. But many of these embodiments can be apply on other subblock residual coding as the regular SBT mode of WC or other SBT modes available in the prior art or other SBT that is not yet invented. Implementation of the invention Figure 24 shows a system 191 195 comprising at least one of an encoder 150 or a decoder 100 and a communication network 200 according to embodiments of the present invention. According to an embodiment, the system 195 is for processing and providing a content (for example, a video and audio content for displaying / outputting or streaming 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 a device capable of providing / displaying the (provided / streamed) content to the user. The system 195 obtains / receives a bitstream 101 (in the form of a continuous stream or a signal - e.g. while earlier video / audio are being displayed / output) via the communication network 200. According to an embodiment, the system 191 is for processing a content and storing the processed content, for example a video and audio content processed for displaying / outputting / streaming at a later time. The system 191 obtains / receives a 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 the encoder 150, and the encoder 150 generates a bitstream 101 that is to be communicated to the decoder 100 via a communication network 191. The bitstream 101 is then communicated to the decoder 100 in a number of ways, for example it may be generated in advance by the encoder 150 and stored as data in a storage apparatus in the communication network 200 (e.g. on a server or a cloud storage) until a user requests the content (i.e. the bitstream data) from the storage apparatus, at which point the data is communicated / streamed to the decoder 100 from the storage apparatus. The system 191 may also comprise a content providing apparatus for providing / streaming, to the user (e.g. by communicating data for a user interface to be displayed on a user terminal), content information for the content stored in the storage apparatus (e.g. the title of the content and other meta / storage location data for identifying, selecting and requesting the content), and for receiving and processing a user request for a content so that the requested content can be delivered / streamed from the storage apparatus to the user terminal. Alternatively, the encoder 150 generates the bitstream 101 and communi cate s / streams it directly to the 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. 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 on or transmitted over, as one or more instructions or code or program, or a computer-readable medium, and executed by one or more hardware-based processing unit such as a programmable computing machine, which may be a PC (“Personal Computer”), a DSP (“Digital Signal Processor”), a circuit, a circuitry, a processor and a memory, a general purpose microprocessor or a central processing unit, a microcontroller, an ASIC (“Application-Specific Integrated Circuit”), a field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor” as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques describe herein. Embodiments of the present invention can also be realized by wide variety of devices or apparatuses, including a wireless handset, 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 those embodiments, but do not necessarily require realization by different hardware units. Rather, various modules / units may be combined in a codec hardware unit or provided by a collection of interoperative hardware units, including one or more processors in conjunction with suitable software / firmware. Embodiments of the present invention can be realized by a computer of a system or apparatus that reads out and executes computer executable instructions (e.g., one or more programs) recorded on a storage medium to perform the modules / units / functions of one or more of the above-described embodiments and / or that includes one or more processing unit or circuits for performing the functions of one or more of the above-described embodiments, and by a method performed by the computer of the system or apparatus by, for example, reading out and executing the computer executable instructions from the storage medium to perform the functions of one or more of the above-described embodiments and / or controlling the one or more processing unit or circuits to perform the functions of one or more of the abovedescribed embodiments. The computer may include a network of separate computers or separate processing units to read out and execute the computer executable instructions. The computer executable instructions may be provided to the computer, for example, from a computer-readable medium such as a communication medium via a network or a tangible storage medium. The communication medium may be a signal / bitstream / carrier wave. The tangible storage medium is a “non-transitory computer-readable storage medium” which may include, for example, one or more of a hard disk, a random-access memory (RAM), a read only memory (ROM), a storage of distributed computing systems, an optical disk (such as a compact disc (CD), digital versatile disc (DVD), or 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 machine or a dedicated component, such as an FPGA (“Field-Programmable Gate Array”) or an ASIC (“Application-Specific Integrated Circuit”). Figure 25 is a schematic block diagram of a computing device 3600 for implementation of one or more embodiments of the invention. The computing device 3600 may be a device such as a micro-computer, a workstation or a light 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 the registers adapted to record variables and parameters necessary for implementing the method for encoding or decoding at least part of an image according to embodiments of the invention, the memory capacity thereof can be expanded by an optional RAM connected to an expansion port for 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 over which digital data to be processed are transmitted or received. The network interface (NET) 3604 can be a single network interface, or composed of a set of different network interfaces (for instance wired and wireless interfaces, or different kinds of wired or wireless interfaces). Data packets are written to the network interface for transmission or are read from the network interface for reception under the control of the software application running in the CPU 3601; - a user interface (UI) 3605 may be used for receiving inputs from a user or to display information to a user; - a hard disk (HD) 3606 may be provided as a mass storage device; - an Input / Output module (IO) 3607 may be used for receiving / sending data from / to external devices such as a video source or display. The executable code may be stored either in the ROM 3603, on the HD 3606 or on a removable digital medium such as, for example a disk. According to a variant, the executable code of the programs can be received by means of a communication network, via the NET 3604, in order to be stored in one of the storage means of the communication device 3600, such as the HD 3606, before being executed. The CPU 3601 is adapted to control and direct the execution of the instructions or portions of software code of the program or programs according to embodiments of the invention, which instructions are stored in one of the aforementioned storage means. After powering on, the CPU 3601 is capable of executing instructions from main RAM memory 3602 relating to a software application after those instructions have been loaded from the program ROM 3603 or the HD 3606, for example. Such a software application, when executed by the CPU 3601, causes the steps of the method according to the invention to be performed. It is also understood that according to another embodiment of the present invention, a decoder according to an aforementioned embodiment is provided in a user terminal such as a computer, a mobile phone (a cellular phone), a table or any other type of a device (e.g. a display apparatus) capable of providing / displaying a content to a user. According to yet another embodiment, an encoder according to an aforementioned embodiment is provided in an image capturing apparatus which also comprises a camera, a video camera or a network camera (e.g. a closed-circuit television or video surveillance camera) which captures and provides the content for the encoder to encode. Two such examples are provided below with reference to Figures 19 and 20. Figure 26 is a diagram illustrating a network camera system 3700 including a network camera 3702 and a client apparatus 202. The network camera 3702 includes an imaging unit 3706, an encoding unit 3708, a communication unit 3710, and a control unit 3712. The network camera 3702 and the client apparatus 202 are mutually connected to be able to communicate with each other via the network 200. The imaging unit 3706 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. The encoding unit 3708 encodes the image data by using said encoding methods explained above, or a combination of encoding methods described above. The communication unit 3710 of the network camera 3702 transmits the encoded image data encoded by the encoding unit 3708 to the client apparatus 202. Further, the communication unit 3710 receives commands from client apparatus 202. The commands include commands to set parameters for the encoding of the encoding unit 3708. The control unit 3712 controls other units in the network camera 3702 in accordance with the commands received by the communication unit 3712. The client apparatus 202 includes a communication unit 3714, a decoding unit 3716, and a control unit 3718. The communication unit 3714 of the client apparatus 202 transmits the commands to the network camera 3702. Further, the communication unit 3714 of the client apparatus 202 receives the encoded image data from the network camera 3712. The decoding unit 3716 decodes the encoded image data by using said decoding methods explained above, or a combination of the decoding methods explained above. The control unit 3718 of the client apparatus 202 controls other units in the client apparatus 202 in accordance with the user operation or commands received by the communication unit 3714. The control unit 3718 of the client apparatus 202 controls a display apparatus 2120 so as to display an image decoded by the decoding unit 3716. The control unit 3718 of the client apparatus 202 also controls a display apparatus 2120 so as to display GUI (Graphical User Interface) to designate values of the parameters for the network camera 3702 includes the parameters for the encoding of the encoding unit 3708. The control unit 3718 of the client apparatus 202 also controls other units in the client apparatus 202 in accordance with user operation input to the GUI displayed by the display apparatus 2120. The control unit 3718 of the client apparatus 202 controls the communication unit 3714 of the client apparatus 202 so as to transmit the commands to the network camera 3702 which designate values of the parameters for the network camera 3702, in accordance with the user operation input to the GUI displayed by the display apparatus 2120. Figure 27 is a diagram illustrating a smart phone 3800. The smart phone 3800 includes a communication unit 3802, a decoding unit 3804, a control unit 3806 and a display unit 3808. The communication unit 3802 receives the encoded image data via network 200. The decoding unit 3804 decodes the encoded image data received by the communication unit 3802. The decoding / encoding unit 3804 decodes / encodes the encoded image data by using said decoding methods explained above. The control unit 3806 controls other units in the smart phone 3800 in accordance with a user operation or commands received by the communication unit 3806. For example, the control unit 3806 controls a display unit 3808 so as to display an image decoded by the decoding unit 3804. The smart phone 3800 may also comprise sensors 3812 and an image recording device 3810. In such a way, the smart phone 3800 may record images, encode the images (using a method described above). The smart phone 3800 may 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 network 200. Alternatives and modifications While the present invention has been described with reference to embodiments, it is to be understood that the invention is not limited to the disclosed embodiments. It will be appreciated by those skilled in the art that various changes and modification might be made without departing from the scope of the invention, as defined in the appended claims. All of the features disclosed in this specification (including any accompanying claims, abstract and drawings), and / or all of the steps of any method or process so disclosed, may be combined in any combination, except combinations where at least some of such features and / or steps are mutually exclusive. Each feature disclosed in this specification (including any accompanying claims, abstract and drawings) may be replaced by alternative features serving the same, equivalent or similar purpose, unless expressly stated otherwise. Thus, unless expressly stated otherwise, each feature disclosed is one example only of a generic series of equivalent or similar features. It is also understood that any result of comparison, determination, assessment, selection, execution, performing, or consideration described above, for example a selection made during an encoding or filtering process, may be indicated in or determinable / inferable from data in a bitstream, for example a flag or data indicative of the result, so that the indicated or determined / inferred result can be used in the processing instead of actually performing the comparison, determination, assessment, selection, execution, performing, or consideration, for example during a decoding process. In the claims, the word “comprising” 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 recited in mutually different dependent claims does not indicate that a combination of these features cannot be advantageously used. Reference numerals appearing in the claims are by way of illustration only and shall have no limiting effect on the scope of the claims.
Claims
1. A method of decoding one or more images from a bitstream, comprising:obtaining a prediction information portion of a block to be decoded, the prediction information portion comprising a plurality of prediction samples for the block to be decoded;determining a residual subblock comprising an area of a residual block for the block to be decoded based on one or more of the prediction samples; andreconstructing the block to be decoded using the residual subblock.
2. The method of claim 1, wherein reconstructing the block to be decoded comprises:obtaining one or more transform coefficients for a portion of a transform block, the portion of the transform block corresponding to the residual subblockperforming dequantization and applying an inverse transform to the transform coefficients to obtain the residual sample values for the residual subblock corresponding to a portion of the residual block, andcombining sample values of the prediction information portion with sample values of the residual block to obtain values of the block to be decoded.
3. The method of claim 2, wherein the sample values of the residual block are sample values corresponding to the residual subblock.
4. The method of any one of claims 1 to 3, further comprising determining one or more sign values of one or more transform coefficients for a portion of a transform block, the portion of the transform block corresponding to the residual subblock; wherein determining the one or more sign values is based on one or more reconstructed samples from a decoded block and one or more prediction samples from the prediction information portion of the block to be decoded.
5. A method of encoding one or more images into a bitstream, comprising:obtaining a prediction information portion of a block to be encoded, the prediction information block comprising a plurality of prediction samples for the block to be encoded;determining a residual subblock comprising an area of a residual block for the block to be encoded based on one or more of the prediction samples; andencoding the block to be encoded into the bitstream using the residual subblock.
6. The method of claim 5, wherein encoding the block to be encoded comprises:applying a transform to the residual sample values for the residual subblock corresponding to an area of the residual block and performing quantization on the transformed residual sample values to obtain a portion of a transform block comprising one or more transform coefficients;encoding the prediction information portion of the block to be encoded and the one or more transform coefficients into the bitstream.
7. The method of any one of claims 1 to 6, wherein determining the residual subblock comprises determining a position of the residual subblock within the residual block.
8. The method of any one of the preceding claims, wherein determining the position of the residual subblock within the residual block comprises:determining a plurality of energy values associated with a plurality of prediction samples of the prediction information portion;determining a position of the residual subblock within the energy values associated with a plurality of prediction samples that corresponds to the position of the residual subblock having an energy value representing a maximum sum of energy values associated with a plurality of prediction samples located inside this position of the residual subblock; anddetermining the position of the residual subblock within the residual block corresponding to the determined position.
9. The method of claim 8, wherein computing the plurality of energy values comprises computing a plurality of gradient values.
10. The method of claim 9, wherein computing the gradient values comprises performing a convolution of the plurality of prediction samples and one or more neighbouring samples with one or more Sobel gradient kernels.
11. The method of claim 9 or claim 10, wherein computing the gradient values comprises computing a horizontal gradient value and a vertical gradient value for each prediction sample.
12. The method of claim 11, wherein the gradient value is the root sum square, RSS, of the horizontal and vertical gradient values.
13. The method of claim 11, wherein the gradient value is the sum of the absolute value of the horizontal gradient value and the absolute value of the vertical gradient value.
14. The method of claim 10, wherein the size of the one or more Sobel gradient kernels is selected based on the size of the block to be decoded.
15. The method of claim 14, wherein the size of the one or more Sobel gradient kernels is selected to be directly proportional to the size of the block to be decoded.
16. The method of claim 10, wherein the size of the one or more Sobel gradient kernels is 5-by-5 samples.
17. The method of claim 10, wherein if the block to be decoded has a height less than or equal to 64 samples or a width less than or equal to 64 samples, the size of the one or more Sobel gradient kernels is selected as 3-by-3 samples.
18. The method of claim 10, wherein if the block to be decoded has a height greater than 64 samples and a width greater than 64 samples, the size of the one or more Sobel gradient kernels is selected as 5-by-5 samples.
19. The method of any one of claims 10 to 18, further comprising adding virtual samples to the prediction information portion, the virtual samples being added around a border of the prediction information portion.
20. The method of claim 19, wherein the values of the virtual samples correspond to the values of prediction samples located inside the border of the prediction information portion.
21. The method of any one of claims 10 to 18, further comprising assigning a default energy value to one or more prediction samples if an energy value cannot be calculated for those one or more prediction samples.
22. The method of claim 21, wherein the default energy value is 0, or an average of the determined energy values.
23. The method of any one of claims 8 to 22, wherein determining the position of the residual subblock within the prediction information portion that corresponds to the maximum energy value of the residual subblock comprises:calculating a total energy value corresponding to each of one or more positions of the residual subblock within the prediction information portion; andselecting the position of the residual subblock corresponding to the highest total energy value.
24. The method of claim 23, wherein calculating the total energy value corresponding to each of one or more positions of the residual subblock comprises:A) calculating a row or line energy value corresponding to each row or line of prediction samples in the prediction information portion, wherein the row or line energy value is the sum of the energy values in the row or line;B) calculating the total energy value for a first position of the residual subblock;C) calculating the total energy value for the next adjacent position of the residual subblock by subtracting the row or line energy value of the first row or line of energy values in the residual subblock and adding the row or line energy value of the next adjacent row or line of prediction samples in the prediction information portion; andrepeating step C for the remaining positions of the one or more positions of the residual subblock within the prediction information portion.
25. The method of any one of claims 2 and 6 to 24, further comprising setting a default orientation of the transform block to horizontal in response to determining that a vertical dimension of the residual block is below a predetermined threshold, or setting the orientation of the transform block to vertical in response to determining that a horizontal dimension of the residual block is below a predetermined threshold.
26. The method of any one of claims 2 to 4 and 6 to 24, further comprising determining an orientation of the transform block based on one or more of the prediction samples.
27. The method of claim 26, wherein determining the orientation of the transform block comprises:computing or obtaining an energy value for a plurality of prediction samples of the prediction information portion;determining or obtaining a position of the residual subblock within the prediction information portion;determining a horizontal energy value based on the position of the residual subblock;determining a vertical energy value based on the position of the residual subblock;determining the orientation of the transform block based on a comparison between the horizontal energy value and the vertical energy value.
28. The method of claim 27, wherein determining the horizontal energy value comprises:determining a plurality of energy values associated with a plurality of prediction samples of the prediction information portion;determining a position of the residual subblock along a horizontal axis of the energy values associated with a plurality of prediction samples that corresponds to the position of the residual subblock having an energy value representing the maximum sum of energy values associated with a plurality of the prediction samples located inside this position of the residual subblock;determining the horizontal energy value as the maximum sum of energy values associated with a plurality of the prediction samples located inside the determined position of the residual subblock.
29. The method of claim 27, wherein determining the vertical energy value comprises:determining a plurality of energy values associated with a plurality of prediction samples of the prediction information portion;determining a position of the residual subblock along a vertical axis of the energy values associated with a plurality of prediction samples that corresponds to the position of the residual subblock having an energy value representing the maximum sum of energy valuesassociated with a plurality of the prediction samples located inside this position of the residual subblock;determining the vertical energy value as the maximum energy value of the residual subblock.
30. The method of any one of claims 26 to 29, further comprising:determining that the orientation of the transform block does not match a default orientation of the transform block; andprocessing the transform block to match the orientation of the transform block to the default orientation.
31. A method of encoding or decoding image data into or from a bitstream, the method comprising a process which includes:determining a residual subblock comprising an area of a residual block to be encoded or decoded;encoding or decoding transform coefficients of a transform block to be encoded or decoded, the encoding or decoding based on the residual subblock area;determining that the orientation of the transform block does not match a default orientation of the transform block; andprocessing the transform block to match the orientation of the transform block to the default orientation.
32. The method of claim 30 or 31, wherein the transform block is square, and processing the transform block comprises performing a transposition operation on the transform coefficients of the transform block.
33. The method of claim 30 or 31, wherein processing the transform block comprises applying a coefficient mapping to the transform coefficients of the transform block.
34. The method of claim 33, wherein the coefficient mapping is based on a predetermined parsing order of the transform coefficients.
35. The method of decoding of claim 33 or 34, further comprising determining one or more sign values of one or more of the transform coefficients; wherein determining the one or more sign values is based on one or more reconstructed samples from a decoded block and one or more prediction samples from the top left 4-by-4 samples of the prediction information portion.
36. The method of decoding of claim 33 or 34, further comprising determining one or more sign values of one or more of the transform coefficients; the one or more transform coefficients comprising transform coefficients located along the top or left border of the transform block both prior to, and after, the processing of the transform block.
37. The method of decoding of claim 33 or 34, further comprising:determining one or more transform coefficients of the transform block that are located along the top or left border of the transform block after the processing of the transform block that were not located along the top or left border of the transform block prior to the processing of the transform block; andsetting the value of the determined one or transform coefficients to 0.
38. The method of of any one of claims 6 to 34, further comprising signalling, in the bitstream, the orientation of the transform block in response to the height or width of the transform block exceeding a predetermined number of coefficients; and / or signalling, in the bitstream, the orientation of the block to be encoded in response to the height or width of the block to be encoded exceeding a predetermined number of samples.
39. The method of claim 38, wherein the predetermined number is 128.
40. The method of decoding of any one of claims 2 to 4 and 7 to 37, further comprising obtaining, from the bitstream, the orientation of the transform block.
41. The method of claim 30 or 31, further comprising processing one or more syntax elements based on the processing of the transform block to match the orientation of the transform block to the default orientation.
42. The method of any one of the preceding claims, wherein the transform block is determined using SBT.
43. The method of any one of claims 8 to 42, further comprising, in response to determining that the position of the residual subblock within the residual block corresponds to a SubBlock Transform, SBT, position, determining the position of the residual subblock within the prediction information portion as the position with the second or another-highest total energy value.
44. The method of any one of the preceding claims, further comprising, in response to determining that the position of the residual subblock within the residual block corresponds to a position determined using SBT, reconstructing or encoding the block based on the determined position if there is a difference in coding compared to SBT.
45. The method of encoding of any one of claims 8 to 42, further comprising, in response to determining that the position of the residual subblock within the residual block corresponds to a Sub-Block Transform, SBT, position, signalling the orientation of the transform block in the bitstream.
46. The method of any one of the preceding claims, further comprising, in response to in response to determining that the position of the residual subblock within the residual block corresponds to a position determined using SBT, determining the position and / or orientation of the residual subblock based on one or more prediction samples of the predictor block.
47. The method of any one of claims 8 to 46, wherein the width or height of the residual subblock is determined to be one quarter that of the residual block; the method further comprising, in response to determining that the transform block is derived using Sub-Block Transform, SBT, signalling both the position and orientation of the residual subblock in the bitstream.
48. The method of claim 45, wherein the block to be encoded is a small block.
49. The method of claim 48, wherein the small block corresponds to a residual block of SubBlock Transform, SBT, having a height or a width less than 16.
50. The method of encoding of any preceding claim, further comprising applying a transform to the residual sample values of the residual subblock, wherein the transform is selected to be the same as a transform used for Sub-Block Transform, SBT.
51. The method of encoding of any preceding claim, further comprising applying a Discrete Sine Transform 7, DST-7, transform to the residual sample values of the residual subblock.
52. The method of encoding of any preceding claim, further comprising applying a Discrete Cosine Transform 2, DCT-2, transform to the residual sample values of the residual subblock.
53. The method of encoding of any one of any one of the preceding claims, further comprising: in response to determining that the transform block is derived using Sub-Block Transform, SBT, the transform is selected to be the same as a transform used for SBT.
54. The method of decoding of any one of the preceding claims, further comprising: in response to determining that the transform block is not derived using Sub-Block Transform, SBT, the transform is a Discrete Cosine Transform 2, DCT-2, transform.
55. The method of any one of the preceding claims, wherein the block is a block of Luma samples; the method further comprising obtaining a corresponding block of Chroma samples using the same determined and / or obtained parameters, and adjusting the parameters to account for any size difference between the Luma and Chroma blocks.
56. The method of of any one of the preceding claims, wherein the block is a block of Luma samples and the method further comprising obtaining a corresponding block of Chroma samples; and wherein obtaining the corresponding block of Chroma samples comprises determining not obtaining any residual block for the corresponding block of Chroma samples from the bitstream.
57. A device for encoding one or more images into a bitstream, the device comprising:means for obtaining a prediction information portion of a block to be encoded, the prediction information block comprising a plurality of prediction samples for the block to be encoded;means for determining a residual subblock comprising an area of a residual block for the block to be encoded based on one or more of the prediction samples; andmeans for encoding the block to be encoded into the bitstream using the residual subblock.
58. The device of claim 57, further comprising means for performing the method of encoding according to any one of claims 1 to 56.
59. A device for decoding one or more images into a bitstream, the device comprising:means for obtaining a prediction information portion of a block to be decoded, the prediction information portion comprising a plurality of prediction samples for the block to be decoded;means for determining a residual subblock comprising an area of a residual block for 5 the block to be decoded based on one or more of the prediction samples; andmeans for reconstructing the block to be decoded using the residual subblock.
60. The device of claim 59, further comprising means for performing the method of decoding according to any one of claims 1 to 56.1061. A computer program which is arranged to, upon execution, cause the method of any one of claims 1 to 56 to be performed.
62. A computer-readable storage medium upon which is stored the computer program 15 according to claim 61.
Citation Information
Patent Citations
Simplification of sub-block transforms in video coding
US20200288130A1
Nter PDPC mode
US20200296421A1
Method and apparatus for video coding
US20210067806A1
Method and apparatus for signaling sub-block transform information
US20210084321A1
Image coding method based on transform, and device therefor
US20230076486A1