JVET-Q0186 CE3-related: TB-level residual coding selection for lossless coding [Z.-Y. Lin, T.-D. Chuang, C.-Y. Chen, C.-W. Hsu, Y.-W. Huang, S.-M. Lei (MediaTek)]
In the current VVC, lossless coding is achieved by always choosing transform skip (TS) mode by signalling TS flag equal to 1 for each transform block (TB), where the TS mode is always combined with transform skip residual coding (TSRC). In the 16th JVET meeting, it was observed that always choosing TS mode by signalling TS flag equal to 1 for each TB and always combining TS mode with regular residual coding (RRC) can bring more bit savings for lossless coding some sequences, especially for camera captured videos. Therefore, to improve lossless coding gain, slice-level switch between TSRC and RRC for lossless coding by signalling TS flag equal to 1 for each TB is planned in CE3. In this contribution, transform block (TB) level switch between TSRC and RRC for lossless coding is proposed to further improve lossless coding gain. First, a new “slice transform disabled flag” is signalled or inferred at slice level, and it is used to indicate whether transform is disabled for the slice. When the slice transform disabled flag is true, the transform process and quantization process are the same as those when TS is applied, and the TS flag is still signalled at TB level but used to select TSRC or RRC. Second, since in VTM7.0 block-wise differential pulse code modulation (BDPCM) blocks are always combined with TS and TSRC, to remove this combination so as to make BDPCM blocks be able to choose between TSRC and RRC, a new “slice BDPCM infer transform skip disabled flag” is signalled or inferred at slice level, and it is used to indicate whether TS and TSRC are combined with BDPCM blocks. If the slice BDPCM infer transform skip disabled flag is true, the TS flag is still signalled for each BDPCM block, and TS is still applied to all BDCM blocks, but the TS flag is used to select TSRC or RRC. Lossless coding bit savings are as follows.
[Anchor: VTM7.0 with BDPCM disabled; Test: Proposed method with BDPCM disabled]
TGM sequences => -3.88% (AI), -4.52% (RA), -4.53% (LB)
CTC sequences (Classes A1, A2, B, C, E) => -5.46% (AI), -5.73% (RA), -5.06% (LB)
[Anchor: VTM7.0 with BDPCM disabled; Test: Proposed method with luma and chroma BDPCM enabled]
TGM sequences => -8.50% (AI), -6.37% (RA), -5.45% (LB)
CTC sequences (Classes A1, A2, B, C, E) => -7.86% (AI), -6.33% (RA), -5.91% (LB)
The proposal is to introduce a slice level flag which would enforce TS for the entire slice, and in that case re-use the TS flag at block level for switching between RRC and TSRC (unmodified versions).
This is only effective for entire-slice lossless coding (no mixed lossy/lossless, which would be the more relevant case). The benefit relative to the adoption (with high-level switch RRC/TSRC) is minor (0.1%) overall, higher for TGM. Encoder runtime is significantly increased due to block level switching. Furthermore, the approach of changing the semantics of TS flag for that purpose is not clean in terms of spec definition.
No action was taken on this.