Image and video coding and decoding

By employing residual subblock transforms, the method optimizes coding efficiency and reduces complexity in video encoding and decoding, addressing the challenges of high-resolution and high-dynamic-range video compression in existing standards.

GB2702053APending Publication Date: 2026-05-27CANON KK
View PDF 6 Cites 0 Cited by

Patent Information

Authority / Receiving Office
GB · GB
Patent Type
Applications
Current Assignee / Owner
CANON KK
Filing Date
2024-12-20
Publication Date
2026-05-27

AI Technical Summary

Technical Problem

Existing video coding standards face challenges in achieving efficient compression of high-resolution and high-dynamic-range video content, particularly in reducing signaling overhead and complexity in transforming residual data.

Method used

The implementation of a method and device for encoding and decoding images using residual subblocks, allowing for the configuration of parameters in the bitstream to optimize coding efficiency while reducing complexity, specifically through the use of residual subblock transforms like Advanced Sub-Block Transform (ASBT) and Sub-Block Transform (SBT) methods.

Benefits of technology

This approach reduces signaling overhead and complexity in encoding and decoding processes, enhancing coding efficiency for high-resolution and high-dynamic-range video content.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A method of encoding images into a bitstream, the method comprises determining a residual subblock comprising an area of a residual block for a block to be encoded, and encoding transform coefficients
Need to check novelty before this filing date? Find Prior Art

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 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. According 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 determining a residual subblock comprising an area of a residual block for a block to be encoded, and means for 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 device for decoding one or more images from a bitstream, the device comprising means for determining a residual subblock comprising an area of a residual block for a block to be decoded, and means for decoding transform coefficients of a transform block to be decoded based on the residual subblock area. 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). The particular configuration of parameters in the bitstream allow for maximum coding efficiency while reducing complexity, in such situations where a portion of residual data from a residual block is to be transformed and transmitted. The present invention may therefore be applied to any such methods, for example the Advanced Sub-Block Transform (ASBT) method, or the Sub-Block Transform (SBT) methods, or similar. 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. A first flag indicating that the process is enabled may be encoded in or decoded from the bitstream. The first flag may be included in or decoded from a transform unit of the bitstream. A second flag indicating whether the process is allowed or not allowed may be selectively encoded in a header of the bitstream. The header may be any one of an SPS header, a PPS header, a picture header, and a slice header. The header may be an SPS header and, based on the value of the second flag indicating that the process is allowed, a third flag may be encoded in a picture header of the bitstream, the third flag indicating whether the process is enabled or disabled at picture level (i.e. the process can be enabled or disabled for the entire picture). The header may be an SPS header and, based on the value of the second flag indicating that the process is allowed, a fourth flag may be encoded in the SPS header (or in the PPS header or in a header above the picture header), indicating that the process can be allowed or not allowed at picture level via a third flag included in a picture header, or whether the process is enabled for all images of the sequence. The header may be an SPS header and, based on the value of the second flag indicating that the process is allowed. When the process is allowed a fourth flag indicating that the process is allowed for all pictures of the sequences or if a third flag may be encoded in a picture header of the bitstream, the third flag indicating whether the process can be enabled or disabled at picture level (i.e. the process can be enabled or disabled for the entire picture). The header may be an SPS header; and a Palette flag may be encoded in the SPS header indicating that all slices to be encoded are encoded using a Palette mode; and the value of the second flag may be set to indicate that the process is not allowed. The header may be an SPS header, and the bitstream may be constrained so that the value of the second flag indicates that inferring the position of the residual subblock is enabled when a Palette flag is signalled in the SPS header, the Palette flag indicating that all slices to be encoded are not encoded using a Palette mode. The header may be an SPS header; and a Palette flag may be encoded in the SPS header indicating that the slice to be encoded is not encoded using a Palette mode; and the value of the second flag may be set to indicate that the process is allowed. The header is an SPS header, and a Palette flag may be encoded in the SPS header indicating that the slice to be encoded can use a Palette mode; and either: the value of the second flag may be set to indicate the process is not allowed, or the first and second flags may not be encoded in the bitstream. In response to the value of the first flag indicating that the process is enabled, information indicating the size of the residual subblock may be selectively encoded in the bitstream. The information may be a subdivision flag indicating a subdivision of the residual block that corresponds to the size of the residual subblock. The flag having a first value may indicate that the subdivision of the residual block is a division by 2, and the flag having a second value may indicate that the subdivision is a division by 4. The information may be a plurality of flags, each flag of the plurality of flags indicating a subdivision of the residual block that corresponds to the size of the residual subblock. The information may be a unary max code comprising one or more bins, each bin of the one or more bins representing a subdivision of the residual block that corresponds to the size of the residual subblock. Selectively encoding the information may be based on a determination whether a particular level of subdivision of the residual block is permitted. A first performance value associated with encoding the transform block with the process disabled may be evaluated, and a second performance value associated with encoding the transform block with the process enabled with a residual subblock of a first size, and it may be determined whether to encode the transform block with the process enabled with a residual subblock of a second size based on the first and second performance values. It may be determined whether or not to evaluate a performance value associated with a residual subblock of a first size based on one or more evaluated performance values associated with a residual subblock of one or more different sizes. The process may be disabled for the block to be encoded based on determining that a best residual value for the transform unit evaluated with the process disabled is zero. The residual value determination(s) may not be performed if the number of residual samples associated with the residual subblock of the second size is greater than or equal to the number of residual samples associated with the residual subblock of the first size. The process may be a Sub-Block Transform (SBT) process, and a list of possible SBT modes may be determined, a subset of most probable SBT modes may be determined (SBT modes that are most likely to achieve the best encoding performance such as the best Rate Distortion value and / or lowest residual), a performance value (for example a Rate Distortion value) may be evaluated for each SBT mode of the subset, the SBT mode of the subset with the best associated performance value may be determined, and a variable associated with that SBT mode may be set to indicate that Low-Frequency Non-Separable Transforms (LFNST) are to be evaluated for the determined SBT mode, and for each SBT node of the remaining SBT nodes (the SBT nodes other than the SBT node with the best associated performance value) an associated variable is set to indicate that LFNST are to be evaluated for the SBT node based on a comparison of the evaluated performance value for that SBT node with a threshold value. The threshold value may be based on the best associated performance value. For each SBT mode, an associated variable may be set to indicate that LFNST are not to be evaluated for the SBT mode based on determining that Advanced Sub-Block Transform, ASBT, has been enabled for the SBT mode. It may be determined that LFNST are not to be evaluated for any SBT mode based on determining that the determining that ASBT has been enabled for the determined SBT mode with the best associated performance value. It may be determined that LFNST are not to be evaluated for any SBT mode based on determining that ASBT was enabled for a previously evaluated frame portion having a transform block with the lowest associated residual value. The above determinations may be performed only when the image including the block to be encoded comprises less than or equal to 409600 luma samples. It may be determined not to evaluate a binary tree, BT, split and / or a ternary tree, TT, split based on determining that ASBT was enabled for a previously evaluated frame portion having a transform block with the lowest associated residual value. It may be determined not to evaluate a binary tree, BT, split and / or a ternary tree, TT, split having a first direction based on determining that ASBT was enabled for a previously evaluated frame portion having a transform block with the lowest associated residual value, and that the direction of the determined ASBT subblock matched the first direction. The determination not to evaluate a BT and / or TT split may be further based on one or more of a multi-tree depth, a binary tree depth, a quadtree depth, a temporal ID, and a temporal depth of the block to be encoded. An orientation of a transform block may be determined based on one or more prediction samples; and based on a subdivision of the residual block by 2 or by 4 being permitted, the information may be encoded in the bitstream only if either the height or width of the transform block is greater than 8 coefficients. An orientation of the transform block may be encoded in the bitstream; and based on a subdivision of the residual block by 2 or by 4 being permitted, the information may be encoded in the bitstream only if the transform block is greater than 8 coefficients in the dimension corresponding to the orientation of the transform block. An orientation of the transform block may be selectively encoded in the bitstream. The orientation of the transform block may be encoded as a flag. The orientation may be encoded in the bitstream after the first flag and before the information indicating the size of the residual subblock. The selectively encoding of the orientation of the transform block may be based on both orientations of the residual block being permitted. Whether an orientation of the residual block is permitted may be based on the dimension of the residual block corresponding to the orientation being available after a subdivision by 2. If the width and / or height of the block to be encoded is greater than or equal to 128 samples, the orientation of the transform block may be encoded in the bitstream. If the width of the block to be encoded multiplied by the height of the block to be encoded is greater than 4096, the orientation of the transform block may be encoded in the bitstream. If the value of the first flag indicates that the process is enabled, one or more of a Transform Skip Flag; an LFNST index; and an MTS index; may not be encoded in the bitstream. The first flag may be CAB AC coded. A CAB AC context associated with the first flag may be initialised such that the probability of the first flag indicating that the process is disabled is greater than the probability of the first flag indicating that the process is enabled. Multiple CABAC contexts may be associated with the first flag, and a CABAC context increment value may be determined. The CABAC context increment value may be determined based on the value of an SBT flag, the SBT flag indicating whether SBT is enabled for the block to be encoded. The CABAC context increment value may be determined to be equal to the value of the SBT flag. An initialisation value of a CABAC context associated with the probability of the first flag indicating that the process is disabled may represent a higher probability when SBT is not enabled for the block to be encoded than when SBT is enabled for the block to be encoded. The CABAC context increment value may be based on the size of the block to be encoded. An initialisation value of a CABAC context associated with the probability of the first flag indicating that the process is enabled may be proportional to the size of the block to be encoded. The information indicating the size of the residual subblock may be CABAC coded. The information may be a plurality of flags or a unary max code comprising a plurality of bins, and each flag of the plurality of flags, or each of the one or more bins, may be CABAC coded using a respective CABAC context value for each flag or bin. Multiple CABAC contexts may be associated with the information indicating the size of the residual subblock; and a CABAC context increment value may be determined for each flag or bin. Multiple CABAC context increment values may be used to CABAC code each flag or bin of the information indicating the size of the residual subblock; and at least one CABAC context associated with the information indicating the size of the residual subblock may have an associated context derivation value associated that is the same as a context derivation value associated with the first flag. A CABAC context derivation value associated with at least one CABAC context associated with the information indicating the size of the residual subblock may be based on the value of an SBT flag, the SBT flag indicating that SBT is enabled for the block to be encoded. An initialisation value of the CABAC context derivation value representing the probability of the size of the residual subblock being equal to the largest subdivision of the residual block may be set such that the initialisation value represents a higher probability of selection compared to the probability of the residual subblock being equal to the smallest subdivision of the residual block when the SBT flag indicates that SBT is enabled. Multiple CABAC contexts may be associated with each flag or bin of the information indicating the size of the residual subblock; and the value of a CABAC context increment value associated with the information indicating the size of the residual subblock may be based on the size of the block to be encoded. An orientation of the transform block may be selectively encoded in the bitstream, and the orientation of the transform block may be CABAC coded; and at least one CABAC context may be associated with the orientation of the transform block. Multiple CABAC contexts may be associated with the orientation of the transform block; a CABAC context increment value associated with the multiple CABAC contexts may be determined. The CABAC context increment value may be determined based on a determination of a CABAC context increment value used to CABAC code the first flag. The CABAC context increment value may be determined based on the value of an SBT flag, the SBT flag indicating whether SBT is enabled for the block to be encoded. The CABAC context increment value may be determined to be equal to the value of the SBT flag. A CABAC context increment derivation value associated with the CABAC context increment value may be determined based on an SBT sub partition selection for the block to be encoded. The first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock may be encoded in the bitstream after a transform skip flag. The first flag may be included in a residual coding portion of the bitstream. The first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock may be selectively encoded in the bitstream after one or more syntax elements related to a last significant coefficient position. If the last significant coefficient position is greater than or equal to half the size of the transform block, the first flag, the information indicating the size of the residual subblock and the orientation of the residual subblock may not be encoded. If the last significant coefficient position is greater than or equal to one quarter the size of the transform block, the first flag, the information indicating the size of the residual subblock and the orientation of the residual subblock may not be encoded. The first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock may be selectively encoded in the bitstream at a position in the bitstream that is based on the value of a Quantisation Parameter, QP. The position is based on the value of the QP for the transform block of the block to be encoded, for the slice comprising the block to be decoded, for the picture comprising the block to be decoded, or included in a Sequence Parameter Set, SPS of the bitstream. The first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock may be selectively encoded in the bitstream at a position in the bitstream that is based on one or more syntax elements included in a header of the bitstream. The header may be any one of an SPS header, a picture header, and a slice header. The first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock may be selectively encoded in the bitstream at a position in the bitstream that is based on a signalling cost associated with the position, a temporal ID of the picture that includes the block to be encoded, and non-reference frame information associated with the picture that includes the block to be encoded. The first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock may be selectively encoded based on a comparison between a determined distortion based on the residual block and a determined distortion based on the residual subblock. Determining the residual subblock may be based on one or more predictor samples of a predictor block of the block to be encoded. The process may comprise inferring the position of the residual subblock. The process may be an Advanced Sub-Block Transform, ASBT, process or a Sub-Block Transform process. Selectively decoding the first flag may be based on one or more syntax elements, the one or more syntax elements indicating whether the process is enabled or disabled. The value of the one or more syntax elements may be based on: a slice type of a slice to be decoded, and the prediction mode of the block to be decoded. If the slice type of the slice currently being decoded indicates that the slice to be decoded is an Intra-predicted slice, the value of the one or more syntax elements may be set such that the first flag is not decoded. If the prediction mode of the block to be decoded indicates that the block to be decoded is an Intra-predicted block; the block to be decoded is encoded using a GPM mode; the block to be decoded is encoded using an IBC mode; the block to be decoded is encoded using a Palette mode; or the block to be decoded is encoded using a Skip or MMVD Skip mode; the value of the one or more syntax elements may be set such that the first flag is not decoded. A second flag indicating whether inferring the position of the residual subblock is enabled or disabled may be obtained from a header included in the bitstream. The header may be any one of an SPS header, a PPS header, a picture header, and a slice header. The header may be an SPS header and, based on the value of the second flag indicating that the process (e.g. inferring the position of the residual subblock) is allowed, a third flag may be obtained from a picture header of the bitstream, the third flag indicating whether the process is enabled or disabled at picture level (i.e. the process can be enabled or disabled for the entire picture). The header may be an SPS header an, based on the value of the second flag indicating that the process is allowed, a fourth flag may be obtained from the SPS header (or the PPS header or in a header above the picture header), indicating that the process can be allowed or not allowed at picture level via a third flag included in a picture header, or whether the process is enabled for all images of the sequence. The header may be an SPS header and, based on the value of the second flag indicating that the process is allowed. When the process is allowed a fourth flag indicating that the process is allowed for all pictures of the sequences or if a third flag may be decoded in a picture header of the bitstream, the third flag indicating whether the process can be enabled or disabled at picture level (i.e. the process can be enabled or disabled for the entire picture). The header may be an SPS header, and a Palette flag indicating that all slices to be decoded are can use a Palette mode may be obtained from the SPS header; and the value of the second flag may be set to indicate that the process is disabled. The header may be an SPS header, and a Palette flag indicating that one or more slices to be decoded can use a Palette mode may be obtained from the SPS header; and the first and second flags may not be decoded from the bitstream. The header may be an SPS header, and the bitstream may be constrained so that the value of the second flag indicates that the process may be enabled when a Palette flag is signalled in the SPS header, the Palette flag indicating that all slices to be encoded are not encoded using a Palette mode. The value of the one or more syntax elements may be based on the value of a second flag included in a header of the bitstream, the second flag indicating whether inferring the process is enabled or disabled. The header may be any one of an SPS header, a PPS header, a picture header, and a Slice header. The selectively decoding may be based on the size of the block to be decoded. If either the height and / or width of the block to be decoded is less than or equal to 4 samples, the first flag may not be decoded. If either the height and / or width of the block to be decoded is greater than 128 samples, the first flag may not be decoded. Information indicating a size of the residual subblock may be selectively decoded from the bitstream. The information may be a flag indicating a subdivision of the residual block that corresponds to the size of the residual subblock. The information may be a plurality of flags, each flag of the plurality of flags indicating a subdivision of the residual block that corresponds to the size of the residual subblock. The information may be a unary max code comprising one or more bins, each bin of the one or more bins representing a subdivision of the residual block that corresponds to the size of the residual subblock. The selectively decoding the information may be based on a determination whether a particular level of subdivision of the residual block is permitted. An orientation of a transform block may be determined based on one or more prediction samples; and, based on a subdivision of the residual block by 2 or by 4 being permitted, the information may be decoded from the bitstream only if either the height or width of the transform block is greater than 8 coefficients. It may be determined that a level of subdivision of the residual block, having an orientation equal to a default orientation, is not permitted, and it may therefore be determined that an orientation of the transform block is not the default orientation. An orientation of the transform block may be determined based on one or more prediction samples decoded from the bitstream. An orientation of the transform block may be selectively decoded from the bitstream. The orientation of the transform block may comprise a flag. The flag may be decoded after the first flag and before the information indicating a size of the residual subblock. The selectively decoding of the orientation may be based on both orientations of the residual block being permitted. If the value of the first flag indicates that the process is enabled, one or more of a Transform Skip Flag, an LFNST index, and an MTS index are not decoded from the bitstream. The first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock may be selectively decoded from the bitstream after a transform skip flag. If the value of the transform skip flag is equal to 1, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock may not be decoded from the bitstream. The first flag may be decoded from a residual coding portion of the bitstream. The first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock may be selectively decoded from the bitstream after one or more syntax elements related to a last significant coefficient position. If the last significant coefficient position is greater than or equal to half the size of the transform block, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock may not be decoded. If the last significant coefficient position is greater than or equal to one quarter the size of the transform block, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock may not be decoded. The first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock may be decoded only if the value of the last significant coefficient position is greater than 1. If the last significant coefficient position is greater than or equal to half the size of the transform block, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock may not be decoded. If the last significant coefficient position is greater than or equal to one quarter the size of the transform block, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock may not be decoded. The first flag may be CABAC decoded. Multiple CABAC contexts may be associated with the first flag, and a CABAC context increment value may be determined. The CABAC context increment value may be determined based on the value of an SBT flag, the SBT flag indicating whether SBT is enabled for the block to be decoded. The CABAC context increment value may be determined to be equal to the value of the SBT flag. An initialisation value of a CABAC context associated with the probability of the first flag indicating that the position of the residual subblock is not inferred may represent a higher probability when SBT is not enabled for the block to be encoded than when SBT is enabled for the block to be decoded. The CABAC context increment value may be based on the size of the block to be decoded. An initialisation value of a CABAC context associated with the probability of the first flag indicating that the position of the residual subblock is inferred may be proportional to the size of the block to be decoded. The information indicating the size of the residual subblock may be CABAC decoded. Each flag of the plurality of flags, or each of the one or more bins, of the information may be CABAC decoded using a respective CABAC context value for each flag or bin. Multiple CABAC contexts may be associated with the information indicating the size of the residual subblock; and a CABAC context increment value may be determined for each flag or bin. Multiple CABAC context increment values may be used to CABAC decode each flag or bin of the information indicating the size of the residual subblock; and at least one CABAC context associated with the information indicating the size of the residual subblock may have an associated context derivation value associated that is the same as a context derivation value associated with the first flag. A CABAC context derivation value associated with at least one CABAC context associated with the information indicating the size of the residual subblock may be based on the value of an SBT flag, the SBT flag indicating that SBT is enabled for the block to be encoded. An initialisation value of the CABAC context derivation value representing the probability of the size of the residual subblock being equal to the largest subdivision of the residual block may be set such that the initialisation value represents a higher probability of selection compared to the probability of the residual subblock being equal to the smallest subdivision of the residual block when the SBT flag indicates that SBT is enabled. Multiple CABAC contexts may be associated with each flag or bin of the information indicating the size of the residual subblock; and the value of a CABAC context increment value associated with the information indicating the size of the residual subblock may be based on the size of the block to be decoded. The orientation of the transform block may be CABAC decoded; and at least one CABAC context may be associated with the orientation of the transform block. Multiple CABAC contexts may be associated with the orientation of the transform block; and a CABAC context increment value associated with the multiple CABAC contexts may be determined. The CABAC context increment value may be determined based on a determination of a CABAC context increment value used to CABAC decode the first flag. The CABAC context increment value may be determined based on the value of an SBT flag, the SBT flag indicating whether SBT is enabled for the block to be decoded. The CABAC context increment value may be determined to be equal to the value of the SBT flag. A CAB AC context increment derivation value associated with the CAB AC context increment value may be determined based on an SBT sub partition selection for the block to be decoded. The first flag and one or more of the information indicating the size of the residual subblock and / or the orientation of the residual subblock may be decoded from the bitstream after a transform skip flag. The first flag and one or more of the information indicating the size of the residual subblock and / or the orientation of the residual subblock may be selectively decoded from the bitstream after one or more syntax elements related to a last significant coefficient position. If the last significant coefficient position is greater than or equal to half the size of the transform block, the first flag, information indicating the size of the residual subblock and / or the orientation of the residual subblock may not be decoded. If the last significant coefficient position is greater than or equal to one quarter the size of the transform block, information indicating the size of the residual subblock of the residual subblock may not be decoded. The last significant coefficient position information may be coded by considering the size of the of the residual block even if the residual block is coded according to a residual subblock. The size of the decoded residual block may be updated when the current residual coding is a residual subblock. The first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock may be decoded from the bitstream at a position from the bitstream that is based on the value of a Quantisation Parameter, QP. The position may be based on the value of the QP for the transform block of the block to be decoded; for the slice comprising the block to be decoded; for the picture comprising the block to be decoded; or included in a Sequence Parameter Set, SPS of the bitstream. The first flag and one or more of the information indicating the size of the residual subblock and / or the orientation of the residual subblock may be decoded from the bitstream at a position from the bitstream that is based on one or more syntax elements included in a header of the bitstream. Determining the residual subblock may be based on one or more predictor samples of a predictor block of the block to be decoded. The position of the residual subblock may be inferred. The position may be inferred based on one or more predictor samples of a predictor block of the block to be encoded or decoded. The process may be an Advanced Sub-Block Transform, ASBT, process or a Sub-Block Transform process. 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 a 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. Figure 29 illustrates one example of an encoding choice of the invention. Figure 30 illustrates one example of an encoding choice of the invention. Figure 31 illustrates one example of an encoding choice of the invention. Figure 32 illustrates one example of an encoding choice of the invention. Figure 33 illustrates one encoding choice of the ECM software. Figure 34 illustrates one example of an encoding choice of the invention. Figure 35 illustrates an example of MinQTSize variable; Figure 36 illustrates the MaxBTSize and MaxMttDepth; 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 splitting control variables For a current block not all possible splits are always permitted. The availability of these splits depends on several conditions. These conditions include several splitting control variables which have been defined. A first set of variables define the maximum and the minimum block / node size: • CTU size: corresponds to the root node size of a quadtree (for example 256^256, 128x128, 64x64, 32x32, 16x16 luma samples); • MaxBTSize: is the maximum allowed binary tree root node size, i.e., the maximum size of a leaf quadtree node that may be partitioned by binary splitting. A current block can be split thanks to a BT split if both the height and width of the current block are less than or equal to MaxBTSize. Figure 36 illustrates the concept of MaxBTSize where the MaxBTSize is the size of the quad tree leaf nodes 3602 of a CTU 3601 • MinBTSize: is the minimum allowed binary tree leaf node size; i.e., the minimum width or height of a binary leaf node. A current block can be split thanks to a horizontal BT split if its height is greater than MinBTSize, and a current block can be split thanks to a vertical BT split if its width is greater than MinBTSize. • MaxTTSize: is the maximum allowed ternary tree (TT) root node size, i.e., the maximum size of a leaf quadtree node that may be partitioned by ternary splitting. A current block can be split thanks to a TT split if both height and width of the current block are less than or equal to MaxTTSize. • MinTTSize: represents the minimum allowed ternary tree (TT) leaf node size; i.e., the minimum width or height of a ternary tree leaf node. In contrast to the BT Split, to be allowed a minimum TT partition size is considered. So, a current block can be split thanks to a horizontal TT split if its height is greater than twice the MinTTSize. And a current block can be split thanks to a vertical TT split if its width is strictly greater than twice the MinTTSize. • MinQTSize: is the minimum allowed quadtree (QT) leaf node size; So, for the current block, if the current block width is not greater than the MinQTSize, the QT split mode is not allowed. Figure 35 illustrates an example of MinQTSize. By considering a CTU 128, in the illustrated example the MinQTsize is equal to 16. There is currently no definition of a MaxQTSize, and so it corresponds to the CTU size. The minimum allowed width and height of a block is 4. A set of depth parameters and variables are also defined. • Depth: is the depth of the tree. According to the VVC specification a leaf is a terminating node of a tree, where a root node of a tree has depth 0. For each split the depth value is incremented (by 1). • MttDepth: it is the depth of a multi tree. The multi tree includes BT splits and TT splits. • The MaxMttDepth is defined in VVC specification which is the maximum allowed multi tree depth. So, MttDepth is less than or equal to maxMttDepth. Figure 36 illustrates the concept of MaxMttDepth. In VVC these variables are defined independently for Luma and Chroma. In the VVC Test Model (VTM) software and ECM software, there are several other variables corresponding to depths. The variable currBtDepth is the current number of BT splits used to reach the current tree node (or the current block). The variable currMttDepth is the current number of BT splits and TT splits used to reach the current tree node (or the current block). The currQtDepth is the current number of QT splits used to reach the current tree node (or the current block). The variable MaxBtDepth is the maximum allowed binary tree depth, i.e., the lowest level at which binary splitting may occur, where the quadtree leaf node is the root (e.g., 3). QT BT TT Encoding choice In the VTM and ECM software several encoder side optimizations are used for the QT BT TT encoding choice. One such optimization includes determining whether the QT split is tested before the BT split. The condition is whether at least one CU on the left or above the current coding tree node has a QT depth larger than the QT depth of the current coding tree node; and if the CU width represented by the current coding tree node is greater than MinQTSize * 2. If this condition is true then it is determined that the QT split is tested before the BT and the splits will be treated as the following order: -No Split -QT -BT Horizontal -BT Vertical -TT Horizontal -TT Vertical Otherwise, the order will be: -No Split -BT Horizontal -BT Vertical -TT Horizontal -TT Vertical -QT This order is important as according to some optimizations, several splits will not be tested depending on results of the first tested modes. So, when the QT split is tested last there are a lot of occasions where it will not be evaluated. In addition to the specific order, some other restrictions exist to limit the number of evaluations of some partitioning. For example, TT is not evaluated, if: -BT has been evaluated -And BT was not selected as the best. -And when there is a no residual for the current best CU 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 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 )71: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, subTnlndex, chType ) { Descriptor if( IntraSubPartitionsSplitType != ISP NO SPLIT && treeType = = SINGLE TREE &&subTnlndex = = 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 = = ISPNOSPLIT (IntraSubPartitionsSplitType != ISP NO SPLIT && subTnlndex = = NumlntraSubPartitions - 1)) if( (treeType = = SINGLE TREE | | treeType = = DUAL TREE CHROMA) &&sps chroma format idc != 0 && ((IntraSubPartitionsSplitType == ISP NO SPLIT &&!(cusbtflag && (( subTnlndex = = 0 &&cu_sbt_pos_flag) ( subTnlndex ==1 &&!cu_sbt_pos_flag)))) (IntraSubPartitionsSplitType != ISP NO SPLIT && ( subTnlndex = = 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 &&(( subTnlndex = = 0 &&cu_sbt_pos_flag) ( subTnlndex ==1 &&!cu_sbt_pos_flag))) && (( CuPredMode[ chType ][ xO ][ yO ] == MODEINTRA && !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 && ( subTnlndex <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 &&ppscuqpdeltaenabledflag &&!IsCuQpDeltaCoded) { cuqpdeltaabs ae(v) if( cu qp delta abs ) cuqpdeltasignflag 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 && IIsCuChromaQpOffsetCoded) { cuchromaqpoffsetflag ae(v) if( cu chroma qp offset flag &&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 && (IntraSubPartitionsSplitType == 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, tu cr coded flag, 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( sps mts enabled flag &&cusbtflag &&cldx ==0 &&log2Tb Width = =5 &&log2TbHeight <6 ) Log2ZoTb Width = 4 else Log2ZoTbWidth = Min( log2TbWidth, 5 ) if( spsmtsenabledflag &&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— abslevelgtx_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 ] + abslevelgtx_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 = shsigndatahidingusedflag && (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 ) && (IsignHiddenFlag (n != firstSigScanPosSb ))) coeffsign_flag[ n ] ae(v) } if( shdepquantusedflag) { 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 to 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. EMBODIMENTS Aspect 1 - Use of Energy Values In an aspect, 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 aspect. 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 aspect, 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. Aspect 1A Position Inference In an aspect, the position of the subblock residual is determined thanks to the algorithm described previously. For the description of this aspect, 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. aspectAn advantage of this aspect 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 aspect, 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. Aspect 1.1 Sign prediction change In an aspect, 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 aspect, the sign prediction process can use both reconstructed samples and the predictor samples to determine the sign predictor values. Figure 18 illustrates this aspect. 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 aspect is that the sign prediction can be computed even if the reconstructed samples are not yet available. Aspect 2 The energy value for a sample is a Gradient value In an aspect, the energy for a sample is a Gradient value. An advantage of this aspect 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. Aspect 2.1.1 The gradient is a Sobel gradient In an aspect, 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 aspect 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. Aspect 2.1.2 The energy computed is based on Sobel Kernels and sum of absolute values In an alternative aspect 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 aspect 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 aspect is small. Aspect 2.2 The Sobel kernels are larger In an aspect, 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 aspect 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. Aspect 2.3.1 Mirror for sample in the border In an aspect, 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 aspect. 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 aspect is a coding efficiency improvement as all samples of the predictor have an energy value. Aspect 2.3.2 The positions around the border of the block predictor have no energy value. In an aspect, 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 aspect 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. Aspect 2.4 The size of the Sobel Kernels depends on the size of the block In an aspect, the size of the Sobel Kernels depends on the size of the block. An advantage of this aspect is a coding efficiency improvement, has the kernel is more adapted to the block size. Aspect 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 aspect, 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 aspect 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. Aspect 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 aspect, 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 aspect is coding efficiency improvement for the reasons mentioned previously. Aspect 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 aspect, 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 aspect 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. Aspect 2.5.1 Basic algorithm In an aspect, 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 Epost?] = / y ^[cij] 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 Efi] [ / ] 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. Aspect 2.5.2 Fast Algorithm determination In an aspect, 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 ErowUl = ^£[i][ / l 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[^] Ep0S [i 1] Erow [i 1] "I- Erow p + ” + lj 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 aspect 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 Aspect 3 The direction vertical or horizontal of the transform block is inferred based on the energy values. In an aspect, 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 aspect. For this aspect, 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 aspect 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. Aspect 3.2 No position inference and direction inference In an aspect, the position horizontally or vertically is signalled and the direction is inferred. Consequently, compared to the previous aspect, 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 aspect 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 aspect 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. Aspect 3.2.1 Aspect related to Gradient are also valid for the direction inference. In an aspect, additionally to the previous one, a similar energy computation as described in the previous aspects 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 aspect 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 aspects, the height and the width are not known until that the algorithm is applied. This implies that the parsing only is not possible. Aspect 4 When direction inference is enabled the full decoding process is applied In an aspect, when direction inference algorithm is enabled the full decoding process is applied. An advantage of this aspect is the coding efficiency. Indeed, as no additional constraint is applied, the coding efficiency is better than other solutions proposed below. Aspect 5 The direction inference implies a specific decoding in order that the parsing does not require the usage of the reconstructed samples. In an aspect, when the direction inference implies a specific decoding in order that the parsing does not require the usage of the reconstructed samples. In this example, 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 example, 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 aspect is that the parsing of the bitstream does not require a full decoding process which is an important constraint for many video applications. Aspect 5.1 The transform coefficients block extracted from the bitstream for the proposed method has always the same direction In an aspect, 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 aspect 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 aspect 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. Aspect 5.1.2 This direction is vertical In an aspect, additional to the previous one, the direction selected as the default selection is the vertical direction. Figure 19 illustrates these aspects. 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 aspect 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. Aspect 5.1.3 When the vertical direction is not possible, the direction is horizontal In an aspect, 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 aspect 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 aspect 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 aspects and solve the parsing issue, the transform block direction needs to be changed at encoder and decoder side which is not evident. The following aspects relates to this change of the direction. Aspect 6.1 The transform coefficients block with direction different to the default direction is transpose at encoder side In an aspect, 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 0,0 An advantage of this aspect is the coding efficiency, as the transposition is an efficient way to the transform block data. It will be appreciated that this aspect 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. Aspect 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 aspect, 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 aspect is the coding efficiency, as the transposition is good way to the transform block data. It will be appreciated that this aspect 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. Aspect 6.3 The transposition is applied when the initial block is a square block. In an aspect, the transposition is applied when the initial block is a square block. An advantage of this aspect is that the parsing issue is solved when the direction inference is applied only on square blocks. It will be appreciated that this aspect 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. Aspect 6.3.1 When the initial block is not a square block the direction is not inferred and signalled. In an aspect, 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 aspect is that it solves fully the parsing issue when the direction inference is applied. It will be appreciated that this aspect 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 Aspect 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 aspect, 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[scanOrderl6x4[i]] signBuffSignalled [scanOrder8x8[i]] = signBuff [scanOrder 16x4[i]] signScan!dxBuff_ Signalled [scanOrder8x8[i]] = signScanldxBuff [scanOrderl6x4[i]] } An advantage of this aspect is that it solves the parsing when the direction is inferred. It will be appreciated that this aspect 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. Aspect 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 aspect, 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 aspect is that it solves the parsing when the direction is inferred. It will be appreciated that this aspect 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. Aspect 7.2 When the direction is inferred the sign prediction is applied only on the top left 4x4 block. In an aspect, 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 aspect 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 aspect 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. Please note that this embodiment corresponds to Luma coding or for Chroma coding without sub-sampling. For Chroma coding, when the Chroma is sub-sampled compared to the Luma this embodiment is adapted to the size of the Chroma. For example, for the 4:2:0 coding, the size considered for the sign prediction is a 2x2 top left block. Aspect 7.2.1 More flexible restriction In an aspect, 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 aspect is a coding efficiency improvement compared to the previous aspect as the sign prediction is applied for more coefficients. But this aspect 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 aspect 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. Please note that this embodiment can be adapted for the Chroma coding depending on the sub-sampling as noted above with respect to Aspect 7.2. Aspect 7.3 Set the coefficient equal to 0 when it can create parsing issue with the sign prediction In an aspect, 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 aspect 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 aspects Aspect 8.1 When the initial block is a square block, a transposition is applied. In an aspect, 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 aspect is a coding efficiency improvement as the transposition is interesting in term of coding efficiency. It will be appreciated that this aspect 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. Aspect 8.1.1 And the sign prediction is applied on all neighbouring coefficients. In an additional aspect, 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 aspect 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 aspect 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. Aspect 8.2 When the block has its height or its width equals to 128, the direction of the block is transmitted. In an aspect, 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 aspect 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 aspect saves in average decoding time as the position and the direction doesn’t need to be determine at decoder side. Aspect 8.2.1 At encoder side both directions can be evaluated and the best one is transmitted inside the bitstream. In an aspect, 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 used to select the best coding direction. An advantage of this aspect is coding efficiency improvement. Aspect 8.2.2 At encoder side the direction inference is used to determine the direction In an alternative aspect, when the direction is explicitly signalled, at encoder side, the direction inference algorithm is used to determine the best directions. An advantage of this aspect is complexity reduction compared to the previous aspect. Aspect 8.3 When the direction is explicitly transmitted, the sign prediction is not limited. In an aspect, 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 aspect is the coding efficiency, especially when the direction is signalled for the large block sizes. ASBT and SBT relationship In an aspect, ASBT can be decoded as well as SBT. Both sub sampling transform block modes are allowed. In this aspect, ASBT refers to the previous aspects where at least the position is inferred or at least the direction is inferred (or both are inferred). An advantage of this aspect 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. Aspect 9.1 ASBT is applied to SBT TU In an aspect, AB ST is applied to SBT transform unit. In this aspect, 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 aspect 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 aspect 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. Aspect 9.2 ASBT redundant positions to the SBT are avoided In an aspect, when AB ST 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 aspect is coding efficiency increases as several signalling can’t produce the same result. Aspect 9.3 ASBT redundant positions to the SBT are allowed In an aspect, when AB ST 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 aspect is coding efficiency increases as it creates an additional competition for a sub partitioning which has a high chance to be selected. This aspect is more efficient than the previous one and less complex as no additional check is needed. Aspect 9.4 Only position inference In an aspect, 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 aspect the direction selected for ASBT is the same as for SBT. An advantage of this aspect 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. Aspect 9.5 Both position and direction inferences In an aspect, when ASBT is enabled for an SBT transform unit, position and direction inference are allowed. An advantage of this aspect 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 aspect, less conditions are needed which simplifies the process. Aspect 9.6 ASBT sub division 4 not allowed when SBT In an aspect, 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 aspect is a coding efficiency improvement as the AB ST 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. Aspect 9.6.1 ASBT sub division 4 not allowed when SBT is split by 4 In an aspect, ASBT sub division 4 is not allowed for a SBT transform unit when the SBT is a division by 4. In this aspect, the flag for the sub-division is not transmitted and decoded only when SBT is a split by 4. An advantage of this aspect is better coding efficiency than previous aspect. Aspect 9.6.2 ASBT sub division 4 not allowed when SBT for small block size In an aspect, 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 aspect is coding efficiency improvement and complexity reduction at encoder side as ASBT after SBT is less needed for small block sizes. ASBT transform. As described previously, SBT has a specific transforms combination adapted for each sub partition. Aspect 10 Same as SBT In an aspect, the transform selected for an ASBT sub partitioning is the same as those used for SBT. An advantage of this aspect is a simple solution. Aspect 10.1 DST-7 In an aspect, 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 aspect is coding efficiency based on the observations of coding efficiency did for SBT. It will be appreciated that this aspect 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. Aspect 10.2 DCT-2 In an aspect, the transform selected for an ASBT sub partitioning is the DCT-2. An advantage of this aspect is a coding efficiency increase compared to the 2 previous aspects. 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 aspect 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. Aspect 10.2.1 Preferred aspect Same as SBT for SBT TU, DCT-2 otherwise In an aspect, 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 aspect is coding efficiency improvement compared to the previous aspect. It will be appreciated that this aspect 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. Aspect 10.3 More general extension In an aspect, 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 aspect 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 aspect 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 Aspect 11 Same ASBT process for Chroma In an aspect, ASBT is applied similarly for Luma than for Chroma. In this aspect, the related flags or parameters values for chroma are decoded or inferred independently to those decoded or inferred for Luma. In a preferred aspect only one set of flags and parameters are used for both chroma components. An advantage of this aspect is an alignment of Luma process and chroma process for ASBT which simplify the implementation. It will be appreciated that this aspect 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. Aspect 11.1 Use same ASBT parameters from Luma (position and / or direction) for Chroma In an aspect, the ASBT parameters from Luma are applied for Chroma. In this aspect, 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 aspect is coding efficiency improvement compared to the previous aspect. 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. Aspect 11.2 Do not apply any ASBT process for Chroma In an aspect, 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 aspect is the coding efficiency. As surprising effect this configuration is the best one. It will be appreciated that this aspect 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 VVC or other SBT modes available in the prior art or other SBT that is not yet invented. EMBODIMENTS Signalling of the ASBT flag Embodiment 1 ASBT method is signalled thanks to a flag In an embodiment, 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 embodiment 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. 10 Embodiment 1.1 Inside the transform unit In an embodiment, the enabled flag of the ASBT method is transmitted in the transform unit. The following table of syntax elements illustrates this embodiment. In this table the tuASBTenabledflag is transmitted after the tu joint cbcr residuai nag and before the transform_skip_flag. And before the residual_coding( ). transform_unit( xO, yO, tbWidth, tbHeight, treeType, subTuIndex, chType ) { Descriptor if( spsjoint cbcr enabled flag && (( CuPredMode[ chType ][ xO ][ yO ] == MODEINTRA && (tu cb coded_flag[ xC ] [ yC ] tu_cr_coded_flag[ xC ][ yC ])) (tu cb coded flagf xC ][ yC ] &&tu cr coded flagf xC ][ yC ])) &&chromaAvailable ) tu_joint_cbcr_residual_flag[ xC ] [ yC ] ae(v) if (ASBT allowed) tuASBTenabledflag ae(v) if (tuASBTenabledflag) tuASBTSubdivisionflag ae(v) if( tucbcodedflagf xC ][ yC ] &&treeType != DUAL TREE LUMA) { if( sps transform skip enabled flag &&!BdpcmFlag[ xO ][ yO ][1 ] &&wC <= MaxTsSize &&hC <= MaxTsSize &&!cu_sbi_flag) transform_skip_flag[ xC ][ yC ][ 1 ] ae(v) if( ’transform skip flagf xC ]fyC ][ 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) I This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency. The signalling inside the transform 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 CABAC signalling, this position offers an interesting compromise in term of rate. Embodiment 1.2 The decoding of the enabled ASBT flag depends on the usage of some previous syntax elements or variables In an embodiment, 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 embodiment, 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 embodiment, the value of this variable depends on the usage of some previous syntax elements or variables. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment 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. Embodiment 1.2.1 If the current slice is an Intra slice In an embodiment, 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 WC 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, 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. Embodiment 1.2.2 If the current CU is Intra In an embodiment, 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 ASBTallowed 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the same as previous one. In this embodiment, the slice is an Inter slice. Embodiment 1.2.3 If the current CU is GPM In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment 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. Embodiment 1.2.4 If the current CU is IBC In an embodiment, 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: ASBT allowed = ASBT allowed 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency. Indeed, ASBT method is not particularly efficient for IBC. Embodiment 1.2.5 If the current CU is Palette In an embodiment, 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 ASBTallowed 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment 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. Embodiment 1.2.6 If the current CU is Skip or MMVD skip In an embodiment, 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 ASBT allowed 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, is of course the coding efficiency as the Skip mode has no residual. Embodiment 1.2.7 If a flag, inside a header, disallows ASBT In an embodiment, a flag transmitted inside a header allows or not the usage of ASBT method. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, 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. Embodiment 1.2.7.1 The header can be In an additional embodiment, the header can be SPS, PPS, picture header and Slice header. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, 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. One example of the usage of these headers can one spsASBTenabledflag transmitted inside the SPS. If this flag is equal to 0, ASBT is not used for the current sequence. If this spsASBTenabledflag is equal to 1 a second flag is transmitted. This flag sps_ABST_signaling_at_PH_flag indicates that ASBT can be enabled or disabled at picture level thanks to a picture header flag transmitted for each picture header. This picture header flag is the ph ASBT enabled flag. It is decoded if sps_ABST_signaling_at_PH_flag is set equal to 1, otherwise, if sps_ABST_signaling_at_PH_flag is equal to 0 (and sps_ASBT_enabled_flag equal to 1), it is not decoded and inferred to be equal to 1. Thanks to this signalling, one possible encoder usage is to set the spsASBTenabledflag equal to 1 and sps_ABST_signaling_at_PH_flag equal to 0 for the Random-access configuration, in that case ASBT is always applied for Random access configuration. And for Low delay configuration, the sps_ASBT_enabled_flag is set equal to 1 and sps_ABST_signaling_at_PH_flag equal to 1. In that case ASBT can be enabled or disabled picture by picture. And for each Picture, ASBT is enabled or disabled. For example: -When the QP set in the SPS for the sequence is inferior or equal to 22 and the temporal depth of the current picture is strictly inferior to 2, ASBT is enabled and the phASBTenabledflag is equal to 1 and it is encoded and decoded. Otherwise, (when the temporal depth is superior or equal to 2) ASBT is not allowed and the phASBTenabledflag is equal to 0 and it is encoded and decoded -When the QP set in the SPS for the sequence is not inferior or equal to 22 and it is inferior or equal to 27, ASBT is enabled for all pictures. So, all ph_ASBT_enabled_flag are equal to 1 and encoded and decoded. Or alternatively, the sps_ABST_signaling_at_PH_flag is set equal to 0 and encoded and decoded in the SPS. And all ph_ASBT_enabled_flag are inferred to be equal to 1 at encoder and decoder side. - When the QP set in the SPS for the sequence is not inferior or equal to 22 and it is not inferior or equal to 27, ASBT is enabled for pictures with a temporal depth strictly superior to 0 otherwise it is not allowed. In one additional example, the when the QP set in the SPS for the sequence is not inferior or equal to 22 and it is not inferior or equal to 27, and it is inferior to 37, ASBT is enabled for pictures with a temporal depth strictly superior to 2 otherwise it is not allowed. Embodiment 1.2.7.2 Not allowed thanks to an SPS flag when Palette enabled In an embodiment, 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 embodiment 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the same as mentioned in the previous embodiment for the palette mode. Embodiment 1.2.7.2.1 Not allowed thanks to the SPS Palette flag In one alternative embodiment, 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 embodiment: seq_parameter_set_rbsp() { Descriptor spspaletteenabledflag u(l) if(! sps_palette_enabled_flag) { spsASBTenabledflag u(l) } • •• } This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the same as previous one and additionally is avoid the transmission of at least one header flag. Embodiment 1.2.8 Combinations In an embodiment, all proposed restriction can be combined. The following pseudo code gives an example of this combination: ASBTallowed = true ASBTallowed = ASBT allowed 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the cumulative coding efficiency. Embodiment 1.3 The decoding of the enabled ASBT flag depends on the size of the of the current block. In an embodiment, the decoding of the enabled ASBT flag depends on the size of the of the current block. In this embodiment 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, 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. Embodiment 1.3.1 If height and width are less than or equal to 4 In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is similar to the previous one. Embodiment 1.3.2 If height and width are less than another size In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, 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. Embodiment 1.3.3 If height and width are strictly greater than 128 In an embodiment, if height or width are strictly greater than 128, ASBT is not allowed. The minimum transform size is limited to 128. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, is the complexity of the implementation and clean design as no other transform needs to be added. Embodiment 1.3.4 If height and width are strictly greater than another size In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, is a coding efficiency improvement and complexity reduction at encoder side. Signalling of the Subdivision Embodiment 2 When ASBT enabled flag is true, the sub division information is transmitted In an embodiment, when ASBT enabled flag is true, the sub division information is transmitted. Additionally, is coded just after the ASBT enabled flag. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, is the coding efficiency as the sub division is the most difficult parameters to predict and this transmission is necessary. Embodiment 2.1 This information is a flag. In an embodiment, this information is a flag. In this embodiment, the two subdivisions are considered and these subdivisions are the division by 2 and the division by 4. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, is the same as the previous one. Embodiment 2.1.1 This information can be more than one flag. In an alternative embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, is additional coding efficiency, but it increases also the encoding time complexity. Embodiment 2.2 When the sub division is not possible the flag is not transmitted. In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency, as some unneeded bits are not transmitted. Embodiment 2.2.1 If the direction is inferred and if both directions are possible. In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the same as the previous one. Embodiment 2.2.2 If the direction is not inferred or if only one direction is possible In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the same as the previous one. Embodiment 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 embodiment, 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 embodiment is complexity reduction at decoder side as the direction does not need to be determine. Signalling of the direction Embodiment 3 When the direction is not inferred one flag indicates the direction In an embodiment, when the direction is not inferred one flag indicates the direction. An advantage of this embodiment is a complexity reduction at encoder side. And for some content it creates a coding efficiency increase. Embodiment 3.1 Signalled after the enabled flag and before the sub division flag or information In an embodiment, 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. The following table of syntax elements illustrates this embodiment, where the direction flag is tu ASBT Direction flag. transform_unit( xO, yO, tbWidth, tbHeight, treeType, subTuIndex, chType ) { Descriptor if( spsjoint cbcr enabled flag && (( CuPredModef chType ][ xO ][ yO ] == MODE INTRA && (tu cb coded flagf xC ] [ yC ] tu cr coded flagf 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 (ASBT allowed) tuASBTenabledflag ae(v) if (tuASBTenabledflag) tuASBTDirection_flag ae(v) if (tuASBTenabledflag) tuASBTSubdivision _flag ae(v) if(tu_cb_coded flag[xC][yC] &&treeType != DUAL. TREE LUMA) { if( spstransformskipenabledflag &&!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 ] shtsresidualcodingdisabledflag ) residual_coding( xC, yC, Log2( wC ), Log2( hC ), 1 ) else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 1) 1 An advantage of this embodiment 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. Embodiment 3.2 Only when both directions are available In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, is a coding efficiency increase as unneeded bits are not transmitted. Embodiment 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 embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment, 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. Embodiment 3.2.2 When width*height strictly greater than 4096 In an embodiment, 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 embodiment, is the same as previous embodiment. Additional Limitations when ASBT flag is enabled Embodiment 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 embodiment, when the ASBT enabled flag is decoded and it is equal to 1 at least one another syntax element is not decoded. In this embodiment, the unavailability of ASBT with other tools is used to reduce the number of bits transmitted. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency improvement as some unneeded bits are not transmitted. Embodiment 4.1 Transform Skip flag In an embodiment, 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 (ASBTallowed) tuASBTenabled _flag ae(v) if (tuASBTenabledflag) tuASBTSubdivisionflag 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( !transform_skip_flag[ xO ][ yO ][ 0 ] sh ts residual coding disabled flag) 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) 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&& ! tu ASBT enabled flag) transform skip flagl 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 ) } } Moreover, the transform Skip flag is inferred to be equal to 0 when not transmitted due to the enabling of ASBT. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. 5 In this embodiment it is considered that transform skip is not allowed with ASBT. An advantage of this embodiment is the same as previous one. Embodiment 4.2 LFNST In an embodiment, when ASBT enabled flag is decoded and it is equal to 1 the 10 information for LFNST, LFSNT index, is not transmitted and inferred to be equal to 0. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. In this embodiment it is considered that LFNST is not allowed with ASBT. An advantage of this embodiment is the same as previous one. In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. In this embodiment it is considered that MTS is not allowed with ASBT. An advantage of this embodiment is the same as previous one. Context derivation for ASBT enabled Flag Embodiment 5 The ASBT enabled flag is CABAC coded In an embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment 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. Embodiment 5.1 Initialization when one context In an embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment 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. Embodiment 5.2 The ASBT enabled flag has a context increment value derivation In an embodiment, the ASBT enabled flag has several contexts and a context increment value is derived. This embodiment can be applied for other subblock residual coding. An advantage of this embodiment is a coding efficiency improvement, as the ASBT method has not the same probability of selection depending on some parameters described in the following. Embodiment 5.2.1 The context is determined based on the use of SBT In an embodiment, the context increment value is determined based on the use of SBT. In this embodiment, when the cusbt 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment, 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. Embodiment 5.2.1.1 Initialization when two contexts are used based on SBT In an embodiment, 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 embodiment in the coding efficiency increase as ASBT is more selected when SBT is used but largely less than 50% of times. Embodiment 5.2.2 The context increment value is based on the initial block size In an embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment in the coding efficiency increase as ASBT selection is correlated to the block size. Embodiment 5.2.2.1 Initialization when the context increment value is based on the initial block size In an embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment is the coding efficiency increase as the ASBT selection is larger for large blocks than for small blocks. Context derivation for Subdivision Embodiment 6 The Subdivision information is CABAC coded In an embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment 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. Embodiment 6.1 The Subdivision information has a context for each bin In an embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment, is similar than the previous one with the advantage of disadvantage to code more than two subdivisions. Embodiment 6.2 The Subdivision information has a context increment value derivation In an embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment is a coding efficiency improvement, as the ASBT subdivision has not the same probability of selection depending on some parameters described in the following. Embodiment 6.2.1 The context derivation is the same as for the ASBT enabled Flag In an embodiment, 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 embodiment, it is the same derivation not the same context increment value. This embodiment can be applied for other subblock residual coding where in that case the subblock division information has a similar or same derivation of the context increment value than the context derivation of this subblock residual coding enabled flag. An advantage of this embodiment, is the simplicity of implementation and clean design as several variables share the same context derivation. Embodiment 6.2.2 The context derivation is based on the use of SBT In an embodiment, when the subdivision information (flag or not) is CABAC coded, the context derivation is based on the use of SBT. In this embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment is a coding efficiency improvement. Similarly, to the ASBT flag, the selection of the subdivision depends on the SBT selection. Embodiment 6.2.2.1 Initialization In an embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment 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. Embodiment 6.2.3 The context is based on the initial block size. In an embodiment, when the subdivision information is CAB AC 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment 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 Embodiment 7 The Direction flag is CABAC coded In an embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment 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. Embodiment 7.1 The Direction flag has a context derivation In an embodiment, the direction flag has several contexts and a context increment value is derived. This embodiment can be applied for other subblock residual coding. An advantage of this embodiment is a coding efficiency improvement, as the ASBT direction has not the same probability of selection depending on some parameters described in the following. Embodiment 7.1.1 Same context derivation as ASBT enabled Flag In an embodiment, when the direction flag is CAB AC 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 embodiment, it is the same derivation not the same context increment value. This embodiment can be applied for other subblock residual coding where in that case the subblock direction flag has the same derivation of the context increment value than the context derivation of this subblock residual coding enabled flag.. An advantage of this embodiment, is the simplicity of implementation and clean design as several variables share the same context increment derivation. Embodiment 7.1.2 The Direction flag based on the use of SBT In an embodiment, the direction flag is CABAC coded and its context increment derivation is based on the use of SBT. In this embodiment, 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 embodiment can be applied for other subblock residual coding. An advantage of this embodiment, is simplicity of implementation and clean design as several variables share the same context derivations. Embodiment 7.1.3 The Direction flag based on the SBT sub partition In an embodiment, 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. This embodiment can be applied for other subblock residual coding. An advantage of this embodiment is a coding efficiency improvement as the direction flag depends on the SBT sub partition selection. Signalling position inside Transform unit Embodiment 8 The ASBT method is decoded after transform Skip flag In an embodiment, 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 == ISPNOSPLIT) &&!cu_sbt_flag &&! tuASBTenabledflag) transform_skip_flag[ xO ][ yO ][ 0 ] ae(v) if (ASBTallowed) tuASBTenabledflag ae(v) if (tuASBTenabledflag) tuASBTSubdivisionflag 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 &&! tuASBTenabledflag) transform_skip_flag[ xC ][ yC ][ 1 ] ae(v) if (ASBT__allowed) 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&& ! tn ASBT enabled flag) transform_skip_flag[ xC ][ yC ][ 2 ] ae(v) if (ASBTallowed) tuASBTenabledflag ae(v) if (tu ASBT enabled flag) tuASBTSubdivisionflag ae(v) if( !transform_skip_flag[ xC ][yC ][ 2 ] sh ts residual coding disabled flag) else residual_ts_coding( xC, yC, Log2( wC), Log2( hC), 2 ) } } This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is sometimes a coding efficiency improvement, especially when the amount of transform skip selection is larger than the ASBT selection. Embodiment 8.1 If the transform Skip is not enabled In an embodiment, 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, 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 && (IntraSubPartitionsSplitType == ISPNOSPLIT) &&!cu_sbt_flag &&! tuASBTenabledflag) transform_skip_flag[ xO ][ yO ][ 0 ] ae(v) if( !transform_skip_flag[ xO ][ yO ][ 0 ] shtsresidualcodingdisabledflag) { if (ASBTallowed) tuASBTenabledflag ae(v) if (tu ASBT enabled flag) tu ASBT Subdivision flag 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( sps transform skip enabled flag &&!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 ] sh ts residual coding disabled flag) { if (ASBT allowed) tuASBTenabledflag ae(v) if (tuASBTenabledflag) 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&& ! tuASBTenabledflag) transform_skip_flag[ xC ][ yC ][ 2 ] ae(v) if( !transform_skip_flag[ xC ][yC ][ 2 ] sh ts residual coding disabled flag) { if (ASBTallowed) tu ASBT enabled flag ae(v) if (tu_ASBT_enabled__flag) 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency increase as unneeded bits are not transmitted. Signalling position in residual coding Embodiment 9 The ASBT method is decoded in the residual coding In an embodiment, the ASBT method is decoded in the residual coding instead of the transform unit. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency increase sometimes as described in the following additional embodiments. Embodiment 9.1 The ASBT method is decoded after the syntax elements related to the last significant coefficient position In an embodiment, the ASBT method is decoded after the syntax elements related to the last significant coefficient position. The following table of syntax elements illustrates this embodiment: residual_coding( xO, yO, log2TbWidth, log2TbHeight, cldx) { Descriptor if( spsmtsenabledflag &&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 ) 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 « (Log2ZoTb Width + 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— } if (ASBTallowed) tuASBTenabledflag ae(v) if (tu ASBT enabled flag) 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 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. There is no advantage of this embodiment alone. The advantage is obtained thanks to some of the following additional embodiments. Embodiment 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 In an embodiment, 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 alternatively shifted by 1. The following table of syntax elements illustrates this embodiment: residual_coding( xO, yO, log2TbWidth, log2TbHeight, cldx) { Descriptor if( spsmtsenabledflag &&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( 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— } if (ASBT allowed &&lastScanPos >(Height * Width) / 2 ) tuASBTenabledflag ae(v) if (tu_ASBT_enabled_flag) tuASBTSubdivision_flag ae(v) lastScanPos— In this table, the change is for the condition to decode tu ASBT enabled flag which it is changed by “if (ASBT allowed &&lastScanPos >(Height * Width) / 2 )” as described previously. 5 An advantage of this embodiment is the coding efficiency, as some unneeded bits are not transmitted. Embodiment 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 10 transform unit In an embodiment, 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 15 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 embodiment: residual_coding( xO, yO, log2TbWidth, log2TbHeight, cldx) { Descriptor if( spsmtsenabledflag &&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 « (Log2ZoTb Width + 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 « StatCoeff[ 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) tuASBTSubdivisionflag ae(v) lastScanPos— Alternatively, when more subdivisions are possible some adapted conditions are applied. This embodiment can be applied for other subblock residual coding, as well as for the 5 regular SBT. An advantage of this embodiment is the coding efficiency, as some unneeded bits are not transmitted. Embodiment 9.3 The last significant coefficient position is decoded by taking into account 10 the size of the initial TU even if the ASBT method is used. In an embodiment, 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, lastsigcoeffxprefix, lastsigcoeffyprefix, lastsigcoeffxprefix, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment 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. Embodiment 9.3.1 When ASBT method is used the size of transform block is updated for the decoding of other syntax elements. In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is that the bitstream is decodable. 5 Embodiment 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 In an embodiment, the ASBT method is decoded after the syntax element related to the last significant coefficient position, as described in the previous embodiment. And only if the 10 last significant coefficient position is greater than 1. In this embodiment, 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 embodiment: 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 (ASBT allowed &&lastScanPos >(Height * Width) / 2 &&lastScanPos >1) tuASBTenabledflag ae(v) if (tu_ASBT_enabledJflag&& lastScanPos >(Height * Width) / 4) tuASBTSu bdivisionfl ag ae(v) lastScanPos— This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency increase. As a surprising effect, for 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 Embodiment 10 The ASBT method signalling can change In an embodiment, the position of the signalling of ASBT can change. In this embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency thanks to an adaptative signalling. Embodiment 10.1 The ASBT method signalling depends on a value of QP In an embodiment, the position of the signalling of ASBT depends on the value of the QP. In this embodiment 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency improvement thanks to this QP adaptation. Embodiment 10.1.IThe ASBT method signalling depends on the value of the QP for the current transform unit In an embodiment, the QP is the QP of the current transform unit. When it is signalled at transform unit level. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the same as the previous one. Embodiment 10.1.2 The ASBT method signalling depends on the value of the QP of the slice In an embodiment, the QP is the QP transmitted for the current slice header. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is a coding efficiency increase compared to the previous embodiment. The usage of this high level QP is globally better in term of coding efficiency. Embodiment 10.1.3 The ASBT method signalling depends on the value of the QP of the picture header In an embodiment, the QP is the QP transmitted for the current picture header. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency increase compared to the previous embodiment. The usage of this high level QP is globally better in term of coding efficiency. Embodiment 10.1.4 The ASBT method signalling depends on the value of QP of the SPS In an embodiment, the QP is the QP transmitted inside the SPS. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the simplicity to determine the correct QP to switch between method, without a big impact on additional coding efficiency. Embodiment 10.2 The ASBT method signalling position depends on a value transmitted in a header In an embodiment, the ASBT method signalling position depends on value transmitted in a header. In this embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment 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. Embodiment 10.2.1 Header is SPS In an embodiment, the ASBT method signalling position depends on a value transmitted in the SPS. This embodiment 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency as described for the previous embodiment. Embodiment 10.2.2 Picture Header In an embodiment, the ASBT method signalling position depends on value transmitted in the picture header. This embodiment is more flexible than the previous one. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency and more flexibility than the previous one. Embodiment 10.2.3 Slice Header In an embodiment, the ASBT method signalling position depends on value transmitted in the slice header. This embodiment is more flexible than the previous one. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency and more flexibility than the previous one. Embodiment 10.2.4 Encoder selection based on signalling cost In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is an efficient selection, adapted to the content without multiple encodings to select the best method. Embodiment 10.2.5 Encoder selection based on heuristics In an alternative embodiment, the selection of the best position signalling is based on heuristics. For an example of this embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency improvement with a simple criterion Embodiment 10.3 The position depends to the temporal ID of the current picture In an additional embodiment, the selection of the best position signalling is based on the temporal ID of the current picture. For an example of this embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency improvement with a simple criterion. Embodiment 10.4 The position depends on non-reference frame. In an additional embodiment, the selection of the best position signalling is based on the non-reference 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is the coding efficiency improvement with a simple criterion. Embodiment 10.5 The switch is between 2 signalling methods In an embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment 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. Embodiment 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 embodiment, 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 embodiment, 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 embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is a small impact on coding efficiency for an increase of encoding time. Embodiment 12.1 The criterion is the same for both subdivisions In an additional embodiment, the proposed criterion is applied for both subdivisions, division by 2 and by 4. This embodiment can be applied for other subblock residual coding, as well as for the regular SBT. An advantage of this embodiment is that it gives the best compromise between complexity and coding efficiency. Figure 29 illustrates one application of these embodiments. In this figure, first the full TU (2901) is evaluated as in an implementation without ASBT. Then, (if ASBT can be applied for the current TU,) the distortion of initial TU is computed. Specifically, the distortion between the residual between the original block and the block predictor is computed, and represented by the variable distResidual. In the same way the distortion for the related ASBT residual for subdivision by 2 is computed and represented by distResidualASBT. These two distortions are compared, as described previously (2902), to know if the RD evaluation of the ASBT subdivision by 2 (2903) is applied or if the criterion for ASBT subdivision by 4 (2904) is processed. If the criterion of this early termination (2904) is true, the RD evaluation of ASBT subdivision by 4 (2905) is bypassed (2906), otherwise the RD evaluation is applied (2905). Encoding choice: Change Order Emb.Encl ASBT is not evaluated at encoder side based on the results of the previous residual evaluation In one embodiment, ASBT is not evaluated at encoder side based on the results of the previous residual evaluation. In this embodiment, ASBT for one or more subdivisions is not evaluated based on the previous residual RD evaluation. This residual RD evaluation can be one or more ASBT residual coding evaluation. This embodiment and additional embodiment are not limited to one or 2 possible ASBT subdivisions and can include more subdivisions. An advantage of this embodiment is an encoding time reduction, as ASBT is less evaluated. Emb.Encl.l When the previous residual evaluation obtains no residual In one additional embodiment, ASBT is not evaluated when the result of the previous residual evaluation obtained is that it is not needed to encode a block residual. It means that the residual is equal to 0. This embodiment, can be applied for each ASBT subdivision individually. Figure 30 illustrates this embodiment. In this figure modules 3001 to 3006 are similar, respectively, to modules 2901 to 2906 of Figure 29. Please note that modules 3002 and 3004 are optional. In this Figure 30, when the RD evaluation of the full TU gives no residual as the best encoding (3007) the evaluation of ASBT, whatever the subdivisions, is not processed (3006). Otherwise, the early termination based on initial residual signal is applied for ASBT subdivision 2 (3002) as described previously. If the RD evaluation of ASBT subdivision 2 (3003) gives a residual equal to 0 as the best residual, (3008), the RD evaluation of the ASBT subdivision 4 is bypassed (3006), otherwise the evaluation is processed (3004, 3005). An advantage of this embodiment is a good compromise between coding efficiency and encoding time reduction. Emb.Encl.2 Only when the previous residual evaluated is smaller than the current one In one additional embodiment, the previous criterion based on the best residual equals to 0 after one RD evaluation of one TU size, is limited according to the size of the residual for the first evaluation and the sizes of the residual of one or more other possible residual coding. Especially the criterion is applied only if the size of residual firstly evaluated is smaller than the size of the second residual which can be bypassed or not. In this embodiment, the size means the number of residual samples in the residual. Please note that this embodiment can be apply to other subblock residual coding as the regular SBT mode. An advantage of this embodiment is an encoding time reduction without any impact on the coding efficiency. Indeed, the quantization of VVC, for example, depends on the size of the residual. The quantization for a big block is stronger than the quantization of a smaller block. Consequently, when the RD evaluation of a small residual gives a residual equal to zero, it is sure that the RD evaluation of a bigger block will be equal to zero also. Emb.Encl.2.1 Example with ASBT div 4 before ASBT div2 Figure 31 gives an example of the previous embodiment with the application to ASBT subdivision by 4 and ASBT with a subdivision by 2. In this figure modules 3101 to 3108 are similar, respectively, to modules 3001 to 3008 of Figure 30. Except that module 3007 is missing. Compared to Figure 30, in this Figure 31, the RD evaluation of ASBT subdivision by 4 (3105) is before the RD evaluation of ASBT subdivision by 2 (3104). In that case, when the RD evaluation of ASBT subdivision by 4 (3105) gives a residual equal to 0 (3108), the RD evaluation of ASBT subdivision by 2 (3103) is bypassed. Please note that modules 3102 and 3104 are optional. Please note also that the criterion of 3108 can modified by if the best residual is equal to 0, whatever if the best residual is obtained thanks the ASBT div 4. In that module 3108 with the condition “If BestResidual = 0 and coded with ASBT div 4” is replaced by “If BestResidual = 0”. Please note that, as for previous related figures, modules 3102 and 3104 are optional. This example can be applied to other subblock residual coding as the regular SBT mode. Emb.Encl.2.2 Example when ASBT div 4 is evaluated before ASBT div2., and ASBT div2 is evaluated before the regular TU Figure 32 gives another example of this embodiments. In this figure, the ASBT subdivision by 4 is evaluated before ASBT subdivision by 2, and they are evaluated before the regular TU. So, the evaluations are ordered from smallest residual size to the highest residual size. Please note that modules 3202 and 3204 are optional. This example can be applied to other subblock residual coding as the regular SBT mode. The advantage of this example compared to the previous one is an additional encoding time reduction without impact on coding efficiency. Encoding choice: SBT LFNST In the ECM software, LFNST can be applied to SBT modes. At encoder side it creates additional complexity which is reduced thanks to an encoder algorithm as described in Figure 33. In Figure 33, first the full list of possible SBT modes is obtained (3301). Based on this list, a subset of the most probable best SBT modes (3303) is determined (3302) based on several criterion. In addition, the number of these best SBT modes is also determined (3304). And a variable SkipSBTLFNST for each these sub SBT modes (3303), is set equal to true. Then, each (3306) modes of the sub SBT modes list is RD evaluated (3307). After this process the SBT modes sub list is ordered from the best one to the worst one (in term of RD cost). Then, the variable SkipSBTLFNST[] is updated (3308). For the Best SBT mode (i==0) the variable SkipSBTLFNST[0] is set equal to false in order that this SBT mode will be evaluated with LFNST. For each other SBT modes i in the list, the variable SkipSBTLFNST[i] is set equal to false, if the RD cost associated to the SBT mode number i, is strictly inferior to a threshold th multiply by the RD cost of the best mode (CostSBTMode[0]). Eventually each SBT modes, i, in the sub list (3309) with the related variable SkipSBTLFNST[i] equal to false (3310) are RD evaluated with LFSNT (3311). Please note that the value threshold th depends on the resolution and if coding sequence is in low delay or not. Please note also that the criterion with the SkipSBTLFNST is not applied for picture strictly inferior to 4096000 Luma samples which represents less than 2K sequences. So, for regular resolution this criterion is only applied until 1080p resolution. Emb.Enc2.1 SBT LFNST evaluation is bypassed when the regular SBT mode has been selected with ASBT In the following embodiments related to ASBT and LFNST, we consider that ASBT is disallowed for LSNFT coding. In one embodiment, the SBT LFNST evaluation is bypassed when the regular SBT mode has been selected with ASBT. Figure 34 illustrates this embodiment. Figure 34 is similar to Figure 33, except that module 3413 has been added. So, after determining which SBT mode will be tested with LFSNT, a second pass, determines for each best SBT best mode if ASBT has been selected (3413). In that case, the variable SkipSBTLFNST[i] is set equal to true and LFNST will not be tested. Even if it is not represented in the figure the second pass is apply only when SkipSBTLFNST[i] is initially set equal to false. This is one implementation to avoid the evaluation of LFSNT when ASBT has been selected for the corresponding regular SBT mode but other possible implementations can be used. An advantage of this embodiment is a coding efficiency improvement or an equivalent coding efficiency and an encoding time reduction. Indeed, when ASBT is selected it is often when there are high frequencies inside the residual and in opposite LFNST which is a better way to compress low frequencies. So, when the ASBT was selected for a residual, it is almost sure that LFSNT has low chance to be selected. Emb.Enc2.2 All SBT LFNST evaluations are bypassed when the best regular SBT mode has been selected with ASBT In one embodiment, all SBT LFNST evaluations are bypassed when the best regular SBT mode has been selected with ASBT. Compared to the previous embodiment, in that case the evaluation of the SBT LFNST doesn’t depend on the ASBT selection of the corresponding regular SBT but on the selection of ASBT for the best regular SBT mode. An advantage of this embodiment is similar as the previous one. Emb.Enc2.3 All SBT LFNST evaluations are bypassed when the residual block of the best current CU is coded with ASBT In one embodiment, all SBT LFNST evaluations are bypassed when the residual block of the best current CU is coded with ASBT. Compared to the previous embodiment, the SBT LFNST doesn’t depend on the results of the evaluation of the regular SBT mode but on the previously evaluated CU. If the residual of the best TU for the current CU is ASBT coded, all SBT LFNST modes are not evaluated. An advantage of this embodiment is more encoding time reduction but with a reduction of the coding efficiency compared to the two previous embodiments. Emb.Enc2.4 Specific application of criterion In one embodiment, the proposed criterion is applied only for some resolutions. For example, the proposed criterion is applied when the number of luma samples of the current picture is inferior to 4096000 as for the current implementation inside the ECM. So, this excludes 2160p resolution but it includes 1080p resolution. Additionally, or alternatively, the proposed criterion is applied when the number of luma samples of the current picture is inferior to 900000. This excludes for example, the picture with a resolution equal to 832x480 and it includes 720p picture resolution. An advantage of this embodiment is a better coding efficiency compromise as ASBT is more efficient for larger resolution. In one embodiment, the proposed criterion is applied when the number of luma samples of the current picture is inferior to 900000, only. And it is allowed for all higher resolutions. The advantages are an increase of coding efficiency and a decrease of encoding run time for the High resolution not included inside the initial algorithm. Emb.Enc3 Limit the evaluation of MTT based on the selection of ASBT In one embodiment, the evaluation of MTT is limited based on the selection of ASBT. In this embodiment, before evaluating BT or TT, it is tested if the residual of the best current CU has been coded with ASBT or not. An advantage of this embodiment is an encoding reduction without too much reduction of the coding efficiency. Indeed, ASBT thanks to its automatic selection gives a segmentation of the current CU which is sometimes redundant to the CU partitioning thanks BT or TT. Emb.Enc3.1 Limit the evaluation of BT based on the selection of ASBT In one embodiment, the evaluation of BT is limited based on the selection of ASBT. An advantage of this embodiment is an encoding reduction without too much reduction of the coding efficiency. For the same reason as described in the previous embodiment. Emb.Enc3.2 Limit the evaluation of TT based on the selection of ASBT In one embodiment, the evaluation of TT is limited based on the selection of ASBT. An advantage of this embodiment is also an encoding reduction with an efficient coding efficiency / encoding time reduction compromise. Emb.Enc3.3 Limit the evaluation of MTT, BT or TT in one direction based on the direction of ASBT In one embodiment, the evaluation of MTT, (BT or TT) in one direction is based on the direction of ASBT. For example, the BT horizontal evaluation is not proceeded if ASBT is selected for the best CU and if the direction of ASBT is horizontal. Similarly, the BT vertical evaluation is not proceeded if ASBT is selected for the best CU and if the direction of ASBT is vertical. In the same way, the TT horizontal evaluation is not proceeded if ASBT is selected for the best CU and if the direction of ASBT is horizontal. Similarly, the TT vertical evaluation is not proceeded if ASBT is selected for the best CU and if the direction of ASBT is vertical. An advantage of this embodiment is better coding efficiency trade-off, for the same reason as described previously. So, when only the direction is considered, it is surer that ASBT can “replace” BT or TT for the same direction. Emb.Enc3.4 Limit based on other parameters of current partitioning depth In one embodiment, additionally to at least one of the previous one, the limitation of an MTT partitioning is limited according to at least one of the depths as described in the description of VVC partitioning. In this embodiment, the limitation depends on the MttDepth, BTDepth and / or the QT depth. Moreover, the limitation can depend also on the maximum MTT depth. In this embodiment, at least one of these variables is used to identify if the split is closed to the end or not. An advantage of this embodiment is a better coding efficiency encoder run time compromise. Indeed, if the possible split is closed to the end ASBT is more relevant to identify that it is not needed to split more the current partition. Emb.Enc3.5 Limitation based on the temporal ID or temporal depth In one embodiment, the limitation depends on the temporal ID or to the temporal Depth. The temporal ID is present only for random access configuration and generally not present for low delay case. For Low delay it exists at encoder side a variable representing the temporal depth. In this embodiment, the number of limitations is restricted to the pictures with temporal ID which represents the most important encoding time. For random access configuration is for the highest temporal ID which corresponds the half of frames of a sequence. Similarly, the last temporal depth can be taken into account to apply the proposed embodiment. An advantage of this embodiment is a better coding efficiency and encoding run time compromise has the limitation is set for temporal ID or temporal depth which has the highest chance to reduce the encoding time. Moreover, the impact on the coding efficiency is lower has this limitation reduces more the coding rate without increase the PSNR. When setting the last temporal ID there is no chance that the decrease of PSNR impacts other followed frames as there is no followed frame for the last temporal ID. Emb.Enc3.6 Preferred embodiment In one preferred embodiment, the TT horizontal is not evaluated when the current best CU has a residual and if this residual with ASBT with a horizontal decimation and if the temporal ID or the temporal depth for the current frame is superior or equal to 5 and when the MTT depth is strictly inferior to 1. Similarly, the TT vertical is not evaluated when the current best CU has a residual and if this residual with ASBT with a vertical decimation and if the temporal ID or the temporal depth for the current frame is superior or equal to 5 and when the MTT depth is strictly inferior to 1. An advantage of this embodiment is an improvement in term of coding efficiency and a reduction of encoding time. 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 121 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 5 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. 10 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 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; andencoding transform coefficients of a transform block to be encoded based on the residual subblock area.

2. The encoding method of claim 1, further comprising:selectively encoding in the bitstream a first flag indicating whether the process is enabled.

3. The method of claim 2, wherein the first flag is included in a transform unit of the bitstream.

4. The method of claim any one of the preceding claims, further comprising:selectively encoding in a header of the bitstream, a second flag indicating whether the process is allowed or not allowed.

5. The method of claim 4, wherein the header is any one of an SPS header, a PPS header, a picture header, and a slice header.

6. The method of claim 4 or claim 5, wherein the header is an SPS header and, based on the value of the second flag indicating that the process is allowed, encoding in a picture header of the bitstream a third flag indicating whether the process is enabled or disabled at picture level.

7. The method of any of claims 4 to 6, wherein the header is an SPS header and, based on the value of the second flag indicating that the process is allowed, encoding in the SPS header afourth flag indicating that the process can be allowed or not allowed at picture level via a third flag included in a picture header, or whether it is enabled for all images of the sequence.

8. The method of claim 4 or 5, wherein the header is an SPS header; the method further comprising encoding in the SPS header a Palette flag indicating that all slices to be encoded are encoded using a Palette mode and / or an LFNST index indicating that all slices to be encoded use LFNST and / or an MST index indicating that all slices to be encoded use MST; and setting the value of the second flag to indicate that the process is not allowed.

9. The method of claim 4 or 5, wherein the header is an SPS header, and wherein the bitstream is constrained so that the value of the second flag indicates that inferring the position of the residual subblock is enabled when a Palette flag is signalled in the SPS header, the Palette flag indicating that all slices to be encoded are not encoded using a Palette mode.

10. The method of claim 4 or 5, wherein the header is an SPS header; the method further comprising encoding in the SPS header a Palette flag indicating that the slice to be encoded is not encoded using a Palette mode; and setting the value of the second flag to indicate that the process is allowed.

11. The method of claim 4 or 5, wherein the header is an SPS header, the method further comprising encoding in the SPS header a Palette flag indicating that the slice to be encoded can use a Palette mode; and either:setting the value of the second flag to indicate the process is not allowed; ornot encoding the first and second flags in the bitstream.

12. The method of any one of the preceding claims, further comprising:in response to the value of the first flag indicating that the process is enabled, selectively encoding in the bitstream information indicating the size of the residual subblock.

13. The method of claim 12, wherein the information is a subdivision flag indicating a subdivision of the residual block that corresponds to the size of the residual subblock.

14. The method of claim 13, wherein the flag having a first value indicates that the subdivision of the residual block is a division by 2, and the flag having a second value indicates that the subdivision is a division by 4.

15. The method of claim 12 or 13, wherein the information is a plurality of flags, each flag of the plurality of flags indicating a subdivision of the residual block that corresponds to the size of the residual subblock.

16. The method of claim 12, wherein the information is a unary max code comprising one or more bins, each bin of the one or more bins representing a subdivision of the residual block that corresponds to the size of the residual subblock.

17. The method of any one of claims 12 to 16, wherein the selectively encoding the information is based on a determination whether a particular level of subdivision of the residual block is permitted.

18. The method of any one of the preceding claims, further comprising evaluating a first performance value associated with encoding the transform block with the process disabled; evaluating a second performance value associated with encoding the transform block with the process enabled with a residual subblock of a first size; and determining whether to encode the transform block with the process enabled with a residual subblock of a second size based on the first and second performance values.

19. The method of any one of the preceding claims, further comprising determining whether to evaluate a performance value associated with a residual subblock of a first size based on one or more evaluated performance values associated with a residual subblock of one or more different sizes.

20. The method of any one of the preceding claims, further comprising disabling the process for the block to be encoded based on determining that a best residual value for the transform unit evaluated with the process disabled is zero.

21. The method of any one of the preceding claims, further comprising determining not to evaluate a performance value associated with a residual subblock of a first size based on determining that a best residual value associated with a residual subblock of a second size is zero.

22. The method of any one of claims 18 to 21, wherein the determining is not performed if the number of residual samples associated with the residual subblock of the second size is greater than or equal to the number of residual samples associated with the residual subblock of the first size.

23. The method of any one of the preceding claims, wherein the process is a Sub-Block Transform, SBT, process, and the method further comprises:determining a list of possible SBT modes;determining a subset of most probable SBT modes;evaluating a performance value for each SBT mode of the subset;determining the SBT mode of the subset with the best associated performance value, and setting an associated variable to indicate that Low-Frequency Non-Separable Transforms, LFNST, are to be evaluated for the determined SBT mode; andfor each SBT mode of the remaining SBT modes of the subset, setting an associated variable to indicate that LFNST are to be evaluated for the SBT mode based on a comparison of the evaluated performance value for the SBT mode with a threshold value, the threshold value being based on the best associated performance value.

24. The method of claim 23, further comprising for each SBT mode, setting an associated variable to indicate that LFNST are not to be evaluated for the SBT mode based on determining that Advanced Sub-Block Transform, ASBT, has been enabled for the SBT mode.

25. The method of claim 23 or claim 24, further comprising determining that LFNST are not to be evaluated for any SBT mode based on determining that the determining that ASBT has been enabled for the determined SBT mode with the best associated performance value.

26. The method of any one of claims 23 to 25, further comprising determining that LFNST are not to be evaluated for any SBT mode based on determining that ASBT was enabled for a previously evaluated frame portion having a transform block with the lowest associated residual value.

27. The method of any one of claims 23 to 26, wherein the image including the block to be encoded comprises less than or equal to 409600 luma samples.

28. The method of any one of the preceding claims, further comprising determining not to evaluate a binary tree, BT, split and / or a ternary tree, TT, split based on determining that ASBT was enabled for a previously evaluated frame portion having a transform block with the lowest associated residual value.

29. The method of claim 28, wherein a direction of the BT and / or TT split is the same as a direction of an ASBT subblock determined for the previously-evaluated frame portion.

30. The method of claim 28 or claim 29, wherein the determining not to evaluate a BT and / or TT split is further based on one or more of:a multi-tree depth,a binary tree depth,a quadtree depth,a temporal ID, anda temporal depthof the block to be encoded.

31. The method of claim 17, further comprising:determining an orientation of a transform block based on one or more prediction samples; andwherein, based on a subdivision of the residual block by 2 or by 4 being permitted, the information is encoded in the bitstream only if either the height or width of the transform block is greater than 8 coefficients.

32. The method of 7, further comprising:encoding an orientation of the transform block in the bitstream; andwherein, based on a subdivision of the residual block by 2 or by 4 being permitted, the information is encoded in the bitstream only if the transform block is greater than 8 coefficients in the dimension corresponding to the orientation of the transform block.

33. The method of any one of claims 1 to 31, further comprising selectively encoding an orientation of the transform block in the bitstream.

34. The method of claim 33, wherein the orientation of the transform block is encoded as a flag.

35. The method of claim 33 or 34, wherein the orientation is encoded in the bitstream after the first flag and before the information indicating the size of the residual subblock.

36. The method of claim 33, wherein the selectively encoding of the orientation of the transform block is based on both orientations of the residual block being permitted.

37. The method of claim 36, wherein whether an orientation of the residual block is permitted is based on the dimension of the residual block corresponding to the orientation being available after a subdivision by 2.

38. The method of claim 33, wherein if the width and / or height of the block to be encoded is greater than or equal to 128 samples, the orientation of the transform block is encoded in the bitstream.

39. The method of claim 33, wherein if the width of the block to be encoded multiplied by the height of the block to be encoded is greater than 4096, the orientation of the transform block is encoded in the bitstream.

40. The method of any one of the preceding claims, wherein if the value of the first flag indicates that the process is enabled, one or more of:a Transform Skip Flag;an LFNST index; andan MTS index;are not encoded in the bitstream.

41. The method of any one of claims 1 to 39, wherein the first flag is CABAC coded.

42. The method of claim 41, wherein a CABAC context associated with the first flag is initialised such that the probability of the first flag indicating that the disabled is greater than the probability of the first flag indicating that the process is enabled.

43. The method of claim 41 or 42, wherein multiple CABAC contexts are associated with the first flag, the method further comprising determining a CABAC context increment value.

44. The method of claim 43, wherein CABAC context increment value is determined based on the value of an SBT flag, the SBT flag indicating whether SBT is enabled for the block to be encoded.

45. The method of claim 44, wherein the CABAC context increment value is determined to be equal to the value of the SBT flag.

46. The method of claim 44 or claim 45, wherein an initialisation value of a CABAC context associated with the probability of the first flag indicating that the process is disabled represents a higher probability when SBT is not enabled for the block to be encoded than when SBT is enabled for the block to be encoded.

47. The method of claim 44 or 45, wherein the CABAC context increment value is based on the size of the block to be encoded.

48. The method of claim 47, wherein an initialisation value of a CABAC context associated with the probability of the first flag indicating that the process is enabled is proportional to the size of the block to be encoded.

49. The method of any one of the preceding claims, wherein the information indicating the size of the residual subblock is CABAC coded.

50. The method of claim 49, wherein the information is a plurality of flags or a unary max code comprising a plurality of bins, and wherein each flag of the plurality of flags, or each of the one or more bins, is CABAC coded using a respective CABAC context value for each flag or bin.

51. The method of claim 49 or 50, wherein multiple CABAC contexts are associated with the information indicating the size of the residual subblock; and the method further comprises determining a CABAC context increment value for each flag or bin.

52. The method of any one of claims 49 to 51, wherein multiple CABAC context increment values are used to CABAC code each flag or bin of the information indicating the size of the residual subblock; and wherein at least one CABAC context associated with the information indicating the size of the residual subblock has an associated context derivation value associated that is the same as a context derivation value associated with the first flag.

53. The method of any one of claims 49 to 52, wherein a CABAC context derivation value associated with at least one CABAC context associated with the information indicating the size of the residual subblock is based on the value of an SBT flag, the SBT flag indicating that SBT is enabled for the block to be encoded.

54. The method of claim 53, wherein an initialisation value of the CABAC context derivation value representing the probability of the size of the residual subblock being equal to the largest subdivision of the residual block is set such that the initialisation value represents a higher probability of selection compared to the probability of the residual subblock being equal to the smallest subdivision of the residual block when the SBT flag indicates that SBT is enabled.

55. The method of any one of claims 49 to 54, wherein multiple CAB AC contexts are associated with each flag or bin of the information indicating the size of the residual subblock; and wherein the value of a CABAC context increment value associated with the information indicating the size of the residual subblock is based on the size of the block to be encoded.

56. The method of any preceding claim, further comprising selectively encoding an orientation of the transform block in the bitstream, and wherein the orientation of the transform block is CABAC coded; wherein at least one CABAC context is associated with the orientation of the transform block.

57. The method of claim 56, wherein multiple CABAC contexts are associated with the orientation of the transform block; and the method further comprises determining a CABAC context increment value associated with the multiple CABAC contexts.

58. The method of claim 57, wherein the CABAC context increment value is determined based on a determination of a CABAC context increment value used to CABAC code the first flag.

59. The method of claim 57 or 58, wherein the CABAC context increment value is determined based on the value of an SBT flag, the SBT flag indicating whether SBT is enabled for the block to be encoded.

60. The method of claim 59, wherein the CABAC context increment value is determined to be equal to the value of the SBT flag.

61. The method of claim 58 or 59, wherein a CABAC context increment derivation value associated with the CABAC context increment value is determined based on an SBT sub partition selection for the block to be encoded.

62. The method of any one of the preceding claims, wherein the first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock are encoded in the bitstream after a transform skip flag.

63. The method of any one of claims 1, 2 and 4 to 62, wherein the first flag is included in a residual coding portion of the bitstream.

64. The method of claim 53, wherein the first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock are selectively encoded in the bitstream after one or more syntax elements related to a last significant coefficient position.

65. The method of claim 64, wherein if the last significant coefficient position is greater than or equal to half the size of the transform block, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock are not encoded.

66. The method of claim 64 or 65 wherein if the last significant coefficient position is greater than or equal to one quarter the size of the transform block, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock are not encoded.

67. The method of any one of claims 64 to 66, wherein if the value of the last significant coefficient is less than or equal to 1, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock are not encoded.

68. The method of any one of the preceding claims, wherein the first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residualsubblock are selectively encoded in the bitstream at a position in the bitstream that is based on the value of a Quantisation Parameter, QP.

69. The method of claim 68, wherein the position is based on the value of the QP:for the transform block of the block to be encoded;for the slice comprising the block to be encoded;for the picture comprising the block to be encoded; orincluded in a Sequence Parameter Set, SPS of the bitstream.

70. The method of any one of the preceding claims, wherein the first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock are selectively encoded in the bitstream at a position in the bitstream that is based on one or more syntax elements included in a header of the bitstream.

71. The method of claim 70, wherein the header is any one of an SPS header, a picture header, and a slice header.

72. The method of any one of the preceding claims, wherein the first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock are selectively encoded in the bitstream at a position in the bitstream that is based on:a signalling cost associated with the positiona temporal ID of the picture that includes the block to be encodednon-reference frame information associated with the picture that includes the block to be encoded.

73. The method of any one of the preceding claims, wherein the first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residualsubblock are selectively encoded based on a comparison between a determined distortion based on the residual block and a determined distortion based on the residual subblock.

74. The method of any one of the preceding claims, wherein determining the residual subblock is based on one or more predictor samples of a predictor block of the block to be encoded.

75. The method of any one of the preceding claims, wherein the process comprises inferring the position of the residual subblock.

76. The method of any one of the preceding claims, wherein the process is an Advanced SubBlock Transform, ASBT, process or a Sub-Block Transform process.

77. 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; anddecoding transform coefficients of a transform block to be decoded based on the residual subblock area.

78. The method of claim 77, further comprising: selectively decoding from the bitstream a first flag indicating that the process is enabled.

79. The method of claim 78, wherein the first flag is decoded from a transform unit of the bitstream.

80. The method of claim 78 or 79, wherein the selectively decoding is based on one or more syntax elements, the one or more syntax elements indicating whether the process is enabled or disabled.

81. The method of claim 80, wherein the value of the one or more syntax elements is based on: a slice type of a slice to be decoded, and the prediction mode of the block to be decoded.

82. The method of claim 81, wherein if the slice type of the slice currently being decoded indicates that the slice to be decoded is an Intra-predicted slice, the value of the one or more syntax elements is set such that the first flag is not decoded.

83. The method of claim 81 or 82, wherein if the prediction mode of the block to be decoded indicates that:the block to be decoded is an Intra-predicted block;the block to be decoded is coded using a GPM mode;the block to be decoded is coded using an IBC mode;the block to be decoded is coded using a Palette mode; orthe block to be decoded is coded using a Skip or MMVD Skip mode;the value of the one or more syntax elements is set such that the first flag is not decoded.

84. The method of any one of claims 77 to 83, further comprising:obtaining from a header of the bitstream, a second flag indicating whether inferring the position of the residual subblock is enabled or disabled.

85. The method of claim 84, wherein the header is any one of an SPS header, a PPS header, a picture header, and a slice header.

86. The method of claim 84 or claim 85, wherein the header is an SPS header, and based on the value of the second flag indicating that inferring the position of the residual subblock isenabled, obtaining from a picture header of the bitstream a third flag indicating whether the process is enabled or disabled at picture level.

87. The method of any one of claims 84 to 86, wherein the header is an SPS header and, based on the value of the second flag indicating that inferring the position of the residual subblock is enabled, obtaining from the SPS header a fourth flag indicating that the process can be allowed or not allowed at picture level via a third flag included in a picture header, or indicating that the process is enabled for all images of the sequence.

88. The method of claim 85, wherein the header is an SPS header, the method further comprising obtaining from the SPS header a Palette flag indicating that all slices to be decoded are can use a Palette mode and / or an LFNST index indicating that all slices to be decoded can use LFNST and / or an MST index indicating that all slices to be decoded can use MST; and setting the value of the second flag to indicate that the process is disabled.

89. The method of claim 85, wherein the header is an SPS header, the method further comprising obtaining from the SPS header a Palette flag indicating that one or more slices to be decoded can use a Palette mode; and not decoding the first and second flags from the bitstream.

90. The method of claim 85, wherein the header is an SPS header, and wherein the bitstream is constrained so that the value of the second flag indicates that inferring the position of the residual subblock is enabled when a Palette flag is signalled in the SPS header, the Palette flag indicating that all slices to be coded do not use a Palette mode.

91. The method of any one of claims 85 to 90, wherein the value of the one or more syntax elements is based on the value of a second flag included in a header of the bitstream, the second flag indicating whether the process is enabled or disabled.

92. The method of claim 90, wherein the header is any one of an SPS header, a PPS header, a picture header, and a Slice header.

93. The method of any one of claims 82 to 92, wherein the selectively decoding is based on the size of the block to be decoded.

94. The method of claim 93, wherein if either the height and / or width of the block to be decoded is less than or equal to 4 samples, the first flag is not decoded.

95. The method of claim 93, wherein if either the height and / or width of the block to be decoded is greater than 128 samples, the first flag is not decoded.

96. The method of any one of claims 82 to 95, further comprising:selectively decoding from the bitstream information indicating a size of the residual subblock.

97. The method of claim 96, wherein the information is a flag indicating a subdivision of the residual block that corresponds to the size of the residual subblock.

98. The method of claim 96 or 97, wherein the information is a plurality of flags, each flag of the plurality of flags indicating a subdivision of the residual block that corresponds to the size of the residual subblock.

99. The method of claim 96, wherein the information is a unary max code comprising one or more bins, each bin of the one or more bins representing a subdivision of the residual block that corresponds to the size of the residual subblock.

100. The method of any one of claims 96 to 99, wherein the selectively decoding the information is based on a determination whether a particular level of subdivision of the residual block is permitted.

101. The method of claim 100, further comprising:determining an orientation of a transform block based on one or more prediction samples; andwherein, based on a subdivision of the residual block by 2 or by 4 being permitted, the information is decoded from the bitstream only if either the height or width of the transform block is greater than 8 coefficients.

102. The method of any one of claims 98 to 101, further comprising:determining that a level of subdivision of the residual block, having an orientation equal to a default orientation, is not permitted;determining that an orientation of the transform block is not the default orientation.

103. The method of any one of claims 77 to 102, further comprising determining an orientation of the transform block based on one or more prediction samples decoded from the bitstream.

104. The method of any one of claims 77 to 102, further comprising selectively decoding from the bitstream an orientation of the transform block.

105. The method of claim 104, wherein the orientation of the transform block comprises a flag.

106. The method of claim 105, wherein the flag is decoded after the first flag and before the information indicating a size of the residual subblock.

107. The method of any one of claims 104 to 106, wherein the selectively decoding of the orientation is based on both orientations of the residual block being permitted.

108. The method of any one of claims 77 to 107, wherein if the value of the first flag indicates that the process is enabled, one or more of:a Transform Skip Flag;an LFNST index; andan MTS index;are not decoded from the bitstream.

109. The method of any one of claims 77 to 107, wherein the first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock are selectively decoded from the bitstream after a transform skip flag.

110. The method of claim 109, wherein if the value of the transform skip flag is equal to 1, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock are not decoded from the bitstream.

111. The method of any one of claims 77, 78 and 79 to 109, wherein the first flag is decoded from a residual coding portion of the bitstream.

112. The method of claim 110, wherein the first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock are selectively decoded from the bitstream after one or more syntax elements related to a last significant coefficient position.

113. The method of claim 111, wherein if the last significant coefficient position is greater than or equal to half the size of the transform block, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock are not decoded.

114. The method of claim 112, wherein if the last significant coefficient position is greater than or equal to one quarter the size of the transform block, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock are not decoded.

115. The method of claim 111, wherein the first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock are decoded only if the value of the last significant coefficient position is greater than 1.

116. The method of claim 114, wherein if the last significant coefficient position is greater than or equal to half the size of the transform block, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock are not decoded.

117. The method of claim 111 or 112 wherein if the last significant coefficient position is greater than or equal to one quarter the size of the transform block, the first flag, information indicating the size of the residual subblock and the orientation of the residual subblock are not decoded.

118. The method of any one of claims 77 to 116, wherein the first flag is CABAC decoded.

119. The method of claim 118, wherein multiple CABAC contexts are associated with the first flag, the method further comprising determining a CABAC context increment value.

120. The method of claim 118, wherein the CAB AC context increment value is determined based on the value of an SBT flag, the SBT flag indicating whether SBT is enabled for the block to be decoded.

121. The method of claim 119 or 120, wherein the CABAC context increment value is determined to be equal to the value of the SBT flag.

122. The method of 120 or 121, wherein an initialisation value of a CABAC context associated with the probability of the first flag indicating that the position of the residual subblock is not inferred represents a higher probability when SBT is not enabled for the block to be decoded than when SBT is enabled for the block to be decoded.

123. The method of 120 or 121, wherein the CABAC context increment value is based on the size of the block to be decoded.

124. The method of claim 123, wherein an initialisation value of a CABAC context associated with the probability of the first flag indicating that the position of the residual subblock is inferred is proportional to the size of the block to be decoded.

125. The method of any one of claims 77 to 124, wherein the information indicating the size of the residual subblock is CABAC decoded.

126. The method of claim 125, wherein each flag of the plurality of flags, or each of the one or more bins, of the information is CABAC decoded using a respective CABAC context value for each flag or bin.

127. The method of claim 125 or 126, wherein multiple CABAC contexts are associated with the information indicating the size of the residual subblock; and the method further comprises determining a CABAC context increment value for each flag or bin.

128. The method of any one of claims 125 to 127, wherein multiple CABAC context increment values are used to CABAC decode each flag or bin of the information indicating the size of the residual subblock; and wherein at least one CABAC context associated with the information indicating the size of the residual subblock has an associated context derivation value associated that is the same as a context derivation value associated with the first flag.

129. The method of any one of claims 125 to 128, wherein a CABAC context derivation value associated with at least one CABAC context associated with the information indicating the size of the residual subblock is based on the value of an SBT flag, the SBT flag indicating that SBT is enabled for the block to be decoded.

130. The method of claim 129, wherein an initialisation value of the CABAC context derivation value representing the probability of the size of the residual subblock being equal to the largest subdivision of the residual block is set such that the initialisation value represents a higher probability of selection compared to the probability of the residual subblock being equal to the smallest subdivision of the residual block when the SBT flag indicates that SBT is enabled.

131. The method of any one of claims 125 to 130, wherein multiple CABAC contexts are associated with each flag or bin of the information indicating the size of the residual subblock; and wherein the value of a CABAC context increment value associated with the information indicating the size of the residual subblock is based on the size of the block to be decoded.

132. The method of any one of claims 77 to 131, wherein the orientation of the transform block is CABAC decoded; wherein at least one CABAC context is associated with the orientation of the transform block.

133. The method of claim 132, wherein multiple CABAC contexts are associated with the orientation of the transform block; and the method further comprises determining a CABAC context increment value associated with the multiple CABAC contexts.

134. The method of claim 129, wherein the CABAC context increment value is determined based on a determination of a CABAC context increment value used to CABAC decode the first flag.

135. The method of claim 133 or 134, wherein the CABAC context increment value is determined based on the value of an SBT flag, the SBT flag indicating whether SBT is enabled for the block to be decoded.

136. The method of claim 135, wherein the CABAC context increment value is determined to be equal to the value of the SBT flag.

137. The method of claim 134 or 135, wherein a CABAC context increment derivation value associated with the CABAC context increment value is determined based on an SBT sub partition selection for the block to be decoded.

138. The method of any one of claims 77 to 137, wherein the first flag and one or more of the information indicating the size of the residual subblock and / or the orientation of the residual subblock are decoded from the bitstream after a transform skip flag.

139. The method of claim 138, wherein the first flag and one or more of the information indicating the size of the residual subblock and / or the orientation of the residual subblock are selectively decoded from the bitstream after one or more syntax elements related to a last significant coefficient position.

140. The method of claim 139, wherein if the last significant coefficient position is greater than or equal to half the size of the transform block, the first flag, information indicating the size of the residual subblock and / or the orientation of the residual subblock are not decoded.

141. The method of claim 139 or 140 wherein if the last significant coefficient position is greater than or equal to one quarter the size of the transform block, information indicating the size of the residual subblock of the residual subblock are not decoded.

142. The method of claims 113 or 114 wherein the last significant coefficient position information is coded by considering the size of the of the residual block even if the residual block is coded according to a residual subblock.

143. The method of claim 142 wherein, the size of the decoded residual block is updated when the current residual coding is a residual subblock.

144. The method of any one of claims 77 to 143, wherein the first flag and one or more of the information indicating the size of the residual subblock and the orientation of the residual subblock are decoded from the bitstream at a position from the bitstream that is based on the value of a Quantisation Parameter, QP.

145. The method of claim 144, wherein the position is based on the value of the QP:for the transform block of the block to be decoded;for the slice comprising the block to be decoded;for the picture comprising the block to be decoded; orincluded in a Sequence Parameter Set, SPS of the bitstream.

146. The method of any one of claims 77 to 145, wherein the first flag and one or more of the information indicating the size of the residual subblock and / or the orientation of the residual subblock are decoded from the bitstream at a position from the bitstream that is based on one or more syntax elements included in a header of the bitstream.

147. The method of any one of claims 77 to 146, wherein determining the residual subblock is based on one or more predictor samples of a predictor block of the block to be decoded.

148. The method of any one of claims 77 to 147, wherein the process comprises inferring the position of the residual subblock.

149. The method of any one of claims 77 to 148, wherein the process is an Advanced SubBlock Transform, ASBT, process or a Sub-Block Transform process.

150. A device for encoding one or more images into a bitstream, the device comprising:means for determining a residual subblock comprising an area of a residual block for a block to be encoded; andmeans for encoding transform coefficients of a transform block to be encoded based on the residual subblock area.

151. The device of claim 150, further comprising means for performing the method of any one of claims 1 to 76.

152. A device for decoding one or more images from a bitstream, the device comprising:means for determining a residual subblock comprising an area of a residual block for a block to be decoded; andmeans for decoding transform coefficients of a transform block to be decoded based on the residual subblock area.

153. The device of claim 152, further comprising means for performing the method of any one of claims 77 to 149.5 154. A computer program which is arranged to, upon execution, cause the method of any oneof claims 1 to 149 to be performed.

155. A computer-readable storage medium upon which is stored the computer program according to claim 154.